[cig-commits] r14117 - in short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials: . data
brad at geodynamics.org
brad at geodynamics.org
Sun Feb 22 16:25:35 PST 2009
Author: brad
Date: 2009-02-22 16:25:34 -0800 (Sun, 22 Feb 2009)
New Revision: 14117
Modified:
short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticIsotropic3D.cc
short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticMaterial.cc
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/MaterialData.cc
short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/MaterialData.hh
Log:
More work on updating testing of materials.
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 22:59:10 UTC (rev 14116)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticIsotropic3D.cc 2009-02-23 00:25:34 UTC (rev 14117)
@@ -17,6 +17,7 @@
#include "data/ElasticIsotropic3DData.hh" // USES ElasticIsotropic3DData
#include "pylith/materials/ElasticIsotropic3D.hh" // USES ElasticIsotropic3D
+#include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
// ----------------------------------------------------------------------
CPPUNIT_TEST_SUITE_REGISTRATION( pylith::materials::TestElasticIsotropic3D );
@@ -30,6 +31,14 @@
_matElastic = new ElasticIsotropic3D();
_data = new ElasticIsotropic3DData();
_dataElastic = new ElasticIsotropic3DData();
+
+ spatialdata::units::Nondimensional normalizer;
+ normalizer.lengthScale(_data->lengthScale);
+ normalizer.pressureScale(_data->pressureScale);
+ normalizer.timeScale(_data->timeScale);
+ normalizer.densityScale(_data->densityScale);
+ _material->normalizer(normalizer);
+ _matElastic->normalizer(normalizer);
} // setUp
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 22:59:10 UTC (rev 14116)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticMaterial.cc 2009-02-23 00:25:34 UTC (rev 14117)
@@ -390,11 +390,10 @@
&properties[0], properties.size(),
&stateVars[0], stateVars.size());
- const double* densityE = data->density;
- CPPUNIT_ASSERT(0 != densityE);
+ const double densityE = data->density[iLoc];
const double tolerance = 1.0e-06;
- CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, density/densityE[0], tolerance);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, density/densityE, tolerance);
} // for
} // _testCalcDensity
@@ -441,7 +440,7 @@
&initialStrain[0], initialStrain.size(),
computeStateVars);
- const double* stressE = data->stress;
+ const double* stressE = &data->stress[iLoc*tensorSize];
CPPUNIT_ASSERT(0 != stressE);
const double tolerance = 1.0e-06;
@@ -511,7 +510,7 @@
&initialStress[0], initialStress.size(),
&initialStrain[0], initialStrain.size());
- const double* elasticConstsE = data->elasticConsts;
+ const double* elasticConstsE = &data->elasticConsts[iLoc*numConsts];
CPPUNIT_ASSERT(0 != elasticConstsE);
const double tolerance = 1.0e-06;
@@ -566,7 +565,7 @@
&initialStrain[0], initialStrain.size());
const double* stateVarsE =
- (numVarsQuadPt > 0) ? data->stateVarsUpdated : 0;
+ (numVarsQuadPt > 0) ? &data->stateVarsUpdated[iLoc*numVarsQuadPt] : 0;
CPPUNIT_ASSERT( (0 < numVarsQuadPt && 0 != stateVarsE) ||
(0 == numVarsQuadPt && 0 == stateVarsE) );
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 22:59:10 UTC (rev 14116)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestMaterial.cc 2009-02-23 00:25:34 UTC (rev 14117)
@@ -307,7 +307,7 @@
for (int iLoc=0; iLoc < numLocs; ++iLoc) {
- memcpy(&properties[iLoc*propertiesSize], _data->properties,
+ memcpy(&properties[0], &_data->properties[iLoc*propertiesSize],
propertiesSize*sizeof(double));
_material->_nondimProperties(&properties[0], properties.size());
@@ -342,7 +342,7 @@
for (int iLoc=0; iLoc < numLocs; ++iLoc) {
- memcpy(&properties[iLoc*propertiesSize], _data->propertiesNondim,
+ memcpy(&properties[0], &_data->propertiesNondim[iLoc*propertiesSize],
propertiesSize*sizeof(double));
_material->_dimProperties(&properties[0], properties.size());
@@ -415,7 +415,7 @@
for (int iLoc=0; iLoc < numLocs; ++iLoc) {
- memcpy(&stateVars[iLoc*stateVarsSize], _data->stateVars,
+ memcpy(&stateVars[0], &_data->stateVars[iLoc*stateVarsSize],
stateVarsSize*sizeof(double));
_material->_nondimStateVars(&stateVars[0], stateVars.size());
@@ -451,7 +451,7 @@
for (int iLoc=0; iLoc < numLocs; ++iLoc) {
- memcpy(&stateVars[iLoc*stateVarsSize], _data->stateVarsNondim,
+ memcpy(&stateVars[0], &_data->stateVarsNondim[iLoc*stateVarsSize],
stateVarsSize*sizeof(double));
_material->_dimStateVars(&stateVars[0], stateVars.size());
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 22:59:10 UTC (rev 14116)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticIsotropic3D.py 2009-02-23 00:25:34 UTC (rev 14117)
@@ -54,6 +54,8 @@
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]
+ muA = vsA*vsA*densityA
+ lambdaA = vpA*vpA*densityA - 2.0*muA
densityB = 2000.0
vsB = 1200.0
@@ -61,17 +63,27 @@
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]
+ muB = vsB*vsB*densityB
+ lambdaB = vpB*vpB*densityB - 2.0*muB
+
+ self.lengthScale = 1.0e+3
+ self.pressureScale = muA
+ self.timeScale = 1.0
+ self.densityScale = 1.0e+3
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.properties = numpy.array([ [densityA, muA, lambdaA], [densityB, muB, lambdaB] ],
dtype=numpy.float64)
+ mu0 = self.pressureScale
+ density0 = self.densityScale
+ self.propertiesNondim = \
+ numpy.array([ [densityA/density0, muA/mu0, lambdaA/mu0],
+ [densityB/density0, muB/mu0, lambdaB/mu0] ],
+ dtype=numpy.float64)
+
self.initialStress = numpy.array([initialStressA,
initialStressB],
dtype=numpy.float64)
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 22:59:10 UTC (rev 14116)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticIsotropic3DData.cc 2009-02-23 00:25:34 UTC (rev 14117)
@@ -31,6 +31,14 @@
const int pylith::materials::ElasticIsotropic3DData::_numVarsQuadPt = 0;
+const double pylith::materials::ElasticIsotropic3DData::_lengthScale = 1.00000000e+03;
+
+const double pylith::materials::ElasticIsotropic3DData::_timeScale = 1.00000000e+00;
+
+const double pylith::materials::ElasticIsotropic3DData::_pressureScale = 2.25000000e+10;
+
+const double pylith::materials::ElasticIsotropic3DData::_densityScale = 1.00000000e+03;
+
const double pylith::materials::ElasticIsotropic3DData::_dtStableImplicit = 1.00000000e+30;
const int pylith::materials::ElasticIsotropic3DData::_numPropertyValues[] = {
@@ -72,12 +80,15 @@
const double* pylith::materials::ElasticIsotropic3DData::_stateVars = 0;
const double pylith::materials::ElasticIsotropic3DData::_propertiesNondim[] = {
- 0.00000000e+00,
+ 2.50000000e+00,
+ 1.00000000e+00,
+ 1.00000000e+00,
+ 2.00000000e+00,
+ 1.28000000e-01,
+ 1.28000000e-01,
};
-const double pylith::materials::ElasticIsotropic3DData::_stateVarsNondim[] = {
- 0.00000000e+00,
-};
+const double* pylith::materials::ElasticIsotropic3DData::_stateVarsNondim = 0;
const double pylith::materials::ElasticIsotropic3DData::_density[] = {
2.50000000e+03,
@@ -201,6 +212,10 @@
numDBStateVars = _numDBStateVars;
numPropsQuadPt = _numPropsQuadPt;
numVarsQuadPt = _numVarsQuadPt;
+ lengthScale = _lengthScale;
+ timeScale = _timeScale;
+ pressureScale = _pressureScale;
+ densityScale = _densityScale;
dtStableImplicit = _dtStableImplicit;
numPropertyValues = const_cast<int*>(_numPropertyValues);
numStateVarValues = const_cast<int*>(_numStateVarValues);
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 22:59:10 UTC (rev 14116)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticIsotropic3DData.hh 2009-02-23 00:25:34 UTC (rev 14117)
@@ -53,6 +53,14 @@
static const int _numVarsQuadPt;
+ static const double _lengthScale;
+
+ static const double _timeScale;
+
+ static const double _pressureScale;
+
+ static const double _densityScale;
+
static const double _dtStableImplicit;
static const int _numPropertyValues[];
@@ -73,7 +81,7 @@
static const double _propertiesNondim[];
- static const double _stateVarsNondim[];
+ static const double* _stateVarsNondim;
static const double _density[];
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 22:59:10 UTC (rev 14116)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticMaterialApp.py 2009-02-23 00:25:34 UTC (rev 14117)
@@ -60,22 +60,26 @@
# Material information
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;
+ 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 = None
+ self.stateVarsNondim = None
+ self.lengthScale = 0
+ self.timeScale = 0
+ self.pressureScale = 0
+ self.densityScale = 0
# Elastic material information
self.dtStableImplicit = 1.0e+30
@@ -174,6 +178,18 @@
self.data.addArray(vtype="double", name="_stateVarsNondim",
values=self.stateVarsNondim,
format="%16.8e", ncols=1)
+ self.data.addScalar(vtype="double", name="_lengthScale",
+ value=self.lengthScale,
+ format="%16.8e")
+ self.data.addScalar(vtype="double", name="_timeScale",
+ value=self.timeScale,
+ format="%16.8e")
+ self.data.addScalar(vtype="double", name="_pressureScale",
+ value=self.pressureScale,
+ format="%16.8e")
+ self.data.addScalar(vtype="double", name="_densityScale",
+ value=self.densityScale,
+ format="%16.8e")
self.data.addScalar(vtype="double", name="_dtStableImplicit",
value=self.dtStableImplicit,
Modified: short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/MaterialData.cc
===================================================================
--- short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/MaterialData.cc 2009-02-22 22:59:10 UTC (rev 14116)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/MaterialData.cc 2009-02-23 00:25:34 UTC (rev 14117)
@@ -30,7 +30,11 @@
dbProperties(0),
dbStateVars(0),
properties(0),
- stateVars(0)
+ stateVars(0),
+ lengthScale(0),
+ timeScale(0),
+ pressureScale(0),
+ densityScale(0)
{ // constructor
} // constructor
Modified: short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/MaterialData.hh
===================================================================
--- short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/MaterialData.hh 2009-02-22 22:59:10 UTC (rev 14116)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/MaterialData.hh 2009-02-23 00:25:34 UTC (rev 14117)
@@ -58,6 +58,11 @@
double* propertiesNondim; ///< Nondimensional properties at locations.
double* stateVarsNondim; ///< Nondimensional state variables at locations.
+ double lengthScale; ///< Length scale for nondimensionalization.
+ double timeScale; ///< Time scale for nondimensionalization.
+ double pressureScale; ///< Pressure scale for nondimensionalization.
+ double densityScale; ///< Density scale for nondimensionalization.
+
};
#endif // pylith_materials_materialdata_hh
More information about the CIG-COMMITS
mailing list