[cig-commits] [commit] knepley/fix-faults-parallel: Faults: Removed the creation of the fault boundary mesh - Also removed non-interpolated code for fault creation (6346474)

cig_noreply at geodynamics.org cig_noreply at geodynamics.org
Wed May 7 11:52:12 PDT 2014


Repository : https://github.com/geodynamics/pylith

On branch  : knepley/fix-faults-parallel
Link       : https://github.com/geodynamics/pylith/compare/df865220b80a43ba208f3cef3f0f16004191dad3...b9115fef9bddb6603ac8577e88470665f74d470c

>---------------------------------------------------------------

commit 634647491dc3d033637df22f018722a6e54e9097
Author: Matthew G. Knepley <knepley at gmail.com>
Date:   Tue May 6 19:21:46 2014 -0500

    Faults: Removed the creation of the fault boundary mesh
    - Also removed non-interpolated code for fault creation


>---------------------------------------------------------------

634647491dc3d033637df22f018722a6e54e9097
 libsrc/pylith/faults/CohesiveTopology.cc | 80 +++-----------------------------
 1 file changed, 7 insertions(+), 73 deletions(-)

diff --git a/libsrc/pylith/faults/CohesiveTopology.cc b/libsrc/pylith/faults/CohesiveTopology.cc
index a957034..f5bbd4c 100644
--- a/libsrc/pylith/faults/CohesiveTopology.cc
+++ b/libsrc/pylith/faults/CohesiveTopology.cc
@@ -27,8 +27,6 @@
 
 #include "pylith/utils/error.h" // USES PYLITH_CHECK_ERROR
 
