[cig-commits] r15228 - in short/3D/PyLith/trunk: . libsrc/materials unittests/libtests/materials unittests/libtests/materials/data

brad at geodynamics.org brad at geodynamics.org
Fri Jun 12 22:52:07 PDT 2009


Author: brad
Date: 2009-06-12 22:52:06 -0700 (Fri, 12 Jun 2009)
New Revision: 15228

Modified:
   short/3D/PyLith/trunk/TODO
   short/3D/PyLith/trunk/libsrc/materials/GenMaxwellIsotropic3D.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/Makefile.am
   short/3D/PyLith/trunk/unittests/libtests/materials/TestGenMaxwellIsotropic3D.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/TestGenMaxwellIsotropic3D.hh
   short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DElastic.py
   short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DElasticData.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DElasticData.hh
   short/3D/PyLith/trunk/unittests/libtests/materials/data/generate.sh
Log:
Updated generalized Maxwell C++ elastic unit tests.

Modified: short/3D/PyLith/trunk/TODO
===================================================================
--- short/3D/PyLith/trunk/TODO	2009-06-13 05:06:15 UTC (rev 15227)
+++ short/3D/PyLith/trunk/TODO	2009-06-13 05:52:06 UTC (rev 15228)
@@ -6,15 +6,20 @@
   petsc-dev doesn't build on the cygwin buildbot (`_vsnprintf' undeclared)
     http://www.geodynamics.org:8009/?project=PETSc
 
+    * Needed for cywgin binaries
+
+    * Matt is going to email Leif instructions for how to remove this test from
+      the PETSc configure.
+
   Generalized maxwell model
 
+    * Brad is working on updating the C++ unit tests.
+
   Need power-law full-scale "test" to insure that the power-law and
   nonlinear solve give reasonable results.
 
-  petsc-dev now may be having problems on the Darwin buildbots
+BUGS
 
-
-BUGS
   malloc during assembly when running in parallel
 
 ----------------------------------------------------------------------

