[cig-commits] r21325 - in short/3D/PyLith/trunk/libsrc/pylith: bc faults meshio topology

knepley at geodynamics.org knepley at geodynamics.org
Mon Feb 4 06:56:15 PST 2013


Author: knepley
Date: 2013-02-04 06:56:14 -0800 (Mon, 04 Feb 2013)
New Revision: 21325

Modified:
   short/3D/PyLith/trunk/libsrc/pylith/bc/AbsorbingDampers.cc
   short/3D/PyLith/trunk/libsrc/pylith/bc/Neumann.cc
   short/3D/PyLith/trunk/libsrc/pylith/faults/CohesiveTopology.cc
   short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveLagrange.cc
   short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5.cc
   short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5Ext.cc
   short/3D/PyLith/trunk/libsrc/pylith/topology/Field.cc
Log:
Changed subpointMap to a DMLabel

Modified: short/3D/PyLith/trunk/libsrc/pylith/bc/AbsorbingDampers.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/bc/AbsorbingDampers.cc	2013-02-04 09:34:52 UTC (rev 21324)
+++ short/3D/PyLith/trunk/libsrc/pylith/bc/AbsorbingDampers.cc	2013-02-04 14:56:14 UTC (rev 21325)
@@ -281,13 +281,15 @@
 
   // Get cell information
   DM       subMesh = _boundaryMesh->dmMesh();
-  IS       subpointMap;
+  DMLabel  subpointMap;
+  IS       subpointIS;
   PetscInt cStart, cEnd;
   PetscErrorCode err;
 
   assert(subMesh);
   err = DMPlexGetHeightStratum(subMesh, 1, &cStart, &cEnd);CHECK_PETSC_ERROR(err);
   err = DMPlexGetSubpointMap(subMesh, &subpointMap);CHECK_PETSC_ERROR(err);
+  err = DMLabelGetStratumIS(subpointMap, 0, &subpointIS);CHECK_PETSC_ERROR(err);
 
   // Get sections
   PetscSection valueSection = _parameters->get("damping constants").petscSection();
@@ -299,12 +301,13 @@
   PetscSection residualSection = residual.petscSection(), residualSubsection;
   Vec          residualVec     = residual.localVector();
   assert(residualSection);assert(residualVec);
-  err = PetscSectionCreateSubmeshSection(residualSection, subpointMap, &residualSubsection);
+  err = PetscSectionCreateSubmeshSection(residualSection, subpointIS, &residualSubsection);
   
   PetscSection velSection = fields->get("velocity(t)").petscSection(), velSubsection;
   Vec          velVec     = fields->get("velocity(t)").localVector();
   assert(velSection);assert(velVec);
-  err = PetscSectionCreateSubmeshSection(velSection, subpointMap, &velSubsection);
+  err = PetscSectionCreateSubmeshSection(velSection, subpointIS, &velSubsection);
+  err = ISDestroy(&subpointIS);CHECK_PETSC_ERROR(err);
   
 #if !defined(PRECOMPUTE_GEOMETRY)
   scalar_array coordinatesCell(numBasis*spaceDim);
@@ -437,13 +440,15 @@
 
   // Get cell information
   DM       subMesh = _boundaryMesh->dmMesh();
-  IS       subpointMap;
+  DMLabel  subpointMap;
+  IS       subpointIS;
   PetscInt cStart, cEnd;
   PetscErrorCode err;
 
   assert(subMesh);
   err = DMPlexGetHeightStratum(subMesh, 1, &cStart, &cEnd);CHECK_PETSC_ERROR(err);
   err = DMPlexGetSubpointMap(subMesh, &subpointMap);CHECK_PETSC_ERROR(err);
+  err = DMLabelGetStratumIS(subpointMap, 0, &subpointIS);CHECK_PETSC_ERROR(err);
 
   // Get sections
   PetscSection valueSection = _parameters->get("damping constants").petscSection();
@@ -455,12 +460,13 @@
   PetscSection residualSection = residual.petscSection(), residualSubsection;
   Vec          residualVec     = residual.localVector();
   assert(residualSection);assert(residualVec);
