[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