[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