-  err = PetscSectionCreateSubmeshSection(residualSection, subpointMap, &residualSubsection);
+  err = PetscSectionCreateSubmeshSection(residualSection, subpointIS, &residualSubsection);
 
   PetscSection velSection = fields->get("velocity(t)").petscSection(), velSubsection;
   Vec          velVec     = fields->get("velocity(t)").localVector();
   assert(velSection);assert(velVec);
-  err = PetscSectionCreateSubmeshSection(velSection, subpointMap, &velSubsection);
+  err = PetscSectionCreateSubmeshSection(velSection, subpointIS, &velSubsection);
+  err = ISDestroy(&subpointIS);CHECK_PETSC_ERROR(err);
 
 #if !defined(PRECOMPUTE_GEOMETRY)
   scalar_array coordinatesCell(numBasis*spaceDim);
@@ -590,13 +596,15 @@
 
   // Get cell information
   DM       subMesh = _boundaryMesh->dmMesh();
-  IS       subpointMap;
+  DMLabel  subpointMap;
+  IS       subpointIS;
   PetscInt cStart, cEnd;
   PetscErrorCode err;
 
   assert(subMesh);
   err = DMPlexGetHeightStratum(subMesh, 1, &cStart, &cEnd);CHECK_PETSC_ERROR(err);
   err = DMPlexGetSubpointMap(subMesh, &subpointMap);CHECK_PETSC_ERROR(err);
+  err = DMLabelGetStratumIS(subpointMap, 0, &subpointIS);CHECK_PETSC_ERROR(err);
 
   // Get sections
   PetscSection valueSection = _parameters->get("damping constants").petscSection();
@@ -609,10 +617,11 @@
   Vec          solutionVec     = solution.localVector();
   PetscSF      sf;
   assert(solutionSection);assert(solutionVec);
-  err = PetscSectionCreateSubmeshSection(solutionSection, subpointMap, &solutionSubsection);CHECK_PETSC_ERROR(err);
+  err = PetscSectionCreateSubmeshSection(solutionSection, subpointIS, &solutionSubsection);CHECK_PETSC_ERROR(err);
   err = DMGetPointSF(solution.dmMesh(), &sf);CHECK_PETSC_ERROR(err);
   err = PetscSectionCreateGlobalSection(solutionSection, sf, PETSC_FALSE, &solutionGlobalSection);CHECK_PETSC_ERROR(err);
-  err = PetscSectionCreateSubmeshSection(solutionGlobalSection, subpointMap, &solutionGlobalSubsection);CHECK_PETSC_ERROR(err);
+  err = PetscSectionCreateSubmeshSection(solutionGlobalSection, subpointIS, &solutionGlobalSubsection);CHECK_PETSC_ERROR(err);
+  err = ISDestroy(&subpointIS);CHECK_PETSC_ERROR(err);
 
   // Get sparse matrix
   const PetscMat jacobianMat = jacobian->matrix();
@@ -753,13 +762,15 @@
 
   // Get cell information
   DM       subMesh = _boundaryMesh->dmMesh();
-  IS       subpointMap;
+  DMLabel  subpointMap;
+  IS       subpointIS;
   PetscInt cStart, cEnd;
   PetscErrorCode err;
 
   assert(subMesh);
   err = DMPlexGetHeightStratum(subMesh, 1, &cStart, &cEnd);CHECK_PETSC_ERROR(err);
   err = DMPlexGetSubpointMap(subMesh, &subpointMap);CHECK_PETSC_ERROR(err);
+  err = DMLabelGetStratumIS(subpointMap, 0, &subpointIS);CHECK_PETSC_ERROR(err);
 
   // Get parameters used in integration.
   const PylithScalar dt = _dt;
@@ -778,7 +789,8 @@
   PetscSection jacobianSection = jacobian->petscSection(), jacobianSubsection;
   Vec          jacobianVec     = jacobian->localVector();
   assert(jacobianSection);assert(jacobianVec);
