[cig-commits] r21306 - short/3D/PyLith/trunk/unittests/libtests/friction
knepley at geodynamics.org
knepley at geodynamics.org
Tue Jan 29 11:22:20 PST 2013
Author: knepley
Date: 2013-01-29 11:22:19 -0800 (Tue, 29 Jan 2013)
New Revision: 21306
Modified:
short/3D/PyLith/trunk/unittests/libtests/friction/TestFrictionModel.cc
Log:
Corrected friction test
Modified: short/3D/PyLith/trunk/unittests/libtests/friction/TestFrictionModel.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/friction/TestFrictionModel.cc 2013-01-29 18:05:20 UTC (rev 21305)
+++ short/3D/PyLith/trunk/unittests/libtests/friction/TestFrictionModel.cc 2013-01-29 19:22:19 UTC (rev 21306)
@@ -145,12 +145,12 @@
PetscInt vStart, vEnd;
assert(faultDMMesh);
- ierr = DMPlexGetDepthStratum(faultDMMesh, 0, &vStart, &vEnd);CHECK_PETSC_ERROR(err);
+ err = DMPlexGetDepthStratum(faultDMMesh, 0, &vStart, &vEnd);CHECK_PETSC_ERROR(err);
const PylithScalar tolerance = 1.0e-06;
// Test fieldsPropsStateVars with mesh
- const pylith::materials::Metadata& = friction.getMetadata();
+ const materials::Metadata& metadata = friction.getMetadata();
const int numProperties = metadata.numProperties();
int index = 0;
for(PetscInt v = vStart; v < vEnd; ++v) {
@@ -363,10 +363,12 @@
const PylithScalar cohesion = 1000000;
const PylithScalar dt = 0.01;
- const int numStateVars = 2;
const PylithScalar stateVars[2] = { 0.5, 0.1 };
const PylithScalar stateVarsUpdatedE[2] = { 0.65, 0.25 };
+ const materials::Metadata& metadata = friction.getMetadata();
+ const int numStateVars = metadata.numStateVars();
+ CPPUNIT_ASSERT(2 == numStateVars);
// Set state variables to given values
friction._propsStateVarsVertex = 0.0;
@@ -379,18 +381,24 @@
const PylithScalar tolerance = 1.0e-06;
CPPUNIT_ASSERT(0 != friction._fieldsPropsStateVars);
- const ALE::Obj<SubRealUniformSection>& fieldsSection =
- friction._fieldsPropsStateVars->section();
- CPPUNIT_ASSERT_EQUAL(friction._fieldsPropsStateVars->fiberDim(),
- fieldsSection->getFiberDimension(vertex));
- const PylithScalar* fieldsVertex = fieldsSection->restrictPoint(vertex);
- CPPUNIT_ASSERT(fieldsVertex);
- CPPUNIT_ASSERT_DOUBLES_EQUAL(stateVarsUpdatedE[0],
- fieldsVertex[friction._propsFiberDim+0],
- tolerance);
- CPPUNIT_ASSERT_DOUBLES_EQUAL(stateVarsUpdatedE[1],
- fieldsVertex[friction._propsFiberDim+1],
- tolerance);
+ 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;
+ PetscErrorCode err;
+
+ CPPUNIT_ASSERT(fieldsSection);CPPUNIT_ASSERT(fieldsVec);
+ err = VecGetArray(fieldsVec, &fieldsArray);CHECK_PETSC_ERROR(err);
+ 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);
+ }
} // Test with friction model with state variables (slip weakening)
} // testUpdateStateVars
More information about the CIG-COMMITS
mailing list