[cig-commits] r21471 - in short/3D/PyLith/trunk: libsrc/pylith/friction unittests/libtests/friction
brad at geodynamics.org
brad at geodynamics.org
Fri Mar 8 09:25:46 PST 2013
Author: brad
Date: 2013-03-08 09:25:46 -0800 (Fri, 08 Mar 2013)
New Revision: 21471
Modified:
short/3D/PyLith/trunk/libsrc/pylith/friction/FrictionModel.cc
short/3D/PyLith/trunk/unittests/libtests/friction/TestFrictionModel.cc
Log:
Code cleanup.
Modified: short/3D/PyLith/trunk/libsrc/pylith/friction/FrictionModel.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/pylith/friction/FrictionModel.cc 2013-03-08 13:32:30 UTC (rev 21470)
+++ short/3D/PyLith/trunk/libsrc/pylith/friction/FrictionModel.cc 2013-03-08 17:25:46 UTC (rev 21471)
@@ -37,9 +37,6 @@
//#define PRECOMPUTE_GEOMETRY
// ----------------------------------------------------------------------
-typedef pylith::topology::Mesh::SieveSubMesh SieveSubMesh;
-
-// ----------------------------------------------------------------------
// Default constructor.
pylith::friction::FrictionModel::FrictionModel(const materials::Metadata& metadata) :
_dt(0.0),
@@ -99,21 +96,21 @@
//logger.stagePush("Friction");
// Get vertices associated with friction interface
- DM faultDMMesh = faultMesh.dmMesh();
+ PetscDM faultDMMesh = faultMesh.dmMesh();assert(faultDMMesh);
PetscInt vStart, vEnd;
-
err = DMPlexGetDepthStratum(faultDMMesh, 0, &vStart, &vEnd);CHECK_PETSC_ERROR(err);
+
const spatialdata::geocoords::CoordSys* cs = faultMesh.coordsys();
- assert(0 != cs);
+ assert(cs);
const int spaceDim = cs->spaceDim();
assert(_normalizer);
const PylithScalar lengthScale = _normalizer->lengthScale();
scalar_array coordsVertexGlobal(spaceDim);
- PetscSection coordSection;
- Vec coordVec;
- PetscScalar* coordArray;
+ PetscSection coordSection = NULL;
+ PetscVec coordVec = NULL;
+ PetscScalar* coordArray = NULL;
err = DMPlexGetCoordinateSection(faultDMMesh, &coordSection);CHECK_PETSC_ERROR(err);
err = DMGetCoordinatesLocal(faultDMMesh, &coordVec);CHECK_PETSC_ERROR(err);
@@ -140,10 +137,10 @@
for(PetscInt v = vStart; v < vEnd; ++v) {
PetscInt coff;
PetscInt cdof;
-
err = PetscSectionGetDof(coordSection, v, &cdof);CHECK_PETSC_ERROR(err);
err = PetscSectionGetOffset(coordSection, v, &coff);CHECK_PETSC_ERROR(err);
assert(spaceDim == cdof);
+
for (PetscInt d = 0; d < cdof; ++d) {
coordsVertexGlobal[d] = coordArray[coff+d];
} // for
@@ -171,18 +168,19 @@
const materials::Metadata::ParamDescription& property =
_metadata.getProperty(i);
// TODO This needs to be an integer instead of a string
- topology::Field<topology::SubMesh>& prop = _fieldsPropsStateVars->get(property.name.c_str());
- PetscSection section = prop.petscSection();
- Vec vec = prop.localVector();
- PetscScalar *a;
- PetscInt dof, off;
-
- err = PetscSectionGetDof(section, v, &dof);CHECK_PETSC_ERROR(err);
- err = PetscSectionGetOffset(section, v, &off);CHECK_PETSC_ERROR(err);
- err = VecGetArray(vec, &a);CHECK_PETSC_ERROR(err);
+ topology::Field<topology::SubMesh>& propertyField = _fieldsPropsStateVars->get(property.name.c_str());
+ PetscSection propertySection = propertyField.petscSection();assert(propertySection);
+ PetscVec propertyVec = propertyField.localVector();assert(propertyVec);
+ PetscScalar *propertyArray = NULL;
+ PetscInt dof, off;
+ err = PetscSectionGetDof(propertySection, v, &dof);CHECK_PETSC_ERROR(err);
+ err = PetscSectionGetOffset(propertySection, v, &off);CHECK_PETSC_ERROR(err);
+ err = VecGetArray(propertyVec, &propertyArray);CHECK_PETSC_ERROR(err);
+ assert(dof <= propertiesVertex.size());
for(PetscInt d = 0; d < dof; ++d, ++iOff) {
- a[off+d] += propertiesVertex[iOff];
+ propertyArray[off+d] += propertiesVertex[iOff];
} // for
+ err = VecRestoreArray(propertyVec, &propertyArray);CHECK_PETSC_ERROR(err);
} // for
} // for
// Close properties database
@@ -205,10 +203,10 @@
for(PetscInt v = vStart; v < vEnd; ++v) {
PetscInt coff;
PetscInt cdof;
-
err = PetscSectionGetDof(coordSection, v, &cdof);CHECK_PETSC_ERROR(err);
err = PetscSectionGetOffset(coordSection, v, &coff);CHECK_PETSC_ERROR(err);
assert(spaceDim == cdof);
+
for (PetscInt d = 0; d < cdof; ++d) {
coordsVertexGlobal[d] = coordArray[coff+d];
} // for
@@ -233,18 +231,19 @@
const materials::Metadata::ParamDescription& stateVar =
_metadata.getStateVar(i);
// TODO This needs to be an integer instead of a string
- topology::Field<topology::SubMesh>& sv = _fieldsPropsStateVars->get(stateVar.name.c_str());
- PetscSection section = sv.petscSection();
- Vec vec = sv.localVector();
- PetscScalar *a;
- PetscInt dof, off;
-
- err = PetscSectionGetDof(section, v, &dof);CHECK_PETSC_ERROR(err);
- err = PetscSectionGetOffset(section, v, &off);CHECK_PETSC_ERROR(err);
- err = VecGetArray(vec, &a);CHECK_PETSC_ERROR(err);
+ topology::Field<topology::SubMesh>& stateVarField = _fieldsPropsStateVars->get(stateVar.name.c_str());
+ PetscSection stateVarSection = stateVarField.petscSection();assert(stateVarSection);
+ PetscVec stateVarVec = stateVarField.localVector();assert(stateVarVec);
+ PetscScalar *stateVarArray = NULL;
+ PetscInt dof, off;
+ err = PetscSectionGetDof(stateVarSection, v, &dof);CHECK_PETSC_ERROR(err);
+ err = PetscSectionGetOffset(stateVarSection, v, &off);CHECK_PETSC_ERROR(err);
+ err = VecGetArray(stateVarVec, &stateVarArray);CHECK_PETSC_ERROR(err);
+ assert(dof == stateVarsVertex.size());
for(PetscInt d = 0; d < dof; ++d, ++iOff) {
- a[off+d] += stateVarsVertex[iOff];
- }
+ stateVarArray[off+d] += stateVarsVertex[iOff];
+ } // for
+ err = VecRestoreArray(stateVarVec, &stateVarArray);CHECK_PETSC_ERROR(err);
} // for
} // for
// Close database
@@ -321,38 +320,36 @@
PetscInt iOff = 0;
for (int i=0; i < _metadata.numProperties(); ++i) {
- const materials::Metadata::ParamDescription& property =
- _metadata.getProperty(i);
+ const materials::Metadata::ParamDescription& property = _metadata.getProperty(i);
// TODO This needs to be an integer instead of a string
- topology::Field<topology::SubMesh>& prop = _fieldsPropsStateVars->get(property.name.c_str());
- PetscSection section = prop.petscSection();
- Vec vec = prop.localVector();
- PetscScalar *a;
- PetscInt dof, off;
-
- err = PetscSectionGetDof(section, point, &dof);CHECK_PETSC_ERROR(err);
- err = PetscSectionGetOffset(section, point, &off);CHECK_PETSC_ERROR(err);
- err = VecGetArray(vec, &a);CHECK_PETSC_ERROR(err);
+ topology::Field<topology::SubMesh>& propertyField = _fieldsPropsStateVars->get(property.name.c_str());
+ PetscSection propertySection = propertyField.petscSection();assert(propertySection);
+ PetscVec propertyVec = propertyField.localVector();assert(propertyVec);
+ PetscScalar *propertyArray = NULL;
+ PetscInt dof, off;
+ err = PetscSectionGetDof(propertySection, point, &dof);CHECK_PETSC_ERROR(err);
+ err = PetscSectionGetOffset(propertySection, point, &off);CHECK_PETSC_ERROR(err);
+ err = VecGetArray(propertyVec, &propertyArray);CHECK_PETSC_ERROR(err);
for(PetscInt d = 0; d < dof; ++d, ++iOff) {
- _propsStateVarsVertex[iOff] = a[off+d];
- }
- }
+ _propsStateVarsVertex[iOff] = propertyArray[off+d];
+ } // for
+ err = VecRestoreArray(propertyVec, &propertyArray);CHECK_PETSC_ERROR(err);
+ } // for
for (int i=0; i < _metadata.numStateVars(); ++i) {
- const materials::Metadata::ParamDescription& stateVar =
- _metadata.getStateVar(i);
+ const materials::Metadata::ParamDescription& stateVar = _metadata.getStateVar(i);
// TODO This needs to be an integer instead of a string
- topology::Field<topology::SubMesh>& sv = _fieldsPropsStateVars->get(stateVar.name.c_str());
- PetscSection section = sv.petscSection();
- Vec vec = sv.localVector();
- PetscScalar *a;
- PetscInt dof, off;
-
- err = PetscSectionGetDof(section, point, &dof);CHECK_PETSC_ERROR(err);
- err = PetscSectionGetOffset(section, point, &off);CHECK_PETSC_ERROR(err);
- err = VecGetArray(vec, &a);CHECK_PETSC_ERROR(err);
+ topology::Field<topology::SubMesh>& stateVarField = _fieldsPropsStateVars->get(stateVar.name.c_str());
+ PetscSection stateVarSection = stateVarField.petscSection();assert(stateVarSection);
+ PetscVec stateVarVec = stateVarField.localVector();assert(stateVarVec);
+ PetscScalar *stateVarArray = NULL;
+ PetscInt dof, off;
+ err = PetscSectionGetDof(stateVarSection, point, &dof);CHECK_PETSC_ERROR(err);
+ err = PetscSectionGetOffset(stateVarSection, point, &off);CHECK_PETSC_ERROR(err);
+ err = VecGetArray(stateVarVec, &stateVarArray);CHECK_PETSC_ERROR(err);
for(PetscInt d = 0; d < dof; ++d, ++iOff) {
- _propsStateVarsVertex[iOff] = a[off+d];
- }
+ _propsStateVarsVertex[iOff] = stateVarArray[off+d];
+ } // for
+ err = VecRestoreArray(stateVarVec, &stateVarArray);CHECK_PETSC_ERROR(err);
} // for
assert(_propsStateVarsVertex.size() == iOff);
} // retrievePropsStateVars
@@ -372,10 +369,9 @@
const PylithScalar* stateVarsVertex = (_varsFiberDim > 0) ?
&_propsStateVarsVertex[_propsFiberDim] : 0;
- const PylithScalar friction =
- _calcFriction(t, slip, slipRate, normalTraction,
- propertiesVertex, _propsFiberDim,
- stateVarsVertex, _varsFiberDim);
+ const PylithScalar friction = _calcFriction(t, slip, slipRate, normalTraction,
+ propertiesVertex, _propsFiberDim,
+ stateVarsVertex, _varsFiberDim);
return friction;
} // calcFriction
@@ -404,38 +400,36 @@
PetscInt iOff = 0;
for (int i=0; i < _metadata.numProperties(); ++i) {
- const materials::Metadata::ParamDescription& property =
- _metadata.getProperty(i);
+ const materials::Metadata::ParamDescription& property = _metadata.getProperty(i);
// TODO This needs to be an integer instead of a string
- topology::Field<topology::SubMesh>& prop = _fieldsPropsStateVars->get(property.name.c_str());
- PetscSection section = prop.petscSection();
- Vec vec = prop.localVector();
- PetscScalar *a;
- PetscInt dof, off;
-
- err = PetscSectionGetDof(section, vertex, &dof);CHECK_PETSC_ERROR(err);
- err = PetscSectionGetOffset(section, vertex, &off);CHECK_PETSC_ERROR(err);
- err = VecGetArray(vec, &a);CHECK_PETSC_ERROR(err);
+ topology::Field<topology::SubMesh>& propertyField = _fieldsPropsStateVars->get(property.name.c_str());
+ PetscSection propertySection = propertyField.petscSection();assert(propertySection);
+ PetscVec propertyVec = propertyField.localVector();assert(propertyVec);
+ PetscScalar *propertyArray = NULL;
+ PetscInt dof, off;
+ err = PetscSectionGetDof(propertySection, vertex, &dof);CHECK_PETSC_ERROR(err);
+ err = PetscSectionGetOffset(propertySection, vertex, &off);CHECK_PETSC_ERROR(err);
+ err = VecGetArray(propertyVec, &propertyArray);CHECK_PETSC_ERROR(err);
for(PetscInt d = 0; d < dof; ++d, ++iOff) {
- a[off+d] = _propsStateVarsVertex[iOff];
- }
- }
+ propertyArray[off+d] = _propsStateVarsVertex[iOff];
+ } // for
+ err = VecRestoreArray(propertyVec, &propertyArray);CHECK_PETSC_ERROR(err);
+ } // for
for (int i=0; i < _metadata.numStateVars(); ++i) {
- const materials::Metadata::ParamDescription& stateVar =
- _metadata.getStateVar(i);
+ const materials::Metadata::ParamDescription& stateVar = _metadata.getStateVar(i);
// TODO This needs to be an integer instead of a string
- topology::Field<topology::SubMesh>& sv = _fieldsPropsStateVars->get(stateVar.name.c_str());
- PetscSection section = sv.petscSection();
- Vec vec = sv.localVector();
- PetscScalar *a;
- PetscInt dof, off;
-
- err = PetscSectionGetDof(section, vertex, &dof);CHECK_PETSC_ERROR(err);
- err = PetscSectionGetOffset(section, vertex, &off);CHECK_PETSC_ERROR(err);
- err = VecGetArray(vec, &a);CHECK_PETSC_ERROR(err);
+ topology::Field<topology::SubMesh>& stateVarField = _fieldsPropsStateVars->get(stateVar.name.c_str());
+ PetscSection stateVarSection = stateVarField.petscSection();assert(stateVarSection);
+ PetscVec stateVarVec = stateVarField.localVector();assert(stateVarVec);
+ PetscScalar *stateVarArray = NULL;
+ PetscInt dof, off;
+ err = PetscSectionGetDof(stateVarSection, vertex, &dof);CHECK_PETSC_ERROR(err);
+ err = PetscSectionGetOffset(stateVarSection, vertex, &off);CHECK_PETSC_ERROR(err);
+ err = VecGetArray(stateVarVec, &stateVarArray);CHECK_PETSC_ERROR(err);
for(PetscInt d = 0; d < dof; ++d, ++iOff) {
- a[off+d] = _propsStateVarsVertex[iOff];
- }
+ stateVarArray[off+d] = _propsStateVarsVertex[iOff];
+ } // for
+ err = VecRestoreArray(stateVarVec, &stateVarArray);CHECK_PETSC_ERROR(err);
} // for
assert(_propsStateVarsVertex.size() == iOff);
} // updateStateVars
@@ -493,12 +487,12 @@
const materials::Metadata::ParamDescription& property =
_metadata.getProperty(i);
_fieldsPropsStateVars->add(property.name.c_str(), property.name.c_str());
- topology::Field<topology::SubMesh>& prop = _fieldsPropsStateVars->get(property.name.c_str());
- prop.newSection(topology::FieldBase::VERTICES_FIELD, property.fiberDim);
- prop.allocate();
- prop.vectorFieldType(property.fieldType);
- prop.scale(propertiesVertex[iScale]);
- prop.zero();
+ topology::Field<topology::SubMesh>& propertyField = _fieldsPropsStateVars->get(property.name.c_str());
+ propertyField.newSection(topology::FieldBase::VERTICES_FIELD, property.fiberDim);
+ propertyField.allocate();
+ propertyField.vectorFieldType(property.fieldType);
+ propertyField.scale(propertiesVertex[iScale]);
+ propertyField.zero();
iScale += property.fiberDim;
} // for
@@ -506,12 +500,12 @@
const materials::Metadata::ParamDescription& stateVar =
_metadata.getStateVar(i);
_fieldsPropsStateVars->add(stateVar.name.c_str(), stateVar.name.c_str());
- topology::Field<topology::SubMesh>& sv = _fieldsPropsStateVars->get(stateVar.name.c_str());
- sv.newSection(topology::FieldBase::VERTICES_FIELD, stateVar.fiberDim);
- sv.allocate();
- sv.vectorFieldType(stateVar.fieldType);
- sv.scale(stateVarsVertex[iScale]);
- sv.zero();
+ topology::Field<topology::SubMesh>& stateVarField = _fieldsPropsStateVars->get(stateVar.name.c_str());
+ stateVarField.newSection(topology::FieldBase::VERTICES_FIELD, stateVar.fiberDim);
+ stateVarField.allocate();
+ stateVarField.vectorFieldType(stateVar.fieldType);
+ stateVarField.scale(stateVarsVertex[iScale]);
+ stateVarField.zero();
iScale += stateVar.fiberDim;
} // for
assert(_varsFiberDim >= 0);
Modified: short/3D/PyLith/trunk/unittests/libtests/friction/TestFrictionModel.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/friction/TestFrictionModel.cc 2013-03-08 13:32:30 UTC (rev 21470)
+++ short/3D/PyLith/trunk/unittests/libtests/friction/TestFrictionModel.cc 2013-03-08 17:25:46 UTC (rev 21471)
@@ -48,12 +48,6 @@
CPPUNIT_TEST_SUITE_REGISTRATION( pylith::friction::TestFrictionModel );
// ----------------------------------------------------------------------
-typedef pylith::topology::Mesh::SieveMesh SieveMesh;
-typedef pylith::topology::Mesh::SieveSubMesh SieveSubMesh;
-typedef pylith::topology::Mesh::RealSection RealSection;
-typedef pylith::topology::SubMesh::RealUniformSection SubRealUniformSection;
-
-// ----------------------------------------------------------------------
// Test label()
void
pylith::friction::TestFrictionModel::testLabel(void)
@@ -89,7 +83,7 @@
StaticFriction friction;
friction.dbProperties(&db);
- CPPUNIT_ASSERT(0 != friction._dbProperties);
+ CPPUNIT_ASSERT(friction._dbProperties);
CPPUNIT_ASSERT_EQUAL(label, std::string(friction._dbProperties->label()));
} // testDBProperties
@@ -105,7 +99,7 @@
StaticFriction friction;
friction.dbInitialState(&db);
- CPPUNIT_ASSERT(0 != friction._dbInitialState);
+ CPPUNIT_ASSERT(friction._dbInitialState);
CPPUNIT_ASSERT_EQUAL(label, std::string(friction._dbInitialState->label()));
} // testDBStateVars
@@ -121,7 +115,7 @@
StaticFriction friction;
friction.normalizer(normalizer);
- CPPUNIT_ASSERT(0 != friction._normalizer);
+ CPPUNIT_ASSERT(friction._normalizer);
CPPUNIT_ASSERT_EQUAL(lengthScale, friction._normalizer->lengthScale());
} // testNormalizer
@@ -134,19 +128,17 @@
faults::FaultCohesiveDyn fault;
StaticFriction friction;
StaticFrictionData data;
- PetscErrorCode err;
_initialize(&mesh, &fault, &friction, &data);
- CPPUNIT_ASSERT(0 != friction._fieldsPropsStateVars);
+ CPPUNIT_ASSERT(friction._fieldsPropsStateVars);
const PylithScalar propertiesE[2*2] = {
0.6, 1000000/data.pressureScale,
0.4, 1000000/data.pressureScale,
};
- DM faultDMMesh = fault.faultMesh().dmMesh();
+ PetscDM faultDMMesh = fault.faultMesh().dmMesh();assert(faultDMMesh);
PetscInt vStart, vEnd;
-
- assert(faultDMMesh);
+ PetscErrorCode err;
err = DMPlexGetDepthStratum(faultDMMesh, 0, &vStart, &vEnd);CHECK_PETSC_ERROR(err);
const PylithScalar tolerance = 1.0e-06;
@@ -159,18 +151,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();
- Vec fieldsVec = prop.localVector();
- PetscScalar *fieldsArray;
-
- CPPUNIT_ASSERT(fieldsSection);CPPUNIT_ASSERT(fieldsVec);
+ 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);
- PetscInt dof, off;
+ 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);
- if (0 != propertiesE[index]) {
+ if (0.0 != propertiesE[index]) {
CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, fieldsArray[off]/propertiesE[index], tolerance);
} else {
CPPUNIT_ASSERT_DOUBLES_EQUAL(propertiesE[index], fieldsArray[off], tolerance);
@@ -198,30 +188,27 @@
StaticFrictionData data;
_initialize(&mesh, &fault, &friction, &data);
- const topology::Field<topology::SubMesh>& field =
- friction.getField("friction_coefficient");
+ const topology::Field<topology::SubMesh>& field = friction.getField("friction_coefficient");
- DM dmMesh = field.mesh().dmMesh();
- PetscInt vStart, vEnd;
+ PetscDM dmMesh = field.mesh().dmMesh();CPPUNIT_ASSERT(dmMesh);
+ PetscInt vStart, vEnd;
PetscErrorCode err;
-
- assert(dmMesh);
err = DMPlexGetDepthStratum(dmMesh, 0, &vStart, &vEnd);CHECK_PETSC_ERROR(err);
- PetscSection fieldSection = field.petscSection();
- Vec fieldVec = field.localVector();
- PetscScalar *fieldArray;
+ 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;
- CPPUNIT_ASSERT(fieldSection);CPPUNIT_ASSERT(fieldVec);
- err = VecGetArray(fieldVec, &fieldArray);CHECK_PETSC_ERROR(err);
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);
+
for(int i = 0; i < fiberDim; ++i, ++index)
if (0 != fieldE[index])
CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, fieldArray[off+i]/fieldE[index], tolerance);
@@ -306,9 +293,6 @@
const PylithScalar tolerance = 1.0e-6;
if (0.0 != frictionE) {
- std::cout << "frictionE: " << frictionE
- << ", frictionV: " << frictionV
- << std::endl;
CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, frictionV/frictionE, tolerance);
} else {
CPPUNIT_ASSERT_DOUBLES_EQUAL(frictionE, frictionV, tolerance);
@@ -391,17 +375,16 @@
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();
- Vec fieldsVec = sv.localVector();
- PetscScalar *fieldsArray;
+ PetscSection fieldsSection = sv.petscSection();CPPUNIT_ASSERT(fieldsSection);
+ PetscVec fieldsVec = sv.localVector();CPPUNIT_ASSERT(fieldsVec);
+ PetscScalar *fieldsArray = NULL;
PetscErrorCode err;
-
- CPPUNIT_ASSERT(fieldsSection);CPPUNIT_ASSERT(fieldsVec);
err = VecGetArray(fieldsVec, &fieldsArray);CHECK_PETSC_ERROR(err);
- PetscInt dof, off;
+ 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);
CPPUNIT_ASSERT_DOUBLES_EQUAL(stateVarsUpdatedE[i], fieldsArray[off], tolerance);
err = VecRestoreArray(fieldsVec, &fieldsArray);CHECK_PETSC_ERROR(err);
@@ -433,8 +416,8 @@
void
pylith::friction::TestFrictionModel::testDBToProperties(void)
{ // testDBToProperties
- CPPUNIT_ASSERT(0 != _friction);
- CPPUNIT_ASSERT(0 != _data);
+ CPPUNIT_ASSERT(_friction);
+ CPPUNIT_ASSERT(_data);
// Check to make sure names of Metadata values match names of test
// data values (consistency check).
@@ -478,8 +461,8 @@
void
pylith::friction::TestFrictionModel::testNonDimProperties(void)
{ // testNonDimProperties
- CPPUNIT_ASSERT(0 != _friction);
- CPPUNIT_ASSERT(0 != _data);
+ CPPUNIT_ASSERT(_friction);
+ CPPUNIT_ASSERT(_data);
const int numLocs = _data->numLocs;
const int propertiesSize = _data->numPropsVertex;
@@ -513,8 +496,8 @@
void
pylith::friction::TestFrictionModel::testDimProperties(void)
{ // testDimProperties
- CPPUNIT_ASSERT(0 != _friction);
- CPPUNIT_ASSERT(0 != _data);
+ CPPUNIT_ASSERT(_friction);
+ CPPUNIT_ASSERT(_data);
const int numLocs = _data->numLocs;
const int propertiesSize = _data->numPropsVertex;
@@ -547,8 +530,8 @@
void
pylith::friction::TestFrictionModel::testDBToStateVars(void)
{ // testDBToStateVars
- CPPUNIT_ASSERT(0 != _friction);
- CPPUNIT_ASSERT(0 != _data);
+ CPPUNIT_ASSERT(_friction);
+ CPPUNIT_ASSERT(_data);
// Check to make sure names of Metadata values match names of test
// data values (consistency check).
@@ -595,8 +578,8 @@
void
pylith::friction::TestFrictionModel::testNonDimStateVars(void)
{ // testNonDimStateVars
- CPPUNIT_ASSERT(0 != _friction);
- CPPUNIT_ASSERT(0 != _data);
+ CPPUNIT_ASSERT(_friction);
+ CPPUNIT_ASSERT(_data);
const int numLocs = _data->numLocs;
const int stateVarsSize = _data->numVarsVertex;
@@ -630,8 +613,8 @@
void
pylith::friction::TestFrictionModel::testDimStateVars(void)
{ // testDimStateVars
- CPPUNIT_ASSERT(0 != _friction);
- CPPUNIT_ASSERT(0 != _data);
+ CPPUNIT_ASSERT(_friction);
+ CPPUNIT_ASSERT(_data);
const int numLocs = _data->numLocs;
const int stateVarsSize = _data->numVarsVertex;
@@ -665,8 +648,8 @@
void
pylith::friction::TestFrictionModel::test_calcFriction(void)
{ // _testCalcFriction
- CPPUNIT_ASSERT(0 != _friction);
- CPPUNIT_ASSERT(0 != _data);
+ CPPUNIT_ASSERT(_friction);
+ CPPUNIT_ASSERT(_data);
const int numLocs = _data->numLocs;
const int numPropsVertex = _data->numPropsVertex;
@@ -707,8 +690,8 @@
void
pylith::friction::TestFrictionModel::test_updateStateVars(void)
{ // test_updateStateVars
- CPPUNIT_ASSERT(0 != _friction);
- CPPUNIT_ASSERT(0 != _data);
+ CPPUNIT_ASSERT(_friction);
+ CPPUNIT_ASSERT(_data);
const bool computeStateVars = true;
@@ -772,16 +755,15 @@
// ----------------------------------------------------------------------
// Setup mesh and material.
void
-pylith::friction::TestFrictionModel::_initialize(
- topology::Mesh* mesh,
- faults::FaultCohesiveDyn* fault,
- StaticFriction* friction,
- const StaticFrictionData* data)
+pylith::friction::TestFrictionModel::_initialize(topology::Mesh* mesh,
+ faults::FaultCohesiveDyn* fault,
+ StaticFriction* friction,
+ const StaticFrictionData* data)
{ // _initialize
- CPPUNIT_ASSERT(0 != mesh);
- CPPUNIT_ASSERT(0 != fault);
- CPPUNIT_ASSERT(0 != friction);
- CPPUNIT_ASSERT(0 != data);
+ CPPUNIT_ASSERT(mesh);
+ CPPUNIT_ASSERT(fault);
+ CPPUNIT_ASSERT(friction);
+ CPPUNIT_ASSERT(data);
meshio::MeshIOAscii iohandler;
iohandler.filename("data/tri3.mesh");
@@ -819,11 +801,16 @@
const bool flipFault = false;
const char* label = "fault";
- int firstFaultVertex = 0;
- int firstLagrangeVertex = mesh->sieveMesh()->getIntSection(label)->size();
- int firstFaultCell = mesh->sieveMesh()->getIntSection(label)->size();
+
+ PetscInt labelSize;
+ PetscErrorCode err;
+ err = DMPlexGetStratumSize(mesh->dmMesh(), label, 1, &labelSize);CHECK_PETSC_ERROR(err);
+
+ PetscInt firstFaultVertex = 0;
+ PetscInt firstLagrangeVertex = labelSize;
+ PetscInt firstFaultCell = labelSize;
if (fault->useLagrangeConstraints())
- firstFaultCell += mesh->sieveMesh()->getIntSection(label)->size();
+ firstFaultCell += labelSize;
fault->id(100);
fault->label(label);
fault->quadrature(&quadrature);
More information about the CIG-COMMITS
mailing list