-  err = PetscSectionCreateSubmeshSection(jacobianSection, subpointMap, &jacobianSubsection);
+  err = PetscSectionCreateSubmeshSection(jacobianSection, subpointIS, &jacobianSubsection);
+  err = ISDestroy(&subpointIS);CHECK_PETSC_ERROR(err);
 
 #if !defined(PRECOMPUTE_GEOMETRY)
   scalar_array coordinatesCell(numBasis*spaceDim);

Modified: short/3D/PyLith/trunk/libsrc/pylith/bc/Neumann.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/bc/Neumann.cc	2013-02-04 09:34:52 UTC (rev 21324)
+++ short/3D/PyLith/trunk/libsrc/pylith/bc/Neumann.cc	2013-02-04 14:56:14 UTC (rev 21325)
@@ -107,13 +107,15 @@
 
   // Get cell information
   DM       subMesh = _boundaryMesh->dmMesh();
-  IS       subpointMap;
+  DMLabel  subpointMap;
+  IS       subpointIS;
   PetscInt cStart, cEnd;
   PetscErrorCode err;
 
   assert(subMesh);
   err = DMPlexGetHeightStratum(subMesh, 1, &cStart, &cEnd);CHECK_PETSC_ERROR(err);
   err = DMPlexGetSubpointMap(subMesh, &subpointMap);CHECK_PETSC_ERROR(err);
+  err = DMLabelGetStratumIS(subpointMap, 0, &subpointIS);CHECK_PETSC_ERROR(err);
 
   // Get sections
   _calculateValue(t);
@@ -125,7 +127,8 @@
   PetscSection residualSection = residual.petscSection(), residualSubsection;
   Vec          residualVec     = residual.localVector();
   assert(residualSection);assert(residualVec);
-  err = PetscSectionCreateSubmeshSection(residualSection, subpointMap, &residualSubsection);
+  err = PetscSectionCreateSubmeshSection(residualSection, subpointIS, &residualSubsection);CHECK_PETSC_ERROR(err);
+  err = ISDestroy(&subpointIS);CHECK_PETSC_ERROR(err);
 
 #if !defined(PRECOMPUTE_GEOMETRY)
   scalar_array coordinatesCell(numBasis*spaceDim);

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/CohesiveTopology.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/CohesiveTopology.cc	2013-02-04 09:34:52 UTC (rev 21324)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/CohesiveTopology.cc	2013-02-04 14:56:14 UTC (rev 21325)
@@ -142,12 +142,12 @@
       }
     }
 
-    err = DMPlexCreateSubmesh(dmMesh, labelName, "faultSurface", &subdm);CHECK_PETSC_ERROR(err);
+    err = DMPlexCreateSubmesh(dmMesh, labelName, &subdm);CHECK_PETSC_ERROR(err);
     faultMesh->setDMMesh(subdm);
   } else {
     // TODO: This leg will be unnecessary
     DM             dm;
-    IS             subpointMap;
+    DMLabel        subpointMap;
     PetscInt      *renum;
     PetscInt       pStart, pEnd;
     PetscErrorCode err;
@@ -155,6 +155,7 @@
 
     ALE::ISieveConverter::convertMesh(*fault, &dm, renumbering, true);
     // Have to make subpointMap here: renumbering[original] = fault
+    err = DMLabelCreate("subpoint_map", &subpointMap);CHECK_PETSC_ERROR(err);
     err = DMPlexGetChart(dm, &pStart, &pEnd);CHECK_PETSC_ERROR(err);
     assert(renumbering.size() == pEnd-pStart);
     err = PetscMalloc((pEnd-pStart) * sizeof(PetscInt), &renum);CHECK_PETSC_ERROR(err);
@@ -167,7 +168,10 @@
     for(PetscInt p = 1; p < pEnd-pStart; ++p) {
       assert(renum[p] > renum[p-1]);
     }
-    err = ISCreateGeneral(fault->comm(), pEnd-pStart, renum, PETSC_OWN_POINTER, &subpointMap);CHECK_PETSC_ERROR(err);
+    for(PetscInt p = 0; p < pEnd-pStart; ++p) {
+      err = DMLabelSetValue(subpointMap, renum[p], 0);CHECK_PETSC_ERROR(err);
+    }
+    err = PetscFree(renum);CHECK_PETSC_ERROR(err);
     err = DMPlexSetSubpointMap(dm, subpointMap);CHECK_PETSC_ERROR(err);
     renumbering.clear();
     faultMesh->setDMMesh(dm);
@@ -933,7 +937,7 @@
   // Completes the set of cells scheduled to be replaced
   //   Have to do internal fault vertices before fault boundary vertices, and this is the only thing I use faultBoundary for
   err = DMLabelCohesiveComplete(dm, label);CHECK_PETSC_ERROR(err);
-  err = DMPlexConstructCohesiveCells(dm, labelName, &sdm);CHECK_PETSC_ERROR(err);
+  err = DMPlexConstructCohesiveCells(dm, label, &sdm);CHECK_PETSC_ERROR(err);
   mesh->setDMMesh(sdm);
 } // createInterpolated
 
