[cig-commits] r22571 - short/3D/PyLith/trunk/libsrc/pylith/faults

knepley at geodynamics.org knepley at geodynamics.org
Thu Jul 11 17:33:16 PDT 2013


Author: knepley
Date: 2013-07-11 17:33:16 -0700 (Thu, 11 Jul 2013)
New Revision: 22571

Modified:
   short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesive.cc
Log:
Turned on interpolated cohesive construction

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesive.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesive.cc	2013-07-12 00:32:43 UTC (rev 22570)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesive.cc	2013-07-12 00:33:16 UTC (rev 22571)
@@ -127,9 +127,10 @@
     if (!_useFaultMesh) {
       const char* charlabel = label();
 
-      PetscDMLabel groupField;
-      PetscBool hasLabel;
-      PetscMPIInt rank;
+      PetscDMLabel   groupField;
+      PetscBool      hasLabel;
+      PetscInt       depth, dim;
+      PetscMPIInt    rank;
       PetscErrorCode err;
       // We do not have labels on all ranks until after distribution
       err = MPI_Comm_rank(PetscObjectComm((PetscObject) dmMesh), &rank);PYLITH_CHECK_ERROR(err);
@@ -140,10 +141,16 @@
             << "' for fault interface condition.";
         throw std::runtime_error(msg.str());
       } // if
+      err = DMPlexGetDimension(dmMesh, &dim);PYLITH_CHECK_ERROR(err);
+      err = DMPlexGetDepth(dmMesh, &depth);PYLITH_CHECK_ERROR(err);
       err = DMPlexGetLabel(dmMesh, charlabel, &groupField);PYLITH_CHECK_ERROR(err);
       CohesiveTopology::createFault(&faultMesh, faultBoundary, *mesh, groupField, flipFault);
-      
-      CohesiveTopology::create(mesh, faultMesh, faultBoundary, groupField, id(), *firstFaultVertex, *firstLagrangeVertex, *firstFaultCell, useLagrangeConstraints());
+
+      if (dim > 1 && dim == depth) {
+        CohesiveTopology::createInterpolated(mesh, faultMesh, faultBoundary, groupField, id(), *firstFaultVertex, *firstLagrangeVertex, *firstFaultCell, useLagrangeConstraints());
+      } else {
+        CohesiveTopology::create(mesh, faultMesh, faultBoundary, groupField, id(), *firstFaultVertex, *firstLagrangeVertex, *firstFaultCell, useLagrangeConstraints());
+      }
       err = DMDestroy(&faultBoundary);PYLITH_CHECK_ERROR(err);
     } else {
       const int faultDim = 2;



More information about the CIG-COMMITS mailing list