Modified: short/3D/PyLith/trunk/libsrc/materials/GenMaxwellIsotropic3D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/GenMaxwellIsotropic3D.cc	2009-06-13 05:06:15 UTC (rev 15227)
+++ short/3D/PyLith/trunk/libsrc/materials/GenMaxwellIsotropic3D.cc	2009-06-13 05:52:06 UTC (rev 15228)
@@ -34,6 +34,9 @@
   namespace materials {
     namespace _GenMaxwellIsotropic3D{
 
+      /// Number of Maxwell models in parallel.
+      const int numMaxwellModels = 3;
+
       // Dimension of material.
       const int dimension = 3;
 
@@ -44,13 +47,10 @@
       const int numElasticConsts = 21;
 
       /// Number of physical properties.
-      const int numProperties = 7;
+      const int numProperties = 5;
       
-      /// Number of Maxwell models in parallel.
-      const int numMaxwellModels = 3;
-
       /// Physical properties.
-      const Metadata::ParamDescription properties[] = {
+      const Metadata::ParamDescription properties[numProperties] = {
 	{ "density", 1, pylith::topology::FieldBase::SCALAR },
 	{ "mu", 1, pylith::topology::FieldBase::SCALAR },
 	{ "lambda", 1, pylith::topology::FieldBase::SCALAR },
@@ -60,8 +60,8 @@
       // Values expected in properties spatial database.  :KLUDGE: Not
       // generalized over number of models.
       const int numDBProperties = 3 + 2*numMaxwellModels;
-      const char* dbProperties[] = {
-	"density", "vs", "vp" ,
+      const char* dbProperties[numDBProperties] = {
+	"density", "vs", "vp",
 	"shear_ratio_1",
 	"shear_ratio_2",
 	"shear_ratio_3",
@@ -74,7 +74,7 @@
       const int numStateVars = 1+numMaxwellModels;
       
       /// State variables. :KLUDGE: Not generalized over number of models.
-      const Metadata::ParamDescription stateVars[] = {
+      const Metadata::ParamDescription stateVars[numStateVars] = {
 	{ "total_strain", tensorSize, pylith::topology::FieldBase::TENSOR },
 	{ "viscous_strain_1", tensorSize, pylith::topology::FieldBase::TENSOR },
 	{ "viscous_strain_2", tensorSize, pylith::topology::FieldBase::TENSOR },
@@ -83,30 +83,30 @@
 
       // Values expected in state variables spatial database
       const int numDBStateVars = tensorSize + numMaxwellModels*tensorSize;
-      const char* dbStateVars[] = {"total-strain-xx",
-				   "total-strain-yy",
-				   "total-strain-zz",
-				   "total-strain-xy",
-				   "total-strain-yz",
-				   "total-strain-xz",
-				   "viscous-strain1-xx",
-				   "viscous-strain1-yy",
-				   "viscous-strain1-zz",
-				   "viscous-strain1-xy",
-				   "viscous-strain1-yz",
-				   "viscous-strain1-xz",
-				   "viscous-strain2-xx",
-				   "viscous-strain2-yy",
-				   "viscous-strain2-zz",
-				   "viscous-strain2-xy",
-				   "viscous-strain2-yz",
-				   "viscous-strain2-xz",
-				   "viscous-strain3-xx",
-				   "viscous-strain3-yy",
-				   "viscous-strain3-zz",
-				   "viscous-strain3-xy",
-				   "viscous-strain3-yz",
-				   "viscous-strain3-xz",
+      const char* dbStateVars[numDBStateVars] = {"total-strain-xx",
+						 "total-strain-yy",
+						 "total-strain-zz",
+						 "total-strain-xy",
+						 "total-strain-yz",
+						 "total-strain-xz",
+						 "viscous-strain-1-xx",
+						 "viscous-strain-1-yy",
+						 "viscous-strain-1-zz",
+						 "viscous-strain-1-xy",
+						 "viscous-strain-1-yz",
+						 "viscous-strain-1-xz",
+						 "viscous-strain-2-xx",
+						 "viscous-strain-2-yy",
+						 "viscous-strain-2-zz",
+						 "viscous-strain-2-xy",
+						 "viscous-strain-2-yz",
+						 "viscous-strain-2-xz",
+						 "viscous-strain-3-xx",
+						 "viscous-strain-3-yy",
+						 "viscous-strain-3-zz",
+						 "viscous-strain-3-xy",
+						 "viscous-strain-3-yz",
+						 "viscous-strain-3-xz",
       };
 
     } // _GenMaxwellIsotropic3D
@@ -139,8 +139,7 @@
   pylith::materials::GenMaxwellIsotropic3D::db_vs + 1;
 
 const int pylith::materials::GenMaxwellIsotropic3D::db_shearRatio =
-  pylith::materials::GenMaxwellIsotropic3D::db_vp + 
-  pylith::materials::_GenMaxwellIsotropic3D::numMaxwellModels;
+  pylith::materials::GenMaxwellIsotropic3D::db_vp + 1;
 
 const int pylith::materials::GenMaxwellIsotropic3D::db_viscosity =
   pylith::materials::GenMaxwellIsotropic3D::db_shearRatio + 
@@ -195,7 +194,7 @@
   _updateStateVarsFn(0)  
 { // constructor
   useElasticBehavior(true);
-  _viscousStrain.resize(_GenMaxwellIsotropic3D::numMaxwellModels*_tensorSize);
+  _viscousStrain.resize(_tensorSize);
 } // constructor
 
 // ----------------------------------------------------------------------
@@ -756,13 +755,10 @@
   for (int iComp=0; iComp < tensorSize; ++iComp) {
     devStrain = totalStrain[iComp] - diag[iComp] * meanStrainTpdt;
     // Maxwell model 1
-    shearRatio = properties[p_shearRatio + 0];
     stateVars[s_viscousStrain1+iComp] = devStrain;
     // Maxwell model 2
-    shearRatio = properties[p_shearRatio + 1];
     stateVars[s_viscousStrain2+iComp] = devStrain;
     // Maxwell model 3
-    shearRatio = properties[p_shearRatio + 2];
     stateVars[s_viscousStrain3+iComp] = devStrain;
   } // for
   PetscLogFlops(3 + 2 * tensorSize);

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/Makefile.am	2009-06-13 05:06:15 UTC (rev 15227)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/Makefile.am	2009-06-13 05:52:06 UTC (rev 15228)
@@ -30,14 +30,12 @@
 	TestElasticPlaneStress.cc \
 	TestElasticIsotropic3D.cc \
 	TestMaxwellIsotropic3D.cc \
+	TestGenMaxwellIsotropic3D.cc \
 	TestPowerLaw3D.cc \
 	TestEffectiveStress.cc \
 	test_materials.cc
 
-#	TestGenMaxwellIsotropic3D.cc 
 
-
-
 noinst_HEADERS = \
 	TestMaterial.hh \
 	TestElasticMaterial.hh \
@@ -62,10 +60,10 @@
 	data/ElasticIsotropic3DData.cc \
 	data/MaxwellIsotropic3DElasticData.cc \
 	data/MaxwellIsotropic3DTimeDepData.cc \
+	data/GenMaxwellIsotropic3DElasticData.cc \
 	data/PowerLaw3DElasticData.cc \
 	data/PowerLaw3DTimeDepData.cc
 
-#	data/GenMaxwellIsotropic3DElasticData.cc \
 #	data/GenMaxwellIsotropic3DTimeDepData.cc 
 
 noinst_HEADERS += \

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/TestGenMaxwellIsotropic3D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/TestGenMaxwellIsotropic3D.cc	2009-06-13 05:06:15 UTC (rev 15227)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/TestGenMaxwellIsotropic3D.cc	2009-06-13 05:52:06 UTC (rev 15228)
@@ -29,8 +29,10 @@
 { // setUp
   _material = new GenMaxwellIsotropic3D();
   _matElastic = new GenMaxwellIsotropic3D();
+
   _data = new GenMaxwellIsotropic3DElasticData();
   _dataElastic = new GenMaxwellIsotropic3DElasticData();
+  setupNormalizer();
 } // setUp
 
 // ----------------------------------------------------------------------
@@ -65,31 +67,31 @@
 		       material._calcStressFn);
   CPPUNIT_ASSERT_EQUAL(&pylith::materials::GenMaxwellIsotropic3D::_calcElasticConstsElastic,
 		       material._calcElasticConstsFn);
-  CPPUNIT_ASSERT_EQUAL(&pylith::materials::GenMaxwellIsotropic3D::_updatePropertiesElastic,
-		       material._updatePropertiesFn);
+  CPPUNIT_ASSERT_EQUAL(&pylith::materials::GenMaxwellIsotropic3D::_updateStateVarsElastic,
+		       material._updateStateVarsFn);
 
   material.useElasticBehavior(false);
   CPPUNIT_ASSERT_EQUAL(&pylith::materials::GenMaxwellIsotropic3D::_calcStressViscoelastic,
 		       material._calcStressFn);
   CPPUNIT_ASSERT_EQUAL(&pylith::materials::GenMaxwellIsotropic3D::_calcElasticConstsViscoelastic,
 		       material._calcElasticConstsFn);
-  CPPUNIT_ASSERT_EQUAL(&pylith::materials::GenMaxwellIsotropic3D::_updatePropertiesViscoelastic,
-		       material._updatePropertiesFn);
+  CPPUNIT_ASSERT_EQUAL(&pylith::materials::GenMaxwellIsotropic3D::_updateStateVarsViscoelastic,
+		       material._updateStateVarsFn);
 } // testUseElasticBehavior
 
 // ----------------------------------------------------------------------
-// Test usesUpdateProperties()
+// Test usesHasStateVars()
 void
-pylith::materials::TestGenMaxwellIsotropic3D::testUsesUpdateProperties(void)
-{ // testUsesUpdateProperties
+pylith::materials::TestGenMaxwellIsotropic3D::testHasStateVars(void)
+{ // testHasStateVars
   GenMaxwellIsotropic3D material;
-  CPPUNIT_ASSERT_EQUAL(true, material.usesUpdateProperties());
-} // testUsesUpdateProperties
+  CPPUNIT_ASSERT_EQUAL(true, material.hasStateVars());
+} // testHasStateVars
 
 // ----------------------------------------------------------------------
 // Test calcStressElastic()
 void
-pylith::materials::TestGenMaxwellIsotropic3D::testCalcStressElastic(void)
+pylith::materials::TestGenMaxwellIsotropic3D::test_calcStressElastic(void)
 { // testCalcStressElastic
   CPPUNIT_ASSERT(0 != _matElastic);
   _matElastic->useElasticBehavior(true);
@@ -100,7 +102,7 @@
 // ----------------------------------------------------------------------
 // Test calcElasticConstsElastic()
 void
-pylith::materials::TestGenMaxwellIsotropic3D::testCalcElasticConstsElastic(void)
+pylith::materials::TestGenMaxwellIsotropic3D::test_calcElasticConstsElastic(void)
 { // testElasticConstsElastic
   CPPUNIT_ASSERT(0 != _matElastic);
   _matElastic->useElasticBehavior(true);
@@ -109,68 +111,81 @@
 } // testElasticConstsElastic
 
 // ----------------------------------------------------------------------
-// Test updatePropertiesElastic()
+// Test updateStateVarsElastic()
 void
-pylith::materials::TestGenMaxwellIsotropic3D::testUpdatePropertiesElastic(void)
-{ // testUpdatePropertiesElastic
+pylith::materials::TestGenMaxwellIsotropic3D::test_updateStateVarsElastic(void)
+{ // testUpdateStateVarsElastic
+  // :TODO: Use TestElasticMaterial::test_updateStateVars
+  // instead. This requires moving the calculation of the expected
+  // state vars below to the Python code (where it belongs) and
+  // setting the stateVarsUpdate attribute in the Python object.
+
   GenMaxwellIsotropic3D material;
-  GenMaxwellIsotropic3DElasticData data;
+  material.useElasticBehavior(true);
 
-  const int numParams = data.numParameters;
-  const int numParamsQuadPt = data.numParamsQuadPt;
+  const bool computeStateVars = true;
+  
+  const int numLocs = _dataElastic->numLocs;
+  const int numPropsQuadPt = _dataElastic->numPropsQuadPt;
+  const int numVarsQuadPt = _dataElastic->numVarsQuadPt;
+  const int tensorSize = material.tensorSize();
+  
+  double_array stress(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], &_dataElastic->properties[iLoc*numPropsQuadPt],
+	   numPropsQuadPt*sizeof(double));
+    memcpy(&stateVars[0], &_dataElastic->stateVars[iLoc*numVarsQuadPt],
+	   numVarsQuadPt*sizeof(double));
+    memcpy(&strain[0], &_dataElastic->strain[iLoc*tensorSize],
+	   tensorSize*sizeof(double));
+    memcpy(&initialStress[0], &_dataElastic->initialStress[iLoc*tensorSize],
+	   tensorSize*sizeof(double));
+    memcpy(&initialStrain[0], &_dataElastic->initialStrain[iLoc*tensorSize],
+	   tensorSize*sizeof(double));
 
-  const int tensorSize = 6;
-  const int initialStateSize = 6;
-  double_array totalStrain(tensorSize);
-  double_array initialState(initialStateSize);
-  for (int i=0; i < tensorSize; ++i) {
-    totalStrain[i] = i;
-    initialState[i] = 0.1*i;
-  } // for
+    const double meanStrain = (strain[0] + strain[1] + strain[2]) / 3.0;
+    
+    // Compute expected state variables
+    double_array stateVarsE(numVarsQuadPt);
+    const int s_totalStrain = 0;
+    const int s_viscousStrain = s_totalStrain + tensorSize;
 
-  const double meanStrain = 
-    (totalStrain[0] + totalStrain[1] + totalStrain[2]) / 3.0;
+    // State variable 'total_strain' should match 'strain'
+    for (int i=0; i < tensorSize; ++i) 
+      stateVarsE[s_totalStrain+i] = strain[i];
+    
+    // State variable 'viscous_strain'
+    const double diag[] = { 1.0, 1.0, 1.0, 0.0, 0.0, 0.0 };
+    const int numMaxwellModels = 3;
+    for (int imodel=0; imodel < numMaxwellModels; ++imodel)
+      for (int i=0; i < tensorSize; ++i)
+	stateVarsE[s_viscousStrain+imodel*tensorSize+i] =
+	  strain[i] - diag[i]*meanStrain;
 
-  double_array parameters(numParamsQuadPt);
-  double_array parametersE(numParamsQuadPt);
-  for (int i=0, index=0; i < numParams; ++i)
-    for (int j=0; j < data.numParamValues[i]; ++j, ++index) {
-      parametersE[index] = i+j;
-      parameters[index] = i+j;
-    } // for
+    material._updateStateVars(&stateVars[0], stateVars.size(), 
+			      &properties[0], properties.size(),
+			      &strain[0], strain.size(),
+			      &initialStress[0], initialStress.size(),
+			      &initialStrain[0], initialStrain.size());
 
-  // Set up vector parameters, which are the only ones updated.
-  const int numMaxwellModels = 3;
-  const int pidStrainT = 3 + 2 * numMaxwellModels;
-  const int pidVisStrain = pidStrainT + tensorSize;
-  for (int i=0; i < 3; ++i) {
-    parametersE[pidStrainT + i] = totalStrain[i];
-    for (int j=0; j < numMaxwellModels; ++j)
-      parametersE[pidVisStrain + i + j * tensorSize] =
-	totalStrain[i] - meanStrain;
+    const double tolerance = 1.0e-06;
+    for (int i=0; i < numVarsQuadPt; ++i)
+      CPPUNIT_ASSERT_DOUBLES_EQUAL(stateVarsE[i], stateVars[i], tolerance);
   } // for
-  
-  for (int i=3; i < 6; ++i) {
-    parametersE[pidStrainT + i] = totalStrain[i];
-    for (int j=0; j < numMaxwellModels; ++j)
-      parametersE[pidVisStrain + i + j * tensorSize] =
-	totalStrain[i];
-  } // for
-  
-  material._updateProperties(&parameters[0], numParamsQuadPt, 
-			&totalStrain[0], tensorSize,
-			&initialState[0], initialStateSize);
+} // testUpdateStateVarsElastic
 
-  const double tolerance = 1.0e-06;
-  for (int i=0; i < numParamsQuadPt; ++i)
-    CPPUNIT_ASSERT_DOUBLES_EQUAL(parametersE[i], parameters[i], tolerance);
-} // testUpdatePropertiesElastic
-
 // ----------------------------------------------------------------------
 // Test calcStressTimeDep()
 void
-pylith::materials::TestGenMaxwellIsotropic3D::testCalcStressTimeDep(void)
+pylith::materials::TestGenMaxwellIsotropic3D::test_calcStressTimeDep(void)
 { // testCalcStressTimeDep
+#if 0
   CPPUNIT_ASSERT(0 != _matElastic);
   _matElastic->useElasticBehavior(false);
 
@@ -179,13 +194,15 @@
   double dt = 2.0e+5;
   _matElastic->timeStep(dt);
   test_calcStress();
+#endif
 } // testCalcStressTimeDep
 
 // ----------------------------------------------------------------------
 // Test calcElasticConstsTimeDep()
 void
-pylith::materials::TestGenMaxwellIsotropic3D::testCalcElasticConstsTimeDep(void)
+pylith::materials::TestGenMaxwellIsotropic3D::test_calcElasticConstsTimeDep(void)
 { // testElasticConstsTimeDep
+#if 0
   CPPUNIT_ASSERT(0 != _matElastic);
   _matElastic->useElasticBehavior(false);
 
@@ -194,13 +211,103 @@
   double dt = 2.0e+5;
   _matElastic->timeStep(dt);
   test_calcElasticConsts();
+#endif
 } // testElasticConstsTimeDep
 
 // ----------------------------------------------------------------------
-// Test updatePropertiesTimeDep()
+// Test updateStateVarsTimeDep()
 void
-pylith::materials::TestGenMaxwellIsotropic3D::testUpdatePropertiesTimeDep(void)
-{ // testUpdatePropertiesTimeDep
+pylith::materials::TestGenMaxwellIsotropic3D::test_updateStateVarsTimeDep(void)
+{ // testUpdateStateVarsTimeDep
+#if 0
+  // :TODO: Use TestElasticMaterial::test_updateStateVars
+  // instead. This requires moving the calculation of the expected
+  // state vars below to the Python code (where it belongs) and
+  // setting the stateVarsUpdate attribute in the Python object.
+
+  MaxwellIsotropic3D material;
+  material.useElasticBehavior(false);
+
+  delete _dataElastic; _dataElastic = new MaxwellIsotropic3DTimeDepData();
+
+  const double dt = 2.0e+5;
+  material.timeStep(dt);
+
+  const bool computeStateVars = true;
+  
+  const int numLocs = _dataElastic->numLocs;
+  const int numPropsQuadPt = _dataElastic->numPropsQuadPt;
+  const int numVarsQuadPt = _dataElastic->numVarsQuadPt;
+  const int tensorSize = material.tensorSize();
+  
+  double_array stress(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], &_dataElastic->properties[iLoc*numPropsQuadPt],
+	   numPropsQuadPt*sizeof(double));
+    memcpy(&stateVars[0], &_dataElastic->stateVars[iLoc*numVarsQuadPt],
+	   numVarsQuadPt*sizeof(double));
+    memcpy(&strain[0], &_dataElastic->strain[iLoc*tensorSize],
+	   tensorSize*sizeof(double));
+    memcpy(&initialStress[0], &_dataElastic->initialStress[iLoc*tensorSize],
+	   tensorSize*sizeof(double));
+    memcpy(&initialStrain[0], &_dataElastic->initialStrain[iLoc*tensorSize],
+	   tensorSize*sizeof(double));
+
+    const double meanStrain = (strain[0] + strain[1] + strain[2]) / 3.0;
+    
+    // Compute expected state variables
+    double_array stateVarsE(numVarsQuadPt);
+    const int s_totalStrain = 0;
+    const int s_viscousStrain = s_totalStrain + tensorSize;
+
+    // State variable 'total_strain' should match 'strain'
+    for (int i=0; i < tensorSize; ++i) 
+      stateVarsE[s_totalStrain+i] = strain[i];
+    
+    // State variable 'viscous_strain'
+    const double meanStrainTpdt = 
+      (strain[0] + strain[1] + strain[2]) / 3.0;
+    const double meanStrainT = 
+      (stateVars[s_totalStrain+0] + 
+       stateVars[s_totalStrain+1] + 
+       stateVars[s_totalStrain+2]) / 3.0;
+
+    const int p_maxwellTime = 3;
+    const double maxwellTime = properties[p_maxwellTime];
+    const double dq = maxwellTime*(1.0-exp(-dt/maxwellTime))/dt;
+    const double expFac = exp(-dt/maxwellTime);
+    double devStrainTpdt = 0.0;
+    double devStrainT = 0.0;
+
+    const double diag[] = { 1.0, 1.0, 1.0, 0.0, 0.0, 0.0 };
+    for (int i=0; i < tensorSize; ++i) {
+      devStrainTpdt = strain[i] - diag[i]*meanStrainTpdt;
+      devStrainT = stateVars[s_totalStrain+i] - diag[i]*meanStrainT;
+      stateVarsE[s_viscousStrain+i] = 
+	expFac * stateVars[s_viscousStrain+i] + 
+	dq * (devStrainTpdt - devStrainT);
+    } //for
+
+    material._updateStateVars(&stateVars[0], stateVars.size(), 
+			      &properties[0], properties.size(),
+			      &strain[0], strain.size(),
+			      &initialStress[0], initialStress.size(),
+			      &initialStrain[0], initialStrain.size());
+    
+    const double tolerance = 1.0e-06;
+    for (int i=0; i < numVarsQuadPt; ++i)
+      CPPUNIT_ASSERT_DOUBLES_EQUAL(stateVarsE[i], stateVars[i], tolerance);
+  } // for
+
+
+
+
   GenMaxwellIsotropic3D material;
   GenMaxwellIsotropic3DTimeDepData data;
 
@@ -288,25 +395,28 @@
     } // for
   } // for
   
-  material._updateProperties(&parameters[0], numParamsQuadPt, 
+  material._updateStateVars(&parameters[0], numParamsQuadPt, 
 			&totalStrainTpdt[0], tensorSize,
 			&initialState[0], initialStateSize);
 
   const double tolerance = 1.0e-06;
   for (int i=0; i < numParamsQuadPt; ++i)
     CPPUNIT_ASSERT_DOUBLES_EQUAL(parametersE[i], parameters[i], tolerance);
-} // testUpdatePropertiesTimeDep
+#endif
+} // testUpdateStateVarsTimeDep
 
 // ----------------------------------------------------------------------
 // Test _stableTimeStepImplicit()
 void
 pylith::materials::TestGenMaxwellIsotropic3D::test_stableTimeStepImplicit(void)
 { // test_stableTimeStepImplicit
+#if 0
   CPPUNIT_ASSERT(0 != _matElastic);
 
   delete _dataElastic; _dataElastic = new GenMaxwellIsotropic3DTimeDepData();
 
   TestElasticMaterial::test_stableTimeStepImplicit();
+#endif
 } // test_stableTimeStepImplicit
 
 

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/TestGenMaxwellIsotropic3D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/TestGenMaxwellIsotropic3D.hh	2009-06-13 05:06:15 UTC (rev 15227)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/TestGenMaxwellIsotropic3D.hh	2009-06-13 05:52:06 UTC (rev 15228)
@@ -26,7 +26,6 @@
 /// Namespace for pylith package
 namespace pylith {
   namespace materials {
-    class GenMaxwellIsotropic3D;
     class TestGenMaxwellIsotropic3D;
     class GenMaxwellIsotropic3DElasticData;
     class GenMaxwellIsotropic3DTimeDepData;
@@ -40,22 +39,29 @@
   // CPPUNIT TEST SUITE /////////////////////////////////////////////////
   CPPUNIT_TEST_SUITE( TestGenMaxwellIsotropic3D );
 
+  CPPUNIT_TEST( testDimension );
+  CPPUNIT_TEST( testTensorSize );
   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_stableTimeStepImplicit );
 
+  // Need to test Maxwell viscoelastic specific behavior.
   CPPUNIT_TEST( testTimeStep );
   CPPUNIT_TEST( testUseElasticBehavior );
-  CPPUNIT_TEST( testCalcStressElastic );
-  CPPUNIT_TEST( testCalcStressTimeDep );
-  CPPUNIT_TEST( testCalcElasticConstsElastic );
-  CPPUNIT_TEST( testCalcElasticConstsTimeDep );
-  CPPUNIT_TEST( testUsesUpdateProperties );
-  CPPUNIT_TEST( testUpdatePropertiesElastic );
-  CPPUNIT_TEST( testUpdatePropertiesTimeDep );
-  CPPUNIT_TEST( test_stableTimeStepImplicit );
+  CPPUNIT_TEST( testHasStateVars );
 
+  CPPUNIT_TEST( test_calcStressElastic );
+  CPPUNIT_TEST( test_calcStressTimeDep );
+  CPPUNIT_TEST( test_calcElasticConstsElastic );
+  CPPUNIT_TEST( test_calcElasticConstsTimeDep );
+  CPPUNIT_TEST( test_updateStateVarsElastic );
+  CPPUNIT_TEST( test_updateStateVarsTimeDep );
+
   CPPUNIT_TEST_SUITE_END();
 
   // PUBLIC METHODS /////////////////////////////////////////////////////
@@ -70,26 +76,26 @@
   /// Test useElasticBehavior()
   void testUseElasticBehavior(void);
 
-  /// Test usesUpdateProperties()
-  void testUsesUpdateProperties(void);
+  /// Test hasStateVars()
+  void testHasStateVars(void);
 
-  /// Test calcStressElastic()
-  void testCalcStressElastic(void);
+  /// Test _calcStressElastic()
+  void test_calcStressElastic(void);
 
-  /// Test calcStressTimeDep()
-  void testCalcStressTimeDep(void);
+  /// Test _calcElasticConstsElastic()
+  void test_calcElasticConstsElastic(void);
 
-  /// Test calcElasticConstsElastic()
-  void testCalcElasticConstsElastic(void);
+  /// Test _updateStateVarsElastic()
+  void test_updateStateVarsElastic(void);
 
-  /// Test calcElasticConstsTimeDep()
-  void testCalcElasticConstsTimeDep(void);
+  /// Test _calcStressTimeDep()
+  void test_calcStressTimeDep(void);
 
-  /// Test updatePropertiesElastic()
-  void testUpdatePropertiesElastic(void);
+  /// Test _calcElasticConstsTimeDep()
+  void test_calcElasticConstsTimeDep(void);
 
-  /// Test updatePropertiesTimeDep()
-  void testUpdatePropertiesTimeDep(void);
+  /// Test _updateStatevarsTimeDep()
+  void test_updateStateVarsTimeDep(void);
 
   /// Test _stableTimeStepImplicit()
   void test_stableTimeStepImplicit(void);

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DElastic.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DElastic.py	2009-06-13 05:06:15 UTC (rev 15227)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DElastic.py	2009-06-13 05:52:06 UTC (rev 15228)
@@ -20,6 +20,11 @@
 import numpy
 
 # ----------------------------------------------------------------------
+dimension = 3
+numElasticConsts = 21
+tensorSize = 6
+numMaxwellModels = 3
+
 # GenMaxwellIsotropic3DElastic class
 class GenMaxwellIsotropic3DElastic(ElasticMaterialApp):
   """
@@ -35,103 +40,137 @@
     """
     ElasticMaterialApp.__init__(self, name)
 
-    self.dimension = 3
-    self.tensorSize = 6
+    numLocs = 2
+    self.dt = 2.0e5
+    self.dimension = dimension
+    self.numLocs = numLocs
 
-    self.numMaxwellModels = 3
-    self.numDBValues = 3 + 2*self.numMaxwellModels
-    self.numInitialStateValues = self.tensorSize
-    self.dbValues = ["density", "vs", "vp",
-                     "shear_ratio_1", "shear_ratio_2", "shear_ratio_3",
-                     "viscosity_1", "viscosity_2", "viscosity_3"]
-    self.initialStateDBValues = ["stress_xx", "stress_yy", "stress_zz",
-                                 "stress_xy", "stress_yz", "stress_xy"]
-    self.numParameters = 7
-    self.numParamValues = [1, 1, 1,
-                           self.numMaxwellModels, self.numMaxwellModels,
-                           self.tensorSize,
-                           self.tensorSize*self.numMaxwellModels]
-    self.parameterNames = ["density", "mu", "lambda",
-                           "shearRatio", "maxwellTime",
-                           "strainT", "visStrain"]
+    self.dbPropertyValues = ["density", "vs", "vp",
+                             "shear_ratio_1", "shear_ratio_2", "shear_ratio_3",
+                             "viscosity_1", "viscosity_2", "viscosity_3"]
+    self.numPropertyValues = numpy.array([1, 1, 1, 1, 1, 1, 1, 1, 1], dtype=numpy.int32)
 
-    self.dt = 2.0e5
+    self.dbStateVarValues = ["total-strain-xx",
+                             "total-strain-yy",
+                             "total-strain-zz",
+                             "total-strain-xy",
+                             "total-strain-yz",
+                             "total-strain-xz",
+                             "viscous-strain-1-xx",
+                             "viscous-strain-1-yy",
+                             "viscous-strain-1-zz",
+                             "viscous-strain-1-xy",
+                             "viscous-strain-1-yz",
+                             "viscous-strain-1-xz",
+                             "viscous-strain-2-xx",
+                             "viscous-strain-2-yy",
+                             "viscous-strain-2-zz",
+                             "viscous-strain-2-xy",
+                             "viscous-strain-2-yz",
+                             "viscous-strain-2-xz",
+                             "viscous-strain-3-xx",
+                             "viscous-strain-3-yy",
+                             "viscous-strain-3-zz",
+                             "viscous-strain-3-xy",
+                             "viscous-strain-3-yz",
+                             "viscous-strain-3-xz",
+                             ]
+    self.numStateVarValues = numpy.array([tensorSize]*(1+numMaxwellModels),
+                                         dtype=numpy.int32)
 
     densityA = 2500.0
     vsA = 3000.0
     vpA = vsA*3**0.5
     shearRatioA = [0.5, 0.1, 0.2]
     viscosityA = [1.0e18, 1.0e17, 1.0e19]
-    visStrainA = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
-                  0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
-                  0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
-    strainTA = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
     strainA = [1.1e-4, 2.2e-4, 3.3e-4, 4.4e-4, 5.5e-4, 6.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-4, 3.6e-4]
     muA = vsA*vsA*densityA
     lambdaA = vpA*vpA*densityA - 2.0*muA
-    elasDataA = [densityA, vsA, vpA]
-    matDbA = elasDataA + shearRatioA + viscosityA
-    initialStateA = [1.2e4, 2.3e4, 3.4e4, 4.5e4, 5.6e4, 6.7e4]
-    
+
     densityB = 2000.0
     vsB = 1200.0
     vpB = vsB*3**0.5
     shearRatioB = [0.2, 0.2, 0.2]
     viscosityB = [1.0e18, 1.0e19, 1.0e20]
-    visStrainB = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
-                  0.0, 0.0, 0.0, 0.0, 0.0, 0.0,
-                  0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
-    strainTB = [0.0, 0.0, 0.0, 0.0, 0.0, 0.0]
     strainB = [1.2e-4, 2.3e-4, 3.4e-4, 4.5e-4, 5.6e-4, 6.7e-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-4, 6.6e-4]
     muB = vsB*vsB*densityB
     lambdaB = vpB*vpB*densityB - 2.0*muB
-    elasDataB = [densityB, vsB, vpB]
-    matDbB = elasDataB + shearRatioB + viscosityB
-    initialStateB = [2.1e4, 3.2e4, 4.3e4, 5.4e4, 6.5e4, 7.6e4]
 
-    matDb = matDbA + matDbB
-
-    self.dbData = numpy.array(matDb, dtype=numpy.float64)
-
     maxwellTimeA = [0.0, 0.0, 0.0]
     maxwellTimeB = [0.0, 0.0, 0.0]
-    for model in range(self.numMaxwellModels):
-      if shearRatioA[model] != 0.0:
-        maxwellTimeA[model] = viscosityA[model]/(muA*shearRatioA[model])
-      if shearRatioB[model] != 0.0:
-        maxwellTimeB[model] = viscosityB[model]/(muB*shearRatioB[model])
-        
-    vecParamsA = numpy.hstack((shearRatioA, maxwellTimeA, strainTA, visStrainA))
-    vecParamsB = numpy.hstack((shearRatioB, maxwellTimeB, strainTB, visStrainB))
-    vecParams = numpy.vstack((vecParamsA, vecParamsB))
-    scalarParams = numpy.array([ [densityA, muA, lambdaA],
-                                 [densityB, muB, lambdaB] ],
-                               dtype=numpy.float64)
-    self.parameterData = numpy.hstack((scalarParams, vecParams))
+    for i in xrange(numMaxwellModels):
+      if shearRatioA[i] != 0.0:
+        maxwellTimeA[i] = viscosityA[i]/(muA*shearRatioA[i])
+      if shearRatioB[i] != 0.0:
+        maxwellTimeB[i] = viscosityB[i]/(muB*shearRatioB[i])
 
-    self.numLocs = 2
-    numElasticConsts = 21
-    self.density = numpy.array([densityA, densityB], dtype=numpy.float64)
+    self.lengthScale = 1.0e+3
+    self.pressureScale = muA
+    self.timeScale = 1.0
+    self.densityScale = 1.0e+3
 
-    self.strain = numpy.array([strainA, strainB], dtype=numpy.float64)
-    self.initialStateDBData = numpy.array([initialStateA, initialStateB],
-                                          dtype=numpy.float64)
-    self.initialState = numpy.array([initialStateA, initialStateB],
+    propA = [densityA, vsA, vpA] + shearRatioA + viscosityA
+    propB = [densityB, vsB, vpB] + shearRatioB + viscosityB
+    self.dbProperties = numpy.array([propA, propB], dtype=numpy.float64)
+    propA = [densityA, muA, lambdaA] + shearRatioA + maxwellTimeA
+    propB = [densityB, muB, lambdaB] + shearRatioB + maxwellTimeB
+    self.properties = numpy.array([propA, propB], dtype=numpy.float64)
+
+    # TEMPORARY, need to determine how to use initial state variables
+    self.dbStateVars = numpy.zeros( (numLocs, tensorSize+numMaxwellModels*tensorSize),
                                     dtype=numpy.float64)
-    self.stress = numpy.zeros( (self.numLocs, 6), dtype=numpy.float64)
-    self.elasticConsts = numpy.zeros( (self.numLocs, numElasticConsts),
-                                      dtype=numpy.float64)
+    self.stateVars = numpy.zeros( (numLocs, tensorSize+numMaxwellModels*tensorSize),
+                                  dtype=numpy.float64)
 
+    mu0 = self.pressureScale
+    density0 = self.densityScale
+    time0 = self.timeScale
+    self.propertiesNondim = \
+        numpy.array([ [densityA/density0, muA/mu0, lambdaA/mu0,
+                       shearRatioA[0], shearRatioA[1], shearRatioA[2],
+                       maxwellTimeA[0]/time0, maxwellTimeA[1]/time0, maxwellTimeA[2]/time0],
+                      [densityB/density0, muB/mu0, lambdaB/mu0,
+                       shearRatioB[0], shearRatioB[1], shearRatioB[2],
+                       maxwellTimeB[0]/time0, maxwellTimeB[1]/time0, maxwellTimeB[2]/time0] ],
+                    dtype=numpy.float64)
+
+    self.stateVarsNondim = self.stateVars # no scaling
+
+    self.initialStress = numpy.array([initialStressA,
+                                      initialStressB],
+                                    dtype=numpy.float64)
+    self.initialStrain = numpy.array([initialStrainA,
+                                      initialStrainB],
+                                    dtype=numpy.float64)
+    
+    self.density = numpy.array([densityA,
+                                densityB],
+                               dtype=numpy.float64)
+
+    self.strain = numpy.array([strainA,
+                               strainB],
+                               dtype=numpy.float64)
+    
+    self.stress = numpy.zeros( (numLocs, tensorSize), dtype=numpy.float64)
+    self.elasticConsts = numpy.zeros( (self.numLocs, numElasticConsts), \
+                                        dtype=numpy.float64)
+
     (self.elasticConsts[0,:], self.stress[0,:]) = \
-                              self._calcStress(strainA, muA, lambdaA,
-                                               initialStateA)
+        self._calcStress(strainA, muA, lambdaA, \
+                           initialStressA, initialStrainA)
     (self.elasticConsts[1,:], self.stress[1,:]) = \
-                              self._calcStress(strainB, muB, lambdaB,
-                                               initialStateB)
+        self._calcStress(strainB, muB, lambdaB, \
+                           initialStressB, initialStrainB)
+    self.dtStableImplicit = 0.1*min(min(maxwellTimeA), min(maxwellTimeB))
+
     return
 
 
-  def _calcStress(self, strainV, muV, lambdaV, initialStateV):
+  def _calcStress(self, strainV, muV, lambdaV, initialStressV, initialStrainV):
     """
     Compute stress and derivative of elasticity matrix.
     """
@@ -164,7 +203,8 @@
                                  C1313], dtype=numpy.float64)
 
     strain = numpy.reshape(strainV, (6,1))
-    initialState = numpy.reshape(initialStateV, (6,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],
@@ -172,7 +212,7 @@
                             [C1123, C2223, C3323, C1223, C2323, C2313],
                             [C1113, C2213, C3313, C1213, C2313, C1313] ],
                           dtype=numpy.float64)
-    stress = numpy.dot(elastic, strain) + initialState
+    stress = numpy.dot(elastic, strain-initialStrain) + initialStress
     return (elasticConsts, numpy.ravel(stress))
   
 

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DElasticData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DElasticData.cc	2009-06-13 05:06:15 UTC (rev 15227)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DElasticData.cc	2009-06-13 05:52:06 UTC (rev 15228)
@@ -17,29 +17,50 @@
 
 const int pylith::materials::GenMaxwellIsotropic3DElasticData::_dimension = 3;
 
-const int pylith::materials::GenMaxwellIsotropic3DElasticData::_numDBValues = 9;
+const int pylith::materials::GenMaxwellIsotropic3DElasticData::_numLocs = 2;
 
-const int pylith::materials::GenMaxwellIsotropic3DElasticData::_numInitialStateValues = 6;
+const int pylith::materials::GenMaxwellIsotropic3DElasticData::_numProperties = 9;
 
-const int pylith::materials::GenMaxwellIsotropic3DElasticData::_numParameters = 7;
+const int pylith::materials::GenMaxwellIsotropic3DElasticData::_numStateVars = 4;
 
-const int pylith::materials::GenMaxwellIsotropic3DElasticData::_numParamsQuadPt = 33;
+const int pylith::materials::GenMaxwellIsotropic3DElasticData::_numDBProperties = 9;
 
-const int pylith::materials::GenMaxwellIsotropic3DElasticData::_numLocs = 2;
+const int pylith::materials::GenMaxwellIsotropic3DElasticData::_numDBStateVars = 24;
 
-const double pylith::materials::GenMaxwellIsotropic3DElasticData::_dtStableImplicit =   1.00000000e+30;
+const int pylith::materials::GenMaxwellIsotropic3DElasticData::_numPropsQuadPt = 9;
 
-const int pylith::materials::GenMaxwellIsotropic3DElasticData::_numParamValues[] = {
+const int pylith::materials::GenMaxwellIsotropic3DElasticData::_numVarsQuadPt = 24;
+
+const double pylith::materials::GenMaxwellIsotropic3DElasticData::_lengthScale =   1.00000000e+03;
+
+const double pylith::materials::GenMaxwellIsotropic3DElasticData::_timeScale =   1.00000000e+00;
+
+const double pylith::materials::GenMaxwellIsotropic3DElasticData::_pressureScale =   2.25000000e+10;
+
+const double pylith::materials::GenMaxwellIsotropic3DElasticData::_densityScale =   1.00000000e+03;
+
+const double pylith::materials::GenMaxwellIsotropic3DElasticData::_dtStableImplicit =   4.44444444e+06;
+
+const int pylith::materials::GenMaxwellIsotropic3DElasticData::_numPropertyValues[] = {
 1,
 1,
 1,
-3,
-3,
+1,
+1,
+1,
+1,
+1,
+1,
+};
+
+const int pylith::materials::GenMaxwellIsotropic3DElasticData::_numStateVarValues[] = {
 6,
-18,
+6,
+6,
+6,
 };
 
-const char* pylith::materials::GenMaxwellIsotropic3DElasticData::_dbValues[] = {
+const char* pylith::materials::GenMaxwellIsotropic3DElasticData::_dbPropertyValues[] = {
 "density",
 "vs",
 "vp",
@@ -51,16 +72,34 @@
 "viscosity_3",
 };
 
-const char* pylith::materials::GenMaxwellIsotropic3DElasticData::_initialStateDBValues[] = {
-"stress_xx",
-"stress_yy",
-"stress_zz",
-"stress_xy",
-"stress_yz",
-"stress_xy",
+const char* pylith::materials::GenMaxwellIsotropic3DElasticData::_dbStateVarValues[] = {
+"total-strain-xx",
+"total-strain-yy",
+"total-strain-zz",
+"total-strain-xy",
+"total-strain-yz",
+"total-strain-xz",
+"viscous-strain-1-xx",
+"viscous-strain-1-yy",
+"viscous-strain-1-zz",
+"viscous-strain-1-xy",
+"viscous-strain-1-yz",
+"viscous-strain-1-xz",
+"viscous-strain-2-xx",
+"viscous-strain-2-yy",
+"viscous-strain-2-zz",
+"viscous-strain-2-xy",
+"viscous-strain-2-yz",
+"viscous-strain-2-xz",
+"viscous-strain-3-xx",
+"viscous-strain-3-yy",
+"viscous-strain-3-zz",
+"viscous-strain-3-xy",
+"viscous-strain-3-yz",
+"viscous-strain-3-xz",
 };
 
-const double pylith::materials::GenMaxwellIsotropic3DElasticData::_dbData[] = {
+const double pylith::materials::GenMaxwellIsotropic3DElasticData::_dbProperties[] = {
   2.50000000e+03,
   3.00000000e+03,
   5.19615242e+03,
@@ -81,22 +120,58 @@
   1.00000000e+20,
 };
 
-const double pylith::materials::GenMaxwellIsotropic3DElasticData::_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::GenMaxwellIsotropic3DElasticData::_dbStateVars[] = {
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
 };
 
-const double pylith::materials::GenMaxwellIsotropic3DElasticData::_parameterData[] = {
+const double pylith::materials::GenMaxwellIsotropic3DElasticData::_properties[] = {
   2.50000000e+03,
   2.25000000e+10,
   2.25000000e+10,
@@ -106,6 +181,18 @@
   8.88888889e+07,
   4.44444444e+07,
   2.22222222e+09,
+  2.00000000e+03,
+  2.88000000e+09,
+  2.88000000e+09,
+  2.00000000e-01,
+  2.00000000e-01,
+  2.00000000e-01,
+  1.73611111e+09,
+  1.73611111e+10,
+  1.73611111e+11,
+};
+
+const double pylith::materials::GenMaxwellIsotropic3DElasticData::_stateVars[] = {
   0.00000000e+00,
   0.00000000e+00,
   0.00000000e+00,
@@ -130,15 +217,54 @@
   0.00000000e+00,
   0.00000000e+00,
   0.00000000e+00,
-  2.00000000e+03,
-  2.88000000e+09,
-  2.88000000e+09,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+};
+
+const double pylith::materials::GenMaxwellIsotropic3DElasticData::_propertiesNondim[] = {
+  2.50000000e+00,
+  1.00000000e+00,
+  1.00000000e+00,
+  5.00000000e-01,
+  1.00000000e-01,
   2.00000000e-01,
+  8.88888889e+07,
+  4.44444444e+07,
+  2.22222222e+09,
+  2.00000000e+00,
+  1.28000000e-01,
+  1.28000000e-01,
   2.00000000e-01,
   2.00000000e-01,
+  2.00000000e-01,
   1.73611111e+09,
   1.73611111e+10,
   1.73611111e+11,
+};
+
+const double pylith::materials::GenMaxwellIsotropic3DElasticData::_stateVarsNondim[] = {
   0.00000000e+00,
   0.00000000e+00,
   0.00000000e+00,
@@ -163,23 +289,32 @@
   0.00000000e+00,
   0.00000000e+00,
   0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
+  0.00000000e+00,
 };
 
-const double pylith::materials::GenMaxwellIsotropic3DElasticData::_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::GenMaxwellIsotropic3DElasticData::_density[] = {
   2.50000000e+03,
   2.00000000e+03,
@@ -201,18 +336,18 @@
 };
 
 const double pylith::materials::GenMaxwellIsotropic3DElasticData::_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,
+ -1.57290000e+07,
+ -1.12280000e+07,
+ -6.72700000e+06,
+  4.52400000e+06,
+  9.02500000e+06,
+  1.35260000e+07,
+ -6.14100000e+06,
+ -5.56400000e+06,
+ -4.98700000e+06,
+ -1.04040000e+06,
+ -4.63400000e+05,
+  1.13600000e+05,
 };
 
 const double pylith::materials::GenMaxwellIsotropic3DElasticData::_elasticConsts[] = {
@@ -260,26 +395,70 @@
   5.76000000e+09,
 };
 
+const double pylith::materials::GenMaxwellIsotropic3DElasticData::_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::GenMaxwellIsotropic3DElasticData::_initialStrain[] = {
+  3.10000000e-04,
+  3.20000000e-04,
+  3.30000000e-04,
+  3.40000000e-04,
+  3.50000000e-04,
+  3.60000000e-04,
+  6.10000000e-04,
+  6.20000000e-04,
+  6.30000000e-04,
+  6.40000000e-04,
+  6.50000000e-04,
+  6.60000000e-04,
+};
+
+const double* pylith::materials::GenMaxwellIsotropic3DElasticData::_stateVarsUpdated = 0;
+
 pylith::materials::GenMaxwellIsotropic3DElasticData::GenMaxwellIsotropic3DElasticData(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;
+  lengthScale = _lengthScale;
+  timeScale = _timeScale;
+  pressureScale = _pressureScale;
+  densityScale = _densityScale;
   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::GenMaxwellIsotropic3DElasticData::~GenMaxwellIsotropic3DElasticData(void)

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DElasticData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DElasticData.hh	2009-06-13 05:06:15 UTC (rev 15227)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/GenMaxwellIsotropic3DElasticData.hh	2009-06-13 05:52:06 UTC (rev 15228)
@@ -39,32 +39,50 @@
 
   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 _lengthScale;
+
+  static const double _timeScale;
+
+  static const double _pressureScale;
+
+  static const double _densityScale;
+
   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 +91,12 @@
 
   static const double _elasticConsts[];
 
+  static const double _initialStress[];
+
+  static const double _initialStrain[];
+
+  static const double* _stateVarsUpdated;
+
 };
 
 #endif // pylith_materials_genmaxwellisotropic3delasticdata_hh

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/generate.sh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/generate.sh	2009-06-13 05:06:15 UTC (rev 15227)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/generate.sh	2009-06-13 05:52:06 UTC (rev 15228)
@@ -35,10 +35,10 @@
     --data.object=PowerLaw3DElasticData \
     --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
 
   # 2-D ----------------------------------------------------------------
 
@@ -69,10 +69,10 @@
 # //////////////////////////////////////////////////////////////////////
 if [ $1 == "viscoelastic" ] || [ $1 == "all" ]; then
 
-  #python GenMaxwellIsotropic3DTimeDep.py \
-  #  --data.namespace=pylith,materials \
-  #  --data.object=GenMaxwellIsotropic3DTimeDepData \
-  #  --data.parent=ElasticMaterialData
+  python GenMaxwellIsotropic3DTimeDep.py \
+    --data.namespace=pylith,materials \
+    --data.object=GenMaxwellIsotropic3DTimeDepData \
+    --data.parent=ElasticMaterialData
 
   python MaxwellIsotropic3DTimeDep.py \
     --data.namespace=pylith,materials \



More information about the CIG-COMMITS mailing list