Skip to content

Commit

Permalink
Add original coordinates to Mesh to PointList.
Browse files Browse the repository at this point in the history
  • Loading branch information
oehmke committed Sep 29, 2023
1 parent 1aca8ab commit b517fb3
Showing 1 changed file with 38 additions and 4 deletions.
42 changes: 38 additions & 4 deletions src/Infrastructure/Mesh/src/ESMCI_Mesh.C
Original file line number Diff line number Diff line change
Expand Up @@ -1892,21 +1892,33 @@ void Mesh::resolve_cspec_delete_owners(UInt obj_type) {
#undef ESMC_METHOD
#define ESMC_METHOD "ESMCI::Mesh::MeshToPointList()"

// Add original coords
bool add_orig_coords=true;

ESMCI::PointList *plp = NULL;

int localrc;
MEField<> *cfield;
MEField<> *cfield=NULL;
MEField<> *orig_cfield=NULL;
MEField<> *src_mask_val;
Mesh::MeshObjIDMap::const_iterator mb,mi,me;
bool check_id=false;
int max_ok_id=std::numeric_limits<int>::max();

int orig_coord_dim=0; // 0 indicates not to add orig. coordinates
ESMC_CoordSys_Flag orig_coord_sys=ESMC_COORDSYS_UNINIT;

// Initialize the parallel environment for mesh (if not already done)
ESMCI::Par::Init("MESHLOG", false /* use log */,VM::getCurrent(&localrc)->getMpi_c());
if (ESMC_LogDefault.MsgFoundError(localrc,ESMCI_ERR_PASSTHRU,ESMC_CONTEXT,rc))
throw localrc; // bail out with exception

// If original coords requested, add information from Mesh
if (add_orig_coords) {
orig_coord_dim=orig_spatial_dim;
orig_coord_sys=coordsys;
}


// Set up based on whether nodes or elem
if (meshLoc == ESMC_MESHLOC_NODE) {
// Get coord field
Expand All @@ -1918,6 +1930,17 @@ void Mesh::resolve_cspec_delete_owners(UInt obj_type) {
ESMC_CONTEXT, &localrc)) throw localrc;
}

// If requested, get orig coord field
if (add_orig_coords) {
orig_cfield = GetField("orig_coordinates");
if (orig_cfield == NULL) {
int localrc;
if(ESMC_LogDefault.MsgFoundError(ESMC_RC_ARG_VALUE,
"mesh node original coordinates unavailable",
ESMC_CONTEXT, &localrc)) throw localrc;
}
}

// Get Iterators
mb = map_begin(MeshObj::NODE);
me = map_end(MeshObj::NODE);
Expand All @@ -1938,6 +1961,17 @@ void Mesh::resolve_cspec_delete_owners(UInt obj_type) {
ESMC_CONTEXT, &localrc)) throw localrc;
}

// If requested, get orig coord field
if (add_orig_coords) {
orig_cfield = GetField("elem_orig_coordinates");
if (orig_cfield == NULL) {
int localrc;
if(ESMC_LogDefault.MsgFoundError(ESMC_RC_ARG_VALUE,
"mesh elem original coordinates unavailable",
ESMC_CONTEXT, &localrc)) throw localrc;
}
}

// Get Iterators
mb = map_begin(MeshObj::ELEMENT);
me = map_end(MeshObj::ELEMENT);
Expand Down Expand Up @@ -1977,7 +2011,7 @@ void Mesh::resolve_cspec_delete_owners(UInt obj_type) {
}

// Create PointList
plp = new PointList(num_local_pts,spatial_dim());
plp = new PointList(num_local_pts,spatial_dim(),orig_coord_dim,orig_coord_sys);

// Loop through adding local nodes
for (mi=mb; mi != me; ++mi) {
Expand Down Expand Up @@ -2033,7 +2067,7 @@ void Mesh::resolve_cspec_delete_owners(UInt obj_type) {
}

// Create PointList
plp = new PointList(num_local_pts,spatial_dim());
plp = new PointList(num_local_pts,spatial_dim(),orig_coord_dim,orig_coord_sys);

// Loop through adding unmasked points
for (mi=mb; mi != me; ++mi) {
Expand Down

0 comments on commit b517fb3

Please sign in to comment.