-extern "C" PetscErrorCode DMPlexMarkBoundaryFaces_Internal(DM, PetscInt, DMLabel);
-
 // ----------------------------------------------------------------------
 void
 pylith::faults::CohesiveTopology::createFault(topology::Mesh* faultMesh,
@@ -43,80 +41,16 @@ pylith::faults::CohesiveTopology::createFault(topology::Mesh* faultMesh,
   faultMesh->coordsys(mesh.coordsys());
   PetscDM dmMesh = mesh.dmMesh();assert(dmMesh);
 
-  PetscInt dim, depth, gdepth;
-  err = DMPlexGetDimension(dmMesh, &dim);PYLITH_CHECK_ERROR(err);
-  err = DMPlexGetDepth(dmMesh, &depth);PYLITH_CHECK_ERROR(err);
-
   // Convert fault to a DM
-  err = MPI_Allreduce(&depth, &gdepth, 1, MPIU_INT, MPI_MAX, mesh.comm());PYLITH_CHECK_ERROR(err);
-  if (gdepth == dim) {
-    PetscDM subdm = NULL;
-    PetscDMLabel label = NULL;
-    const char *groupName = "", *labelName = "boundary";
-
-    if (groupField) {err = DMLabelGetName(groupField, &groupName);PYLITH_CHECK_ERROR(err);}
-    err = DMPlexCreateSubmesh(dmMesh, groupField, 1, &subdm);PYLITH_CHECK_ERROR(err);
-    err = DMPlexOrient(subdm);PYLITH_CHECK_ERROR(err);
-
-    err = DMPlexCreateLabel(subdm, labelName);PYLITH_CHECK_ERROR(err);
-    err = DMPlexGetLabel(subdm, labelName, &label);PYLITH_CHECK_ERROR(err);
-    err = DMPlexMarkBoundaryFaces_Internal(subdm, 1, label);PYLITH_CHECK_ERROR(err);
-    err = DMPlexLabelComplete(subdm, label);PYLITH_CHECK_ERROR(err);
-    std::string submeshLabel = "fault_" + std::string(groupName);
-    faultMesh->dmMesh(subdm, submeshLabel.c_str());
-  } else {
-    PetscDM faultDMMeshTmp = NULL, faultDMMesh = NULL;
-    PetscDMLabel subpointMapTmp = NULL, subpointMap = NULL;
-    PetscIS pointIS = NULL;
-    const PetscInt *points = NULL;
-    PetscInt depth, newDepth, h, numPoints = 0, p;
-    const char *groupName = "";
-
-    if (groupField) {err = DMLabelGetName(groupField, &groupName);PYLITH_CHECK_ERROR(err);}
-    err = DMPlexCreateSubmesh(dmMesh, groupField, 1, &faultDMMeshTmp);PYLITH_CHECK_ERROR(err);
-    err = DMPlexInterpolate(faultDMMeshTmp, &faultDMMesh);PYLITH_CHECK_ERROR(err);
-    err = DMPlexGetVTKCellHeight(faultDMMeshTmp, &h);PYLITH_CHECK_ERROR(err);
-    err = DMPlexSetVTKCellHeight(faultDMMesh, h);PYLITH_CHECK_ERROR(err);
-    err = DMPlexOrient(faultDMMesh);PYLITH_CHECK_ERROR(err);
-    err = DMPlexCopyCoordinates(faultDMMeshTmp, faultDMMesh);PYLITH_CHECK_ERROR(err);
-    err = DMPlexGetSubpointMap(faultDMMeshTmp, &subpointMapTmp);PYLITH_CHECK_ERROR(err);
-    err = DMLabelCreate("subpoint_map", &subpointMap);PYLITH_CHECK_ERROR(err);
-    err = DMLabelGetStratumIS(subpointMapTmp, 0, &pointIS);PYLITH_CHECK_ERROR(err);
-    if (pointIS) {
-      err = ISGetLocalSize(pointIS, &numPoints);PYLITH_CHECK_ERROR(err);
-      err = ISGetIndices(pointIS, &points);PYLITH_CHECK_ERROR(err);
-    }
-    for (p = 0; p < numPoints; ++p) {
-      err = DMLabelSetValue(subpointMap, points[p], 0);PYLITH_CHECK_ERROR(err);
-    }
-    if (pointIS) {err = ISRestoreIndices(pointIS, &points);PYLITH_CHECK_ERROR(err);}
-    err = ISDestroy(&pointIS);PYLITH_CHECK_ERROR(err);
-    err = DMPlexGetDepth(faultDMMeshTmp, &depth);PYLITH_CHECK_ERROR(err);
-    err = DMPlexGetDepth(faultDMMesh, &newDepth);PYLITH_CHECK_ERROR(err);
-    err = DMLabelGetStratumIS(subpointMapTmp, depth, &pointIS);PYLITH_CHECK_ERROR(err);
-    if (pointIS) {
-      err = ISGetLocalSize(pointIS, &numPoints);PYLITH_CHECK_ERROR(err);
-      err = ISGetIndices(pointIS, &points);PYLITH_CHECK_ERROR(err);
-    }
-    for (p = 0; p < numPoints; ++p) {
-      err = DMLabelSetValue(subpointMap, points[p], newDepth);PYLITH_CHECK_ERROR(err);
-    }
-    if (pointIS) {err = ISRestoreIndices(pointIS, &points);PYLITH_CHECK_ERROR(err);}
-    err = ISDestroy(&pointIS);PYLITH_CHECK_ERROR(err);
-    err = DMPlexSetSubpointMap(faultDMMesh, subpointMap);PYLITH_CHECK_ERROR(err);
-    err = DMLabelDestroy(&subpointMap);PYLITH_CHECK_ERROR(err);
-    err = DMDestroy(&faultDMMeshTmp);PYLITH_CHECK_ERROR(err);
+  PetscDM subdm = NULL;
+  const char *groupName = "";
 
-    std::string submeshLabel = "fault_" + std::string(groupName);
-    faultMesh->dmMesh(faultDMMesh, submeshLabel.c_str());
+  if (groupField) {err = DMLabelGetName(groupField, &groupName);PYLITH_CHECK_ERROR(err);}
+  err = DMPlexCreateSubmesh(dmMesh, groupField, 1, &subdm);PYLITH_CHECK_ERROR(err);
+  err = DMPlexOrient(subdm);PYLITH_CHECK_ERROR(err);
 
-    PetscDMLabel label = NULL;
-    const char *labelName = "boundary";
-
-    err = DMPlexCreateLabel(faultDMMesh, labelName);PYLITH_CHECK_ERROR(err);
-    err = DMPlexGetLabel(faultDMMesh, labelName, &label);PYLITH_CHECK_ERROR(err);
-    err = DMPlexMarkBoundaryFaces(faultDMMesh, label);PYLITH_CHECK_ERROR(err);
-  }
+  std::string submeshLabel = "fault_" + std::string(groupName);
+  faultMesh->dmMesh(subdm, submeshLabel.c_str());
 
   PYLITH_METHOD_END;
 } // createFault



More information about the CIG-COMMITS mailing list