[cig-commits] r21448 - in short/3D/PyLith/trunk: libsrc/pylith/faults unittests/libtests/faults
knepley at geodynamics.org
knepley at geodynamics.org
Tue Mar 5 08:00:49 PST 2013
Author: knepley
Date: 2013-03-05 08:00:49 -0800 (Tue, 05 Mar 2013)
New Revision: 21448
Modified:
short/3D/PyLith/trunk/libsrc/pylith/faults/CohesiveTopology.cc
short/3D/PyLith/trunk/libsrc/pylith/faults/CohesiveTopology.hh
short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesive.cc
short/3D/PyLith/trunk/unittests/libtests/faults/TestBruneSlipFn.cc
short/3D/PyLith/trunk/unittests/libtests/faults/TestConstRateSlipFn.cc
short/3D/PyLith/trunk/unittests/libtests/faults/TestEqKinSrc.cc
short/3D/PyLith/trunk/unittests/libtests/faults/TestLiuCosSlipFn.cc
short/3D/PyLith/trunk/unittests/libtests/faults/TestStepSlipFn.cc
short/3D/PyLith/trunk/unittests/libtests/faults/TestTimeHistorySlipFn.cc
short/3D/PyLith/trunk/unittests/libtests/faults/TestTractPerturbation.cc
Log:
Changing fault creation interface to use DMLabel
Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/CohesiveTopology.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/CohesiveTopology.cc 2013-03-05 10:54:16 UTC (rev 21447)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/CohesiveTopology.cc 2013-03-05 16:00:49 UTC (rev 21448)
@@ -47,11 +47,11 @@
pylith::faults::CohesiveTopology::createFault(topology::SubMesh* faultMesh,
ALE::Obj<SieveFlexMesh>& faultBoundary,
const topology::Mesh& mesh,
- const ALE::Obj<topology::Mesh::IntSection>& groupField,
+ DMLabel groupField,
const bool flipFault)
{ // createFault
assert(0 != faultMesh);
- assert(!groupField.isNull());
+ assert(groupField);
// Memory logging
ALE::MemoryLogger& logger = ALE::MemoryLogger::singleton();
@@ -81,16 +81,24 @@
const int debug = mesh.debug();
// Create set with vertices on fault
- const IntSection::chart_type& chart = groupField->getChart();
+ IS pointIS;
+ const PetscInt *points;
+ PetscInt numPoints, vStart, vEnd;
TopologyOps::PointSet faultVertices; // Vertices on fault
- const IntSection::chart_type::const_iterator chartEnd = chart.end();
- for(IntSection::chart_type::const_iterator c_iter = chart.begin();
- c_iter != chartEnd;
- ++c_iter) {
- assert(!sieveMesh->depth(*c_iter));
- if (groupField->getFiberDimension(*c_iter))
- faultVertices.insert(*c_iter);
+ err = DMLabelGetStratumIS(groupField, 1, &pointIS);CHECK_PETSC_ERROR(err);
+ err = ISGetLocalSize(pointIS, &numPoints);CHECK_PETSC_ERROR(err);
+ err = ISGetIndices(pointIS, &points);CHECK_PETSC_ERROR(err);
+ err = DMPlexGetDepthStratum(dmMesh, 0, &vStart, &vEnd);CHECK_PETSC_ERROR(err);
+ // Figure out offset between numberings
+ PetscInt numNormalCells, numCohesiveCells, numNormalVertices, numShadowVertices, numLagrangeVertices;
+ mesh.getPointTypeSizes(&numNormalCells, &numCohesiveCells, &numNormalVertices, &numShadowVertices, &numLagrangeVertices);
+ for (PetscInt p = 0; p < numPoints; ++p) {
+ const PetscInt point = points[p];
+ const PetscInt oldPoint = point-numCohesiveCells; // Convert to Sieve numbering
+
+ assert(point >= vStart);assert(point < vEnd);
+ faultVertices.insert(oldPoint);
} // for
// Create a sieve which captures the fault
@@ -127,22 +135,24 @@
// Convert fault to a DM
if (depth == dim) {
- DM subdm;
- DMLabel label;
- const char *labelName = groupField->getName().c_str();
+ DM subdm;
+ DMLabel label;
+ const char *groupName, *labelName;
+ std::ostringstream tmp;
+ err = DMLabelGetName(groupField, &groupName);CHECK_PETSC_ERROR(err);
+#if 0
+ tmp << groupName << "_label";
+ labelName = tmp.str().c_str();
// Put fault vertices in a label
err = DMPlexCreateLabel(dmMesh, labelName);CHECK_PETSC_ERROR(err);
err = DMPlexGetLabel(dmMesh, labelName, &label);CHECK_PETSC_ERROR(err);
- const IntSection::chart_type& chart = groupField->getChart();
- const IntSection::chart_type::const_iterator chartEnd = chart.end();
- for(IntSection::chart_type::const_iterator c_iter = chart.begin(); c_iter != chartEnd; ++c_iter) {
- if (groupField->getFiberDimension(*c_iter)) {
- err = DMLabelSetValue(label, *c_iter, 0);CHECK_PETSC_ERROR(err);
- }
+ for(PetscInt p = 0; p < numPoints; ++p) {
+ err = DMLabelSetValue(label, points[p], 0);CHECK_PETSC_ERROR(err);
}
+#endif
- err = DMPlexCreateSubmesh(dmMesh, labelName, &subdm);CHECK_PETSC_ERROR(err);
+ err = DMPlexCreateSubmesh(dmMesh, groupName, &subdm);CHECK_PETSC_ERROR(err);
faultMesh->setDMMesh(subdm);
} else {
// TODO: This leg will be unnecessary
@@ -181,6 +191,8 @@
renumbering.clear();
faultMesh->setDMMesh(dm);
}
+ err = ISRestoreIndices(pointIS, &points);CHECK_PETSC_ERROR(err);
+ err = ISDestroy(&pointIS);CHECK_PETSC_ERROR(err);
logger.stagePop();
} // createFault
@@ -442,7 +454,7 @@
PetscInt value;
//assert(extraCells == faultVertexOffsetDM);
err = DMPlexGetLabelValue(complexMesh, (*name).c_str(), vertexDM, &value);CHECK_PETSC_ERROR(err);
- if (value) {
+ if (value != -1) {
err = DMPlexSetLabelValue(newMesh, (*name).c_str(), vertexRenumberDM[vertexDM], value);CHECK_PETSC_ERROR(err);
}
} // for
Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/CohesiveTopology.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/CohesiveTopology.hh 2013-03-05 10:54:16 UTC (rev 21447)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/CohesiveTopology.hh 2013-03-05 16:00:49 UTC (rev 21448)
@@ -55,7 +55,7 @@
void createFault(topology::SubMesh* faultMesh,
ALE::Obj<SieveFlexMesh>& faultBoundary,
const topology::Mesh& mesh,
- const ALE::Obj<topology::Mesh::IntSection>& groupField,
+ DMLabel groupField,
const bool flipFault =false);
/** Create cohesive cells.
Modified: short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesive.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesive.cc 2013-03-05 10:54:16 UTC (rev 21447)
+++ short/3D/PyLith/trunk/libsrc/pylith/faults/FaultCohesive.cc 2013-03-05 16:00:49 UTC (rev 21448)
@@ -116,24 +116,30 @@
ALE::Obj<SieveFlexMesh> faultBoundary;
// Get group of vertices associated with fault
- const ALE::Obj<topology::Mesh::SieveMesh>& sieveMesh = mesh->sieveMesh();
- assert(!sieveMesh.isNull());
+ DM dmMesh = mesh->dmMesh();
+ assert(dmMesh);
if (!_useFaultMesh) {
- if (!sieveMesh->hasIntSection(label())) {
- std::ostringstream msg;
- msg << "Mesh missing group of vertices '" << label()
- << "' for fault interface condition.";
- throw std::runtime_error(msg.str());
+ DMLabel groupField;
+ PetscBool has;
+ PetscErrorCode err;
+
+ err = DMPlexHasLabel(dmMesh, label(), &has);CHECK_PETSC_ERROR(err);
+ if (!has) {
+ std::ostringstream msg;
+ msg << "Mesh missing group of vertices '" << label()
+ << "' for fault interface condition.";
+ throw std::runtime_error(msg.str());
} // if
- const ALE::Obj<topology::Mesh::IntSection>& groupField =
- sieveMesh->getIntSection(label());
- assert(!groupField.isNull());
+ err = DMPlexGetLabel(dmMesh, label(), &groupField);CHECK_PETSC_ERROR(err);
CohesiveTopology::createFault(&faultMesh, faultBoundary, *mesh, groupField,
- flipFault);
+ flipFault);
- CohesiveTopology::create(mesh, faultMesh, faultBoundary, groupField, id(),
- *firstFaultVertex, *firstLagrangeVertex, *firstFaultCell, useLagrangeConstraints());
+ const ALE::Obj<topology::Mesh::IntSection>& oldGroupField =
+ mesh->sieveMesh()->getIntSection(label());
+ assert(!oldGroupField.isNull());
+ CohesiveTopology::create(mesh, faultMesh, faultBoundary, oldGroupField, id(),
+ *firstFaultVertex, *firstLagrangeVertex, *firstFaultCell, useLagrangeConstraints());
} else {
const int faultDim = 2;
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestBruneSlipFn.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestBruneSlipFn.cc 2013-03-05 10:54:16 UTC (rev 21447)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestBruneSlipFn.cc 2013-03-05 16:00:49 UTC (rev 21448)
@@ -320,6 +320,7 @@
CPPUNIT_ASSERT(0 != mesh);
CPPUNIT_ASSERT(0 != faultMesh);
CPPUNIT_ASSERT(0 != slipfn);
+ PetscErrorCode err;
const char* meshFilename = "data/tri3.mesh";
const char* faultLabel = "fault";
@@ -342,18 +343,24 @@
mesh->coordsys(&cs);
// Create fault mesh
- int firstFaultVertex = 0;
- int firstLagrangeVertex = mesh->sieveMesh()->getIntSection(faultLabel)->size();
- int firstFaultCell = mesh->sieveMesh()->getIntSection(faultLabel)->size();
+ DM dmMesh = mesh->dmMesh();
+ PetscInt firstFaultVertex = 0;
+ PetscInt firstLagrangeVertex, firstFaultCell;
+ DMLabel groupField;
const bool useLagrangeConstraints = true;
+
+ err = DMPlexGetStratumSize(dmMesh, faultLabel, 1, &firstLagrangeVertex);CHECK_PETSC_ERROR(err);
+ firstFaultCell = firstLagrangeVertex;
if (useLagrangeConstraints) {
- firstFaultCell += mesh->sieveMesh()->getIntSection(faultLabel)->size();
+ firstFaultCell += firstLagrangeVertex;
}
+ err = DMPlexGetLabel(dmMesh, faultLabel, &groupField);CHECK_PETSC_ERROR(err);
+ CPPUNIT_ASSERT(groupField);
ALE::Obj<SieveFlexMesh> faultBoundary = 0;
const ALE::Obj<SieveMesh>& sieveMesh = mesh->sieveMesh();
CPPUNIT_ASSERT(!sieveMesh.isNull());
CohesiveTopology::createFault(faultMesh, faultBoundary,
- *mesh, sieveMesh->getIntSection(faultLabel));
+ *mesh, groupField);
CohesiveTopology::create(mesh, *faultMesh, faultBoundary,
sieveMesh->getIntSection(faultLabel),
faultId,
@@ -365,17 +372,16 @@
CPPUNIT_ASSERT(!faultSieveMesh.isNull());
const ALE::Obj<RealSection>& oldCoordSection = sieveMesh->getRealSection("coordinates");
faultSieveMesh->setRealSection("coordinates", oldCoordSection);
- DM dmMesh = faultMesh->dmMesh();
+ DM faultDMMesh = faultMesh->dmMesh();
IS subpointIS;
const PetscInt *points;
PetscSection coordSection;
PetscInt vStart, vEnd;
- PetscErrorCode err;
- CPPUNIT_ASSERT(dmMesh);
+ CPPUNIT_ASSERT(faultDMMesh);
- err = DMPlexGetDepthStratum(dmMesh, 0, &vStart, &vEnd);CHECK_PETSC_ERROR(err);
- err = DMPlexCreateSubpointIS(dmMesh, &subpointIS);CHECK_PETSC_ERROR(err);
- err = DMPlexGetCoordinateSection(dmMesh, &coordSection);CHECK_PETSC_ERROR(err);
+ err = DMPlexGetDepthStratum(faultDMMesh, 0, &vStart, &vEnd);CHECK_PETSC_ERROR(err);
+ err = DMPlexCreateSubpointIS(faultDMMesh, &subpointIS);CHECK_PETSC_ERROR(err);
+ err = DMPlexGetCoordinateSection(faultDMMesh, &coordSection);CHECK_PETSC_ERROR(err);
err = PetscSectionSetChart(coordSection, vStart, vEnd);CHECK_PETSC_ERROR(err);
for(PetscInt v = vStart; v < vEnd; ++v) {
err = PetscSectionSetDof(coordSection, v, spaceDim);CHECK_PETSC_ERROR(err);
@@ -403,7 +409,7 @@
err = ISRestoreIndices(subpointIS, &points);CHECK_PETSC_ERROR(err);
err = ISDestroy(&subpointIS);CHECK_PETSC_ERROR(err);
err = VecRestoreArray(coordVec, &coords);CHECK_PETSC_ERROR(err);
- err = DMSetCoordinatesLocal(dmMesh, coordVec);CHECK_PETSC_ERROR(err);
+ err = DMSetCoordinatesLocal(faultDMMesh, coordVec);CHECK_PETSC_ERROR(err);
// Setup databases
spatialdata::spatialdb::SimpleDB dbFinalSlip("final slip");
@@ -436,6 +442,7 @@
void
pylith::faults::TestBruneSlipFn::_testInitialize(const _TestBruneSlipFn::DataStruct& data)
{ // _testInitialize
+ PetscErrorCode err;
// Setup mesh
topology::Mesh mesh;
meshio::MeshIOAscii meshIO;
@@ -453,18 +460,24 @@
// Create fault mesh
topology::SubMesh faultMesh;
- int firstFaultVertex = 0;
- int firstLagrangeVertex = mesh.sieveMesh()->getIntSection(data.faultLabel)->size();
- int firstFaultCell = mesh.sieveMesh()->getIntSection(data.faultLabel)->size();
+ DM dmMesh = mesh.dmMesh();
+ PetscInt firstFaultVertex = 0;
+ PetscInt firstLagrangeVertex, firstFaultCell;
+ DMLabel groupField;
const bool useLagrangeConstraints = true;
+
+ err = DMPlexGetStratumSize(dmMesh, data.faultLabel, 1, &firstLagrangeVertex);CHECK_PETSC_ERROR(err);
+ firstFaultCell = firstLagrangeVertex;
if (useLagrangeConstraints) {
- firstFaultCell += mesh.sieveMesh()->getIntSection(data.faultLabel)->size();
+ firstFaultCell += firstLagrangeVertex;
}
+ err = DMPlexGetLabel(dmMesh, data.faultLabel, &groupField);CHECK_PETSC_ERROR(err);
+ CPPUNIT_ASSERT(groupField);
ALE::Obj<SieveFlexMesh> faultBoundary = 0;
const ALE::Obj<SieveMesh>& sieveMesh = mesh.sieveMesh();
CPPUNIT_ASSERT(!sieveMesh.isNull());
CohesiveTopology::createFault(&faultMesh, faultBoundary,
- mesh, sieveMesh->getIntSection(data.faultLabel));
+ mesh, groupField);
CohesiveTopology::create(&mesh, faultMesh, faultBoundary,
sieveMesh->getIntSection(data.faultLabel),
data.faultId,
@@ -476,17 +489,16 @@
CPPUNIT_ASSERT(!faultSieveMesh.isNull());
const ALE::Obj<RealSection>& oldCoordSection = sieveMesh->getRealSection("coordinates");
faultSieveMesh->setRealSection("coordinates", oldCoordSection);
- DM dmMesh = faultMesh.dmMesh();
+ DM faultDMMesh = faultMesh.dmMesh();
IS subpointIS;
const PetscInt *points;
PetscSection coordSection;
PetscInt vStart, vEnd;
- PetscErrorCode err;
- CPPUNIT_ASSERT(dmMesh);
+ CPPUNIT_ASSERT(faultDMMesh);
- err = DMPlexGetDepthStratum(dmMesh, 0, &vStart, &vEnd);CHECK_PETSC_ERROR(err);
- err = DMPlexCreateSubpointIS(dmMesh, &subpointIS);CHECK_PETSC_ERROR(err);
- err = DMPlexGetCoordinateSection(dmMesh, &coordSection);CHECK_PETSC_ERROR(err);
+ err = DMPlexGetDepthStratum(faultDMMesh, 0, &vStart, &vEnd);CHECK_PETSC_ERROR(err);
+ err = DMPlexCreateSubpointIS(faultDMMesh, &subpointIS);CHECK_PETSC_ERROR(err);
+ err = DMPlexGetCoordinateSection(faultDMMesh, &coordSection);CHECK_PETSC_ERROR(err);
err = PetscSectionSetChart(coordSection, vStart, vEnd);CHECK_PETSC_ERROR(err);
for(PetscInt v = vStart; v < vEnd; ++v) {
err = PetscSectionSetDof(coordSection, v, spaceDim);CHECK_PETSC_ERROR(err);
@@ -514,7 +526,7 @@
err = ISRestoreIndices(subpointIS, &points);CHECK_PETSC_ERROR(err);
err = ISDestroy(&subpointIS);CHECK_PETSC_ERROR(err);
err = VecRestoreArray(coordVec, &coords);CHECK_PETSC_ERROR(err);
- err = DMSetCoordinatesLocal(dmMesh, coordVec);CHECK_PETSC_ERROR(err);
+ err = DMSetCoordinatesLocal(faultDMMesh, coordVec);CHECK_PETSC_ERROR(err);
// Setup databases
spatialdata::spatialdb::SimpleDB dbFinalSlip("final slip");
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestConstRateSlipFn.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestConstRateSlipFn.cc 2013-03-05 10:54:16 UTC (rev 21447)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestConstRateSlipFn.cc 2013-03-05 16:00:49 UTC (rev 21448)
@@ -252,6 +252,7 @@
CPPUNIT_ASSERT(0 != mesh);
CPPUNIT_ASSERT(0 != faultMesh);
CPPUNIT_ASSERT(0 != slipfn);
+ PetscErrorCode err;
const char* meshFilename = "data/tri3.mesh";
const char* faultLabel = "fault";
@@ -273,18 +274,24 @@
mesh->coordsys(&cs);
// Create fault mesh
- int firstFaultVertex = 0;
- int firstLagrangeVertex = mesh->sieveMesh()->getIntSection(faultLabel)->size();
- int firstFaultCell = mesh->sieveMesh()->getIntSection(faultLabel)->size();
+ DM dmMesh = mesh->dmMesh();
+ PetscInt firstFaultVertex = 0;
+ PetscInt firstLagrangeVertex, firstFaultCell;
+ DMLabel groupField;
const bool useLagrangeConstraints = true;
+
+ err = DMPlexGetStratumSize(dmMesh, faultLabel, 1, &firstLagrangeVertex);CHECK_PETSC_ERROR(err);
+ firstFaultCell = firstLagrangeVertex;
if (useLagrangeConstraints) {
- firstFaultCell += mesh->sieveMesh()->getIntSection(faultLabel)->size();
+ firstFaultCell += firstLagrangeVertex;
}
+ err = DMPlexGetLabel(dmMesh, faultLabel, &groupField);CHECK_PETSC_ERROR(err);
+ CPPUNIT_ASSERT(groupField);
ALE::Obj<SieveFlexMesh> faultBoundary = 0;
const ALE::Obj<SieveMesh>& sieveMesh = mesh->sieveMesh();
CPPUNIT_ASSERT(!sieveMesh.isNull());
CohesiveTopology::createFault(faultMesh, faultBoundary,
- *mesh, sieveMesh->getIntSection(faultLabel));
+ *mesh, groupField);
CohesiveTopology::create(mesh, *faultMesh, faultBoundary,
sieveMesh->getIntSection(faultLabel),
faultId,
@@ -296,17 +303,16 @@
CPPUNIT_ASSERT(!faultSieveMesh.isNull());
const ALE::Obj<RealSection>& oldCoordSection = sieveMesh->getRealSection("coordinates");
faultSieveMesh->setRealSection("coordinates", oldCoordSection);
- DM dmMesh = faultMesh->dmMesh();
+ DM faultDMMesh = faultMesh->dmMesh();
IS subpointIS;
const PetscInt *points;
PetscSection coordSection;
PetscInt vStart, vEnd;
- PetscErrorCode err;
- CPPUNIT_ASSERT(dmMesh);
- err = DMPlexGetDepthStratum(dmMesh, 0, &vStart, &vEnd);CHECK_PETSC_ERROR(err);
- err = DMPlexCreateSubpointIS(dmMesh, &subpointIS);CHECK_PETSC_ERROR(err);
- err = DMPlexGetCoordinateSection(dmMesh, &coordSection);CHECK_PETSC_ERROR(err);
+ CPPUNIT_ASSERT(faultDMMesh);
+ err = DMPlexGetDepthStratum(faultDMMesh, 0, &vStart, &vEnd);CHECK_PETSC_ERROR(err);
+ err = DMPlexCreateSubpointIS(faultDMMesh, &subpointIS);CHECK_PETSC_ERROR(err);
+ err = DMPlexGetCoordinateSection(faultDMMesh, &coordSection);CHECK_PETSC_ERROR(err);
err = PetscSectionSetChart(coordSection, vStart, vEnd);CHECK_PETSC_ERROR(err);
for(PetscInt v = vStart; v < vEnd; ++v) {
err = PetscSectionSetDof(coordSection, v, spaceDim);CHECK_PETSC_ERROR(err);
@@ -334,7 +340,7 @@
err = ISRestoreIndices(subpointIS, &points);CHECK_PETSC_ERROR(err);
err = ISDestroy(&subpointIS);CHECK_PETSC_ERROR(err);
err = VecRestoreArray(coordVec, &coords);CHECK_PETSC_ERROR(err);
- err = DMSetCoordinatesLocal(dmMesh, coordVec);CHECK_PETSC_ERROR(err);
+ err = DMSetCoordinatesLocal(faultDMMesh, coordVec);CHECK_PETSC_ERROR(err);
// Setup databases
spatialdata::spatialdb::SimpleDB dbSlipRate("slip rate");
@@ -361,6 +367,7 @@
void
pylith::faults::TestConstRateSlipFn::_testInitialize(const _TestConstRateSlipFn::DataStruct& data)
{ // _testInitialize
+ PetscErrorCode err;
// Setup mesh
topology::Mesh mesh;
meshio::MeshIOAscii meshIO;
@@ -378,18 +385,24 @@
// Create fault mesh
topology::SubMesh faultMesh;
- int firstFaultVertex = 0;
- int firstLagrangeVertex = mesh.sieveMesh()->getIntSection(data.faultLabel)->size();
- int firstFaultCell = mesh.sieveMesh()->getIntSection(data.faultLabel)->size();
+ DM dmMesh = mesh.dmMesh();
+ PetscInt firstFaultVertex = 0;
+ PetscInt firstLagrangeVertex, firstFaultCell;
+ DMLabel groupField;
const bool useLagrangeConstraints = true;
+
+ err = DMPlexGetStratumSize(dmMesh, data.faultLabel, 1, &firstLagrangeVertex);CHECK_PETSC_ERROR(err);
+ firstFaultCell = firstLagrangeVertex;
if (useLagrangeConstraints) {
- firstFaultCell += mesh.sieveMesh()->getIntSection(data.faultLabel)->size();
+ firstFaultCell += firstLagrangeVertex;
}
+ err = DMPlexGetLabel(dmMesh, data.faultLabel, &groupField);CHECK_PETSC_ERROR(err);
+ CPPUNIT_ASSERT(groupField);
ALE::Obj<SieveFlexMesh> faultBoundary = 0;
const ALE::Obj<SieveMesh>& sieveMesh = mesh.sieveMesh();
CPPUNIT_ASSERT(!sieveMesh.isNull());
CohesiveTopology::createFault(&faultMesh, faultBoundary,
- mesh, sieveMesh->getIntSection(data.faultLabel));
+ mesh, groupField);
CohesiveTopology::create(&mesh, faultMesh, faultBoundary,
sieveMesh->getIntSection(data.faultLabel),
data.faultId,
@@ -401,17 +414,16 @@
CPPUNIT_ASSERT(!faultSieveMesh.isNull());
const ALE::Obj<RealSection>& oldCoordSection = sieveMesh->getRealSection("coordinates");
faultSieveMesh->setRealSection("coordinates", oldCoordSection);
- DM dmMesh = faultMesh.dmMesh();
+ DM faultDMMesh = faultMesh.dmMesh();
IS subpointIS;
const PetscInt *points;
PetscSection coordSection;
PetscInt vStart, vEnd;
- PetscErrorCode err;
- CPPUNIT_ASSERT(dmMesh);
- err = DMPlexGetDepthStratum(dmMesh, 0, &vStart, &vEnd);CHECK_PETSC_ERROR(err);
- err = DMPlexCreateSubpointIS(dmMesh, &subpointIS);CHECK_PETSC_ERROR(err);
- err = DMPlexGetCoordinateSection(dmMesh, &coordSection);CHECK_PETSC_ERROR(err);
+ CPPUNIT_ASSERT(faultDMMesh);
+ err = DMPlexGetDepthStratum(faultDMMesh, 0, &vStart, &vEnd);CHECK_PETSC_ERROR(err);
+ err = DMPlexCreateSubpointIS(faultDMMesh, &subpointIS);CHECK_PETSC_ERROR(err);
+ err = DMPlexGetCoordinateSection(faultDMMesh, &coordSection);CHECK_PETSC_ERROR(err);
err = PetscSectionSetChart(coordSection, vStart, vEnd);CHECK_PETSC_ERROR(err);
for(PetscInt v = vStart; v < vEnd; ++v) {
err = PetscSectionSetDof(coordSection, v, spaceDim);CHECK_PETSC_ERROR(err);
@@ -439,7 +451,7 @@
err = ISRestoreIndices(subpointIS, &points);CHECK_PETSC_ERROR(err);
err = ISDestroy(&subpointIS);CHECK_PETSC_ERROR(err);
err = VecRestoreArray(coordVec, &coords);CHECK_PETSC_ERROR(err);
- err = DMSetCoordinatesLocal(dmMesh, coordVec);CHECK_PETSC_ERROR(err);
+ err = DMSetCoordinatesLocal(faultDMMesh, coordVec);CHECK_PETSC_ERROR(err);
// Setup databases
spatialdata::spatialdb::SimpleDB dbSlipRate("slip rate");
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestEqKinSrc.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestEqKinSrc.cc 2013-03-05 10:54:16 UTC (rev 21447)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestEqKinSrc.cc 2013-03-05 16:00:49 UTC (rev 21448)
@@ -157,6 +157,7 @@
CPPUNIT_ASSERT(0 != faultMesh);
CPPUNIT_ASSERT(0 != eqsrc);
CPPUNIT_ASSERT(0 != slipfn);
+ PetscErrorCode err;
const char* meshFilename = "data/tri3.mesh";
const char* faultLabel = "fault";
@@ -179,18 +180,24 @@
mesh->coordsys(&cs);
// Create fault mesh
- int firstFaultVertex = 0;
- int firstLagrangeVertex = mesh->sieveMesh()->getIntSection(faultLabel)->size();
- int firstFaultCell = mesh->sieveMesh()->getIntSection(faultLabel)->size();
+ DM dmMesh = mesh->dmMesh();
+ PetscInt firstFaultVertex = 0;
+ PetscInt firstLagrangeVertex, firstFaultCell;
+ DMLabel groupField;
const bool useLagrangeConstraints = true;
+
+ err = DMPlexGetStratumSize(dmMesh, faultLabel, 1, &firstLagrangeVertex);CHECK_PETSC_ERROR(err);
+ firstFaultCell = firstLagrangeVertex;
if (useLagrangeConstraints) {
- firstFaultCell += mesh->sieveMesh()->getIntSection(faultLabel)->size();
+ firstFaultCell += firstLagrangeVertex;
}
+ err = DMPlexGetLabel(dmMesh, faultLabel, &groupField);CHECK_PETSC_ERROR(err);
+ CPPUNIT_ASSERT(groupField);
ALE::Obj<SieveFlexMesh> faultBoundary = 0;
const ALE::Obj<SieveMesh>& sieveMesh = mesh->sieveMesh();
CPPUNIT_ASSERT(!sieveMesh.isNull());
CohesiveTopology::createFault(faultMesh, faultBoundary,
- *mesh, sieveMesh->getIntSection(faultLabel));
+ *mesh, groupField);
CohesiveTopology::create(mesh, *faultMesh, faultBoundary,
sieveMesh->getIntSection(faultLabel),
faultId,
@@ -202,17 +209,16 @@
CPPUNIT_ASSERT(!faultSieveMesh.isNull());
const ALE::Obj<RealSection>& oldCoordSection = sieveMesh->getRealSection("coordinates");
faultSieveMesh->setRealSection("coordinates", oldCoordSection);
- DM dmMesh = faultMesh->dmMesh();
+ DM faultDMMesh = faultMesh->dmMesh();
IS subpointIS;
const PetscInt *points;
PetscSection coordSection;
PetscInt vStart, vEnd;
- PetscErrorCode err;
- CPPUNIT_ASSERT(dmMesh);
+ CPPUNIT_ASSERT(faultDMMesh);
- err = DMPlexGetDepthStratum(dmMesh, 0, &vStart, &vEnd);CHECK_PETSC_ERROR(err);
- err = DMPlexCreateSubpointIS(dmMesh, &subpointIS);CHECK_PETSC_ERROR(err);
- err = DMPlexGetCoordinateSection(dmMesh, &coordSection);CHECK_PETSC_ERROR(err);
+ err = DMPlexGetDepthStratum(faultDMMesh, 0, &vStart, &vEnd);CHECK_PETSC_ERROR(err);
+ err = DMPlexCreateSubpointIS(faultDMMesh, &subpointIS);CHECK_PETSC_ERROR(err);
+ err = DMPlexGetCoordinateSection(faultDMMesh, &coordSection);CHECK_PETSC_ERROR(err);
err = PetscSectionSetChart(coordSection, vStart, vEnd);CHECK_PETSC_ERROR(err);
for(PetscInt v = vStart; v < vEnd; ++v) {
err = PetscSectionSetDof(coordSection, v, spaceDim);CHECK_PETSC_ERROR(err);
@@ -240,7 +246,7 @@
err = ISRestoreIndices(subpointIS, &points);CHECK_PETSC_ERROR(err);
err = ISDestroy(&subpointIS);CHECK_PETSC_ERROR(err);
err = VecRestoreArray(coordVec, &coords);CHECK_PETSC_ERROR(err);
- err = DMSetCoordinatesLocal(dmMesh, coordVec);CHECK_PETSC_ERROR(err);
+ err = DMSetCoordinatesLocal(faultDMMesh, coordVec);CHECK_PETSC_ERROR(err);
// Setup databases
spatialdata::spatialdb::SimpleDB dbFinalSlip("final slip");
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestLiuCosSlipFn.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestLiuCosSlipFn.cc 2013-03-05 10:54:16 UTC (rev 21447)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestLiuCosSlipFn.cc 2013-03-05 16:00:49 UTC (rev 21448)
@@ -315,6 +315,7 @@
const PylithScalar originTime)
{ // _initialize
assert(0 != slipfn);
+ PetscErrorCode err;
const char* meshFilename = "data/tri3.mesh";
const char* faultLabel = "fault";
@@ -337,18 +338,24 @@
mesh->coordsys(&cs);
// Create fault mesh
- int firstFaultVertex = 0;
- int firstLagrangeVertex = mesh->sieveMesh()->getIntSection(faultLabel)->size();
- int firstFaultCell = mesh->sieveMesh()->getIntSection(faultLabel)->size();
+ DM dmMesh = mesh->dmMesh();
+ PetscInt firstFaultVertex = 0;
+ PetscInt firstLagrangeVertex, firstFaultCell;
+ DMLabel groupField;
const bool useLagrangeConstraints = true;
+
+ err = DMPlexGetStratumSize(dmMesh, faultLabel, 1, &firstLagrangeVertex);CHECK_PETSC_ERROR(err);
+ firstFaultCell = firstLagrangeVertex;
if (useLagrangeConstraints) {
- firstFaultCell += mesh->sieveMesh()->getIntSection(faultLabel)->size();
+ firstFaultCell += firstLagrangeVertex;
}
+ err = DMPlexGetLabel(dmMesh, faultLabel, &groupField);CHECK_PETSC_ERROR(err);
+ CPPUNIT_ASSERT(groupField);
ALE::Obj<SieveFlexMesh> faultBoundary = 0;
const ALE::Obj<SieveMesh>& sieveMesh = mesh->sieveMesh();
CPPUNIT_ASSERT(!sieveMesh.isNull());
CohesiveTopology::createFault(faultMesh, faultBoundary,
- *mesh, sieveMesh->getIntSection(faultLabel));
+ *mesh, groupField);
CohesiveTopology::create(mesh, *faultMesh, faultBoundary,
sieveMesh->getIntSection(faultLabel),
faultId, firstFaultVertex, firstLagrangeVertex,
@@ -359,17 +366,16 @@
CPPUNIT_ASSERT(!faultSieveMesh.isNull());
const ALE::Obj<RealSection>& oldCoordSection = sieveMesh->getRealSection("coordinates");
faultSieveMesh->setRealSection("coordinates", oldCoordSection);
- DM dmMesh = faultMesh->dmMesh();
+ DM faultDMMesh = faultMesh->dmMesh();
IS subpointIS;
const PetscInt *points;
PetscSection coordSection;
PetscInt vStart, vEnd;
- PetscErrorCode err;
- CPPUNIT_ASSERT(dmMesh);
+ CPPUNIT_ASSERT(faultDMMesh);
- err = DMPlexGetDepthStratum(dmMesh, 0, &vStart, &vEnd);CHECK_PETSC_ERROR(err);
- err = DMPlexCreateSubpointIS(dmMesh, &subpointIS);CHECK_PETSC_ERROR(err);
- err = DMPlexGetCoordinateSection(dmMesh, &coordSection);CHECK_PETSC_ERROR(err);
+ err = DMPlexGetDepthStratum(faultDMMesh, 0, &vStart, &vEnd);CHECK_PETSC_ERROR(err);
+ err = DMPlexCreateSubpointIS(faultDMMesh, &subpointIS);CHECK_PETSC_ERROR(err);
+ err = DMPlexGetCoordinateSection(faultDMMesh, &coordSection);CHECK_PETSC_ERROR(err);
err = PetscSectionSetChart(coordSection, vStart, vEnd);CHECK_PETSC_ERROR(err);
for(PetscInt v = vStart; v < vEnd; ++v) {
err = PetscSectionSetDof(coordSection, v, spaceDim);CHECK_PETSC_ERROR(err);
@@ -397,7 +403,7 @@
err = ISRestoreIndices(subpointIS, &points);CHECK_PETSC_ERROR(err);
err = ISDestroy(&subpointIS);CHECK_PETSC_ERROR(err);
err = VecRestoreArray(coordVec, &coords);CHECK_PETSC_ERROR(err);
- err = DMSetCoordinatesLocal(dmMesh, coordVec);CHECK_PETSC_ERROR(err);
+ err = DMSetCoordinatesLocal(faultDMMesh, coordVec);CHECK_PETSC_ERROR(err);
// Setup databases
spatialdata::spatialdb::SimpleDB dbFinalSlip("final slip");
@@ -430,6 +436,7 @@
void
pylith::faults::TestLiuCosSlipFn::_testInitialize(const _TestLiuCosSlipFn::DataStruct& data)
{ // _testInitialize
+ PetscErrorCode err;
// Setup mesh
topology::Mesh mesh;
meshio::MeshIOAscii meshIO;
@@ -447,18 +454,24 @@
// Create fault mesh
topology::SubMesh faultMesh;
- int firstFaultVertex = 0;
- int firstLagrangeVertex = mesh.sieveMesh()->getIntSection(data.faultLabel)->size();
- int firstFaultCell = mesh.sieveMesh()->getIntSection(data.faultLabel)->size();
+ DM dmMesh = mesh.dmMesh();
+ PetscInt firstFaultVertex = 0;
+ PetscInt firstLagrangeVertex, firstFaultCell;
+ DMLabel groupField;
const bool useLagrangeConstraints = true;
+
+ err = DMPlexGetStratumSize(dmMesh, data.faultLabel, 1, &firstLagrangeVertex);CHECK_PETSC_ERROR(err);
+ firstFaultCell = firstLagrangeVertex;
if (useLagrangeConstraints) {
- firstFaultCell += mesh.sieveMesh()->getIntSection(data.faultLabel)->size();
+ firstFaultCell += firstLagrangeVertex;
}
+ err = DMPlexGetLabel(dmMesh, data.faultLabel, &groupField);CHECK_PETSC_ERROR(err);
+ CPPUNIT_ASSERT(groupField);
ALE::Obj<SieveFlexMesh> faultBoundary = 0;
const ALE::Obj<SieveMesh>& sieveMesh = mesh.sieveMesh();
CPPUNIT_ASSERT(!sieveMesh.isNull());
CohesiveTopology::createFault(&faultMesh, faultBoundary,
- mesh, sieveMesh->getIntSection(data.faultLabel));
+ mesh, groupField);
CohesiveTopology::create(&mesh, faultMesh, faultBoundary,
sieveMesh->getIntSection(data.faultLabel),
data.faultId, firstFaultVertex, firstLagrangeVertex,
@@ -469,17 +482,16 @@
CPPUNIT_ASSERT(!faultSieveMesh.isNull());
const ALE::Obj<RealSection>& oldCoordSection = sieveMesh->getRealSection("coordinates");
faultSieveMesh->setRealSection("coordinates", oldCoordSection);
- DM dmMesh = faultMesh.dmMesh();
+ DM faultDMMesh = faultMesh.dmMesh();
IS subpointIS;
const PetscInt *points;
PetscSection coordSection;
PetscInt vStart, vEnd;
- PetscErrorCode err;
- CPPUNIT_ASSERT(dmMesh);
+ CPPUNIT_ASSERT(faultDMMesh);
- err = DMPlexGetDepthStratum(dmMesh, 0, &vStart, &vEnd);CHECK_PETSC_ERROR(err);
- err = DMPlexCreateSubpointIS(dmMesh, &subpointIS);CHECK_PETSC_ERROR(err);
- err = DMPlexGetCoordinateSection(dmMesh, &coordSection);CHECK_PETSC_ERROR(err);
+ err = DMPlexGetDepthStratum(faultDMMesh, 0, &vStart, &vEnd);CHECK_PETSC_ERROR(err);
+ err = DMPlexCreateSubpointIS(faultDMMesh, &subpointIS);CHECK_PETSC_ERROR(err);
+ err = DMPlexGetCoordinateSection(faultDMMesh, &coordSection);CHECK_PETSC_ERROR(err);
err = PetscSectionSetChart(coordSection, vStart, vEnd);CHECK_PETSC_ERROR(err);
for(PetscInt v = vStart; v < vEnd; ++v) {
err = PetscSectionSetDof(coordSection, v, spaceDim);CHECK_PETSC_ERROR(err);
@@ -507,7 +519,7 @@
err = ISRestoreIndices(subpointIS, &points);CHECK_PETSC_ERROR(err);
err = ISDestroy(&subpointIS);CHECK_PETSC_ERROR(err);
err = VecRestoreArray(coordVec, &coords);CHECK_PETSC_ERROR(err);
- err = DMSetCoordinatesLocal(dmMesh, coordVec);CHECK_PETSC_ERROR(err);
+ err = DMSetCoordinatesLocal(faultDMMesh, coordVec);CHECK_PETSC_ERROR(err);
// Setup databases
spatialdata::spatialdb::SimpleDB dbFinalSlip("final slip");
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestStepSlipFn.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestStepSlipFn.cc 2013-03-05 10:54:16 UTC (rev 21447)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestStepSlipFn.cc 2013-03-05 16:00:49 UTC (rev 21448)
@@ -248,6 +248,7 @@
CPPUNIT_ASSERT(0 != mesh);
CPPUNIT_ASSERT(0 != faultMesh);
CPPUNIT_ASSERT(0 != slipfn);
+ PetscErrorCode err;
const char* meshFilename = "data/tri3.mesh";
const char* faultLabel = "fault";
@@ -269,18 +270,24 @@
mesh->coordsys(&cs);
// Create fault mesh
- int firstFaultVertex = 0;
- int firstLagrangeVertex = mesh->sieveMesh()->getIntSection(faultLabel)->size();
- int firstFaultCell = mesh->sieveMesh()->getIntSection(faultLabel)->size();
+ DM dmMesh = mesh->dmMesh();
+ PetscInt firstFaultVertex = 0;
+ PetscInt firstLagrangeVertex, firstFaultCell;
+ DMLabel groupField;
const bool useLagrangeConstraints = true;
+
+ err = DMPlexGetStratumSize(dmMesh, faultLabel, 1, &firstLagrangeVertex);CHECK_PETSC_ERROR(err);
+ firstFaultCell = firstLagrangeVertex;
if (useLagrangeConstraints) {
- firstFaultCell += mesh->sieveMesh()->getIntSection(faultLabel)->size();
+ firstFaultCell += firstLagrangeVertex;
}
+ err = DMPlexGetLabel(dmMesh, faultLabel, &groupField);CHECK_PETSC_ERROR(err);
+ CPPUNIT_ASSERT(groupField);
ALE::Obj<SieveFlexMesh> faultBoundary = 0;
const ALE::Obj<SieveMesh>& sieveMesh = mesh->sieveMesh();
- CPPUNIT_ASSERT(!sieveMesh.isNull());
+ CPPUNIT_ASSERT(!sieveMesh.isNull());CPPUNIT_ASSERT(dmMesh);
CohesiveTopology::createFault(faultMesh, faultBoundary,
- *mesh, sieveMesh->getIntSection(faultLabel));
+ *mesh, groupField);
CohesiveTopology::create(mesh, *faultMesh, faultBoundary,
sieveMesh->getIntSection(faultLabel),
faultId,
@@ -292,17 +299,16 @@
CPPUNIT_ASSERT(!faultSieveMesh.isNull());
const ALE::Obj<RealSection>& oldCoordSection = sieveMesh->getRealSection("coordinates");
faultSieveMesh->setRealSection("coordinates", oldCoordSection);
- DM dmMesh = faultMesh->dmMesh();
+ DM faultDMMesh = faultMesh->dmMesh();
IS subpointIS;
const PetscInt *points;
PetscSection coordSection;
PetscInt vStart, vEnd;
- PetscErrorCode err;
- CPPUNIT_ASSERT(dmMesh);
+ CPPUNIT_ASSERT(faultDMMesh);
- err = DMPlexGetDepthStratum(dmMesh, 0, &vStart, &vEnd);CHECK_PETSC_ERROR(err);
- err = DMPlexCreateSubpointIS(dmMesh, &subpointIS);CHECK_PETSC_ERROR(err);
- err = DMPlexGetCoordinateSection(dmMesh, &coordSection);CHECK_PETSC_ERROR(err);
+ err = DMPlexGetDepthStratum(faultDMMesh, 0, &vStart, &vEnd);CHECK_PETSC_ERROR(err);
+ err = DMPlexCreateSubpointIS(faultDMMesh, &subpointIS);CHECK_PETSC_ERROR(err);
+ err = DMPlexGetCoordinateSection(faultDMMesh, &coordSection);CHECK_PETSC_ERROR(err);
err = PetscSectionSetChart(coordSection, vStart, vEnd);CHECK_PETSC_ERROR(err);
for(PetscInt v = vStart; v < vEnd; ++v) {
err = PetscSectionSetDof(coordSection, v, spaceDim);CHECK_PETSC_ERROR(err);
@@ -330,7 +336,7 @@
err = ISRestoreIndices(subpointIS, &points);CHECK_PETSC_ERROR(err);
err = ISDestroy(&subpointIS);CHECK_PETSC_ERROR(err);
err = VecRestoreArray(coordVec, &coords);CHECK_PETSC_ERROR(err);
- err = DMSetCoordinatesLocal(dmMesh, coordVec);CHECK_PETSC_ERROR(err);
+ err = DMSetCoordinatesLocal(faultDMMesh, coordVec);CHECK_PETSC_ERROR(err);
// Setup databases
spatialdata::spatialdb::SimpleDB dbFinalSlip("final slip");
@@ -357,6 +363,7 @@
void
pylith::faults::TestStepSlipFn::_testInitialize(const _TestStepSlipFn::DataStruct& data)
{ // _testInitialize
+ PetscErrorCode err;
// Setup mesh
topology::Mesh mesh;
meshio::MeshIOAscii meshIO;
@@ -383,9 +390,14 @@
}
ALE::Obj<SieveFlexMesh> faultBoundary = 0;
const ALE::Obj<SieveMesh>& sieveMesh = mesh.sieveMesh();
- CPPUNIT_ASSERT(!sieveMesh.isNull());
+ DM dmMesh = mesh.dmMesh();
+ DMLabel groupField;
+
+ CPPUNIT_ASSERT(!sieveMesh.isNull());CPPUNIT_ASSERT(dmMesh);
+ err = DMPlexGetLabel(dmMesh, data.faultLabel, &groupField);CHECK_PETSC_ERROR(err);
+ CPPUNIT_ASSERT(groupField);
CohesiveTopology::createFault(&faultMesh, faultBoundary,
- mesh, sieveMesh->getIntSection(data.faultLabel));
+ mesh, groupField);
CohesiveTopology::create(&mesh, faultMesh, faultBoundary,
sieveMesh->getIntSection(data.faultLabel),
data.faultId,
@@ -397,17 +409,16 @@
CPPUNIT_ASSERT(!faultSieveMesh.isNull());
const ALE::Obj<RealSection>& oldCoordSection = sieveMesh->getRealSection("coordinates");
faultSieveMesh->setRealSection("coordinates", oldCoordSection);
- DM dmMesh = faultMesh.dmMesh();
+ DM faultDMMesh = faultMesh.dmMesh();
IS subpointIS;
const PetscInt *points;
PetscSection coordSection;
PetscInt vStart, vEnd;
- PetscErrorCode err;
- CPPUNIT_ASSERT(dmMesh);
+ CPPUNIT_ASSERT(faultDMMesh);
- err = DMPlexGetDepthStratum(dmMesh, 0, &vStart, &vEnd);CHECK_PETSC_ERROR(err);
- err = DMPlexCreateSubpointIS(dmMesh, &subpointIS);CHECK_PETSC_ERROR(err);
- err = DMPlexGetCoordinateSection(dmMesh, &coordSection);CHECK_PETSC_ERROR(err);
+ err = DMPlexGetDepthStratum(faultDMMesh, 0, &vStart, &vEnd);CHECK_PETSC_ERROR(err);
+ err = DMPlexCreateSubpointIS(faultDMMesh, &subpointIS);CHECK_PETSC_ERROR(err);
+ err = DMPlexGetCoordinateSection(faultDMMesh, &coordSection);CHECK_PETSC_ERROR(err);
err = PetscSectionSetChart(coordSection, vStart, vEnd);CHECK_PETSC_ERROR(err);
for(PetscInt v = vStart; v < vEnd; ++v) {
err = PetscSectionSetDof(coordSection, v, spaceDim);CHECK_PETSC_ERROR(err);
@@ -435,7 +446,7 @@
err = ISRestoreIndices(subpointIS, &points);CHECK_PETSC_ERROR(err);
err = ISDestroy(&subpointIS);CHECK_PETSC_ERROR(err);
err = VecRestoreArray(coordVec, &coords);CHECK_PETSC_ERROR(err);
- err = DMSetCoordinatesLocal(dmMesh, coordVec);CHECK_PETSC_ERROR(err);
+ err = DMSetCoordinatesLocal(faultDMMesh, coordVec);CHECK_PETSC_ERROR(err);
// Setup databases
spatialdata::spatialdb::SimpleDB dbFinalSlip("final slip");
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestTimeHistorySlipFn.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestTimeHistorySlipFn.cc 2013-03-05 10:54:16 UTC (rev 21447)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestTimeHistorySlipFn.cc 2013-03-05 16:00:49 UTC (rev 21448)
@@ -277,6 +277,7 @@
const PylithScalar originTime)
{ // _initialize
assert(0 != slipfn);
+ PetscErrorCode err;
const char* meshFilename = "data/tri3.mesh";
const char* faultLabel = "fault";
@@ -299,18 +300,24 @@
mesh->coordsys(&cs);
// Create fault mesh
- int firstFaultVertex = 0;
- int firstLagrangeVertex = mesh->sieveMesh()->getIntSection(faultLabel)->size();
- int firstFaultCell = mesh->sieveMesh()->getIntSection(faultLabel)->size();
+ DM dmMesh = mesh->dmMesh();
+ PetscInt firstFaultVertex = 0;
+ PetscInt firstLagrangeVertex, firstFaultCell;
+ DMLabel groupField;
const bool useLagrangeConstraints = true;
+
+ err = DMPlexGetStratumSize(dmMesh, faultLabel, 1, &firstLagrangeVertex);CHECK_PETSC_ERROR(err);
+ firstFaultCell = firstLagrangeVertex;
if (useLagrangeConstraints) {
- firstFaultCell += mesh->sieveMesh()->getIntSection(faultLabel)->size();
+ firstFaultCell += firstLagrangeVertex;
}
+ err = DMPlexGetLabel(dmMesh, faultLabel, &groupField);CHECK_PETSC_ERROR(err);
+ CPPUNIT_ASSERT(groupField);
ALE::Obj<SieveFlexMesh> faultBoundary = 0;
const ALE::Obj<SieveMesh>& sieveMesh = mesh->sieveMesh();
CPPUNIT_ASSERT(!sieveMesh.isNull());
CohesiveTopology::createFault(faultMesh, faultBoundary,
- *mesh, sieveMesh->getIntSection(faultLabel));
+ *mesh, groupField);
CohesiveTopology::create(mesh, *faultMesh, faultBoundary,
sieveMesh->getIntSection(faultLabel),
faultId, firstFaultVertex, firstLagrangeVertex,
@@ -321,17 +328,16 @@
CPPUNIT_ASSERT(!faultSieveMesh.isNull());
const ALE::Obj<RealSection>& oldCoordSection = sieveMesh->getRealSection("coordinates");
faultSieveMesh->setRealSection("coordinates", oldCoordSection);
- DM dmMesh = faultMesh->dmMesh();
+ DM faultDMMesh = faultMesh->dmMesh();
IS subpointIS;
const PetscInt *points;
PetscSection coordSection;
PetscInt vStart, vEnd;
- PetscErrorCode err;
- CPPUNIT_ASSERT(dmMesh);
+ CPPUNIT_ASSERT(faultDMMesh);
- err = DMPlexGetDepthStratum(dmMesh, 0, &vStart, &vEnd);CHECK_PETSC_ERROR(err);
- err = DMPlexCreateSubpointIS(dmMesh, &subpointIS);CHECK_PETSC_ERROR(err);
- err = DMPlexGetCoordinateSection(dmMesh, &coordSection);CHECK_PETSC_ERROR(err);
+ err = DMPlexGetDepthStratum(faultDMMesh, 0, &vStart, &vEnd);CHECK_PETSC_ERROR(err);
+ err = DMPlexCreateSubpointIS(faultDMMesh, &subpointIS);CHECK_PETSC_ERROR(err);
+ err = DMPlexGetCoordinateSection(faultDMMesh, &coordSection);CHECK_PETSC_ERROR(err);
err = PetscSectionSetChart(coordSection, vStart, vEnd);CHECK_PETSC_ERROR(err);
for(PetscInt v = vStart; v < vEnd; ++v) {
err = PetscSectionSetDof(coordSection, v, spaceDim);CHECK_PETSC_ERROR(err);
@@ -359,7 +365,7 @@
err = ISRestoreIndices(subpointIS, &points);CHECK_PETSC_ERROR(err);
err = ISDestroy(&subpointIS);CHECK_PETSC_ERROR(err);
err = VecRestoreArray(coordVec, &coords);CHECK_PETSC_ERROR(err);
- err = DMSetCoordinatesLocal(dmMesh, coordVec);CHECK_PETSC_ERROR(err);
+ err = DMSetCoordinatesLocal(faultDMMesh, coordVec);CHECK_PETSC_ERROR(err);
// Setup databases
spatialdata::spatialdb::SimpleDB dbAmplitude("slip amplitude");
@@ -390,6 +396,7 @@
void
pylith::faults::TestTimeHistorySlipFn::_testInitialize(const _TestTimeHistorySlipFn::DataStruct& data)
{ // _testInitialize
+ PetscErrorCode err;
// Setup mesh
topology::Mesh mesh;
meshio::MeshIOAscii meshIO;
@@ -407,18 +414,24 @@
// Create fault mesh
topology::SubMesh faultMesh;
- int firstFaultVertex = 0;
- int firstLagrangeVertex = mesh.sieveMesh()->getIntSection(data.faultLabel)->size();
- int firstFaultCell = mesh.sieveMesh()->getIntSection(data.faultLabel)->size();
+ DM dmMesh = mesh.dmMesh();
+ PetscInt firstFaultVertex = 0;
+ PetscInt firstLagrangeVertex, firstFaultCell;
+ DMLabel groupField;
const bool useLagrangeConstraints = true;
+
+ err = DMPlexGetStratumSize(dmMesh, data.faultLabel, 1, &firstLagrangeVertex);CHECK_PETSC_ERROR(err);
+ firstFaultCell = firstLagrangeVertex;
if (useLagrangeConstraints) {
- firstFaultCell += mesh.sieveMesh()->getIntSection(data.faultLabel)->size();
+ firstFaultCell += firstLagrangeVertex;
}
+ err = DMPlexGetLabel(dmMesh, data.faultLabel, &groupField);CHECK_PETSC_ERROR(err);
+ CPPUNIT_ASSERT(groupField);
ALE::Obj<SieveFlexMesh> faultBoundary = 0;
const ALE::Obj<SieveMesh>& sieveMesh = mesh.sieveMesh();
CPPUNIT_ASSERT(!sieveMesh.isNull());
CohesiveTopology::createFault(&faultMesh, faultBoundary,
- mesh, sieveMesh->getIntSection(data.faultLabel));
+ mesh, groupField);
CohesiveTopology::create(&mesh, faultMesh, faultBoundary,
sieveMesh->getIntSection(data.faultLabel),
data.faultId, firstFaultVertex, firstLagrangeVertex,
@@ -429,17 +442,16 @@
CPPUNIT_ASSERT(!faultSieveMesh.isNull());
const ALE::Obj<RealSection>& oldCoordSection = sieveMesh->getRealSection("coordinates");
faultSieveMesh->setRealSection("coordinates", oldCoordSection);
- DM dmMesh = faultMesh.dmMesh();
+ DM faultDMMesh = faultMesh.dmMesh();
IS subpointIS;
const PetscInt *points;
PetscSection coordSection;
PetscInt vStart, vEnd;
- PetscErrorCode err;
- CPPUNIT_ASSERT(dmMesh);
+ CPPUNIT_ASSERT(faultDMMesh);
- err = DMPlexGetDepthStratum(dmMesh, 0, &vStart, &vEnd);CHECK_PETSC_ERROR(err);
- err = DMPlexCreateSubpointIS(dmMesh, &subpointIS);CHECK_PETSC_ERROR(err);
- err = DMPlexGetCoordinateSection(dmMesh, &coordSection);CHECK_PETSC_ERROR(err);
+ err = DMPlexGetDepthStratum(faultDMMesh, 0, &vStart, &vEnd);CHECK_PETSC_ERROR(err);
+ err = DMPlexCreateSubpointIS(faultDMMesh, &subpointIS);CHECK_PETSC_ERROR(err);
+ err = DMPlexGetCoordinateSection(faultDMMesh, &coordSection);CHECK_PETSC_ERROR(err);
err = PetscSectionSetChart(coordSection, vStart, vEnd);CHECK_PETSC_ERROR(err);
for(PetscInt v = vStart; v < vEnd; ++v) {
err = PetscSectionSetDof(coordSection, v, spaceDim);CHECK_PETSC_ERROR(err);
@@ -467,7 +479,7 @@
err = ISRestoreIndices(subpointIS, &points);CHECK_PETSC_ERROR(err);
err = ISDestroy(&subpointIS);CHECK_PETSC_ERROR(err);
err = VecRestoreArray(coordVec, &coords);CHECK_PETSC_ERROR(err);
- err = DMSetCoordinatesLocal(dmMesh, coordVec);CHECK_PETSC_ERROR(err);
+ err = DMSetCoordinatesLocal(faultDMMesh, coordVec);CHECK_PETSC_ERROR(err);
// Setup databases
spatialdata::spatialdb::SimpleDB dbAmplitude("slip amplitude");
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestTractPerturbation.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestTractPerturbation.cc 2013-03-05 10:54:16 UTC (rev 21447)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestTractPerturbation.cc 2013-03-05 16:00:49 UTC (rev 21448)
@@ -324,6 +324,7 @@
CPPUNIT_ASSERT(mesh);
CPPUNIT_ASSERT(faultMesh);
CPPUNIT_ASSERT(tract);
+ PetscErrorCode err;
const char* meshFilename = "data/tri3.mesh";
const char* faultLabel = "fault";
@@ -347,15 +348,19 @@
mesh->coordsys(&cs);
const int spaceDim = cs.spaceDim();
- PetscInt labelSize;
- PetscErrorCode err;
- err = DMPlexGetStratumSize(mesh->dmMesh(), faultLabel, 1, &labelSize);CHECK_PETSC_ERROR(err);
+ DM dmMesh = mesh->dmMesh();
+ PetscInt labelSize;
+ err = DMPlexGetStratumSize(dmMesh, faultLabel, 1, &labelSize);CHECK_PETSC_ERROR(err);
// Create fault mesh
PetscInt firstFaultVertex = 0;
PetscInt firstLagrangeVertex = labelSize;
PetscInt firstFaultCell = labelSize;
+ DMLabel groupField;
const bool useLagrangeConstraints = true;
+
+ err = DMPlexGetLabel(dmMesh, faultLabel, &groupField);CHECK_PETSC_ERROR(err);
+ CPPUNIT_ASSERT(groupField);
if (useLagrangeConstraints) {
firstFaultCell += labelSize;
} // if
@@ -363,7 +368,7 @@
const ALE::Obj<SieveMesh>& sieveMesh = mesh->sieveMesh();
CPPUNIT_ASSERT(!sieveMesh.isNull());
CohesiveTopology::createFault(faultMesh, faultBoundary,
- *mesh, sieveMesh->getIntSection(faultLabel));
+ *mesh, groupField);
CohesiveTopology::create(mesh, *faultMesh, faultBoundary,
sieveMesh->getIntSection(faultLabel),
faultId,
More information about the CIG-COMMITS
mailing list