@@ -1194,10 +1198,11 @@
   err = VecRestoreArray(faultCoordinateVec, &fa);CHECK_PETSC_ERROR(err);
 
   // Have to make subpointMap here: renumbering[original] = fault
-  IS        subpointMap;
+  DMLabel   subpointMap;
   PetscInt *renum;
   PetscInt  pStart, pEnd;
 
+  err = DMLabelCreate("subpoint_map", &subpointMap);CHECK_PETSC_ERROR(err);
   err = DMPlexGetChart(dmFaultMesh, &pStart, &pEnd);CHECK_PETSC_ERROR(err);
   err = DMPlexGetDepthStratum(dmFaultMesh, 0, &fvStart, &fvEnd);CHECK_PETSC_ERROR(err);
   assert(convertRenumbering.size() == pEnd-pStart);
@@ -1220,7 +1225,10 @@
     if (renum[p-1] == -1) continue;
     assert(renum[p] > renum[p-1]);
   }
-  err = ISCreateGeneral(faultMesh->comm(), pEnd-pStart, renum, PETSC_OWN_POINTER, &subpointMap);CHECK_PETSC_ERROR(err);
+  for(PetscInt p = 0; p < pEnd-pStart; ++p) {
+    err = DMLabelSetValue(subpointMap, renum[p], 0);CHECK_PETSC_ERROR(err);
+  }
+  err = PetscFree(renum);CHECK_PETSC_ERROR(err);
   err = DMPlexSetSubpointMap(dmFaultMesh, subpointMap);CHECK_PETSC_ERROR(err);
 
   // Update dimensioned coordinates if they exist.

Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveLagrange.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveLagrange.cc	2013-02-04 09:34:52 UTC (rev 21324)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesiveLagrange.cc	2013-02-04 14:56:14 UTC (rev 21325)
@@ -1118,7 +1118,8 @@
   const int numCorners = 3 * numConstraintVert; // cohesive cell
 
   DM              faultDMMesh = _faultMesh->dmMesh();
-  IS              subpointMap;
+  DMLabel         subpointMap;
+  IS              subvertexIS;
   const PetscInt *points;
   PetscInt        numPoints, fcStart, fcEnd, fvStart, fvEnd;
 
@@ -1126,7 +1127,7 @@
   err = DMPlexGetHeightStratum(faultDMMesh, 0, &fcStart, &fcEnd);CHECK_PETSC_ERROR(err);
   err = DMPlexGetDepthStratum(faultDMMesh, 0, &fvStart, &fvEnd);CHECK_PETSC_ERROR(err);
   err = DMPlexGetSubpointMap(faultDMMesh, &subpointMap);CHECK_PETSC_ERROR(err);
-  err = ISGetLocalSize(subpointMap, &numPoints);CHECK_PETSC_ERROR(err);
+  err = DMLabelGetStratumSize(subpointMap, 0, &numPoints);CHECK_PETSC_ERROR(err);
   assert(numCells == fcEnd-fcStart);
 
   _cohesiveToFault.clear();
@@ -1136,7 +1137,8 @@
   PetscInt index = 0;
 
   err = ISGetIndices(cellIS, &cells);CHECK_PETSC_ERROR(err);
