[cig-commits] r21561 - short/3D/PyLith/trunk/unittests/libtests/friction
brad at geodynamics.org
brad at geodynamics.org
Mon Mar 18 13:48:45 PDT 2013
Author: brad
Date: 2013-03-18 13:48:44 -0700 (Mon, 18 Mar 2013)
New Revision: 21561
Modified:
short/3D/PyLith/trunk/unittests/libtests/friction/TestFrictionModel.cc
Log:
Code cleanup.
Modified: short/3D/PyLith/trunk/unittests/libtests/friction/TestFrictionModel.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/friction/TestFrictionModel.cc 2013-03-18 20:38:14 UTC (rev 21560)
+++ short/3D/PyLith/trunk/unittests/libtests/friction/TestFrictionModel.cc 2013-03-18 20:48:44 UTC (rev 21561)
@@ -28,6 +28,8 @@
#include "pylith/topology/SubMesh.hh" // USES SubMesh
#include "pylith/topology/Field.hh" // USES Field
+#include "pylith/topology/Stratum.hh" // USES Stratum
+#include "pylith/topology/VisitorMesh.hh" // USES VecVisitorMesh
#include "pylith/meshio/MeshIOAscii.hh" // USES MeshIOAscii
#include "pylith/faults/FaultCohesiveDyn.hh" // USES FaultCohesiveDyn
#include "pylith/feassemble/Quadrature.hh" // USES Quadrature
@@ -136,10 +138,10 @@
0.4, 1000000/data.pressureScale,
};
- PetscDM faultDMMesh = fault.faultMesh().dmMesh();assert(faultDMMesh);
- PetscInt vStart, vEnd;
- PetscErrorCode err;
- err = DMPlexGetDepthStratum(faultDMMesh, 0, &vStart, &vEnd);CHECK_PETSC_ERROR(err);
+ PetscDM faultDMMesh = fault.faultMesh().dmMesh();CPPUNIT_ASSERT(faultDMMesh);
+ topology::Stratum depthStratum(faultDMMesh, topology::Stratum::DEPTH, 0);
+ const PetscInt vStart = depthStratum.begin();
+ const PetscInt vEnd = depthStratum.end();
const PylithScalar tolerance = 1.0e-06;
@@ -151,21 +153,16 @@
for (int i = 0; i < numProperties; ++i, ++index) {
const materials::Metadata::ParamDescription& property = metadata.getProperty(i);
topology::Field<topology::SubMesh>& prop = friction._fieldsPropsStateVars->get(property.name.c_str());
- PetscSection fieldsSection = prop.petscSection();CPPUNIT_ASSERT(fieldsSection);
- PetscVec fieldsVec = prop.localVector();CPPUNIT_ASSERT(fieldsVec);
- PetscScalar *fieldsArray = NULL;
- err = VecGetArray(fieldsVec, &fieldsArray);CHECK_PETSC_ERROR(err);
+ topology::VecVisitorMesh propVisitor(prop);
+ const PetscScalar* propArray = propVisitor.localArray();
- PetscInt dof, off;
- err = PetscSectionGetDof(fieldsSection, v, &dof);CHECK_PETSC_ERROR(err);
- err = PetscSectionGetOffset(fieldsSection, v, &off);CHECK_PETSC_ERROR(err);
- CPPUNIT_ASSERT(dof == 1);
+ const PetscInt off = propVisitor.sectionOffset(v);
+ CPPUNIT_ASSERT(1 == propVisitor.sectionDof(v));
if (0.0 != propertiesE[index]) {
- CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, fieldsArray[off]/propertiesE[index], tolerance);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, propArray[off]/propertiesE[index], tolerance);
} else {
- CPPUNIT_ASSERT_DOUBLES_EQUAL(propertiesE[index], fieldsArray[off], tolerance);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(propertiesE[index], propArray[off], tolerance);
}
- err = VecRestoreArray(fieldsVec, &fieldsArray);CHECK_PETSC_ERROR(err);
} // for
} // for
@@ -188,34 +185,27 @@
StaticFrictionData data;
_initialize(&mesh, &fault, &friction, &data);
- const topology::Field<topology::SubMesh>& field = friction.getField("friction_coefficient");
+ const topology::Field<topology::SubMesh>& frictionField = friction.getField("friction_coefficient");
+ topology::VecVisitorMesh frictionVisitor(frictionField);
+ PetscScalar *frictionArray = frictionVisitor.localArray();
- PetscDM dmMesh = field.mesh().dmMesh();CPPUNIT_ASSERT(dmMesh);
- PetscInt vStart, vEnd;
- PetscErrorCode err;
- err = DMPlexGetDepthStratum(dmMesh, 0, &vStart, &vEnd);CHECK_PETSC_ERROR(err);
+ PetscDM dmMesh = frictionField.mesh().dmMesh();CPPUNIT_ASSERT(dmMesh);
+ topology::Stratum depthStratum(dmMesh, topology::Stratum::DEPTH, 0);
+ const PetscInt vStart = depthStratum.begin();
+ const PetscInt vEnd = depthStratum.end();
- PetscSection fieldSection = field.petscSection();CPPUNIT_ASSERT(fieldSection);
- PetscVec fieldVec = field.localVector();CPPUNIT_ASSERT(fieldVec);
- PetscScalar *fieldArray = NULL;
- err = VecGetArray(fieldVec, &fieldArray);CHECK_PETSC_ERROR(err);
-
const PylithScalar tolerance = 1.0e-06;
int index = 0;
for(PetscInt v = vStart; v < vEnd; ++v) {
- PetscInt dof, off;
- err = PetscSectionGetDof(fieldSection, v, &dof);CHECK_PETSC_ERROR(err);
- err = PetscSectionGetOffset(fieldSection, v, &off);CHECK_PETSC_ERROR(err);
- CPPUNIT_ASSERT_EQUAL(fiberDim, dof);
-
+ const PetscInt off = frictionVisitor.sectionOffset(v);
+ CPPUNIT_ASSERT_EQUAL(fiberDim, frictionVisitor.sectionDof(v));
for(int i = 0; i < fiberDim; ++i, ++index)
if (0 != fieldE[index])
- CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, fieldArray[off+i]/fieldE[index], tolerance);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, frictionArray[off+i]/fieldE[index], tolerance);
else
- CPPUNIT_ASSERT_DOUBLES_EQUAL(fieldE[index], fieldArray[off+i], tolerance);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(fieldE[index], frictionArray[off+i], tolerance);
} // for
- err = VecRestoreArray(fieldVec, &fieldArray);CHECK_PETSC_ERROR(err);
} // testGetField
// ----------------------------------------------------------------------
@@ -374,20 +364,13 @@
CPPUNIT_ASSERT(0 != friction._fieldsPropsStateVars);
for(PetscInt i = 0; i < numStateVars; ++i) {
const materials::Metadata::ParamDescription& stateVar = metadata.getStateVar(i);
- topology::Field<topology::SubMesh>& sv = friction._fieldsPropsStateVars->get(stateVar.name.c_str());
- PetscSection fieldsSection = sv.petscSection();CPPUNIT_ASSERT(fieldsSection);
- PetscVec fieldsVec = sv.localVector();CPPUNIT_ASSERT(fieldsVec);
- PetscScalar *fieldsArray = NULL;
- PetscErrorCode err;
- err = VecGetArray(fieldsVec, &fieldsArray);CHECK_PETSC_ERROR(err);
+ topology::Field<topology::SubMesh>& stateVarField = friction._fieldsPropsStateVars->get(stateVar.name.c_str());
+ topology::VecVisitorMesh stateVarVisitor(stateVarField);
+ PetscScalar *fieldsArray = stateVarVisitor.localArray();
- PetscInt dof, off;
- err = PetscSectionGetDof(fieldsSection, vertex, &dof);CHECK_PETSC_ERROR(err);
- err = PetscSectionGetOffset(fieldsSection, vertex, &off);CHECK_PETSC_ERROR(err);
-
- CPPUNIT_ASSERT(dof == 1);
+ const PetscInt off = stateVarVisitor.sectionOffset(vertex);
+ CPPUNIT_ASSERT(1 == stateVarVisitor.sectionDof(vertex));
CPPUNIT_ASSERT_DOUBLES_EQUAL(stateVarsUpdatedE[i], fieldsArray[off], tolerance);
- err = VecRestoreArray(fieldsVec, &fieldsArray);CHECK_PETSC_ERROR(err);
}
} // Test with friction model with state variables (slip weakening)
@@ -508,8 +491,7 @@
properties[i] = _data->propertiesNondim[iLoc*propertiesSize+i];
_friction->_dimProperties(&properties[0], properties.size());
- const PylithScalar* const propertiesE =
- &_data->properties[iLoc*propertiesSize];
+ const PylithScalar* const propertiesE = &_data->properties[iLoc*propertiesSize];
CPPUNIT_ASSERT(0 != propertiesE);
const PylithScalar tolerance = 1.0e-06;
@@ -803,8 +785,7 @@
const char* label = "fault";
PetscInt labelSize;
- PetscErrorCode err;
- err = DMPlexGetStratumSize(mesh->dmMesh(), label, 1, &labelSize);CHECK_PETSC_ERROR(err);
+ PetscErrorCode err = DMPlexGetStratumSize(mesh->dmMesh(), label, 1, &labelSize);CHECK_PETSC_ERROR(err);
PetscInt firstFaultVertex = 0;
PetscInt firstLagrangeVertex = labelSize;
@@ -814,8 +795,7 @@
fault->id(100);
fault->label(label);
fault->quadrature(&quadrature);
- fault->adjustTopology(mesh, &firstFaultVertex, &firstLagrangeVertex,
- &firstFaultCell, flipFault);
+ fault->adjustTopology(mesh, &firstFaultVertex, &firstLagrangeVertex, &firstFaultCell, flipFault);
fault->normalizer(normalizer);
spatialdata::spatialdb::SimpleDB db;
More information about the CIG-COMMITS
mailing list