[cig-commits] r14116 - in short/3D/PyLith/branches/pylith-swig: pylith/utils unittests/libtests/materials unittests/libtests/materials/data
brad at geodynamics.org
brad at geodynamics.org
Sun Feb 22 14:59:10 PST 2009
Author: brad
Date: 2009-02-22 14:59:10 -0800 (Sun, 22 Feb 2009)
New Revision: 14116
Added:
short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestMetadata.cc
short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestMetadata.hh
Modified:
short/3D/PyLith/branches/pylith-swig/pylith/utils/CppData.py
short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/Makefile.am
short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticIsotropic3D.cc
short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticIsotropic3D.hh
short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticMaterial.cc
short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticMaterial.hh
short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestMaterial.cc
short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticIsotropic3D.py
short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticIsotropic3DData.cc
short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticIsotropic3DData.hh
short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticMaterialApp.py
short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticMaterialData.cc
short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticMaterialData.hh
short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/generate.sh
Log:
More work on updating testing of materials.
Modified: short/3D/PyLith/branches/pylith-swig/pylith/utils/CppData.py
===================================================================
--- short/3D/PyLith/branches/pylith-swig/pylith/utils/CppData.py 2009-02-22 14:30:42 UTC (rev 14115)
+++ short/3D/PyLith/branches/pylith-swig/pylith/utils/CppData.py 2009-02-22 22:59:10 UTC (rev 14116)
@@ -201,7 +201,11 @@
# Write array information
for array in self.arrays:
- fileOut.write(" static const %s %s[];\n\n" % \
+ if array['values'] is None:
+ fileOut.write(" static const %s* %s;\n\n" % \
+ (array['type'], array['name']))
+ else:
+ fileOut.write(" static const %s %s[];\n\n" % \
(array['type'], array['name']))
@@ -237,20 +241,27 @@
# Write array information
for array in self.arrays:
- cppformat = "const %s %s::%s::%s[] = {\n"
- fileOut.write(cppformat % \
- (array['type'],
- string.join(self.namespace, "::"), self.objname,
- array['name']))
- icol = 0
- for value in numpy.ravel(array['values']):
- cppformat = "%s," % array['format']
- fileOut.write(cppformat % value)
- icol += 1
- if icol == array['ncols']:
- fileOut.write("\n")
- icol = 0
- fileOut.write("};\n\n")
+ if array['values'] is None:
+ cppformat = "const %s* %s::%s::%s = 0;\n\n"
+ fileOut.write(cppformat % \
+ (array['type'],
+ string.join(self.namespace, "::"), self.objname,
+ array['name']))
+ else:
+ cppformat = "const %s %s::%s::%s[] = {\n"
+ fileOut.write(cppformat % \
+ (array['type'],
+ string.join(self.namespace, "::"), self.objname,
+ array['name']))
+ icol = 0
+ for value in numpy.ravel(array['values']):
+ cppformat = "%s," % array['format']
+ fileOut.write(cppformat % value)
+ icol += 1
+ if icol == array['ncols']:
+ fileOut.write("\n")
+ icol = 0
+ fileOut.write("};\n\n")
if self.parent != "":
self._writeLifecycle(fileOut)
Modified: short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/Makefile.am
===================================================================
--- short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/Makefile.am 2009-02-22 14:30:42 UTC (rev 14115)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/Makefile.am 2009-02-22 22:59:10 UTC (rev 14116)
@@ -23,10 +23,10 @@
testmaterials_SOURCES = \
TestMetadata.cc \
TestMaterial.cc \
+ TestElasticMaterial.cc \
+ TestElasticIsotropic3D.cc \
test_materials.cc
-# TestElasticMaterial.cc \
-# TestElasticIsotropic3D.cc \
# TestElasticPlaneStrain.cc \
# TestElasticPlaneStress.cc \
# TestElasticStrain1D.cc \
@@ -49,10 +49,10 @@
# Source files associated with testing data
testmaterials_SOURCES += \
- data/MaterialData.cc
+ data/MaterialData.cc \
+ data/ElasticMaterialData.cc \
+ data/ElasticIsotropic3DData.cc
-# data/ElasticMaterialData.cc \
-# data/ElasticIsotropic3DData.cc \
# data/ElasticPlaneStrainData.cc \
# data/ElasticPlaneStressData.cc \
# data/ElasticStrain1DData.cc \
Modified: short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticIsotropic3D.cc
===================================================================
--- short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticIsotropic3D.cc 2009-02-22 14:30:42 UTC (rev 14115)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticIsotropic3D.cc 2009-02-22 22:59:10 UTC (rev 14116)
@@ -32,53 +32,5 @@
_dataElastic = new ElasticIsotropic3DData();
} // setUp
-// ----------------------------------------------------------------------
-// Test usesUpdateState()
-void
-pylith::materials::TestElasticIsotropic3D::testUsesUpdateProperties(void)
-{ // testUsesUpdateProperties
- ElasticIsotropic3D material;
- CPPUNIT_ASSERT_EQUAL(false, material.usesUpdateProperties());
-} // testUsesUpdateProperties
-// ----------------------------------------------------------------------
-// Test updateProperties()
-void
-pylith::materials::TestElasticIsotropic3D::testUpdateProperties(void)
-{ // testUpdateProperties
- ElasticIsotropic3D material;
- ElasticIsotropic3DData data;
-
- const int numParams = data.numParameters;
-
- double_array parameters(numParams);
- const int paramsSize = 1;
- for (int i=0; i < numParams; ++i) {
- for (int j=0; j < paramsSize; ++j)
- parameters[i*paramsSize+j] = i+j;
- } // for
-
- const int tensorSize = 9;
- const int initialStateSize = 9;
- double_array totalStrain(tensorSize);
- double_array initialState(initialStateSize);
- for (int i=0; i < tensorSize; ++i) {
- totalStrain[i] = i;
- initialState[i] = 0.1*i;
- } // for
-
- material._updateProperties(¶meters[0], numParams, &totalStrain[0],
- tensorSize, &initialState[0], initialStateSize);
-
- const double tolerance = 1.0e-06;
- for (int i=0; i < numParams; ++i)
- for (int j=0; j < paramsSize; ++j)
- CPPUNIT_ASSERT_DOUBLES_EQUAL(double(i+j), parameters[i*paramsSize+j],
- tolerance);
-
- for (int i=0; i < tensorSize; ++i)
- CPPUNIT_ASSERT_DOUBLES_EQUAL(double(i), totalStrain[i], tolerance);
-} // testUpdateProperties
-
-
// End of file
Modified: short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticIsotropic3D.hh
===================================================================
--- short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticIsotropic3D.hh 2009-02-22 14:30:42 UTC (rev 14115)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticIsotropic3D.hh 2009-02-22 22:59:10 UTC (rev 14116)
@@ -40,16 +40,17 @@
CPPUNIT_TEST_SUITE( TestElasticIsotropic3D );
CPPUNIT_TEST( testDBToProperties );
- CPPUNIT_TEST( testDBValues );
- CPPUNIT_TEST( testProperties );
+ CPPUNIT_TEST( testNonDimProperties );
+ CPPUNIT_TEST( testDimProperties );
+ CPPUNIT_TEST( testDBToStateVars );
+ CPPUNIT_TEST( testNonDimStateVars );
+ CPPUNIT_TEST( testDimStateVars );
CPPUNIT_TEST( test_calcDensity );
CPPUNIT_TEST( test_calcStress );
CPPUNIT_TEST( test_calcElasticConsts );
+ CPPUNIT_TEST( test_updateStateVars );
CPPUNIT_TEST( test_stableTimeStepImplicit );
- CPPUNIT_TEST( testUsesUpdateProperties );
- CPPUNIT_TEST( testUpdateProperties );
-
CPPUNIT_TEST_SUITE_END();
// PUBLIC METHODS /////////////////////////////////////////////////////
@@ -58,12 +59,6 @@
/// Setup testing data.
void setUp(void);
- /// Test usesUpdateProperties().
- void testUsesUpdateProperties(void);
-
- /// Test updateProperties()
- void testUpdateProperties(void);
-
}; // class TestElasticIsotropic3D
#endif // pylith_materials_testelasticisotropic3d_hh
Modified: short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticMaterial.cc
===================================================================
--- short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticMaterial.cc 2009-02-22 14:30:42 UTC (rev 14115)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticMaterial.cc 2009-02-22 22:59:10 UTC (rev 14116)
@@ -15,12 +15,16 @@
#include "TestElasticMaterial.hh" // Implementation of class methods
#include "data/ElasticMaterialData.hh" // USES ElasticMaterialData
-#include "data/ElasticIsotropic3DData.hh" // USES ElasticIsotropic3DData
+//#include "data/ElasticIsotropic3DData.hh" // USES ElasticIsotropic3DData
#include "pylith/materials/ElasticIsotropic3D.hh" // USES ElasticIsotropic3D
#include "pylith/utils/array.hh" // USES double_array
-#include "pylith/topology/FieldsManager.hh" // USES FieldsManager
+#include "spatialdata/spatialdb/SimpleDB.hh" // USES SimpleDB
+#include "spatialdata/spatialdb/SimpleIOAscii.hh" // USES SimpleIOAscii
+#include "spatialdata/geocoords/CSCart.hh" // USES CSCart
+#include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
+
// ----------------------------------------------------------------------
CPPUNIT_TEST_SUITE_REGISTRATION( pylith::materials::TestElasticMaterial );
@@ -56,11 +60,18 @@
CPPUNIT_ASSERT_EQUAL(label, std::string(material._dbInitialStrain->label()));
} // testDBInitialStrain
+#if 0
// ----------------------------------------------------------------------
// Test initialize()
void
pylith::materials::TestElasticMaterial::testInitialize(void)
{ // testInitialize
+ topology::Mesh mesh;
+ Quadrature<topology::Mesh> quadrature;
+ ElasticStrain1D material;
+ ElasticStrain1DData data;
+ _initialize(&mesh, &quadrature, &material, &data);
+
CPPUNIT_ASSERT(false);
} // testInitialize
@@ -69,61 +80,24 @@
void
pylith::materials::TestElasticMaterial::testCalcDensity(void)
{ // testCalcDensity
- ALE::Obj<Mesh> mesh;
- { // create mesh
- const int cellDim = 1;
- const int numCorners = 2;
- const int spaceDim = 1;
- const int numVertices = 2;
- const int numCells = 1;
- const double vertCoords[] = { -1.0, 1.0};
- const int cells[] = { 0, 1};
- CPPUNIT_ASSERT(0 != vertCoords);
- CPPUNIT_ASSERT(0 != cells);
+ topology::Mesh mesh;
+ Quadrature<topology::Mesh> quadrature;
+ ElasticStrain1D material;
+ ElasticStrain1DData data;
+ _initialize(&mesh, &quadrature, &material, &data);
- mesh = new Mesh(PETSC_COMM_WORLD, cellDim);
- ALE::Obj<sieve_type> sieve = new sieve_type(mesh->comm());
-
- const bool interpolate = false;
- ALE::Obj<ALE::Mesh::sieve_type> s = new ALE::Mesh::sieve_type(sieve->comm(), sieve->debug());
-
- ALE::SieveBuilder<ALE::Mesh>::buildTopology(s, cellDim, numCells,
- const_cast<int*>(cells), numVertices, interpolate, numCorners);
- std::map<Mesh::point_type,Mesh::point_type> renumbering;
- ALE::ISieveConverter::convertSieve(*s, *sieve, renumbering);
- mesh->setSieve(sieve);
- mesh->stratify();
- ALE::SieveBuilder<Mesh>::buildCoordinates(mesh, spaceDim, vertCoords);
- } // create mesh
-
// Get cells associated with material
- const ALE::Obj<real_section_type>& coordinates =
- mesh->getRealSection("coordinates");
- const ALE::Obj<Mesh::label_sequence>& cells = mesh->heightStratum(0);
+ const ALE::Obj<SieveMesh::label_sequence>& cells = mesh->heightStratum(0);
+ SieveMesh::label_sequence::iterator c_iter = cells->begin();
+ material.retrievePropsAndVars(*c_iter);
+ const double_array& density = material.calcDensity();
- ElasticIsotropic3D material;
- ElasticIsotropic3DData data;
- const int numQuadPts = 2;
- const int numParams = data.numParameters;
- const int numParamsQuadPt = data.numParamsQuadPt;
-
- Mesh::label_sequence::iterator c_iter = cells->begin();
+ CPPUNIT_ASSERT_EQUAL(data._numQuadPts, density.size());
- const int fiberDim = numQuadPts * numParamsQuadPt;
- material._properties = new real_section_type(mesh->comm(), mesh->debug());
- material._properties->setChart(mesh->getSieve()->getChart());
- material._properties->setFiberDimension(cells, fiberDim);
- mesh->allocate(material._properties);
-
- material._properties->updatePoint(*c_iter, data.parameterData);
-
- material.getPropertiesCell(*c_iter, numQuadPts);
- const double_array& density = material.calcDensity();
-
const double tolerance = 1.0e-06;
const double* densityE = data.density;
CPPUNIT_ASSERT(0 != densityE);
- const double size = numQuadPts;
+ const double size = data._numQuadPts;
for (int i=0; i < size; ++i)
CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, density[i]/densityE[i], tolerance);
} // testCalcDensity
@@ -367,23 +341,8 @@
const double dtE = data.dtStableImplicit;
CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, dt/dtE, tolerance);
} // testStableTimeStepImplicit
-
-// ----------------------------------------------------------------------
-// Test useElasticBehavior()
-void
-pylith::materials::TestElasticMaterial::testUseElasticBehavior(void)
-{ // testUseElasticBehavior
- ElasticIsotropic3D material;
+#endif
- bool flag = false;
- material.useElasticBehavior(flag);
- CPPUNIT_ASSERT_EQUAL(flag, material._useElasticBehavior);
-
- bool flag = true;
- material.useElasticBehavior(flag);
- CPPUNIT_ASSERT_EQUAL(flag, material._useElasticBehavior);
-} // testUseElasticBehavior
-
// ----------------------------------------------------------------------
// Setup testing data.
void
@@ -413,46 +372,87 @@
CPPUNIT_ASSERT(0 != _dataElastic);
const ElasticMaterialData* data = _dataElastic;
- double_array density(1);
- _matElastic->_calcDensity(&density[0], data->parameterData, data->numParamsQuadPt);
+ const int numLocs = _data->numLocs;
+ const int numPropsQuadPt = _data->numPropsQuadPt;
+ const int numVarsQuadPt = _data->numVarsQuadPt;
+
+ double density = 0;
+ double_array properties(numPropsQuadPt);
+ double_array stateVars(numVarsQuadPt);
- const double* densityE = data->density;
- CPPUNIT_ASSERT(0 != densityE);
+ for (int iLoc=0; iLoc < numLocs; ++iLoc) {
+ memcpy(&properties[0], &_data->properties[iLoc*numPropsQuadPt],
+ numPropsQuadPt*sizeof(double));
+ memcpy(&stateVars[0], &_data->stateVars[iLoc*numVarsQuadPt],
+ numVarsQuadPt*sizeof(double));
- const double tolerance = 1.0e-06;
- CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, density[0]/densityE[0], tolerance);
+ _matElastic->_calcDensity(&density,
+ &properties[0], properties.size(),
+ &stateVars[0], stateVars.size());
+
+ const double* densityE = data->density;
+ CPPUNIT_ASSERT(0 != densityE);
+
+ const double tolerance = 1.0e-06;
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, density/densityE[0], tolerance);
+ } // for
} // _testCalcDensity
// ----------------------------------------------------------------------
// Test _calcStress()
void
pylith::materials::TestElasticMaterial::test_calcStress(void)
-{ // _testCalcElasticConsts
+{ // _testCalcStress
CPPUNIT_ASSERT(0 != _matElastic);
CPPUNIT_ASSERT(0 != _dataElastic);
const ElasticMaterialData* data = _dataElastic;
const bool computeStateVars = true;
- const int stressSize = _matElastic->_tensorSize;
- double_array stress(stressSize);
- _matElastic->_calcStress(&stress[0], stress.size(),
- data->parameterData, data->numParamsQuadPt,
- data->strain, stressSize,
- data->initialState, data->numInitialStateValues,
- computeStateVars);
+ const int numLocs = _data->numLocs;
+ const int numPropsQuadPt = _data->numPropsQuadPt;
+ const int numVarsQuadPt = _data->numVarsQuadPt;
+ const int tensorSize = _matElastic->_tensorSize;
- const double* stressE = data->stress;
- CPPUNIT_ASSERT(0 != stressE);
+ double_array stress(tensorSize);
+ double_array properties(numPropsQuadPt);
+ double_array stateVars(numVarsQuadPt);
+ double_array strain(tensorSize);
+ double_array initialStress(tensorSize);
+ double_array initialStrain(tensorSize);
- const double tolerance = 1.0e-06;
- for (int i=0; i < stressSize; ++i)
- if (fabs(stressE[i]) > tolerance)
- CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, stress[i]/stressE[i],
- tolerance);
- else
- CPPUNIT_ASSERT_DOUBLES_EQUAL(stressE[i], stress[i],
- tolerance);
+ for (int iLoc=0; iLoc < numLocs; ++iLoc) {
+ memcpy(&properties[0], &data->properties[iLoc*numPropsQuadPt],
+ numPropsQuadPt*sizeof(double));
+ memcpy(&stateVars[0], &data->stateVars[iLoc*numVarsQuadPt],
+ numVarsQuadPt*sizeof(double));
+ memcpy(&strain[0], &data->strain[iLoc*tensorSize],
+ tensorSize*sizeof(double));
+ memcpy(&initialStress[0], &data->initialStress[iLoc*tensorSize],
+ tensorSize*sizeof(double));
+ memcpy(&initialStrain[0], &data->initialStrain[iLoc*tensorSize],
+ tensorSize*sizeof(double));
+
+ _matElastic->_calcStress(&stress[0], stress.size(),
+ &properties[0], properties.size(),
+ &stateVars[0], stateVars.size(),
+ &strain[0], strain.size(),
+ &initialStress[0], initialStress.size(),
+ &initialStrain[0], initialStrain.size(),
+ computeStateVars);
+
+ const double* stressE = data->stress;
+ CPPUNIT_ASSERT(0 != stressE);
+
+ const double tolerance = 1.0e-06;
+ for (int i=0; i < tensorSize; ++i)
+ if (fabs(stressE[i]) > tolerance)
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, stress[i]/stressE[i],
+ tolerance);
+ else
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(stressE[i], stress[i],
+ tolerance);
+ } // for
} // _testCalcStress
// ----------------------------------------------------------------------
@@ -465,40 +465,64 @@
const ElasticMaterialData* data = _dataElastic;
int numConsts = 0;
- int strainSize = 0;
+ int tensorSize = 0;
switch(data->dimension)
{ // switch
case 1 :
numConsts = 1;
- strainSize = 1;
+ tensorSize = 1;
break;
case 2 :
numConsts = 6;
- strainSize = 3;
+ tensorSize = 3;
break;
case 3 :
numConsts = 21;
- strainSize = 6;
+ tensorSize = 6;
break;
} // switch
+ const int numLocs = _data->numLocs;
+ const int numPropsQuadPt = _data->numPropsQuadPt;
+ const int numVarsQuadPt = _data->numVarsQuadPt;
+
double_array elasticConsts(numConsts);
- _matElastic->_calcElasticConsts(&elasticConsts[0], numConsts,
- data->parameterData, data->numParamsQuadPt,
- data->strain, strainSize,
- data->initialState,
- data->numInitialStateValues);
+ double_array properties(numPropsQuadPt);
+ double_array stateVars(numVarsQuadPt);
+ double_array strain(tensorSize);
+ double_array initialStress(tensorSize);
+ double_array initialStrain(tensorSize);
- const double* elasticConstsE = data->elasticConsts;
- CPPUNIT_ASSERT(0 != elasticConstsE);
+ for (int iLoc=0; iLoc < numLocs; ++iLoc) {
+ memcpy(&properties[0], &data->properties[iLoc*numPropsQuadPt],
+ numPropsQuadPt*sizeof(double));
+ memcpy(&stateVars[0], &data->stateVars[iLoc*numVarsQuadPt],
+ numVarsQuadPt*sizeof(double));
+ memcpy(&strain[0], &data->strain[iLoc*tensorSize],
+ tensorSize*sizeof(double));
+ memcpy(&initialStress[0], &data->initialStress[iLoc*tensorSize],
+ tensorSize*sizeof(double));
+ memcpy(&initialStrain[0], &data->initialStrain[iLoc*tensorSize],
+ tensorSize*sizeof(double));
- const double tolerance = 1.0e-06;
- for (int i=0; i < numConsts; ++i)
- if (fabs(elasticConstsE[i]) > tolerance)
- CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, elasticConsts[i]/elasticConstsE[i],
- tolerance);
- else
- CPPUNIT_ASSERT_DOUBLES_EQUAL(elasticConstsE[i], elasticConsts[i],
- tolerance);
+ _matElastic->_calcElasticConsts(&elasticConsts[0], elasticConsts.size(),
+ &properties[0], properties.size(),
+ &stateVars[0], stateVars.size(),
+ &strain[0], strain.size(),
+ &initialStress[0], initialStress.size(),
+ &initialStrain[0], initialStrain.size());
+
+ const double* elasticConstsE = data->elasticConsts;
+ CPPUNIT_ASSERT(0 != elasticConstsE);
+
+ const double tolerance = 1.0e-06;
+ for (int i=0; i < numConsts; ++i)
+ if (fabs(elasticConstsE[i]) > tolerance)
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, elasticConsts[i]/elasticConstsE[i],
+ tolerance);
+ else
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(elasticConstsE[i], elasticConsts[i],
+ tolerance);
+ } // for
} // _testCalcElasticConsts
// ----------------------------------------------------------------------
@@ -506,7 +530,55 @@
void
pylith::materials::TestElasticMaterial::test_updateStateVars(void)
{ // test_updateStateVars
- CPPUNIT_ASSERT(false);
+ CPPUNIT_ASSERT(0 != _matElastic);
+ CPPUNIT_ASSERT(0 != _dataElastic);
+ const ElasticMaterialData* data = _dataElastic;
+
+ const bool computeStateVars = true;
+
+ const int numLocs = _data->numLocs;
+ const int numPropsQuadPt = _data->numPropsQuadPt;
+ const int numVarsQuadPt = _data->numVarsQuadPt;
+ const int tensorSize = _matElastic->_tensorSize;
+
+ double_array properties(numPropsQuadPt);
+ double_array stateVars(numVarsQuadPt);
+ double_array strain(tensorSize);
+ double_array initialStress(tensorSize);
+ double_array initialStrain(tensorSize);
+
+ for (int iLoc=0; iLoc < numLocs; ++iLoc) {
+ memcpy(&properties[0], &data->properties[iLoc*numPropsQuadPt],
+ numPropsQuadPt*sizeof(double));
+ memcpy(&stateVars[0], &data->stateVars[iLoc*numVarsQuadPt],
+ numVarsQuadPt*sizeof(double));
+ memcpy(&strain[0], &data->strain[iLoc*tensorSize],
+ tensorSize*sizeof(double));
+ memcpy(&initialStress[0], &data->initialStress[iLoc*tensorSize],
+ tensorSize*sizeof(double));
+ memcpy(&initialStrain[0], &data->initialStrain[iLoc*tensorSize],
+ tensorSize*sizeof(double));
+
+ _matElastic->_updateStateVars(&stateVars[0], stateVars.size(),
+ &properties[0], properties.size(),
+ &strain[0], strain.size(),
+ &initialStress[0], initialStress.size(),
+ &initialStrain[0], initialStrain.size());
+
+ const double* stateVarsE =
+ (numVarsQuadPt > 0) ? data->stateVarsUpdated : 0;
+ CPPUNIT_ASSERT( (0 < numVarsQuadPt && 0 != stateVarsE) ||
+ (0 == numVarsQuadPt && 0 == stateVarsE) );
+
+ const double tolerance = 1.0e-06;
+ for (int i=0; i < numVarsQuadPt; ++i)
+ if (fabs(stateVarsE[i]) > tolerance)
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, stateVars[i]/stateVarsE[i],
+ tolerance);
+ else
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(stateVarsE[i], stateVars[i],
+ tolerance);
+ } // for
} // test_updateStateVars
// ----------------------------------------------------------------------
@@ -519,8 +591,8 @@
const ElasticMaterialData* data = _dataElastic;
const double dt =
- _matElastic->_stableTimeStepImplicit(data->parameterData,
- data->numParamsQuadPt);
+ _matElastic->_stableTimeStepImplicit(data->properties, data->numPropsQuadPt,
+ data->stateVars, data->numVarsQuadPt);
const double dtE = data->dtStableImplicit;
Modified: short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticMaterial.hh
===================================================================
--- short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticMaterial.hh 2009-02-22 14:30:42 UTC (rev 14115)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticMaterial.hh 2009-02-22 22:59:10 UTC (rev 14116)
@@ -22,6 +22,7 @@
#define pylith_materials_testelasticmaterial_hh
#include "TestMaterial.hh"
+#include "pylith/materials/materialsfwd.hh" // forward declarations
/// Namespace for pylith package
namespace pylith {
@@ -40,6 +41,7 @@
CPPUNIT_TEST( testDBInitialStress );
CPPUNIT_TEST( testDBInitialStrain );
+#if 0
CPPUNIT_TEST( testInitialize );
CPPUNIT_TETS( testRetrievePropsAndVars );
CPPUNIT_TEST( testCalcDensity );
@@ -47,7 +49,7 @@
CPPUNIT_TEST( testCalcDerivElastic );
CPPUNIT_TEST( testUpdateStateVars );
CPPUNIT_TEST( testStableTimeStepImplicit );
- CPPUNIT_TEST( testUseElasticBehavior );
+#endif
CPPUNIT_TEST_SUITE_END();
@@ -81,9 +83,6 @@
/// Test stableTimeStepImplicit().
void testStableTimeStepImplicit(void);
- /// Test useElasticBehavior().
- void testUseElasticBehavior(void);
-
// PUBLIC METHODS /////////////////////////////////////////////////////
public :
@@ -119,6 +118,20 @@
ElasticMaterial* _matElastic; ///< Test subject.
ElasticMaterialData* _dataElastic; ///< Data for tests.
+ // PRIVATE MEMBERS ////////////////////////////////////////////////////
+private :
+
+#if 0
+ /** Setup mesh and material.
+ *
+ * @param mesh Finite-element mesh.
+ * @param material Elastic material.
+ * @param data Data with properties for elastic material.
+ */
+ void _initialize(topology::Mesh* mesh,
+ ElasticMaterial* material,
+ const ElasticMaterialData* data);
+#endif
}; // class TestElasticMaterial
#endif // pylith_materials_testelasticmaterial_hh
Modified: short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestMaterial.cc
===================================================================
--- short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestMaterial.cc 2009-02-22 14:30:42 UTC (rev 14115)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestMaterial.cc 2009-02-22 22:59:10 UTC (rev 14116)
@@ -27,11 +27,9 @@
#include "spatialdata/geocoords/CSCart.hh" // USES CSCart
#include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
-#include "pylith/utils/sievetypes.hh" // USES Mesh
+#include <cstring> // USES strcmp()
+#include <cassert> // USES assert()
-#include <string.h> // USES strcmp()
-#include <math.h> // USES assert()
-
// ----------------------------------------------------------------------
CPPUNIT_TEST_SUITE_REGISTRATION( pylith::materials::TestMaterial );
@@ -141,51 +139,20 @@
void
pylith::materials::TestMaterial::testInitialize(void)
{ // testInitialize
+ // Setup mesh
topology::Mesh mesh;
- const int materialID = 24;
- { // create mesh
- const int cellDim = 1;
- const int numCorners = 3;
- const int spaceDim = 1;
- const int numVertices = 3;
- const int numCells = 1;
- const double vertCoords[] = { -1.0, 0.0, 1.0};
- const int cells[] = { 0, 1, 2 };
- CPPUNIT_ASSERT(0 != vertCoords);
- CPPUNIT_ASSERT(0 != cells);
+ meshio::MeshIOAscii iohandler;
+ iohandler.filename("");
+ iohandler.read(&mesh);
- mesh = new Mesh(PETSC_COMM_WORLD, cellDim);
- ALE::Obj<sieve_type> sieve = new sieve_type(mesh->comm());
-
- const bool interpolate = false;
- ALE::Obj<ALE::Mesh::sieve_type> s = new ALE::Mesh::sieve_type(sieve->comm(), sieve->debug());
-
- ALE::SieveBuilder<ALE::Mesh>::buildTopology(s, cellDim, numCells,
- const_cast<int*>(cells), numVertices,
- interpolate, numCorners);
- std::map<Mesh::point_type,Mesh::point_type> renumbering;
- ALE::ISieveConverter::convertSieve(*s, *sieve, renumbering);
- mesh->setSieve(sieve);
- mesh->stratify();
- ALE::SieveBuilder<Mesh>::buildCoordinates(mesh, spaceDim, vertCoords);
-
- } // create mesh
-
- { // set material ids
- const ALE::Obj<Mesh::label_sequence>& cells = mesh->heightStratum(0);
- const ALE::Obj<Mesh::label_type>& labelMaterials = mesh->createLabel("material-id");
- int i = 0;
- for(Mesh::label_sequence::iterator e_iter = cells->begin();
- e_iter != cells->end();
- ++e_iter)
- mesh->setValue(labelMaterials, *e_iter, materialID);
- } // set material ids
-
+ // Set up coordinates
spatialdata::geocoords::CSCart cs;
- cs.setSpaceDim(1);
+ cs.setSpaceDim(mesh.dimension());
cs.initialize();
+ mesh.coordsys(&cs);
- feassemble::Quadrature1D quadrature;
+ // Setup quadrature
+ feassemble::Quadrature<topology::Mesh> quadrature;
feassemble::GeometryLine1D geometry;
quadrature.refGeometry(&geometry);
const int cellDim = 1;
@@ -199,6 +166,7 @@
quadrature.initialize(basis, basisDeriv, quadPtsRef, quadWts,
cellDim, numCorners, numQuadPts, spaceDim);
+
spatialdata::spatialdb::SimpleDB db;
spatialdata::spatialdb::SimpleIOAscii iohandler;
iohandler.filename("data/matinitialize.spatialdb");
@@ -207,12 +175,13 @@
spatialdata::units::Nondimensional normalizer;
- ElasticIsotropic3D material;
- material.db(&db);
+ const int materialID = 24;
+ ElasticStrain1D material;
+ material.dbProperties(&db);
material.id(materialID);
material.label("my_material");
material.normalizer(normalizer);
- material.initialize(mesh, &cs, &quadrature);
+ material.initialize(mesh, &quadrature);
const double densityA = 2000.0;
const double vsA = 100.0;
@@ -334,22 +303,26 @@
const int numLocs = _data->numLocs;
const int propertiesSize = _data->numPropsQuadPt;
double_array propertiesNondim(propertiesSize);
+ double_array properties(propertiesSize);
for (int iLoc=0; iLoc < numLocs; ++iLoc) {
- _material->_nondimProperties(&_data->properties[0], propertiesSize);
+ memcpy(&properties[iLoc*propertiesSize], _data->properties,
+ propertiesSize*sizeof(double));
+ _material->_nondimProperties(&properties[0], properties.size());
const double* const propertiesNondimE =
&_data->propertiesNondim[iLoc*propertiesSize];
+ CPPUNIT_ASSERT(0 != propertiesNondimE);
const double tolerance = 1.0e-06;
for (int i=0; i < propertiesSize; ++i) {
if (fabs(propertiesNondimE[i]) > tolerance)
CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0,
- propertiesNondim[i]/propertiesNondimE[i],
+ properties[i]/propertiesNondimE[i],
tolerance);
else
- CPPUNIT_ASSERT_DOUBLES_EQUAL(propertiesNondimE[i], propertiesNondim[i],
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(propertiesNondimE[i], properties[i],
tolerance);
} // for
} // for
@@ -369,10 +342,13 @@
for (int iLoc=0; iLoc < numLocs; ++iLoc) {
- _material->_dimProperties(&_data->propertiesNondim[0], propertiesSize);
+ memcpy(&properties[iLoc*propertiesSize], _data->propertiesNondim,
+ propertiesSize*sizeof(double));
+ _material->_dimProperties(&properties[0], properties.size());
const double* const propertiesE =
&_data->properties[iLoc*propertiesSize];
+ CPPUNIT_ASSERT(0 != propertiesE);
const double tolerance = 1.0e-06;
for (int i=0; i < propertiesSize; ++i) {
@@ -399,7 +375,7 @@
const int numDBStateVars = _data->numDBStateVars;
double_array dbValues(numDBStateVars);
- const int stateVarsSize = _data->numPropsQuadPt;
+ const int stateVarsSize = _data->numVarsQuadPt;
double_array stateVars(stateVarsSize);
for (int iLoc=0; iLoc < numLocs; ++iLoc) {
@@ -408,7 +384,10 @@
_material->_dbToStateVars(&stateVars[0], dbValues);
- const double* const stateVarsE = &_data->stateVars[iLoc*stateVarsSize];
+ const double* const stateVarsE =
+ (stateVarsSize > 0) ? &_data->stateVars[iLoc*stateVarsSize] : 0;
+ CPPUNIT_ASSERT( (0 < stateVarsSize && 0 != stateVarsE) ||
+ (0 == stateVarsSize && 0 == stateVarsE) );
const double tolerance = 1.0e-06;
for (int i=0; i < stateVarsSize; ++i) {
if (fabs(stateVarsE[i]) > tolerance)
@@ -431,24 +410,28 @@
CPPUNIT_ASSERT(0 != _data);
const int numLocs = _data->numLocs;
- const int stateVarsSize = _data->numPropsQuadPt;
- double_array stateVarsNondim(stateVarsSize);
+ const int stateVarsSize = _data->numVarsQuadPt;
+ double_array stateVars(stateVarsSize);
for (int iLoc=0; iLoc < numLocs; ++iLoc) {
- _material->_nondimStateVars(&_data->stateVars[0], stateVarsSize);
+ memcpy(&stateVars[iLoc*stateVarsSize], _data->stateVars,
+ stateVarsSize*sizeof(double));
+ _material->_nondimStateVars(&stateVars[0], stateVars.size());
const double* const stateVarsNondimE =
- &_data->stateVarsNondim[iLoc*stateVarsSize];
+ (stateVarsSize > 0) ? &_data->stateVarsNondim[iLoc*stateVarsSize] : 0;
+ CPPUNIT_ASSERT( (0 < stateVarsSize && 0 != stateVarsNondimE) ||
+ (0 == stateVarsSize && 0 == stateVarsNondimE) );
const double tolerance = 1.0e-06;
for (int i=0; i < stateVarsSize; ++i) {
if (fabs(stateVarsNondimE[i]) > tolerance)
CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0,
- stateVarsNondim[i]/stateVarsNondimE[i],
+ stateVars[i]/stateVarsNondimE[i],
tolerance);
else
- CPPUNIT_ASSERT_DOUBLES_EQUAL(stateVarsNondimE[i], stateVarsNondim[i],
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(stateVarsNondimE[i], stateVars[i],
tolerance);
} // for
} // for
@@ -463,15 +446,19 @@
CPPUNIT_ASSERT(0 != _data);
const int numLocs = _data->numLocs;
- const int stateVarsSize = _data->numPropsQuadPt;
+ const int stateVarsSize = _data->numVarsQuadPt;
double_array stateVars(stateVarsSize);
for (int iLoc=0; iLoc < numLocs; ++iLoc) {
- _material->_dimStateVars(&_data->stateVarsNondim[0], stateVarsSize);
+ memcpy(&stateVars[iLoc*stateVarsSize], _data->stateVarsNondim,
+ stateVarsSize*sizeof(double));
+ _material->_dimStateVars(&stateVars[0], stateVars.size());
const double* const stateVarsE =
- &_data->stateVars[iLoc*stateVarsSize];
+ (stateVarsSize > 0) ? &_data->stateVars[iLoc*stateVarsSize] : 0;
+ CPPUNIT_ASSERT( (0 < stateVarsSize && 0 != stateVarsE) ||
+ (0 == stateVarsSize && 0 == stateVarsE) );
const double tolerance = 1.0e-06;
for (int i=0; i < stateVarsSize; ++i) {
Added: short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestMetadata.cc
===================================================================
--- short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestMetadata.cc (rev 0)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestMetadata.cc 2009-02-22 22:59:10 UTC (rev 14116)
@@ -0,0 +1,217 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestMetadata.hh" // Implementation of class methods
+
+#include "pylith/materials/Metadata.hh" // USES Metadata
+#include "pylith/utils/array.hh" // USES double_array
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::materials::TestMetadata );
+
+// ----------------------------------------------------------------------
+namespace pylith {
+ namespace materials {
+ namespace _TestMetadata {
+ const Metadata::ParamDescription properties[] = {
+ { "one", 1, pylith::topology::FieldBase::SCALAR },
+ { "two", 2, pylith::topology::FieldBase::VECTOR },
+ { "three", 3, pylith::topology::FieldBase::TENSOR },
+ };
+ const int numProperties = 3;
+ const char* dbProperties[] = {
+ "prop_one", "prop_two", "prop_three", "prop_four",
+ };
+ const int numDBProperties = 4;
+ const Metadata::ParamDescription stateVars[] = {
+ { "var1", 1, pylith::topology::FieldBase::TENSOR },
+ { "var2", 3, pylith::topology::FieldBase::VECTOR },
+ };
+ const int numStateVars = 2;
+ const char* dbStateVars[] = {
+ "var_one", "var_two", "var_three",
+ };
+ const int numDBStateVars = 3;
+ } // _TestMetadata
+ } // materials
+} // pylith
+
+// ----------------------------------------------------------------------
+// Setup test data.
+void
+pylith::materials::TestMetadata::setUp(void)
+{ // setUp
+ _metadata = new Metadata(_TestMetadata::properties,
+ _TestMetadata::numProperties,
+ _TestMetadata::dbProperties,
+ _TestMetadata::numDBProperties,
+ _TestMetadata::stateVars,
+ _TestMetadata::numStateVars,
+ _TestMetadata::dbStateVars,
+ _TestMetadata::numDBStateVars);
+ CPPUNIT_ASSERT(0 != _metadata);
+} // setUp
+
+// ----------------------------------------------------------------------
+// Tear down test data.
+void
+pylith::materials::TestMetadata::tearDown(void)
+{ // tearDown
+ delete _metadata; _metadata = 0;
+} // tearDown
+
+// ----------------------------------------------------------------------
+// Test constructor.
+void
+pylith::materials::TestMetadata::testConstructor(void)
+{ // testConstructor
+ CPPUNIT_ASSERT(0 != _metadata);
+} // testConstructor
+
+// ----------------------------------------------------------------------
+// Test copy constructor.
+void
+pylith::materials::TestMetadata::testCopyConstructor(void)
+{ // testCopyConstructor
+ Metadata m(*_metadata);
+
+ delete _metadata; _metadata = &m;
+ testProperties();
+ testStateVars();
+ testFiberDim();
+ testFieldType();
+ testDBProperties();
+ testDBStateVars();
+
+ _metadata = 0;
+} // testCopyConstructor
+
+// ----------------------------------------------------------------------
+// Test properties().
+void
+pylith::materials::TestMetadata::testProperties(void)
+{ // testProperties
+ CPPUNIT_ASSERT(0 != _metadata);
+
+ const string_vector& properties = _metadata->properties();
+ const size_t numProperties = _TestMetadata::numProperties;
+ CPPUNIT_ASSERT_EQUAL(numProperties, properties.size());
+ for (size_t i=0; i < numProperties; ++i)
+ CPPUNIT_ASSERT_EQUAL(std::string(_TestMetadata::properties[i].name),
+ properties[i]);
+} // testProperties
+
+// ----------------------------------------------------------------------
+// Test stateVars().
+void
+pylith::materials::TestMetadata::testStateVars(void)
+{ // testStateVars
+ CPPUNIT_ASSERT(0 != _metadata);
+
+ const string_vector& stateVars = _metadata->stateVars();
+ const size_t numStateVars = _TestMetadata::numStateVars;
+ CPPUNIT_ASSERT_EQUAL(numStateVars, stateVars.size());
+ for (size_t i=0; i < numStateVars; ++i)
+ CPPUNIT_ASSERT_EQUAL(std::string(_TestMetadata::stateVars[i].name),
+ stateVars[i]);
+} // testStateVars
+
+// ----------------------------------------------------------------------
+// Test fiberDim().
+void
+pylith::materials::TestMetadata::testFiberDim(void)
+{ // testFiberDim
+ CPPUNIT_ASSERT(0 != _metadata);
+
+ { // check property
+ const int index = 1;
+ const char* property = _TestMetadata::properties[index].name;
+ const int fiberDimE = _TestMetadata::properties[index].fiberDim;
+ const int fiberDim = _metadata->fiberDim(property, Metadata::PROPERTY);
+ CPPUNIT_ASSERT_EQUAL(fiberDimE, fiberDim);
+ } // check property
+
+ { // check state variable
+ const int index = 1;
+ const char* stateVar = _TestMetadata::stateVars[index].name;
+ const int fiberDimE = _TestMetadata::stateVars[index].fiberDim;
+ const int fiberDim = _metadata->fiberDim(stateVar, Metadata::STATEVAR);
+ CPPUNIT_ASSERT_EQUAL(fiberDimE, fiberDim);
+ } // check state variable
+} // testFiberDim
+
+// ----------------------------------------------------------------------
+// Test fieldType().
+void
+pylith::materials::TestMetadata::testFieldType(void)
+{ // testFieldType
+ CPPUNIT_ASSERT(0 != _metadata);
+
+ { // check property
+ const int index = 2;
+ const char* property = _TestMetadata::properties[index].name;
+ const topology::FieldBase::VectorFieldEnum fieldTypeE =
+ _TestMetadata::properties[index].fieldType;
+ const topology::FieldBase::VectorFieldEnum fieldType =
+ _metadata->fieldType(property, Metadata::PROPERTY);
+ CPPUNIT_ASSERT_EQUAL(fieldTypeE, fieldType);
+ } // check property
+
+ { // check state variable
+ const int index = 0;
+ const char* stateVar = _TestMetadata::stateVars[index].name;
+ const topology::FieldBase::VectorFieldEnum fieldTypeE =
+ _TestMetadata::stateVars[index].fieldType;
+ const topology::FieldBase::VectorFieldEnum fieldType =
+ _metadata->fieldType(stateVar, Metadata::STATEVAR);
+ CPPUNIT_ASSERT_EQUAL(fieldTypeE, fieldType);
+ } // check state variable
+} // testFieldType
+
+// ----------------------------------------------------------------------
+// Test dbProperties().
+void
+pylith::materials::TestMetadata::testDBProperties(void)
+{ // testDBProperties
+ CPPUNIT_ASSERT(0 != _metadata);
+
+ const int numDBProperties = _TestMetadata::numDBProperties;
+ CPPUNIT_ASSERT_EQUAL(numDBProperties, _metadata->numDBProperties());
+
+ const char* const* dbPropertiesE = _TestMetadata::dbProperties;
+ const char* const* dbProperties = _metadata->dbProperties();
+
+ for (int i=0; i < numDBProperties; ++i)
+ CPPUNIT_ASSERT(0 == strcmp(dbPropertiesE[i], dbProperties[i]));
+} // testDBProperties
+
+// ----------------------------------------------------------------------
+// Test dbStateVars().
+void
+pylith::materials::TestMetadata::testDBStateVars(void)
+{ // testDBStateVars
+ CPPUNIT_ASSERT(0 != _metadata);
+
+ const int numDBStateVars = _TestMetadata::numDBStateVars;
+ CPPUNIT_ASSERT_EQUAL(numDBStateVars, _metadata->numDBStateVars());
+
+ const char* const* dbStateVarsE = _TestMetadata::dbStateVars;
+ const char* const* dbStateVars = _metadata->dbStateVars();
+
+ for (int i=0; i < numDBStateVars; ++i)
+ CPPUNIT_ASSERT(0 == strcmp(dbStateVarsE[i], dbStateVars[i]));
+} // testDBStateVars
+
+
+// End of file
Added: short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestMetadata.hh
===================================================================
--- short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestMetadata.hh (rev 0)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestMetadata.hh 2009-02-22 22:59:10 UTC (rev 14116)
@@ -0,0 +1,95 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/materials/TestMetadata.hh
+ *
+ * @brief C++ TestMetadata object
+ *
+ * C++ unit testing for Material.
+ */
+
+#if !defined(pylith_materials_testmetadata_hh)
+#define pylith_materials_testmetadata_hh
+
+#include <cppunit/extensions/HelperMacros.h>
+
+#include "pylith/materials/materialsfwd.hh" // forward declarations
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace materials {
+ class TestMetadata;
+ } // materials
+} // pylith
+
+/// C++ unit testing for Material
+class pylith::materials::TestMetadata : public CppUnit::TestFixture
+{ // class TestMetadata
+
+ // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+ CPPUNIT_TEST_SUITE( TestMetadata );
+
+ CPPUNIT_TEST( testConstructor );
+ CPPUNIT_TEST( testCopyConstructor );
+ CPPUNIT_TEST( testProperties );
+ CPPUNIT_TEST( testStateVars );
+ CPPUNIT_TEST( testFiberDim );
+ CPPUNIT_TEST( testFieldType );
+ CPPUNIT_TEST( testDBProperties );
+ CPPUNIT_TEST( testDBStateVars );
+
+ CPPUNIT_TEST_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Setup test data.
+ void setUp(void);
+
+ /// Tear down test data.
+ void tearDown(void);
+
+ /// Test constructor.
+ void testConstructor(void);
+
+ /// Test copy constructor.
+ void testCopyConstructor(void);
+
+ /// Test properties().
+ void testProperties(void);
+
+ /// Test stateVars().
+ void testStateVars(void);
+
+ /// Test fiberDim().
+ void testFiberDim(void);
+
+ /// Test fieldType().
+ void testFieldType(void);
+
+ /// Test dbProperties() and numDBProperties().
+ void testDBProperties(void);
+
+ /// Test dbStateVars() and numDBStateVars().
+ void testDBStateVars(void);
+
+ // PRIVATE MEMBERS ////////////////////////////////////////////////////
+private :
+
+ Metadata* _metadata; ///< Object for testing
+
+}; // class TestMetadata
+
+#endif // pylith_materials_testmetadata_hh
+
+// End of file
Modified: short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticIsotropic3D.py
===================================================================
--- short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticIsotropic3D.py 2009-02-22 14:30:42 UTC (rev 14115)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticIsotropic3D.py 2009-02-22 22:59:10 UTC (rev 14116)
@@ -20,6 +20,10 @@
import numpy
# ----------------------------------------------------------------------
+dimension = 3
+numElasticConsts = 21
+tensorSize = 6
+
# ElasticIsotropic3D class
class ElasticIsotropic3D(ElasticMaterialApp):
"""
@@ -35,67 +39,72 @@
"""
ElasticMaterialApp.__init__(self, name)
- self.dimension = 3
+ numLocs = 2
- self.numDBValues = 3
- self.numInitialStateValues = 6
- self.dbValues = ["density", "vs", "vp"]
- self.initialStateDBValues = ["stress_xx", "stress_yy", "stress_zz",
- "stress_xy", "stress_yz", "stress_xz" ]
- self.numParameters = 3
- self.numParamValues = [1, 1, 1]
- self.parameterNames = ["density", "mu", "lambda"]
+ self.dimension = dimension
+ self.numLocs = numLocs
+
+ self.dbPropertyValues = ["density", "vs", "vp"]
+ self.propertyValues = ["density", "mu", "lambda"]
+ self.numPropertyValues = numpy.array([1, 1, 1], dtype=numpy.int32)
densityA = 2500.0
vsA = 3000.0
vpA = vsA*3**0.5
- strainA = [1.1e-4, 2.2e-4, 3.3e-4, 4.4e-4, 5.5e-4, 6.6e-4]
- initialStateA = [1.2e4, 2.3e4, 3.4e4, 4.5e4, 5.6e4, 6.7e4]
+ strainA = [1.1e-4, 1.2e-4, 1.3e-4, 1.4e-4, 1.5e-4, 1.6e-4]
+ initialStressA = [2.1e4, 2.2e4, 2.3e4, 2.4e4, 2.5e4, 2.6e4]
+ initialStrainA = [3.1e-4, 3.2e-4, 3.3e-4, 3.4e-4, 3.5e-6, 3.6e-4]
densityB = 2000.0
vsB = 1200.0
vpB = vsB*3**0.5
- strainB = [1.2e-4, 2.3e-4, 3.4e-4, 4.5e-4, 5.6e-4, 6.7e-4]
- initialStateB = [2.1e4, 3.2e4, 4.3e4, 5.4e4, 6.5e4, 7.6e4]
-
- self.dbData = numpy.array([ [densityA, vsA, vpA],
- [densityB, vsB, vpB] ],
- dtype=numpy.float64)
+ strainB = [4.1e-4, 4.2e-4, 4.3e-4, 4.4e-4, 4.5e-4, 4.6e-4]
+ initialStressB = [5.1e4, 5.2e4, 5.3e4, 5.4e4, 5.5e4, 5.6e4]
+ initialStrainB = [6.1e-4, 6.2e-4, 6.3e-4, 6.4e-4, 6.5e-6, 6.6e-4]
+
+ self.dbProperties = numpy.array([ [densityA, vsA, vpA],
+ [densityB, vsB, vpB] ],
+ dtype=numpy.float64)
muA = vsA*vsA*densityA
lambdaA = vpA*vpA*densityA - 2.0*muA
muB = vsB*vsB*densityB
lambdaB = vpB*vpB*densityB - 2.0*muB
- self.parameterData = numpy.array([ [densityA, muA, lambdaA],
- [densityB, muB, lambdaB] ],
+ self.properties = numpy.array([ [densityA, muA, lambdaA], [densityB, muB, lambdaB] ],
dtype=numpy.float64)
- self.initialStateDBData = numpy.array([initialStateA, initialStateB],
+ self.initialStress = numpy.array([initialStressA,
+ initialStressB],
dtype=numpy.float64)
- self.initialState = numpy.array([initialStateA, initialStateB],
+ self.initialStrain = numpy.array([initialStrainA,
+ initialStrainB],
dtype=numpy.float64)
- self.numLocs = 2
- numElasticConsts = 21
- self.density = numpy.array([densityA, densityB],
+ self.density = numpy.array([densityA,
+ densityB],
dtype=numpy.float64)
- self.strain = numpy.array([strainA, strainB],
+ self.strain = numpy.array([strainA,
+ strainB],
dtype=numpy.float64)
- self.stress = numpy.zeros( (self.numLocs, 6), dtype=numpy.float64)
- self.elasticConsts = numpy.zeros( (self.numLocs, numElasticConsts),
- dtype=numpy.float64)
+ stress = numpy.zeros( (numLocs, tensorSize), dtype=numpy.float64)
+ elasticConsts = numpy.zeros( (numLocs, numElasticConsts),
+ dtype=numpy.float64)
- (self.elasticConsts[0,:], self.stress[0,:]) = \
- self._calcStress(strainA, densityA, muA, lambdaA,
- initialStateA)
- (self.elasticConsts[1,:], self.stress[1,:]) = \
- self._calcStress(strainB, densityB, muB, lambdaB,
- initialStateB)
+ (elasticConsts[0,:], stress[0,:]) = \
+ self._calcStress(strainA, densityA, muA, lambdaA,
+ initialStressA, initialStrainA)
+ (elasticConsts[1,:], stress[1,:]) = \
+ self._calcStress(strainB, densityB, muB, lambdaB,
+ initialStressB, initialStrainB)
+
+ self.stress = stress
+ self.elasticConsts = elasticConsts
return
- def _calcStress(self, strainV, densityV, muV, lambdaV, initialStateV):
+ def _calcStress(self, strainV, densityV, muV, lambdaV,
+ initialStressV, initialStrainV):
"""
Compute stress and derivative of elasticity matrix.
"""
@@ -127,8 +136,9 @@
C2323, C2313,
C1313], dtype=numpy.float64)
- strain = numpy.reshape(strainV, (6,1))
- initialState = numpy.reshape(initialStateV, (6,1))
+ strain = numpy.reshape(strainV, (tensorSize,1))
+ initialStress = numpy.reshape(initialStressV, (tensorSize,1))
+ initialStrain = numpy.reshape(initialStrainV, (tensorSize,1))
elastic = numpy.array([ [C1111, C1122, C1133, C1112, C1123, C1113],
[C1122, C2222, C2233, C2212, C2223, C2213],
[C1133, C2233, C3333, C3312, C3323, C3313],
@@ -136,7 +146,7 @@
[C1123, C2223, C3323, C1223, C2323, C2313],
[C1113, C2213, C3313, C1213, C2313, C1313] ],
dtype=numpy.float64)
- stress = numpy.dot(elastic, strain) + initialState
+ stress = initialStress + numpy.dot(elastic, initialStrain + strain)
return (elasticConsts, numpy.ravel(stress))
Modified: short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticIsotropic3DData.cc
===================================================================
--- short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticIsotropic3DData.cc 2009-02-22 14:30:42 UTC (rev 14115)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticIsotropic3DData.cc 2009-02-22 22:59:10 UTC (rev 14116)
@@ -17,40 +17,39 @@
const int pylith::materials::ElasticIsotropic3DData::_dimension = 3;
-const int pylith::materials::ElasticIsotropic3DData::_numDBValues = 3;
+const int pylith::materials::ElasticIsotropic3DData::_numLocs = 2;
-const int pylith::materials::ElasticIsotropic3DData::_numInitialStateValues = 6;
+const int pylith::materials::ElasticIsotropic3DData::_numProperties = 3;
-const int pylith::materials::ElasticIsotropic3DData::_numParameters = 3;
+const int pylith::materials::ElasticIsotropic3DData::_numStateVars = 0;
-const int pylith::materials::ElasticIsotropic3DData::_numParamsQuadPt = 3;
+const int pylith::materials::ElasticIsotropic3DData::_numDBProperties = 3;
-const int pylith::materials::ElasticIsotropic3DData::_numLocs = 2;
+const int pylith::materials::ElasticIsotropic3DData::_numDBStateVars = 0;
+const int pylith::materials::ElasticIsotropic3DData::_numPropsQuadPt = 3;
+
+const int pylith::materials::ElasticIsotropic3DData::_numVarsQuadPt = 0;
+
const double pylith::materials::ElasticIsotropic3DData::_dtStableImplicit = 1.00000000e+30;
-const int pylith::materials::ElasticIsotropic3DData::_numParamValues[] = {
+const int pylith::materials::ElasticIsotropic3DData::_numPropertyValues[] = {
1,
1,
1,
};
-const char* pylith::materials::ElasticIsotropic3DData::_dbValues[] = {
+const int* pylith::materials::ElasticIsotropic3DData::_numStateVarValues = 0;
+
+const char* pylith::materials::ElasticIsotropic3DData::_dbPropertyValues[] = {
"density",
"vs",
"vp",
};
-const char* pylith::materials::ElasticIsotropic3DData::_initialStateDBValues[] = {
-"stress_xx",
-"stress_yy",
-"stress_zz",
-"stress_xy",
-"stress_yz",
-"stress_xz",
-};
+const char** pylith::materials::ElasticIsotropic3DData::_dbStateVarValues = 0;
-const double pylith::materials::ElasticIsotropic3DData::_dbData[] = {
+const double pylith::materials::ElasticIsotropic3DData::_dbProperties[] = {
2.50000000e+03,
3.00000000e+03,
5.19615242e+03,
@@ -59,22 +58,9 @@
2.07846097e+03,
};
-const double pylith::materials::ElasticIsotropic3DData::_initialStateDBData[] = {
- 1.20000000e+04,
- 2.30000000e+04,
- 3.40000000e+04,
- 4.50000000e+04,
- 5.60000000e+04,
- 6.70000000e+04,
- 2.10000000e+04,
- 3.20000000e+04,
- 4.30000000e+04,
- 5.40000000e+04,
- 6.50000000e+04,
- 7.60000000e+04,
-};
+const double* pylith::materials::ElasticIsotropic3DData::_dbStateVars = 0;
-const double pylith::materials::ElasticIsotropic3DData::_parameterData[] = {
+const double pylith::materials::ElasticIsotropic3DData::_properties[] = {
2.50000000e+03,
2.25000000e+10,
2.25000000e+10,
@@ -83,21 +69,16 @@
2.88000000e+09,
};
-const double pylith::materials::ElasticIsotropic3DData::_initialState[] = {
- 1.20000000e+04,
- 2.30000000e+04,
- 3.40000000e+04,
- 4.50000000e+04,
- 5.60000000e+04,
- 6.70000000e+04,
- 2.10000000e+04,
- 3.20000000e+04,
- 4.30000000e+04,
- 5.40000000e+04,
- 6.50000000e+04,
- 7.60000000e+04,
+const double* pylith::materials::ElasticIsotropic3DData::_stateVars = 0;
+
+const double pylith::materials::ElasticIsotropic3DData::_propertiesNondim[] = {
+ 0.00000000e+00,
};
+const double pylith::materials::ElasticIsotropic3DData::_stateVarsNondim[] = {
+ 0.00000000e+00,
+};
+
const double pylith::materials::ElasticIsotropic3DData::_density[] = {
2.50000000e+03,
2.00000000e+03,
@@ -105,32 +86,32 @@
const double pylith::materials::ElasticIsotropic3DData::_strain[] = {
1.10000000e-04,
- 2.20000000e-04,
- 3.30000000e-04,
+ 1.20000000e-04,
+ 1.30000000e-04,
+ 1.40000000e-04,
+ 1.50000000e-04,
+ 1.60000000e-04,
+ 4.10000000e-04,
+ 4.20000000e-04,
+ 4.30000000e-04,
4.40000000e-04,
- 5.50000000e-04,
- 6.60000000e-04,
- 1.20000000e-04,
- 2.30000000e-04,
- 3.40000000e-04,
4.50000000e-04,
- 5.60000000e-04,
- 6.70000000e-04,
+ 4.60000000e-04,
};
const double pylith::materials::ElasticIsotropic3DData::_stress[] = {
- 1.98120000e+07,
- 2.47730000e+07,
- 2.97340000e+07,
- 1.98450000e+07,
- 2.48060000e+07,
- 2.97670000e+07,
- 2.69940000e+06,
- 3.34400000e+06,
- 3.98860000e+06,
- 2.64600000e+06,
- 3.29060000e+06,
- 3.93520000e+06,
+ 4.86210000e+07,
+ 4.95220000e+07,
+ 5.04230000e+07,
+ 2.16240000e+07,
+ 6.93250000e+06,
+ 2.34260000e+07,
+ 1.49118000e+07,
+ 1.50280000e+07,
+ 1.51442000e+07,
+ 6.27480000e+06,
+ 2.68444000e+06,
+ 6.50720000e+06,
};
const double pylith::materials::ElasticIsotropic3DData::_elasticConsts[] = {
@@ -178,26 +159,66 @@
5.76000000e+09,
};
+const double pylith::materials::ElasticIsotropic3DData::_initialStress[] = {
+ 2.10000000e+04,
+ 2.20000000e+04,
+ 2.30000000e+04,
+ 2.40000000e+04,
+ 2.50000000e+04,
+ 2.60000000e+04,
+ 5.10000000e+04,
+ 5.20000000e+04,
+ 5.30000000e+04,
+ 5.40000000e+04,
+ 5.50000000e+04,
+ 5.60000000e+04,
+};
+
+const double pylith::materials::ElasticIsotropic3DData::_initialStrain[] = {
+ 3.10000000e-04,
+ 3.20000000e-04,
+ 3.30000000e-04,
+ 3.40000000e-04,
+ 3.50000000e-06,
+ 3.60000000e-04,
+ 6.10000000e-04,
+ 6.20000000e-04,
+ 6.30000000e-04,
+ 6.40000000e-04,
+ 6.50000000e-06,
+ 6.60000000e-04,
+};
+
+const double* pylith::materials::ElasticIsotropic3DData::_stateVarsUpdated = 0;
+
pylith::materials::ElasticIsotropic3DData::ElasticIsotropic3DData(void)
{ // constructor
dimension = _dimension;
- numDBValues = _numDBValues;
- numInitialStateValues = _numInitialStateValues;
- numParameters = _numParameters;
- numParamsQuadPt = _numParamsQuadPt;
numLocs = _numLocs;
+ numProperties = _numProperties;
+ numStateVars = _numStateVars;
+ numDBProperties = _numDBProperties;
+ numDBStateVars = _numDBStateVars;
+ numPropsQuadPt = _numPropsQuadPt;
+ numVarsQuadPt = _numVarsQuadPt;
dtStableImplicit = _dtStableImplicit;
- numParamValues = const_cast<int*>(_numParamValues);
- dbValues = const_cast<char**>(_dbValues);
- initialStateDBValues = const_cast<char**>(_initialStateDBValues);
- dbData = const_cast<double*>(_dbData);
- initialStateDBData = const_cast<double*>(_initialStateDBData);
- parameterData = const_cast<double*>(_parameterData);
- initialState = const_cast<double*>(_initialState);
+ numPropertyValues = const_cast<int*>(_numPropertyValues);
+ numStateVarValues = const_cast<int*>(_numStateVarValues);
+ dbPropertyValues = const_cast<char**>(_dbPropertyValues);
+ dbStateVarValues = const_cast<char**>(_dbStateVarValues);
+ dbProperties = const_cast<double*>(_dbProperties);
+ dbStateVars = const_cast<double*>(_dbStateVars);
+ properties = const_cast<double*>(_properties);
+ stateVars = const_cast<double*>(_stateVars);
+ propertiesNondim = const_cast<double*>(_propertiesNondim);
+ stateVarsNondim = const_cast<double*>(_stateVarsNondim);
density = const_cast<double*>(_density);
strain = const_cast<double*>(_strain);
stress = const_cast<double*>(_stress);
elasticConsts = const_cast<double*>(_elasticConsts);
+ initialStress = const_cast<double*>(_initialStress);
+ initialStrain = const_cast<double*>(_initialStrain);
+ stateVarsUpdated = const_cast<double*>(_stateVarsUpdated);
} // constructor
pylith::materials::ElasticIsotropic3DData::~ElasticIsotropic3DData(void)
Modified: short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticIsotropic3DData.hh
===================================================================
--- short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticIsotropic3DData.hh 2009-02-22 14:30:42 UTC (rev 14115)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticIsotropic3DData.hh 2009-02-22 22:59:10 UTC (rev 14116)
@@ -39,32 +39,42 @@
static const int _dimension;
- static const int _numDBValues;
+ static const int _numLocs;
- static const int _numInitialStateValues;
+ static const int _numProperties;
- static const int _numParameters;
+ static const int _numStateVars;
- static const int _numParamsQuadPt;
+ static const int _numDBProperties;
- static const int _numLocs;
+ static const int _numDBStateVars;
+ static const int _numPropsQuadPt;
+
+ static const int _numVarsQuadPt;
+
static const double _dtStableImplicit;
- static const int _numParamValues[];
+ static const int _numPropertyValues[];
- static const char* _dbValues[];
+ static const int* _numStateVarValues;
- static const char* _initialStateDBValues[];
+ static const char* _dbPropertyValues[];
- static const double _dbData[];
+ static const char** _dbStateVarValues;
- static const double _initialStateDBData[];
+ static const double _dbProperties[];
- static const double _parameterData[];
+ static const double* _dbStateVars;
- static const double _initialState[];
+ static const double _properties[];
+ static const double* _stateVars;
+
+ static const double _propertiesNondim[];
+
+ static const double _stateVarsNondim[];
+
static const double _density[];
static const double _strain[];
@@ -73,6 +83,12 @@
static const double _elasticConsts[];
+ static const double _initialStress[];
+
+ static const double _initialStrain[];
+
+ static const double* _stateVarsUpdated;
+
};
#endif // pylith_materials_elasticisotropic3ddata_hh
Modified: short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticMaterialApp.py
===================================================================
--- short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticMaterialApp.py 2009-02-22 14:30:42 UTC (rev 14115)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticMaterialApp.py 2009-02-22 22:59:10 UTC (rev 14116)
@@ -58,26 +58,34 @@
Script.__init__(self, name)
# Material information
- self.dimension = None
- self.numDBValues = None
- self.numInitialStateValues = None
- self.numParameters = None
- self.numParamsQuadPt = None
- self.numParamValues = None
- self.dbValues = None
- self.initialStateDBValues = None
- self.dbData = None
- self.initialStateDBData = None
- self.parameterData = None
- self.initialState = None
+ self.dimension = 0
+ self.numLocs = 0
+ self.numProperties = 0;
+ self.numStateVars = 0;
+ self.numDBProperties = 0;
+ self.numDBStateVars = 0;
+ self.numPropsQuadPt = 0;
+ self.numVarsQuadPt = 0;
+ self.numPropertyValues = None;
+ self.numStateVarValues = None;
+ self.dbPropertyValues = None;
+ self.dbStateVarValues = None;
+ self.dbProperties = None;
+ self.dbStateVars = None;
+ self.properties = None;
+ self.stateVars = None;
+ self.propertiesNondim = 0;
+ self.stateVarsNondim = 0;
# Elastic material information
- self.numLocs = None
+ self.dtStableImplicit = 1.0e+30
self.density = None
self.strain = None
self.stress = None
self.elasticConsts = None
- self.dtStableImplicit = 1.0e+30
+ self.initialStress = None
+ self.initialStrain = None
+ self.stateVarsUpdated = None
return
@@ -102,45 +110,74 @@
def _initData(self):
- self.numParamsQuadPt = numpy.sum(self.numParamValues)
+ self.numDBProperties = len(self.dbPropertyValues)
+ if not self.dbStateVarValues is None:
+ self.numDBStateVars = len(self.dbStateVarValues)
+ self.numPropsQuadPt = numpy.sum(self.numPropertyValues)
+ if not self.numStateVarValues is None:
+ self.numVarsQuadPt = numpy.sum(self.numStateVarValues)
+ self.numProperties = self.numPropertyValues.shape[0]
+ if not self.numStateVarValues is None:
+ self.numStateVars = self.numStateVarValues.shape[0]
self.data.addScalar(vtype="int", name="_dimension",
value=self.dimension,
format="%d")
- self.data.addScalar(vtype="int", name="_numDBValues",
- value=self.numDBValues,
+ self.data.addScalar(vtype="int", name="_numLocs",
+ value=self.numLocs,
format="%d")
- self.data.addScalar(vtype="int", name="_numInitialStateValues",
- value=self.numInitialStateValues,
+ self.data.addScalar(vtype="int", name="_numProperties",
+ value=self.numProperties,
format="%d")
- self.data.addScalar(vtype="int", name="_numParameters",
- value=self.numParameters,
+ self.data.addScalar(vtype="int", name="_numStateVars",
+ value=self.numStateVars,
format="%d")
- self.data.addScalar(vtype="int", name="_numParamsQuadPt",
- value=self.numParamsQuadPt,
+ self.data.addScalar(vtype="int", name="_numDBProperties",
+ value=self.numDBProperties,
format="%d")
- self.data.addArray(vtype="int", name="_numParamValues",
- values=self.numParamValues,
+ self.data.addScalar(vtype="int", name="_numDBStateVars",
+ value=self.numDBStateVars,
+ format="%d")
+ self.data.addScalar(vtype="int", name="_numPropsQuadPt",
+ value=self.numPropsQuadPt,
+ format="%d")
+ self.data.addScalar(vtype="int", name="_numVarsQuadPt",
+ value=self.numVarsQuadPt,
+ format="%d")
+ self.data.addArray(vtype="int", name="_numPropertyValues",
+ values=self.numPropertyValues,
format="%d", ncols=1)
- self.data.addArray(vtype="char*", name="_dbValues", values=self.dbValues,
+ self.data.addArray(vtype="int", name="_numStateVarValues",
+ values=self.numStateVarValues,
+ format="%d", ncols=1)
+ self.data.addArray(vtype="char*", name="_dbPropertyValues",
+ values=self.dbPropertyValues,
format="\"%s\"", ncols=1)
- self.data.addArray(vtype="char*", name="_initialStateDBValues",
- values=self.initialStateDBValues,
+ self.data.addArray(vtype="char*", name="_dbStateVarValues",
+ values=self.dbStateVarValues,
format="\"%s\"", ncols=1)
- self.data.addArray(vtype="double", name="_dbData", values=self.dbData,
+ self.data.addArray(vtype="double", name="_dbProperties",
+ values=self.dbProperties,
format="%16.8e", ncols=1)
- self.data.addArray(vtype="double", name="_initialStateDBData",
- values=self.initialStateDBData,
+ self.data.addArray(vtype="double", name="_dbStateVars",
+ values=self.dbStateVars,
format="%16.8e", ncols=1)
- self.data.addArray(vtype="double", name="_parameterData",
- values=self.parameterData,
+ self.data.addArray(vtype="double", name="_properties",
+ values=self.properties,
format="%16.8e", ncols=1)
- self.data.addArray(vtype="double", name="_initialState",
- values=self.initialState,
+ self.data.addArray(vtype="double", name="_stateVars",
+ values=self.stateVars,
format="%16.8e", ncols=1)
+ self.data.addArray(vtype="double", name="_propertiesNondim",
+ values=self.propertiesNondim,
+ format="%16.8e", ncols=1)
+ self.data.addArray(vtype="double", name="_stateVarsNondim",
+ values=self.stateVarsNondim,
+ format="%16.8e", ncols=1)
- self.data.addScalar(vtype="int", name="_numLocs", value=self.numLocs,
- format="%d")
+ self.data.addScalar(vtype="double", name="_dtStableImplicit",
+ value=self.dtStableImplicit,
+ format="%16.8e")
self.data.addArray(vtype="double", name="_density",
values=self.density,
format="%16.8e", ncols=1)
@@ -153,9 +190,15 @@
self.data.addArray(vtype="double", name="_elasticConsts",
values=self.elasticConsts,
format="%16.8e", ncols=1)
- self.data.addScalar(vtype="double", name="_dtStableImplicit",
- value=self.dtStableImplicit,
- format="%16.8e")
+ self.data.addArray(vtype="double", name="_initialStress",
+ values=self.initialStress,
+ format="%16.8e", ncols=1)
+ self.data.addArray(vtype="double", name="_initialStrain",
+ values=self.initialStrain,
+ format="%16.8e", ncols=1)
+ self.data.addArray(vtype="double", name="_stateVarsUpdated",
+ values=self.stateVarsUpdated,
+ format="%16.8e", ncols=1)
return
Modified: short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticMaterialData.cc
===================================================================
--- short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticMaterialData.cc 2009-02-22 14:30:42 UTC (rev 14115)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticMaterialData.cc 2009-02-22 22:59:10 UTC (rev 14116)
@@ -17,7 +17,10 @@
density(0),
strain(0),
stress(0),
- elasticConsts(0)
+ elasticConsts(0),
+ initialStress(0),
+ initialStrain(0),
+ stateVarsUpdated(0)
{ // constructor
} // constructor
Modified: short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticMaterialData.hh
===================================================================
--- short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticMaterialData.hh 2009-02-22 14:30:42 UTC (rev 14115)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticMaterialData.hh 2009-02-22 22:59:10 UTC (rev 14116)
@@ -36,12 +36,17 @@
// PUBLIC MEMBERS ///////////////////////////////////////////////////////
public:
- double dtStableImplicit; ///< Stable time step for implicit time stepping
- double* density; ///< Density at locations
- double* strain; ///< Strain at locations
- double* stress; ///< Stress at locations
- double* elasticConsts; ///< Elastic constants at locations
+ double dtStableImplicit; ///< Stable time step for implicit time stepping.
+ double* density; ///< Density at location.
+ double* strain; ///< Strain at location.
+ double* stress; ///< Stress at location.
+ double* elasticConsts; ///< Elastic constants at location.
+ double* initialStress; ///< Initial stress at location.
+ double* initialStrain; ///< Initial strain at location.
+
+ double* stateVarsUpdated; ///< Updated state variables at location.
+
};
#endif // pylith_materials_elasticmaterialdata_hh
Modified: short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/generate.sh
===================================================================
--- short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/generate.sh 2009-02-22 14:30:42 UTC (rev 14115)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/generate.sh 2009-02-22 22:59:10 UTC (rev 14116)
@@ -25,39 +25,39 @@
--data.object=ElasticIsotropic3DData \
--data.parent=ElasticMaterialData
- python GenMaxwellIsotropic3DElastic.py \
- --data.namespace=pylith,materials \
- --data.object=GenMaxwellIsotropic3DElasticData \
- --data.parent=ElasticMaterialData
+# python GenMaxwellIsotropic3DElastic.py \
+# --data.namespace=pylith,materials \
+# --data.object=GenMaxwellIsotropic3DElasticData \
+# --data.parent=ElasticMaterialData
- python MaxwellIsotropic3DElastic.py \
- --data.namespace=pylith,materials \
- --data.object=MaxwellIsotropic3DElasticData \
- --data.parent=ElasticMaterialData
+# python MaxwellIsotropic3DElastic.py \
+# --data.namespace=pylith,materials \
+# --data.object=MaxwellIsotropic3DElasticData \
+# --data.parent=ElasticMaterialData
# 2-D ----------------------------------------------------------------
- python ElasticPlaneStrain.py \
- --data.namespace=pylith,materials \
- --data.object=ElasticPlaneStrainData \
- --data.parent=ElasticMaterialData
+# python ElasticPlaneStrain.py \
+# --data.namespace=pylith,materials \
+# --data.object=ElasticPlaneStrainData \
+# --data.parent=ElasticMaterialData
- python ElasticPlaneStress.py \
- --data.namespace=pylith,materials \
- --data.object=ElasticPlaneStressData \
- --data.parent=ElasticMaterialData
+# python ElasticPlaneStress.py \
+# --data.namespace=pylith,materials \
+# --data.object=ElasticPlaneStressData \
+# --data.parent=ElasticMaterialData
# 1-D ----------------------------------------------------------------
- python ElasticStrain1D.py \
- --data.namespace=pylith,materials \
- --data.object=ElasticStrain1DData \
- --data.parent=ElasticMaterialData
+# python ElasticStrain1D.py \
+# --data.namespace=pylith,materials \
+# --data.object=ElasticStrain1DData \
+# --data.parent=ElasticMaterialData
- python ElasticStress1D.py \
- --data.namespace=pylith,materials \
- --data.object=ElasticStress1DData \
- --data.parent=ElasticMaterialData
+# python ElasticStress1D.py \
+# --data.namespace=pylith,materials \
+# --data.object=ElasticStress1DData \
+# --data.parent=ElasticMaterialData
fi
More information about the CIG-COMMITS
mailing list