-  err = ISGetIndices(subpointMap, &points);CHECK_PETSC_ERROR(err);
+  err = DMLabelGetStratumIS(subpointMap, 0, &subvertexIS);CHECK_PETSC_ERROR(err);
+  err = ISGetIndices(subvertexIS, &points);CHECK_PETSC_ERROR(err);
   for(PetscInt c = 0; c < numCells; ++c) {
     _cohesiveToFault[cells[c]] = c;
 
@@ -1187,7 +1189,8 @@
     err = DMPlexRestoreTransitiveClosure(dmMesh, cells[c], PETSC_TRUE, &closureSize, &closure);CHECK_PETSC_ERROR(err);
   } // for
   err = ISRestoreIndices(cellIS, &cells);CHECK_PETSC_ERROR(err);
-  err = ISRestoreIndices(subpointMap, &points);CHECK_PETSC_ERROR(err);
+  err = ISRestoreIndices(subvertexIS, &points);CHECK_PETSC_ERROR(err);
+  err = ISDestroy(&subvertexIS);CHECK_PETSC_ERROR(err);
 } // _initializeCohesiveInfo
 
 // ----------------------------------------------------------------------

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5.cc	2013-02-04 09:34:52 UTC (rev 21324)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5.cc	2013-02-04 14:56:14 UTC (rev 21325)
@@ -225,14 +225,12 @@
     }
     CHKMEMA;
 
-    IS              subpointMap, globalVertexNumbers;
-    const PetscInt *gvertex = PETSC_NULL, *gpoints = PETSC_NULL;
+    IS              globalVertexNumbers;
+    const PetscInt *gvertex = PETSC_NULL;
     PetscVec        cellVec;
     PetscScalar    *vertices;
 
-    err = DMPlexGetSubpointMap(dmMesh, &subpointMap);CHECK_PETSC_ERROR(err);
     err = DMPlexGetVertexNumbering(dmMesh, &globalVertexNumbers);CHECK_PETSC_ERROR(err);
-    if (subpointMap) {err = ISGetIndices(subpointMap, &gpoints);CHECK_PETSC_ERROR(err);}
     err = ISGetIndices(globalVertexNumbers, &gvertex);CHECK_PETSC_ERROR(err);
     err = VecCreate(mesh.comm(), &cellVec);CHECK_PETSC_ERROR(err);
     err = VecSetSizes(cellVec, conesSize, PETSC_DETERMINE);CHECK_PETSC_ERROR(err);
@@ -253,7 +251,6 @@
       err = DMPlexGetTransitiveClosure(dmMesh, cell, PETSC_TRUE, &closureSize, &closure);CHECK_PETSC_ERROR(err);
       for(p = 0; p < closureSize*2; p += 2) {
         if ((closure[p] >= vStart) && (closure[p] < vEnd)) {
-          //const PetscInt gv = gpoints ? gpoints[closure[p]] : gvertex[closure[p] - vStart];
           const PetscInt gv = gvertex[closure[p] - vStart];
           vertices[v++] = gv < 0 ? -(gv+1) : gv;
         }

Modified: short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5Ext.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5Ext.cc	2013-02-04 09:34:52 UTC (rev 21324)
+++ short/3D/PyLith/trunk/libsrc/pylith/meshio/DataWriterHDF5Ext.cc	2013-02-04 14:56:14 UTC (rev 21325)
@@ -310,14 +310,12 @@
     }
     CHKMEMA;
 
-    IS              subpointMap, globalVertexNumbers;
-    const PetscInt *gvertex = PETSC_NULL, *gpoints = PETSC_NULL;
+    IS              globalVertexNumbers;
+    const PetscInt *gvertex = PETSC_NULL;
     PetscVec        cellVec, elemVec;
     PetscScalar    *vertices;
 
-    err = DMPlexGetSubpointMap(dmMesh, &subpointMap);CHECK_PETSC_ERROR(err);
     err = DMPlexGetVertexNumbering(dmMesh, &globalVertexNumbers);CHECK_PETSC_ERROR(err);
