[cig-commits] [commit] baagaard/add-release-2.0.3, baagaard/add-release-2.1.0, baagaard/dynrup-new-lagrange, baagaard/feature-output-station-names, baagaard/feature-progress-monitor, baagaard/fix-custom-faultpc, baagaard/fix-faults-intersect, baagaard/fix-friction-initial-state, baagaard/update-autoconf, knepley/feature-petsc-fe, knepley/upgrade-petsc-3.5, knepley/upgrade-petsc-master, maint, master, next, willic3/fix-plasticity: Fault: Replace logic using clamped label with logic using _cohesiveVertices[] - This makes all parts agree on fault definition (c51f9ba)

cig_noreply at geodynamics.org cig_noreply at geodynamics.org
Wed Nov 5 15:44:49 PST 2014


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

On branches: baagaard/add-release-2.0.3,baagaard/add-release-2.1.0,baagaard/dynrup-new-lagrange,baagaard/feature-output-station-names,baagaard/feature-progress-monitor,baagaard/fix-custom-faultpc,baagaard/fix-faults-intersect,baagaard/fix-friction-initial-state,baagaard/update-autoconf,knepley/feature-petsc-fe,knepley/upgrade-petsc-3.5,knepley/upgrade-petsc-master,maint,master,next,willic3/fix-plasticity
Link       : https://github.com/geodynamics/pylith/compare/f33c75b19fd60eedb2a3405db76a1fee333bb1d7...5b6d812b1612809fea3bd331c4e5af98c25a536a

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

commit c51f9ba2a0a50c27f37f59bdc2f37da2eedd2daf
Author: Matthew G. Knepley <knepley at gmail.com>
Date:   Wed Jul 16 15:04:17 2014 -0500

    Fault: Replace logic using clamped label with logic using _cohesiveVertices[]
    - This makes all parts agree on fault definition


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

c51f9ba2a0a50c27f37f59bdc2f37da2eedd2daf
 libsrc/pylith/faults/FaultCohesiveLagrange.cc | 74 +++++++--------------------
 1 file changed, 19 insertions(+), 55 deletions(-)

diff --git a/libsrc/pylith/faults/FaultCohesiveLagrange.cc b/libsrc/pylith/faults/FaultCohesiveLagrange.cc
index 8bd3b5a..53575ee 100644
--- a/libsrc/pylith/faults/FaultCohesiveLagrange.cc
+++ b/libsrc/pylith/faults/FaultCohesiveLagrange.cc
@@ -126,64 +126,28 @@ pylith::faults::FaultCohesiveLagrange::initialize(const topology::Mesh& mesh,
   const PetscInt vStart = verticesStratum.begin();
   const PetscInt vEnd = verticesStratum.end();
 
-  if (strlen(edge()) > 0 && numPoints > 0) {
-    PetscDMLabel label = NULL;
-    PetscIS clampedIS = NULL;
-    const PetscInt* clampedPoints = NULL;
-    PetscInt numClampedPoints;
-    PetscErrorCode err;
-
-    err = DMPlexGetLabel(mesh.dmMesh(), edge(), &label);PYLITH_CHECK_ERROR(err);
-    err = DMLabelGetStratumIS(label, 1, &clampedIS);PYLITH_CHECK_ERROR(err);
-    if (clampedIS) {
-      err = ISGetLocalSize(clampedIS, &numClampedPoints);PYLITH_CHECK_ERROR(err);
-      err = ISGetIndices(clampedIS, &clampedPoints);PYLITH_CHECK_ERROR(err);
-      for (int i = 0; i < numClampedPoints; ++i) {
-	PetscInt v_fault;
-	err = PetscFindInt(clampedPoints[i], numPoints, points, &v_fault);PYLITH_CHECK_ERROR(err);
-	if (v_fault < vStart || v_fault >= vEnd) { // skip non-vertices
-	  continue;
-	} // if
-
-	err = PetscSectionSetConstraintDof(dispRel.petscSection(), v_fault, spaceDim);PYLITH_CHECK_ERROR(err);
-      } // for
-      err = ISRestoreIndices(clampedIS, &clampedPoints);PYLITH_CHECK_ERROR(err);
-      err = ISDestroy(&clampedIS);PYLITH_CHECK_ERROR(err);
-    } // if
-  } // if
+  const int numVertices = _cohesiveVertices.size();
+  PetscErrorCode err;
+
+  for (int iVertex=0; iVertex < numVertices; ++iVertex) {
+    const int e_lagrange = _cohesiveVertices[iVertex].lagrange;
+    const int v_fault    = _cohesiveVertices[iVertex].fault;
+
+    if (e_lagrange < 0) {err = PetscSectionSetConstraintDof(dispRel.petscSection(), -v_fault, spaceDim);PYLITH_CHECK_ERROR(err);}
+  }
   dispRel.allocate();
-  if (strlen(edge()) > 0 && numPoints > 0) {
-    PetscDMLabel label = NULL;
-    PetscIS clampedIS = NULL;
-    const PetscInt *clampedPoints = NULL;
-    PetscInt numClampedPoints;
-    PetscErrorCode err;
-
-    err = DMPlexGetLabel(mesh.dmMesh(), edge(), &label);PYLITH_CHECK_ERROR(err);
-    err = DMLabelGetStratumIS(label, 1, &clampedIS);PYLITH_CHECK_ERROR(err);
-    if (clampedIS) {
-      err = ISGetLocalSize(clampedIS, &numClampedPoints);PYLITH_CHECK_ERROR(err);
-      err = ISGetIndices(clampedIS, &clampedPoints);PYLITH_CHECK_ERROR(err);
-
-      PetscInt* ind = (spaceDim > 0) ? new PetscInt[spaceDim] : 0;
-      for (int i = 0; i < spaceDim; ++i) { 
-	ind[i] = i;
-      } // for
+  {
+    PetscInt *ind = (spaceDim > 0) ? new PetscInt[spaceDim] : 0;
 
-      for (int i = 0; i < numClampedPoints; ++i) {
-	PetscInt v_fault;
-	err = PetscFindInt(clampedPoints[i], numPoints, points, &v_fault);PYLITH_CHECK_ERROR(err);
-	if (v_fault < vStart || v_fault >= vEnd) { // skip non-vertices
-	  continue;
-	} // if
+    for (int i = 0; i < spaceDim; ++i) ind[i] = i;
+    for (int iVertex = 0; iVertex < numVertices; ++iVertex) {
+      const int e_lagrange = _cohesiveVertices[iVertex].lagrange;
+      const int v_fault    = _cohesiveVertices[iVertex].fault;
 
-	err = PetscSectionSetConstraintIndices(dispRel.petscSection(), v_fault, ind);PYLITH_CHECK_ERROR(err);
-      } // for
-      err = ISRestoreIndices(clampedIS, &clampedPoints);PYLITH_CHECK_ERROR(err);
-      err = ISDestroy(&clampedIS);PYLITH_CHECK_ERROR(err);
-      delete[] ind; ind = 0;
-    } // if
-  } // if
+      if (e_lagrange < 0) {err = PetscSectionSetConstraintIndices(dispRel.petscSection(), -v_fault, ind);PYLITH_CHECK_ERROR(err);}
+    }
+    delete[] ind; ind = 0;
+  }
   dispRel.vectorFieldType(topology::FieldBase::VECTOR);
   dispRel.scale(_normalizer->lengthScale());
 



More information about the CIG-COMMITS mailing list