-    if (subpointMap) {err = ISGetIndices(subpointMap, &gpoints);CHECK_PETSC_ERROR(err);}
     err = ISGetIndices(globalVertexNumbers, &gvertex);CHECK_PETSC_ERROR(err);
     err = VecCreate(mesh.comm(), &cellVec);CHECK_PETSC_ERROR(err);
     err = VecSetSizes(cellVec, conesSize, PETSC_DETERMINE);CHECK_PETSC_ERROR(err);
@@ -338,7 +336,6 @@
       err = DMPlexGetTransitiveClosure(dmMesh, cell, PETSC_TRUE, &closureSize, &closure);CHECK_PETSC_ERROR(err);
       for(p = 0; p < closureSize*2; p += 2) {
         if ((closure[p] >= vStart) && (closure[p] < vEnd)) {
-          //const PetscInt gv = gpoints ? gpoints[closure[p]] : gvertex[closure[p] - vStart];
           const PetscInt gv = gvertex[closure[p] - vStart];
           vertices[v++] = gv < 0 ? -(gv+1) : gv;
         }

Modified: short/3D/PyLith/trunk/libsrc/pylith/topology/Field.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/topology/Field.cc	2013-02-04 09:34:52 UTC (rev 21324)
+++ short/3D/PyLith/trunk/libsrc/pylith/topology/Field.cc	2013-02-04 14:56:14 UTC (rev 21325)
@@ -1576,7 +1576,7 @@
   DM           dm = mesh.dmMesh();
   PetscSection section, newSection, gsection, subSection = PETSC_NULL;
   PetscSF      sf;
-  IS           subpointMap, subpointMapF;
+  DMLabel      subpointMap, subpointMapF;
   PetscInt     dim, dimF, pStart, pEnd, qStart, qEnd, cEnd, cMax, vEnd, vMax;
   err = DMPlexGetHeightStratum(_dm, 0, PETSC_NULL, &cEnd);CHECK_PETSC_ERROR(err);
   err = DMPlexGetDepthStratum(_dm, 0, PETSC_NULL, &vEnd);CHECK_PETSC_ERROR(err);
@@ -1593,12 +1593,14 @@
   err = DMPlexGetSubpointMap(_dm, &subpointMapF);CHECK_PETSC_ERROR(err);
   if (((dim != dimF) || ((pEnd-pStart) < (qEnd-qStart))) && subpointMap && !subpointMapF) {
     const PetscInt *ind;
+    IS              subvertexIS;
     PetscInt        n, q;
 
     err = PetscPrintf(PETSC_COMM_SELF, "Making translation PetscSection\n");CHECK_PETSC_ERROR(err);
     err = PetscSectionGetChart(section, &qStart, &qEnd);CHECK_PETSC_ERROR(err);
-    err = ISGetLocalSize(subpointMap, &n);CHECK_PETSC_ERROR(err);
-    err = ISGetIndices(subpointMap, &ind);CHECK_PETSC_ERROR(err);
+    err = DMLabelGetStratumSize(subpointMap, 0, &n);CHECK_PETSC_ERROR(err);
+    err = DMLabelGetStratumIS(subpointMap, 0, &subvertexIS);CHECK_PETSC_ERROR(err);
+    err = ISGetIndices(subvertexIS, &ind);CHECK_PETSC_ERROR(err);
     err = PetscSectionCreate(mesh.comm(), &subSection);CHECK_PETSC_ERROR(err);
     err = PetscSectionSetChart(subSection, pStart, pEnd);CHECK_PETSC_ERROR(err);
     for(q = qStart; q < qEnd; ++q) {
@@ -1614,7 +1616,8 @@
         }
       }
     }
-    err = ISRestoreIndices(subpointMap, &ind);CHECK_PETSC_ERROR(err);
+    err = ISRestoreIndices(subvertexIS, &ind);CHECK_PETSC_ERROR(err);
+    err = ISDestroy(&subvertexIS);CHECK_PETSC_ERROR(err);
     /* No need to setup section */
     section = subSection;
   }



More information about the CIG-COMMITS mailing list