[cig-commits] r14118 - in short/3D/PyLith/branches/pylith-swig: libsrc libsrc/materials unittests/libtests/materials unittests/libtests/materials/data

brad at geodynamics.org brad at geodynamics.org
Sun Feb 22 19:08:39 PST 2009


Author: brad
Date: 2009-02-22 19:08:39 -0800 (Sun, 22 Feb 2009)
New Revision: 14118

Modified:
   short/3D/PyLith/branches/pylith-swig/libsrc/Makefile.am
   short/3D/PyLith/branches/pylith-swig/libsrc/materials/ElasticPlaneStrain.cc
   short/3D/PyLith/branches/pylith-swig/libsrc/materials/ElasticPlaneStrain.hh
   short/3D/PyLith/branches/pylith-swig/libsrc/materials/ElasticPlaneStress.cc
   short/3D/PyLith/branches/pylith-swig/libsrc/materials/ElasticPlaneStress.hh
   short/3D/PyLith/branches/pylith-swig/libsrc/materials/ElasticStrain1D.cc
   short/3D/PyLith/branches/pylith-swig/libsrc/materials/ElasticStrain1D.hh
   short/3D/PyLith/branches/pylith-swig/libsrc/materials/ElasticStress1D.cc
   short/3D/PyLith/branches/pylith-swig/libsrc/materials/ElasticStress1D.hh
   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/TestElasticPlaneStrain.cc
   short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticPlaneStrain.hh
   short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticPlaneStress.cc
   short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticPlaneStress.hh
   short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticStrain1D.cc
   short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticStrain1D.hh
   short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticStress1D.cc
   short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticStress1D.hh
   short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticPlaneStrain.py
   short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticPlaneStrainData.cc
   short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticPlaneStrainData.hh
   short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticPlaneStress.py
   short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticPlaneStressData.cc
   short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticPlaneStressData.hh
   short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticStrain1D.py
   short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticStrain1DData.cc
   short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticStrain1DData.hh
   short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticStress1D.py
   short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticStress1DData.cc
   short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticStress1DData.hh
   short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/generate.sh
Log:
More work on updating elastic materials.

Modified: short/3D/PyLith/branches/pylith-swig/libsrc/Makefile.am
===================================================================
--- short/3D/PyLith/branches/pylith-swig/libsrc/Makefile.am	2009-02-23 00:25:34 UTC (rev 14117)
+++ short/3D/PyLith/branches/pylith-swig/libsrc/Makefile.am	2009-02-23 03:08:39 UTC (rev 14118)
@@ -53,6 +53,10 @@
 	materials/Metadata.cc \
 	materials/Material.cc \
 	materials/ElasticMaterial.cc \
+	materials/ElasticStrain1D.cc \
+	materials/ElasticStress1D.cc \
+	materials/ElasticPlaneStrain.cc \
+	materials/ElasticPlaneStress.cc \
 	materials/ElasticIsotropic3D.cc \
 	meshio/BinaryIO.cc \
 	meshio/GMVFile.cc \
@@ -86,19 +90,6 @@
 # 	feassemble/ElasticityExplicit.cc \
 # 	feassemble/ElasticityImplicit.cc \
 # 	feassemble/IntegratorElasticity.cc \
-# 	feassemble/Quadrature.cc \
-# 	feassemble/Quadrature0D.cc \
-# 	feassemble/Quadrature1D.cc \
-# 	feassemble/Quadrature1Din2D.cc \
-# 	feassemble/Quadrature1Din3D.cc \
-# 	feassemble/Quadrature2D.cc \
-# 	feassemble/Quadrature2Din3D.cc \
-# 	feassemble/Quadrature3D.cc \
-# 	materials/ElasticStress1D.cc \
-# 	materials/ElasticStrain1D.cc \
-# 	materials/ElasticMaterial.cc \
-# 	materials/ElasticPlaneStrain.cc \
-# 	materials/ElasticPlaneStress.cc \
 # 	materials/MaxwellIsotropic3D.cc \
 # 	materials/GenMaxwellIsotropic3D.cc \
 # 	materials/ViscoelasticMaxwell.cc \
@@ -112,9 +103,7 @@
 # 	meshio/VertexFilterVecNorm.cc \
 # 	meshio/UCDFaultFile.cc \
 # 	topology/Distributor.cc \
-# 	topology/FieldsManager.cc \
-# 	topology/MeshRefiner.cc 
-
+# 	topology/MeshRefiner.cc \
 #	topology/RefineUniform.cc
 
 libpylith_la_LDFLAGS = $(AM_LDFLAGS) $(PYTHON_LA_LDFLAGS)

Modified: short/3D/PyLith/branches/pylith-swig/libsrc/materials/ElasticPlaneStrain.cc
===================================================================
--- short/3D/PyLith/branches/pylith-swig/libsrc/materials/ElasticPlaneStrain.cc	2009-02-23 00:25:34 UTC (rev 14117)
+++ short/3D/PyLith/branches/pylith-swig/libsrc/materials/ElasticPlaneStrain.cc	2009-02-23 03:08:39 UTC (rev 14118)
@@ -14,6 +14,9 @@
 
 #include "ElasticPlaneStrain.hh" // implementation of object methods
 
+#include "Metadata.hh" // USES Metadata
+
+#include "pylith/utils/array.hh" // USES double_array
 #include "pylith/utils/constdefs.h" // USES MAXDOUBLE
 
 #include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
@@ -24,63 +27,69 @@
 #include <sstream> // USES std::ostringstream
 #include <stdexcept> // USES std::runtime_error
 
-
 // ----------------------------------------------------------------------
 namespace pylith {
   namespace materials {
     namespace _ElasticPlaneStrain {
 
-      /// Number of entries in stress tensor.
+      // Dimension of material.
+      const int dimension = 2;
+
+      // Number of entries in stress tensor.
       const int tensorSize = 3;
 
-      /// Number of elastic constants (for general 3-D elastic material)
+      // Number of elastic constants (for general 3-D elastic material)
       const int numElasticConsts = 6;
 
-      /// Number of physical properties.
+      // Number of physical properties.
       const int numProperties = 3;
 
-      /// Physical properties.
-      const Material::PropMetaData properties[] = {
-	{ "density", 1, OTHER_FIELD },
-	{ "mu", 1, OTHER_FIELD },
-	{ "lambda", 1, OTHER_FIELD },
+      // Physical properties.
+      const Metadata::ParamDescription properties[] = {
+	{ "density", 1, pylith::topology::FieldBase::SCALAR },
+	{ "mu", 1, pylith::topology::FieldBase::SCALAR },
+	{ "lambda", 1, pylith::topology::FieldBase::SCALAR },
       };
-      /// Indices of physical properties
-      const int pidDensity = 0;
-      const int pidMu = pidDensity + 1;
-      const int pidLambda = pidMu + 1;
 
-      /// Values expected in spatial database
-      const int numDBValues = 3;
-      const char* namesDBValues[] = { "density", "vs", "vp" };
+      // Values expected in spatial database
+      const int numDBProperties = 3;
+      const char* dbProperties[] = { "density", "vs", "vp" };      
       
-      /// Indices of database values
-      const int didDensity = 0;
-      const int didVs = 1;
-      const int didVp = 2;
-
-      /// Initial state values expected in spatial database
-      const int numInitialStateDBValues = tensorSize;
-      const char* namesInitialStateDBValues[] = { "stress_xx", "stress_yy",
-						  "stress_xy" };
-
     } // _ElasticPlaneStrain
   } // materials
 } // pylith
 
+// Indices of physical properties
+const int pylith::materials::ElasticPlaneStrain::p_density = 0;
 
+const int pylith::materials::ElasticPlaneStrain::p_mu = 
+  pylith::materials::ElasticPlaneStrain::p_density + 1;
+
+const int pylith::materials::ElasticPlaneStrain::p_lambda = 
+  pylith::materials::ElasticPlaneStrain::p_mu + 1;
+
+// Indices of database values (order must match dbProperties)
+const int pylith::materials::ElasticPlaneStrain::db_density = 0;
+
+const int pylith::materials::ElasticPlaneStrain::db_vs = 
+  pylith::materials::ElasticPlaneStrain::db_density + 1;
+
+const int pylith::materials::ElasticPlaneStrain::db_vp = 
+  pylith::materials::ElasticPlaneStrain::db_vs + 1;
+
 // ----------------------------------------------------------------------
 // Default constructor.
 pylith::materials::ElasticPlaneStrain::ElasticPlaneStrain(void) :
-  ElasticMaterial(_ElasticPlaneStrain::tensorSize,
+  ElasticMaterial(_ElasticPlaneStrain::dimension,
+		  _ElasticPlaneStrain::tensorSize,
 		  _ElasticPlaneStrain::numElasticConsts,
-		  _ElasticPlaneStrain::namesDBValues,
-		  _ElasticPlaneStrain::namesInitialStateDBValues,
-		  _ElasticPlaneStrain::numDBValues,
-		  _ElasticPlaneStrain::properties,
-		  _ElasticPlaneStrain::numProperties)
+		  Metadata(_ElasticPlaneStrain::properties,
+			   _ElasticPlaneStrain::numProperties,
+			   _ElasticPlaneStrain::dbProperties,
+			   _ElasticPlaneStrain::numDBProperties,
+			   0, 0,
+			   0, 0))
 { // constructor
-  _dimension = 2;
 } // constructor
 
 // ----------------------------------------------------------------------
@@ -98,11 +107,11 @@
 { // _dbToProperties
   assert(0 != propValues);
   const int numDBValues = dbValues.size();
-  assert(_ElasticPlaneStrain::numDBValues == numDBValues);
+  assert(_ElasticPlaneStrain::numDBProperties == numDBValues);
 
-  const double density = dbValues[_ElasticPlaneStrain::didDensity];
-  const double vs = dbValues[_ElasticPlaneStrain::didVs];
-  const double vp = dbValues[_ElasticPlaneStrain::didVp];
+  const double density = dbValues[db_density];
+  const double vs = dbValues[db_vs];
+  const double vp = dbValues[db_vp];
  
   if (density <= 0.0 || vs <= 0.0 || vp <= 0.0) {
     std::ostringstream msg;
@@ -125,11 +134,11 @@
 	<< "vs: " << vs << "\n";
     throw std::runtime_error(msg.str());
   } // if
-  
-  propValues[_ElasticPlaneStrain::pidDensity] = density;
-  propValues[_ElasticPlaneStrain::pidMu] = mu;
-  propValues[_ElasticPlaneStrain::pidLambda] = lambda;
 
+  propValues[p_density] = density;
+  propValues[p_mu] = mu;
+  propValues[p_lambda] = lambda;
+
   PetscLogFlops(6);
 } // _dbToProperties
 
@@ -145,15 +154,15 @@
 
   const double densityScale = _normalizer->densityScale();
   const double pressureScale = _normalizer->pressureScale();
-  values[_ElasticPlaneStrain::pidDensity] = 
-    _normalizer->nondimensionalize(values[_ElasticPlaneStrain::pidDensity],
-				   densityScale);
-  values[_ElasticPlaneStrain::pidMu] = 
-    _normalizer->nondimensionalize(values[_ElasticPlaneStrain::pidMu],
-				   pressureScale);
-  values[_ElasticPlaneStrain::pidLambda] = 
-    _normalizer->nondimensionalize(values[_ElasticPlaneStrain::pidLambda],
-				   pressureScale);
+
+  values[p_density] = 
+    _normalizer->nondimensionalize(values[p_density], densityScale);
+  values[p_mu] = 
+    _normalizer->nondimensionalize(values[p_mu], pressureScale);
+  values[p_lambda] = 
+    _normalizer->nondimensionalize(values[p_lambda], pressureScale);
+
+  PetscLogFlops(3);
 } // _nondimProperties
 
 // ----------------------------------------------------------------------
@@ -168,129 +177,118 @@
 
   const double densityScale = _normalizer->densityScale();
   const double pressureScale = _normalizer->pressureScale();
-  values[_ElasticPlaneStrain::pidDensity] = 
-    _normalizer->dimensionalize(values[_ElasticPlaneStrain::pidDensity],
-				   densityScale);
-  values[_ElasticPlaneStrain::pidMu] = 
-    _normalizer->dimensionalize(values[_ElasticPlaneStrain::pidMu],
-				   pressureScale);
-  values[_ElasticPlaneStrain::pidLambda] = 
-    _normalizer->dimensionalize(values[_ElasticPlaneStrain::pidLambda],
-				   pressureScale);
-} // _dimProperties
 
-// ----------------------------------------------------------------------
-// Nondimensionalize initial state.
-void
-pylith::materials::ElasticPlaneStrain::_nondimInitState(double* const values,
-							const int nvalues) const
-{ // _nondimInitState
-  assert(0 != _normalizer);
-  assert(0 != values);
-  assert(nvalues == _ElasticPlaneStrain::numInitialStateDBValues);
+  values[p_density] = 
+    _normalizer->dimensionalize(values[p_density], densityScale);
+  values[p_mu] = 
+    _normalizer->dimensionalize(values[p_mu], pressureScale);
+  values[p_lambda] = 
+    _normalizer->dimensionalize(values[p_lambda], pressureScale);
 
-  const double pressureScale = _normalizer->pressureScale();
-  _normalizer->nondimensionalize(values, nvalues, pressureScale);
-} // _nondimInitState
+  PetscLogFlops(3);
+} // _dimProperties
 
 // ----------------------------------------------------------------------
-// Dimensionalize initial state.
-void
-pylith::materials::ElasticPlaneStrain::_dimInitState(double* const values,
-						     const int nvalues) const
-{ // _dimInitState
-  assert(0 != _normalizer);
-  assert(0 != values);
-  assert(nvalues == _ElasticPlaneStrain::numInitialStateDBValues);
-  
-  const double pressureScale = _normalizer->pressureScale();
-  _normalizer->dimensionalize(values, nvalues, pressureScale);
-} // _dimInitState
-
-// ----------------------------------------------------------------------
 // Compute density at location from properties.
 void
-pylith::materials::ElasticPlaneStrain::_calcDensity(
-				  double* const density,
-				  const double* properties,
-				  const int numProperties)
+pylith::materials::ElasticPlaneStrain::_calcDensity(double* const density,
+						    const double* properties,
+						    const int numProperties,
+						    const double* stateVars,
+						    const int numStateVars)
 { // calcDensity
   assert(0 != density);
   assert(0 != properties);
-  assert(_totalPropsQuadPt == numProperties);
+  assert(_numPropsQuadPt == numProperties);
+  assert(0 == numStateVars);
 
-  density[0] = properties[_ElasticPlaneStrain::pidDensity];
+  density[0] = properties[p_density];
 } // calcDensity
 
 // ----------------------------------------------------------------------
 // Compute stress tensor at location from properties.
 void
-pylith::materials::ElasticPlaneStrain::_calcStress(
-				  double* const stress,
-				  const int stressSize,
-				  const double* properties,
-				  const int numProperties,
-				  const double* totalStrain,
-				  const int strainSize,
-				  const double* initialState,
-				  const int initialStateSize,
-				  const bool computeStateVars)
+pylith::materials::ElasticPlaneStrain::_calcStress(double* const stress,
+						   const int stressSize,
+						   const double* properties,
+						   const int numProperties,
+						   const double* stateVars,
+						   const int numStateVars,
+						   const double* totalStrain,
+						   const int strainSize,
+						   const double* initialStress,
+						   const int initialStressSize,
+						   const double* initialStrain,
+						   const int initialStrainSize,
+						   const bool computeStateVars)
 { // _calcStress
   assert(0 != stress);
   assert(_ElasticPlaneStrain::tensorSize == stressSize);
   assert(0 != properties);
-  assert(_totalPropsQuadPt == numProperties);
+  assert(_numPropsQuadPt == numProperties);
+  assert(0 == numStateVars);
   assert(0 != totalStrain);
   assert(_ElasticPlaneStrain::tensorSize == strainSize);
-  assert(_ElasticPlaneStrain::tensorSize == initialStateSize);
+  assert(0 != initialStress);
+  assert(_ElasticPlaneStrain::tensorSize == initialStressSize);
+  assert(0 != initialStrain);
+  assert(_ElasticPlaneStrain::tensorSize == initialStrainSize);
 
-  const double density = properties[_ElasticPlaneStrain::pidDensity];
-  const double mu = properties[_ElasticPlaneStrain::pidMu];
-  const double lambda = properties[_ElasticPlaneStrain::pidLambda];
-  
-  const double mu2 = 2.0 * mu;
-  
-  const double e11 = totalStrain[0];
-  const double e22 = totalStrain[1];
-  const double e12 = totalStrain[2];
+  const double density = properties[p_density];
+  const double mu = properties[p_mu];
+  const double lambda = properties[p_lambda];
 
+  const double mu2 = 2.0*mu;
+
+  const double e11 = totalStrain[0] + initialStrain[0];
+  const double e22 = totalStrain[1] + initialStrain[1];
+  const double e12 = totalStrain[2] + initialStrain[2];
+
   const double s12 = lambda * (e11 + e22);
 
-  stress[0] = s12 + mu2*e11 + initialState[0];
-  stress[1] = s12 + mu2*e22 + initialState[1];
-  stress[2] = mu2 * e12 + initialState[2];
+  stress[0] = s12 + mu2*e11 + initialStress[0];
+  stress[1] = s12 + mu2*e22 + initialStress[1];
+  stress[2] = mu2 * e12 + initialStress[2];
 
-  PetscLogFlops(11);
+  PetscLogFlops(14);
 } // _calcStress
 
 // ----------------------------------------------------------------------
 // Compute elastic constants at location from properties.
 void
 pylith::materials::ElasticPlaneStrain::_calcElasticConsts(
-					       double* const elasticConsts,
-					       const int numElasticConsts,
-					       const double* properties,
-					       const int numProperties,
-					       const double* totalStrain,
-					       const int strainSize,
-					       const double* initialState,
-					       const int initialStateSize)
+					     double* const elasticConsts,
+					     const int numElasticConsts,
+					     const double* properties,
+					     const int numProperties,
+					     const double* stateVars,
+					     const int numStateVars,
+					     const double* totalStrain,
+					     const int strainSize,
+					     const double* initialStress,
+					     const int initialStressSize,
+					     const double* initialStrain,
+					     const int initialStrainSize)
 { // calcElasticConsts
   assert(0 != elasticConsts);
   assert(_ElasticPlaneStrain::numElasticConsts == numElasticConsts);
   assert(0 != properties);
-  assert(_totalPropsQuadPt == numProperties);
+  assert(_numPropsQuadPt == numProperties);
+  assert(0 == numStateVars);
   assert(0 != totalStrain);
   assert(_ElasticPlaneStrain::tensorSize == strainSize);
-  assert(_ElasticPlaneStrain::tensorSize == initialStateSize);
+  assert(0 != initialStress);
+  assert(_ElasticPlaneStrain::tensorSize == initialStressSize);
+  assert(0 != initialStrain);
+  assert(_ElasticPlaneStrain::tensorSize == initialStrainSize);
+ 
+  const double density = properties[p_density];
+  const double mu = properties[p_mu];
+  const double lambda = properties[p_lambda];
 
-  const double density = properties[_ElasticPlaneStrain::pidDensity];
-  const double mu = properties[_ElasticPlaneStrain::pidMu];
-  const double lambda = properties[_ElasticPlaneStrain::pidLambda];
-
   const double mu2 = 2.0 * mu;
   const double lambda2mu = lambda + mu2;
-  
+   
   elasticConsts[0] = lambda2mu; // C1111
   elasticConsts[1] = lambda; // C1122
   elasticConsts[2] = 0; // C1112
@@ -304,8 +302,11 @@
 // ----------------------------------------------------------------------
 // Get stable time step for implicit time integration.
 double
-pylith::materials::ElasticPlaneStrain::_stableTimeStepImplicit(const double* properties,
-				 const int numProperties) const
+pylith::materials::ElasticPlaneStrain::_stableTimeStepImplicit(
+				     const double* properties,
+				     const int numProperties,
+				     const double* stateVars,
+				     const int numStateVars) const
 { // _stableTimeStepImplicit
   return pylith::PYLITH_MAXDOUBLE;
 } // _stableTimeStepImplicit

Modified: short/3D/PyLith/branches/pylith-swig/libsrc/materials/ElasticPlaneStrain.hh
===================================================================
--- short/3D/PyLith/branches/pylith-swig/libsrc/materials/ElasticPlaneStrain.hh	2009-02-23 00:25:34 UTC (rev 14117)
+++ short/3D/PyLith/branches/pylith-swig/libsrc/materials/ElasticPlaneStrain.hh	2009-02-23 03:08:39 UTC (rev 14118)
@@ -25,17 +25,10 @@
 #if !defined(pylith_materials_elasticplanestrain_hh)
 #define pylith_materials_elasticplanestrain_hh
 
-#include "ElasticMaterial.hh"
+// Include directives ---------------------------------------------------
+#include "ElasticMaterial.hh" // ISA ElasticMaterial
 
-/// Namespace for pylith package
-namespace pylith {
-  namespace materials {
-    class ElasticPlaneStrain;
-    class TestElasticPlaneStrain; // unit testing
-  } // materials
-} // pylith
-
-/// 3-D, isotropic, linear elastic material.
+// ElasticPlaneStrain ---------------------------------------------------
 class pylith::materials::ElasticPlaneStrain : public ElasticMaterial
 { // class ElasticPlaneStrain
   friend class TestElasticPlaneStrain; // unit testing
@@ -79,22 +72,6 @@
   void _dimProperties(double* const values,
 		      const int nvalues) const;
 
-  /** Nondimensionalize initial state.
-   *
-   * @param values Array of initial state values.
-   * @param nvalues Number of values.
-   */
-  void _nondimInitState(double* const values,
-			const int nvalues) const;
-
-  /** Dimensionalize initial state.
-   *
-   * @param values Array of initial state values.
-   * @param nvalues Number of values.
-   */
-  void _dimInitState(double* const values,
-		     const int nvalues) const;
-
   /** Compute density from properties.
    *
    * @param density Array for density.
@@ -103,31 +80,42 @@
    */
   void _calcDensity(double* const density,
 		    const double* properties,
-		    const int numProperties);
+		    const int numProperties,
+		    const double* stateVars,
+		    const int numStateVars);
 
-  /** Compute stress tensor from properties. If the state variables
-   * are from the previous time step, then the computeStateVars flag
-   * should be set to true so that the state variables are updated
-   * (but not stored) when computing the stresses.
+  /** Compute stress tensor from properties and state variables. If
+   * the state variables are from the previous time step, then the
+   * computeStateVars flag should be set to true so that the state
+   * variables are updated (but not stored) when computing the
+   * stresses.
    *
    * @param stress Array for stress tensor.
    * @param stressSize Size of stress tensor.
    * @param properties Properties at location.
    * @param numProperties Number of properties.
+   * @param stateVars State variables at location.
+   * @param numStateVars Number of state variables.
    * @param totalStrain Total strain at location.
    * @param strainSize Size of strain tensor.
-   * @param initialState Initial state values.
-   * @param initialStateSize Size of initial state array.
-   * @param computeStateVars Flag indicating to compute updated state vars.
+   * @param initialStress Initial stress tensor at location.
+   * @param initialStressSize Size of initial stress array.
+   * @param initialStrain Initial strain tensor at location.
+   * @param initialStrainSize Size of initial strain array.
+   * @param computeStateVars Flag indicating to compute updated state variables.
    */
   void _calcStress(double* const stress,
 		   const int stressSize,
 		   const double* properties,
 		   const int numProperties,
+		   const double* stateVars,
+		   const int numStateVars,
 		   const double* totalStrain,
 		   const int strainSize,
-		   const double* initialState,
-		   const int initialStateSize,
+		   const double* initialStress,
+		   const int initialStressSize,
+		   const double* initialStrain,
+		   const int initialStrainSize,
 		   const bool computeStateVars);
 
   /** Compute derivatives of elasticity matrix from properties.
@@ -136,27 +124,52 @@
    * @param numElasticConsts Number of elastic constants.
    * @param properties Properties at location.
    * @param numProperties Number of properties.
+   * @param stateVars State variables at location.
+   * @param numStateVars Number of state variables.
    * @param totalStrain Total strain at location.
    * @param strainSize Size of strain tensor.
-   * @param initialState Initial state values.
-   * @param initialStateSize Size of initial state array.
+   * @param initialStress Initial stress tensor at location.
+   * @param initialStressSize Size of initial stress array.
+   * @param initialStrain Initial strain tensor at location.
+   * @param initialStrainSize Size of initial strain array.
    */
   void _calcElasticConsts(double* const elasticConsts,
 			  const int numElasticConsts,
 			  const double* properties,
 			  const int numProperties,
+			  const double* stateVars,
+			  const int numStateVars,
 			  const double* totalStrain,
 			  const int strainSize,
-			  const double* initialState,
-			  const int initialStateSize);
+			  const double* initialStress,
+			  const int initialStressSize,
+			  const double* initialStrain,
+			  const int initialStrainSize);
 
   /** Get stable time step for implicit time integration.
    *
+   * @param properties Properties at location.
+   * @param numProperties Number of properties.
+   * @param stateVars State variables at location.
+   * @param numStateVars Number of state variables.
+   *
    * @returns Time step
    */
   double _stableTimeStepImplicit(const double* properties,
-				 const int numProperties) const;
+				 const int numProperties,
+				 const double* stateVars,
+				 const int numStateVars) const;
 
+  // PRIVATE MEMBERS ////////////////////////////////////////////////////
+private :
+
+  static const int p_density;
+  static const int p_mu;
+  static const int p_lambda;
+  static const int db_density;
+  static const int db_vs;
+  static const int db_vp;
+
   // NOT IMPLEMENTED ////////////////////////////////////////////////////
 private :
 

Modified: short/3D/PyLith/branches/pylith-swig/libsrc/materials/ElasticPlaneStress.cc
===================================================================
--- short/3D/PyLith/branches/pylith-swig/libsrc/materials/ElasticPlaneStress.cc	2009-02-23 00:25:34 UTC (rev 14117)
+++ short/3D/PyLith/branches/pylith-swig/libsrc/materials/ElasticPlaneStress.cc	2009-02-23 03:08:39 UTC (rev 14118)
@@ -14,6 +14,9 @@
 
 #include "ElasticPlaneStress.hh" // implementation of object methods
 
+#include "Metadata.hh" // USES Metadata
+
+#include "pylith/utils/array.hh" // USES double_array
 #include "pylith/utils/constdefs.h" // USES MAXDOUBLE
 
 #include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
@@ -29,56 +32,64 @@
   namespace materials {
     namespace _ElasticPlaneStress {
 
-      /// Number of entries in stress tensor.
+      // Dimension of material.
+      const int dimension = 2;
+
+      // Number of entries in stress tensor.
       const int tensorSize = 3;
 
-      /// Number of elastic constants (for general 3-D elastic material)
+      // Number of elastic constants (for general 3-D elastic material)
       const int numElasticConsts = 6;
 
-      /// Number of physical properties.
+      // Number of physical properties.
       const int numProperties = 3;
 
-      /// Physical properties.
-      const Material::PropMetaData properties[] = {
-	{ "density", 1, OTHER_FIELD },
-	{ "mu", 1, OTHER_FIELD },
-	{ "lambda", 1, OTHER_FIELD },
+      // Physical properties.
+      const Metadata::ParamDescription properties[] = {
+	{ "density", 1, pylith::topology::FieldBase::SCALAR },
+	{ "mu", 1, pylith::topology::FieldBase::SCALAR },
+	{ "lambda", 1, pylith::topology::FieldBase::SCALAR },
       };
-      /// Indices of physical properties
-      const int pidDensity = 0;
-      const int pidMu = pidDensity + 1;
-      const int pidLambda = pidMu + 1;
 
-      /// Values expected in spatial database
-      const int numDBValues = 3;
-      const char* namesDBValues[] = { "density", "vs", "vp" };      
+      // Values expected in spatial database
+      const int numDBProperties = 3;
+      const char* dbProperties[] = { "density", "vs", "vp" };      
       
-      /// Indices of database values
-      const int didDensity = 0;
-      const int didVs = 1;
-      const int didVp = 2;
-
-      /// Initial state values expected in spatial database
-      const int numInitialStateDBValues = tensorSize;
-      const char* namesInitialStateDBValues[] = { "stress_xx", "stress_yy",
-						  "stress_xy" };
-
     } // _ElasticPlaneStress
   } // materials
 } // pylith
 
+// Indices of physical properties
+const int pylith::materials::ElasticPlaneStress::p_density = 0;
+
+const int pylith::materials::ElasticPlaneStress::p_mu = 
+  pylith::materials::ElasticPlaneStress::p_density + 1;
+
+const int pylith::materials::ElasticPlaneStress::p_lambda = 
+  pylith::materials::ElasticPlaneStress::p_mu + 1;
+
+// Indices of database values (order must match dbProperties)
+const int pylith::materials::ElasticPlaneStress::db_density = 0;
+
+const int pylith::materials::ElasticPlaneStress::db_vs = 
+  pylith::materials::ElasticPlaneStress::db_density + 1;
+
+const int pylith::materials::ElasticPlaneStress::db_vp = 
+  pylith::materials::ElasticPlaneStress::db_vs + 1;
+
 // ----------------------------------------------------------------------
 // Default constructor.
 pylith::materials::ElasticPlaneStress::ElasticPlaneStress(void) :
-  ElasticMaterial(_ElasticPlaneStress::tensorSize,
+  ElasticMaterial(_ElasticPlaneStress::dimension,
+		  _ElasticPlaneStress::tensorSize,
 		  _ElasticPlaneStress::numElasticConsts,
-		  _ElasticPlaneStress::namesDBValues,
-		  _ElasticPlaneStress::namesInitialStateDBValues,
-		  _ElasticPlaneStress::numDBValues,
-		  _ElasticPlaneStress::properties,
-		  _ElasticPlaneStress::numProperties)
+		  Metadata(_ElasticPlaneStress::properties,
+			   _ElasticPlaneStress::numProperties,
+			   _ElasticPlaneStress::dbProperties,
+			   _ElasticPlaneStress::numDBProperties,
+			   0, 0,
+			   0, 0))
 { // constructor
-  _dimension = 2;
 } // constructor
 
 // ----------------------------------------------------------------------
@@ -96,11 +107,11 @@
 { // _dbToProperties
   assert(0 != propValues);
   const int numDBValues = dbValues.size();
-  assert(_ElasticPlaneStress::numDBValues == numDBValues);
+  assert(_ElasticPlaneStress::numDBProperties == numDBValues);
 
-  const double density = dbValues[_ElasticPlaneStress::didDensity];
-  const double vs = dbValues[_ElasticPlaneStress::didVs];
-  const double vp = dbValues[_ElasticPlaneStress::didVp];
+  const double density = dbValues[db_density];
+  const double vs = dbValues[db_vs];
+  const double vp = dbValues[db_vp];
  
   if (density <= 0.0 || vs <= 0.0 || vp <= 0.0) {
     std::ostringstream msg;
@@ -124,9 +135,9 @@
     throw std::runtime_error(msg.str());
   } // if
 
-  propValues[_ElasticPlaneStress::pidDensity] = density;
-  propValues[_ElasticPlaneStress::pidMu] = mu;
-  propValues[_ElasticPlaneStress::pidLambda] = lambda;
+  propValues[p_density] = density;
+  propValues[p_mu] = mu;
+  propValues[p_lambda] = lambda;
 
   PetscLogFlops(6);
 } // _dbToProperties
@@ -143,16 +154,14 @@
 
   const double densityScale = _normalizer->densityScale();
   const double pressureScale = _normalizer->pressureScale();
-  values[_ElasticPlaneStress::pidDensity] = 
-    _normalizer->nondimensionalize(values[_ElasticPlaneStress::pidDensity],
-				   densityScale);
-  values[_ElasticPlaneStress::pidMu] = 
-    _normalizer->nondimensionalize(values[_ElasticPlaneStress::pidMu],
-				   pressureScale);
-  values[_ElasticPlaneStress::pidLambda] = 
-    _normalizer->nondimensionalize(values[_ElasticPlaneStress::pidLambda],
-				   pressureScale);
 
+  values[p_density] = 
+    _normalizer->nondimensionalize(values[p_density], densityScale);
+  values[p_mu] = 
+    _normalizer->nondimensionalize(values[p_mu], pressureScale);
+  values[p_lambda] = 
+    _normalizer->nondimensionalize(values[p_lambda], pressureScale);
+
   PetscLogFlops(3);
 } // _nondimProperties
 
@@ -168,63 +177,32 @@
 
   const double densityScale = _normalizer->densityScale();
   const double pressureScale = _normalizer->pressureScale();
-  values[_ElasticPlaneStress::pidDensity] = 
-    _normalizer->dimensionalize(values[_ElasticPlaneStress::pidDensity],
-				   densityScale);
-  values[_ElasticPlaneStress::pidMu] = 
-    _normalizer->dimensionalize(values[_ElasticPlaneStress::pidMu],
-				   pressureScale);
-  values[_ElasticPlaneStress::pidLambda] = 
-    _normalizer->dimensionalize(values[_ElasticPlaneStress::pidLambda],
-				   pressureScale);
 
+  values[p_density] = 
+    _normalizer->dimensionalize(values[p_density], densityScale);
+  values[p_mu] = 
+    _normalizer->dimensionalize(values[p_mu], pressureScale);
+  values[p_lambda] = 
+    _normalizer->dimensionalize(values[p_lambda], pressureScale);
+
   PetscLogFlops(3);
 } // _dimProperties
 
 // ----------------------------------------------------------------------
-// Nondimensionalize initial state.
-void
-pylith::materials::ElasticPlaneStress::_nondimInitState(double* const values,
-							const int nvalues) const
-{ // _nondimInitState
-  assert(0 != _normalizer);
-  assert(0 != values);
-  assert(nvalues == _ElasticPlaneStress::numInitialStateDBValues);
-
-  const double pressureScale = _normalizer->pressureScale();
-  _normalizer->nondimensionalize(values, nvalues, pressureScale);
-
-  PetscLogFlops(nvalues);
-} // _nondimInitState
-
-// ----------------------------------------------------------------------
-// Dimensionalize initial state.
-void
-pylith::materials::ElasticPlaneStress::_dimInitState(double* const values,
-						     const int nvalues) const
-{ // _dimInitState
-  assert(0 != _normalizer);
-  assert(0 != values);
-  assert(nvalues == _ElasticPlaneStress::numInitialStateDBValues);
-  
-  const double pressureScale = _normalizer->pressureScale();
-  _normalizer->dimensionalize(values, nvalues, pressureScale);
-
-  PetscLogFlops(nvalues);
-} // _dimInitState
-
-// ----------------------------------------------------------------------
 // Compute density at location from properties.
 void
 pylith::materials::ElasticPlaneStress::_calcDensity(double* const density,
 						    const double* properties,
-						    const int numProperties)
+						    const int numProperties,
+						    const double* stateVars,
+						    const int numStateVars)
 { // calcDensity
   assert(0 != density);
   assert(0 != properties);
-  assert(_totalPropsQuadPt == numProperties);
+  assert(_numPropsQuadPt == numProperties);
+  assert(0 == numStateVars);
 
-  density[0] = properties[_ElasticPlaneStress::pidDensity];
+  density[0] = properties[p_density];
 } // calcDensity
 
 // ----------------------------------------------------------------------
@@ -234,64 +212,82 @@
 						   const int stressSize,
 						   const double* properties,
 						   const int numProperties,
+						   const double* stateVars,
+						   const int numStateVars,
 						   const double* totalStrain,
 						   const int strainSize,
-						   const double* initialState,
-						   const int initialStateSize,
+						   const double* initialStress,
+						   const int initialStressSize,
+						   const double* initialStrain,
+						   const int initialStrainSize,
 						   const bool computeStateVars)
 { // _calcStress
   assert(0 != stress);
   assert(_ElasticPlaneStress::tensorSize == stressSize);
   assert(0 != properties);
-  assert(_totalPropsQuadPt == numProperties);
+  assert(_numPropsQuadPt == numProperties);
+  assert(0 == numStateVars);
   assert(0 != totalStrain);
   assert(_ElasticPlaneStress::tensorSize == strainSize);
-  assert(_ElasticPlaneStress::tensorSize == initialStateSize);
+  assert(0 != initialStress);
+  assert(_ElasticPlaneStress::tensorSize == initialStressSize);
+  assert(0 != initialStrain);
+  assert(_ElasticPlaneStress::tensorSize == initialStrainSize);
 
-  const double density = properties[_ElasticPlaneStress::pidDensity];
-  const double mu = properties[_ElasticPlaneStress::pidMu];
-  const double lambda = properties[_ElasticPlaneStress::pidLambda];
+  const double density = properties[p_density];
+  const double mu = properties[p_mu];
+  const double lambda = properties[p_lambda];
 
   const double mu2 = 2.0 * mu;
   const double lambda2mu = lambda + mu2;
   const double lambdamu = lambda + mu;
   
-  const double e11 = totalStrain[0];
-  const double e22 = totalStrain[1];
-  const double e12 = totalStrain[2];
+  const double e11 = totalStrain[0] + initialStrain[0];
+  const double e22 = totalStrain[1] + initialStrain[1];
+  const double e12 = totalStrain[2] + initialStrain[2];
 
-  stress[0] = (2.0*mu2*lambdamu * e11 + mu2*lambda * e22) / lambda2mu + initialState[0];
-  stress[1] = (mu2*lambda * e11 + 2.0*mu2*lambdamu * e22) / lambda2mu + initialState[1];
-  stress[2] = mu2 * e12 + initialState[2];
+  stress[0] = 
+    (2.0*mu2*lambdamu * e11 + mu2*lambda * e22) / lambda2mu + initialStress[0];
+  stress[1] =
+    (mu2*lambda * e11 + 2.0*mu2*lambdamu * e22) / lambda2mu + initialStress[1];
+  stress[2] = mu2 * e12 + initialStress[2];
 
-  PetscLogFlops(18);
+  PetscLogFlops(21);
 } // _calcStress
 
 // ----------------------------------------------------------------------
 // Compute density at location from properties.
 void
 pylith::materials::ElasticPlaneStress::_calcElasticConsts(
-						  double* const elasticConsts,
-						  const int numElasticConsts,
-						  const double* properties,
-						  const int numProperties,
-						  const double* totalStrain,
-						  const int strainSize,
-						  const double* initialState,
-						  const int initialStateSize)
+					     double* const elasticConsts,
+					     const int numElasticConsts,
+					     const double* properties,
+					     const int numProperties,
+					     const double* stateVars,
+					     const int numStateVars,
+					     const double* totalStrain,
+					     const int strainSize,
+					     const double* initialStress,
+					     const int initialStressSize,
+					     const double* initialStrain,
+					     const int initialStrainSize)
 { // calcElasticConsts
   assert(0 != elasticConsts);
   assert(_ElasticPlaneStress::numElasticConsts == numElasticConsts);
   assert(0 != properties);
-  assert(_totalPropsQuadPt == numProperties);
+  assert(_numPropsQuadPt == numProperties);
+  assert(0 == numStateVars);
   assert(0 != totalStrain);
   assert(_ElasticPlaneStress::tensorSize == strainSize);
-  assert(_ElasticPlaneStress::tensorSize == initialStateSize);
+  assert(0 != initialStress);
+  assert(_ElasticPlaneStress::tensorSize == initialStressSize);
+  assert(0 != initialStrain);
+  assert(_ElasticPlaneStress::tensorSize == initialStrainSize);
+ 
+  const double density = properties[p_density];
+  const double mu = properties[p_mu];
+  const double lambda = properties[p_lambda];
 
-  const double density = properties[_ElasticPlaneStress::pidDensity];
-  const double mu = properties[_ElasticPlaneStress::pidMu];
-  const double lambda = properties[_ElasticPlaneStress::pidLambda];
-  
   const double mu2 = 2.0 * mu;
   const double lambda2mu = lambda + mu2;
   const double c11 = 2.0 * mu2 * (lambda + mu) / lambda2mu;
@@ -309,8 +305,11 @@
 // ----------------------------------------------------------------------
 // Get stable time step for implicit time integration.
 double
-pylith::materials::ElasticPlaneStress::_stableTimeStepImplicit(const double* properties,
-				 const int numProperties) const
+pylith::materials::ElasticPlaneStress::_stableTimeStepImplicit(
+				     const double* properties,
+				     const int numProperties,
+				     const double* stateVars,
+				     const int numStateVars) const
 { // _stableTimeStepImplicit
   return pylith::PYLITH_MAXDOUBLE;
 } // _stableTimeStepImplicit

Modified: short/3D/PyLith/branches/pylith-swig/libsrc/materials/ElasticPlaneStress.hh
===================================================================
--- short/3D/PyLith/branches/pylith-swig/libsrc/materials/ElasticPlaneStress.hh	2009-02-23 00:25:34 UTC (rev 14117)
+++ short/3D/PyLith/branches/pylith-swig/libsrc/materials/ElasticPlaneStress.hh	2009-02-23 03:08:39 UTC (rev 14118)
@@ -25,17 +25,10 @@
 #if !defined(pylith_materials_elasticplanestress_hh)
 #define pylith_materials_elasticplanestress_hh
 
-#include "ElasticMaterial.hh"
+// Include directives ---------------------------------------------------
+#include "ElasticMaterial.hh" // ISA ElasticMaterial
 
-/// Namespace for pylith package
-namespace pylith {
-  namespace materials {
-    class ElasticPlaneStress;
-    class TestElasticPlaneStress; // unit testing
-  } // materials
-} // pylith
-
-/// 2-D, isotropic, linear elastic material for plane stress.
+// ElasticPlaneStrain ---------------------------------------------------
 class pylith::materials::ElasticPlaneStress : public ElasticMaterial
 { // class ElasticPlaneStress
   friend class TestElasticPlaneStress; // unit testing
@@ -60,7 +53,7 @@
    * @param propValues Array of property values.
    * @param dbValues Array of database values.
    */
-  void _dbToProperties(double* const propertyValues,
+  void _dbToProperties(double* const propValues,
 		       const double_array& dbValues) const;
 
   /** Nondimensionalize properties.
@@ -79,22 +72,6 @@
   void _dimProperties(double* const values,
 		      const int nvalues) const;
 
-  /** Nondimensionalize initial state.
-   *
-   * @param values Array of initial state values.
-   * @param nvalues Number of values.
-   */
-  void _nondimInitState(double* const values,
-			const int nvalues) const;
-
-  /** Dimensionalize initial state.
-   *
-   * @param values Array of initial state values.
-   * @param nvalues Number of values.
-   */
-  void _dimInitState(double* const values,
-		     const int nvalues) const;
-
   /** Compute density from properties.
    *
    * @param density Array for density.
@@ -103,31 +80,42 @@
    */
   void _calcDensity(double* const density,
 		    const double* properties,
-		    const int numProperties);
+		    const int numProperties,
+		    const double* stateVars,
+		    const int numStateVars);
 
-  /** Compute stress tensor from properties. If the state variables
-   * are from the previous time step, then the computeStateVars flag
-   * should be set to true so that the state variables are updated
-   * (but not stored) when computing the stresses.
+  /** Compute stress tensor from properties and state variables. If
+   * the state variables are from the previous time step, then the
+   * computeStateVars flag should be set to true so that the state
+   * variables are updated (but not stored) when computing the
+   * stresses.
    *
    * @param stress Array for stress tensor.
    * @param stressSize Size of stress tensor.
    * @param properties Properties at location.
    * @param numProperties Number of properties.
+   * @param stateVars State variables at location.
+   * @param numStateVars Number of state variables.
    * @param totalStrain Total strain at location.
    * @param strainSize Size of strain tensor.
-   * @param initialState Initial state values.
-   * @param initialStateSize Size of initial state array.
-   * @param computeStateVars Flag indicating to compute updated state vars.
+   * @param initialStress Initial stress tensor at location.
+   * @param initialStressSize Size of initial stress array.
+   * @param initialStrain Initial strain tensor at location.
+   * @param initialStrainSize Size of initial strain array.
+   * @param computeStateVars Flag indicating to compute updated state variables.
    */
   void _calcStress(double* const stress,
 		   const int stressSize,
 		   const double* properties,
 		   const int numProperties,
+		   const double* stateVars,
+		   const int numStateVars,
 		   const double* totalStrain,
 		   const int strainSize,
-		   const double* initialState,
-		   const int initialStateSize,
+		   const double* initialStress,
+		   const int initialStressSize,
+		   const double* initialStrain,
+		   const int initialStrainSize,
 		   const bool computeStateVars);
 
   /** Compute derivatives of elasticity matrix from properties.
@@ -136,27 +124,52 @@
    * @param numElasticConsts Number of elastic constants.
    * @param properties Properties at location.
    * @param numProperties Number of properties.
+   * @param stateVars State variables at location.
+   * @param numStateVars Number of state variables.
    * @param totalStrain Total strain at location.
    * @param strainSize Size of strain tensor.
-   * @param initialState Initial state values.
-   * @param initialStateSize Size of initial state array.
+   * @param initialStress Initial stress tensor at location.
+   * @param initialStressSize Size of initial stress array.
+   * @param initialStrain Initial strain tensor at location.
+   * @param initialStrainSize Size of initial strain array.
    */
   void _calcElasticConsts(double* const elasticConsts,
 			  const int numElasticConsts,
 			  const double* properties,
 			  const int numProperties,
+			  const double* stateVars,
+			  const int numStateVars,
 			  const double* totalStrain,
 			  const int strainSize,
-		          const double* initialState,
-		          const int initialStateSize);
+			  const double* initialStress,
+			  const int initialStressSize,
+			  const double* initialStrain,
+			  const int initialStrainSize);
 
   /** Get stable time step for implicit time integration.
    *
+   * @param properties Properties at location.
+   * @param numProperties Number of properties.
+   * @param stateVars State variables at location.
+   * @param numStateVars Number of state variables.
+   *
    * @returns Time step
    */
   double _stableTimeStepImplicit(const double* properties,
-				 const int numProperties) const;
+				 const int numProperties,
+				 const double* stateVars,
+				 const int numStateVars) const;
 
+  // PRIVATE MEMBERS ////////////////////////////////////////////////////
+private :
+
+  static const int p_density;
+  static const int p_mu;
+  static const int p_lambda;
+  static const int db_density;
+  static const int db_vs;
+  static const int db_vp;
+
   // NOT IMPLEMENTED ////////////////////////////////////////////////////
 private :
 

Modified: short/3D/PyLith/branches/pylith-swig/libsrc/materials/ElasticStrain1D.cc
===================================================================
--- short/3D/PyLith/branches/pylith-swig/libsrc/materials/ElasticStrain1D.cc	2009-02-23 00:25:34 UTC (rev 14117)
+++ short/3D/PyLith/branches/pylith-swig/libsrc/materials/ElasticStrain1D.cc	2009-02-23 03:08:39 UTC (rev 14118)
@@ -14,6 +14,9 @@
 
 #include "ElasticStrain1D.hh" // implementation of object methods
 
+#include "Metadata.hh" // USES Metadata
+
+#include "pylith/utils/array.hh" // USES double_array
 #include "pylith/utils/constdefs.h" // USES MAXDOUBLE
 
 #include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
@@ -21,12 +24,17 @@
 #include "petsc.h" // USES PetscLogFlops
 
 #include <cassert> // USES assert()
+#include <sstream> // USES std::ostringstream
+#include <stdexcept> // USES std::runtime_error
 
 // ----------------------------------------------------------------------
 namespace pylith {
   namespace materials {
     namespace _ElasticStrain1D {
 
+      // Dimension of material.
+      const int dimension = 1;
+
       /// Number of entries in stress tensor.
       const int tensorSize = 1;
 
@@ -36,47 +44,52 @@
       /// Number of physical properties.
       const int numProperties = 3;
 
-      /// Physical properties.
-      const Material::PropMetaData properties[] = {
-	{ "density", 1, OTHER_FIELD },
-	{ "mu", 1, OTHER_FIELD },
-	{ "lambda", 1, OTHER_FIELD },
+      // Physical properties.
+      const Metadata::ParamDescription properties[] = {
+	{ "density", 1, pylith::topology::FieldBase::SCALAR },
+	{ "mu", 1, pylith::topology::FieldBase::SCALAR },
+	{ "lambda", 1, pylith::topology::FieldBase::SCALAR },
       };
-      /// Indices of physical properties
-      const int pidDensity = 0;
-      const int pidMu = pidDensity + 1;
-      const int pidLambda = pidMu + 1;
 
-      /// Values expected in spatial database
-      const int numDBValues = 3;
-      const char* namesDBValues[] = { "density", "vs", "vp" };      
+      // Values expected in spatial database
+      const int numDBProperties = 3;
+      const char* dbProperties[] = { "density", "vs", "vp" };      
       
-      /// Indices of database values
-      const int didDensity = 0;
-      const int didVs = 1;
-      const int didVp = 2;
-
-      /// Initial state values expected in spatial database.
-      const int numInitialStateDBValues = tensorSize;
-      const char* namesInitialStateDBValues[] = { "stress_xx" };
-      
     } // _ElasticStrain1D
   } // materials
 } // pylith
 
+// Indices of physical properties
+const int pylith::materials::ElasticStrain1D::p_density = 0;
 
+const int pylith::materials::ElasticStrain1D::p_mu = 
+  pylith::materials::ElasticStrain1D::p_density + 1;
+
+const int pylith::materials::ElasticStrain1D::p_lambda = 
+  pylith::materials::ElasticStrain1D::p_mu + 1;
+
+// Indices of database values (order must match dbProperties)
+const int pylith::materials::ElasticStrain1D::db_density = 0;
+
+const int pylith::materials::ElasticStrain1D::db_vs = 
+  pylith::materials::ElasticStrain1D::db_density + 1;
+
+const int pylith::materials::ElasticStrain1D::db_vp = 
+  pylith::materials::ElasticStrain1D::db_vs + 1;
+
 // ----------------------------------------------------------------------
 // Default constructor.
 pylith::materials::ElasticStrain1D::ElasticStrain1D(void) :
-  ElasticMaterial(_ElasticStrain1D::tensorSize,
+  ElasticMaterial(_ElasticStrain1D::dimension,
+		  _ElasticStrain1D::tensorSize,
 		  _ElasticStrain1D::numElasticConsts,
-		  _ElasticStrain1D::namesDBValues,
-		  _ElasticStrain1D::namesInitialStateDBValues,
-		  _ElasticStrain1D::numDBValues,
-		  _ElasticStrain1D::properties,
-		  _ElasticStrain1D::numProperties)
+		  Metadata(_ElasticStrain1D::properties,
+			   _ElasticStrain1D::numProperties,
+			   _ElasticStrain1D::dbProperties,
+			   _ElasticStrain1D::numDBProperties,
+			   0, 0,
+			   0, 0))
 { // constructor
-  _dimension = 1;
 } // constructor
 
 // ----------------------------------------------------------------------
@@ -94,12 +107,12 @@
 { // _dbToProperties
   assert(0 != propValues);
   const int numDBValues = dbValues.size();
-  assert(_ElasticStrain1D::numDBValues == numDBValues);
+  assert(_ElasticStrain1D::numDBProperties == numDBValues);
 
-  const double density = dbValues[_ElasticStrain1D::didDensity];
-  const double vp = dbValues[_ElasticStrain1D::didVp];
-  const double vs = dbValues[_ElasticStrain1D::didVs];
-
+  const double density = dbValues[db_density];
+  const double vs = dbValues[db_vs];
+  const double vp = dbValues[db_vp];
+ 
   if (density <= 0.0 || vs <= 0.0 || vp <= 0.0) {
     std::ostringstream msg;
     msg << "Spatial database returned nonpositive value for physical "
@@ -122,9 +135,9 @@
     throw std::runtime_error(msg.str());
   } // if
 
-  propValues[_ElasticStrain1D::pidDensity] = density;
-  propValues[_ElasticStrain1D::pidMu] = mu;
-  propValues[_ElasticStrain1D::pidLambda] = lambda;
+  propValues[p_density] = density;
+  propValues[p_mu] = mu;
+  propValues[p_lambda] = lambda;
 
   PetscLogFlops(6);
 } // _dbToProperties
@@ -141,16 +154,14 @@
 
   const double densityScale = _normalizer->densityScale();
   const double pressureScale = _normalizer->pressureScale();
-  values[_ElasticStrain1D::pidDensity] = 
-    _normalizer->nondimensionalize(values[_ElasticStrain1D::pidDensity],
-				   densityScale);
-  values[_ElasticStrain1D::pidMu] = 
-    _normalizer->nondimensionalize(values[_ElasticStrain1D::pidMu],
-				   pressureScale);
-  values[_ElasticStrain1D::pidLambda] = 
-    _normalizer->nondimensionalize(values[_ElasticStrain1D::pidLambda],
-				   pressureScale);
 
+  values[p_density] = 
+    _normalizer->nondimensionalize(values[p_density], densityScale);
+  values[p_mu] = 
+    _normalizer->nondimensionalize(values[p_mu], pressureScale);
+  values[p_lambda] = 
+    _normalizer->nondimensionalize(values[p_lambda], pressureScale);
+
   PetscLogFlops(3);
 } // _nondimProperties
 
@@ -166,121 +177,105 @@
 
   const double densityScale = _normalizer->densityScale();
   const double pressureScale = _normalizer->pressureScale();
-  values[_ElasticStrain1D::pidDensity] = 
-    _normalizer->dimensionalize(values[_ElasticStrain1D::pidDensity],
-				   densityScale);
-  values[_ElasticStrain1D::pidMu] = 
-    _normalizer->dimensionalize(values[_ElasticStrain1D::pidMu],
-				   pressureScale);
-  values[_ElasticStrain1D::pidLambda] = 
-    _normalizer->dimensionalize(values[_ElasticStrain1D::pidLambda],
-				   pressureScale);
 
+  values[p_density] = 
+    _normalizer->dimensionalize(values[p_density], densityScale);
+  values[p_mu] = 
+    _normalizer->dimensionalize(values[p_mu], pressureScale);
+  values[p_lambda] = 
+    _normalizer->dimensionalize(values[p_lambda], pressureScale);
+
   PetscLogFlops(3);
 } // _dimProperties
 
 // ----------------------------------------------------------------------
-// Nondimensionalize initial state.
-void
-pylith::materials::ElasticStrain1D::_nondimInitState(double* const values,
-							const int nvalues) const
-{ // _nondimInitState
-  assert(0 != _normalizer);
-  assert(0 != values);
-  assert(nvalues == _ElasticStrain1D::numInitialStateDBValues);
-
-  const double pressureScale = _normalizer->pressureScale();
-  _normalizer->nondimensionalize(values, nvalues, pressureScale);
-
-  PetscLogFlops(nvalues);
-} // _nondimInitState
-
-// ----------------------------------------------------------------------
-// Dimensionalize initial state.
-void
-pylith::materials::ElasticStrain1D::_dimInitState(double* const values,
-						     const int nvalues) const
-{ // _dimInitState
-  assert(0 != _normalizer);
-  assert(0 != values);
-  assert(nvalues == _ElasticStrain1D::numInitialStateDBValues);
-  
-  const double pressureScale = _normalizer->pressureScale();
-  _normalizer->dimensionalize(values, nvalues, pressureScale);
-
-  PetscLogFlops(nvalues);
-} // _dimInitState
-
-// ----------------------------------------------------------------------
 // Compute density at location from properties.
 void
 pylith::materials::ElasticStrain1D::_calcDensity(double* const density,
 						 const double* properties,
-						 const int numProperties)
+						 const int numProperties,
+						 const double* stateVars,
+						 const int numStateVars)
 { // _calcDensity
   assert(0 != density);
   assert(0 != properties);
-  assert(_totalPropsQuadPt == numProperties);
+  assert(_numPropsQuadPt == numProperties);
+  assert(0 == numStateVars);
 
-  density[0] = properties[_ElasticStrain1D::pidDensity];
+  density[0] = properties[p_density];
 } // _calcDensity
 
 // ----------------------------------------------------------------------
 // Compute stress tensor at location from properties.
 void
-pylith::materials::ElasticStrain1D::_calcStress(
-				   double* const stress,
-				   const int stressSize,
-				   const double* properties,
-				   const int numProperties,
-				   const double* totalStrain,
-				   const int strainSize,
-				   const double* initialState,
-				   const int initialStateSize,
-				   const bool computeStateVars)
+pylith::materials::ElasticStrain1D::_calcStress(double* const stress,
+						const int stressSize,
+						const double* properties,
+						const int numProperties,
+						const double* stateVars,
+						const int numStateVars,
+						const double* totalStrain,
+						const int strainSize,
+						const double* initialStress,
+						const int initialStressSize,
+						const double* initialStrain,
+						const int initialStrainSize,
+						const bool computeStateVars)
 { // _calcStress
   assert(0 != stress);
   assert(_ElasticStrain1D::tensorSize == stressSize);
   assert(0 != properties);
-  assert(_totalPropsQuadPt == numProperties);
+  assert(_numPropsQuadPt == numProperties);
+  assert(0 == numStateVars);
   assert(0 != totalStrain);
   assert(_ElasticStrain1D::tensorSize == strainSize);
-  assert(_ElasticStrain1D::tensorSize == initialStateSize);
+  assert(0 != initialStress);
+  assert(_ElasticStrain1D::tensorSize == initialStressSize);
+  assert(0 != initialStrain);
+  assert(_ElasticStrain1D::tensorSize == initialStrainSize);
 
-  const double density = properties[_ElasticStrain1D::pidDensity];
-  const double lambda = properties[_ElasticStrain1D::pidLambda];
-  const double mu = properties[_ElasticStrain1D::pidMu];
+  const double density = properties[p_density];
+  const double mu = properties[p_mu];
+  const double lambda = properties[p_lambda];
 
-  const double e11 = totalStrain[0];
-  stress[0] = (lambda + 2.0*mu) * e11 + initialState[0];
+  const double e11 = totalStrain[0] + initialStrain[0];
+  stress[0] = (lambda + 2.0*mu) * e11 + initialStress[0];
 
-  PetscLogFlops(4);
+  PetscLogFlops(5);
 } // _calcStress
 
 // ----------------------------------------------------------------------
 // Compute derivative of elasticity matrix at location from properties.
 void
 pylith::materials::ElasticStrain1D::_calcElasticConsts(
-				   double* const elasticConsts,
-				   const int numElasticConsts,
-				   const double* properties,
-				   const int numProperties,
-				   const double* totalStrain,
-				   const int strainSize,
-				   const double* initialState,
-				   const int initialStateSize)
+					     double* const elasticConsts,
+					     const int numElasticConsts,
+					     const double* properties,
+					     const int numProperties,
+					     const double* stateVars,
+					     const int numStateVars,
+					     const double* totalStrain,
+					     const int strainSize,
+					     const double* initialStress,
+					     const int initialStressSize,
+					     const double* initialStrain,
+					     const int initialStrainSize)
 { // _calcElasticConsts
   assert(0 != elasticConsts);
   assert(_ElasticStrain1D::numElasticConsts == numElasticConsts);
   assert(0 != properties);
-  assert(_totalPropsQuadPt == numProperties);
+  assert(_numPropsQuadPt == numProperties);
+  assert(0 == numStateVars);
   assert(0 != totalStrain);
   assert(_ElasticStrain1D::tensorSize == strainSize);
-  assert(_ElasticStrain1D::tensorSize == initialStateSize);
+  assert(0 != initialStress);
+  assert(_ElasticStrain1D::tensorSize == initialStressSize);
+  assert(0 != initialStrain);
+  assert(_ElasticStrain1D::tensorSize == initialStrainSize);
  
-  const double density = properties[_ElasticStrain1D::pidDensity];
-  const double lambda = properties[_ElasticStrain1D::pidLambda];
-  const double mu = properties[_ElasticStrain1D::pidMu];
+  const double density = properties[p_density];
+  const double mu = properties[p_mu];
+  const double lambda = properties[p_lambda];
 
   elasticConsts[0] = lambda + 2.0*mu;
 
@@ -290,8 +285,11 @@
 // ----------------------------------------------------------------------
 // Get stable time step for implicit time integration.
 double
-pylith::materials::ElasticStrain1D::_stableTimeStepImplicit(const double* properties,
-				 const int numProperties) const
+pylith::materials::ElasticStrain1D::_stableTimeStepImplicit(
+					      const double* properties,
+					      const int numProperties,
+					      const double* stateVars,
+					      const int numStateVars) const
 { // _stableTimeStepImplicit
   return pylith::PYLITH_MAXDOUBLE;
 } // _stableTimeStepImplicit

Modified: short/3D/PyLith/branches/pylith-swig/libsrc/materials/ElasticStrain1D.hh
===================================================================
--- short/3D/PyLith/branches/pylith-swig/libsrc/materials/ElasticStrain1D.hh	2009-02-23 00:25:34 UTC (rev 14117)
+++ short/3D/PyLith/branches/pylith-swig/libsrc/materials/ElasticStrain1D.hh	2009-02-23 03:08:39 UTC (rev 14118)
@@ -24,17 +24,10 @@
 #if !defined(pylith_materials_elasticstrain1d_hh)
 #define pylith_materials_elasticstrain1d_hh
 
-#include "ElasticMaterial.hh"
+// Include directives ---------------------------------------------------
+#include "ElasticMaterial.hh" // ISA ElasticMaterial
 
-/// Namespace for pylith package
-namespace pylith {
-  namespace materials {
-    class ElasticStrain1D;
-    class TestElasticStrain1D; // unit testing
-  } // materials
-} // pylith
-
-/// 3-D, linear elastic material with axial strain.
+// ElasticStrain1D ------------------------------------------------------
 class pylith::materials::ElasticStrain1D : public ElasticMaterial
 { // class ElasticStrain1D
   friend class TestElasticStrain1D; // unit testing
@@ -78,22 +71,6 @@
   void _dimProperties(double* const values,
 		      const int nvalues) const;
 
-  /** Nondimensionalize initial state.
-   *
-   * @param values Array of initial state values.
-   * @param nvalues Number of values.
-   */
-  void _nondimInitState(double* const values,
-			const int nvalues) const;
-
-  /** Dimensionalize initial state.
-   *
-   * @param values Array of initial state values.
-   * @param nvalues Number of values.
-   */
-  void _dimInitState(double* const values,
-		     const int nvalues) const;
-
   /** Compute density from properties.
    *
    * @param density Array for density.
@@ -102,31 +79,42 @@
    */
   void _calcDensity(double* const density,
 		    const double* properties,
-		    const int numProperties);
+		    const int numProperties,
+		    const double* stateVars,
+		    const int numStateVars);
 
-  /** Compute stress tensor from properties. If the state variables
-   * are from the previous time step, then the computeStateVars flag
-   * should be set to true so that the state variables are updated
-   * (but not stored) when computing the stresses.
+  /** Compute stress tensor from properties and state variables. If
+   * the state variables are from the previous time step, then the
+   * computeStateVars flag should be set to true so that the state
+   * variables are updated (but not stored) when computing the
+   * stresses.
    *
    * @param stress Array for stress tensor.
    * @param stressSize Size of stress tensor.
    * @param properties Properties at location.
    * @param numProperties Number of properties.
+   * @param stateVars State variables at location.
+   * @param numStateVars Number of state variables.
    * @param totalStrain Total strain at location.
    * @param strainSize Size of strain tensor.
-   * @param initialState Initial state values.
-   * @param initialStateSize Size of initial state array.
-   * @param computeStateVars Flag indicating to compute updated state vars.
+   * @param initialStress Initial stress tensor at location.
+   * @param initialStressSize Size of initial stress array.
+   * @param initialStrain Initial strain tensor at location.
+   * @param initialStrainSize Size of initial strain array.
+   * @param computeStateVars Flag indicating to compute updated state variables.
    */
   void _calcStress(double* const stress,
 		   const int stressSize,
 		   const double* properties,
 		   const int numProperties,
+		   const double* stateVars,
+		   const int numStateVars,
 		   const double* totalStrain,
 		   const int strainSize,
-		   const double* initialState,
-		   const int initialStateSize,
+		   const double* initialStress,
+		   const int initialStressSize,
+		   const double* initialStrain,
+		   const int initialStrainSize,
 		   const bool computeStateVars);
 
   /** Compute derivatives of elasticity matrix from properties.
@@ -135,27 +123,52 @@
    * @param numElasticConsts Number of elastic constants.
    * @param properties Properties at location.
    * @param numProperties Number of properties.
+   * @param stateVars State variables at location.
+   * @param numStateVars Number of state variables.
    * @param totalStrain Total strain at location.
    * @param strainSize Size of strain tensor.
-   * @param initialState Initial state values.
-   * @param initialStateSize Size of initial state array.
+   * @param initialStress Initial stress tensor at location.
+   * @param initialStressSize Size of initial stress array.
+   * @param initialStrain Initial strain tensor at location.
+   * @param initialStrainSize Size of initial strain array.
    */
   void _calcElasticConsts(double* const elasticConsts,
 			  const int numElasticConsts,
 			  const double* properties,
 			  const int numProperties,
+			  const double* stateVars,
+			  const int numStateVars,
 			  const double* totalStrain,
 			  const int strainSize,
-			  const double* initialState,
-			  const int initialStateSize);
+			  const double* initialStress,
+			  const int initialStressSize,
+			  const double* initialStrain,
+			  const int initialStrainSize);
 
   /** Get stable time step for implicit time integration.
    *
+   * @param properties Properties at location.
+   * @param numProperties Number of properties.
+   * @param stateVars State variables at location.
+   * @param numStateVars Number of state variables.
+   *
    * @returns Time step
    */
   double _stableTimeStepImplicit(const double* properties,
-				 const int numProperties) const;
+				 const int numProperties,
+				 const double* stateVars,
+				 const int numStateVars) const;
 
+  // PRIVATE MEMBERS ////////////////////////////////////////////////////
+private :
+
+  static const int p_density;
+  static const int p_mu;
+  static const int p_lambda;
+  static const int db_density;
+  static const int db_vs;
+  static const int db_vp;
+
   // NOT IMPLEMENTED ////////////////////////////////////////////////////
 private :
 

Modified: short/3D/PyLith/branches/pylith-swig/libsrc/materials/ElasticStress1D.cc
===================================================================
--- short/3D/PyLith/branches/pylith-swig/libsrc/materials/ElasticStress1D.cc	2009-02-23 00:25:34 UTC (rev 14117)
+++ short/3D/PyLith/branches/pylith-swig/libsrc/materials/ElasticStress1D.cc	2009-02-23 03:08:39 UTC (rev 14118)
@@ -14,6 +14,9 @@
 
 #include "ElasticStress1D.hh" // implementation of object methods
 
+#include "Metadata.hh" // USES Metadata
+
+#include "pylith/utils/array.hh" // USES double_array
 #include "pylith/utils/constdefs.h" // USES MAXDOUBLE
 
 #include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
@@ -21,12 +24,17 @@
 #include "petsc.h" // USES PetscLogFlops
 
 #include <cassert> // USES assert()
+#include <sstream> // USES std::ostringstream
+#include <stdexcept> // USES std::runtime_error
 
 // ----------------------------------------------------------------------
 namespace pylith {
   namespace materials {
     namespace _ElasticStress1D {
 
+      // Dimension of material.
+      const int dimension = 1;
+
       /// Number of entries in stress tensor.
       const int tensorSize = 1;
 
@@ -36,46 +44,52 @@
       /// Number of physical properties.
       const int numProperties = 3;
 
-      /// Physical properties.
-      const Material::PropMetaData properties[] = {
-	{ "density", 1, OTHER_FIELD },
-	{ "mu", 1, OTHER_FIELD },
-	{ "lambda", 1, OTHER_FIELD },
+      // Physical properties.
+      const Metadata::ParamDescription properties[] = {
+	{ "density", 1, pylith::topology::FieldBase::SCALAR },
+	{ "mu", 1, pylith::topology::FieldBase::SCALAR },
+	{ "lambda", 1, pylith::topology::FieldBase::SCALAR },
       };
-      /// Indices of physical properties
-      const int pidDensity = 0;
-      const int pidMu = pidDensity + 1;
-      const int pidLambda = pidMu + 1;
 
-      /// Values expected in spatial database
-      const int numDBValues = 3;
-      const char* namesDBValues[] = { "density", "vs", "vp" };      
+      // Values expected in spatial database
+      const int numDBProperties = 3;
+      const char* dbProperties[] = { "density", "vs", "vp" };      
       
-      /// Indices of database values
-      const int didDensity = 0;
-      const int didVs = 1;
-      const int didVp = 2;
-
-      /// Initial state values expected in spatial database
-     const int numInitialStateDBValues = tensorSize;
-     const char* namesInitialStateDBValues[] = { "stress_xx" };
-
     } // _ElasticStress1D
   } // materials
 } // pylith
 
+// Indices of physical properties
+const int pylith::materials::ElasticStress1D::p_density = 0;
+
+const int pylith::materials::ElasticStress1D::p_mu = 
+  pylith::materials::ElasticStress1D::p_density + 1;
+
+const int pylith::materials::ElasticStress1D::p_lambda = 
+  pylith::materials::ElasticStress1D::p_mu + 1;
+
+// Indices of database values (order must match dbProperties)
+const int pylith::materials::ElasticStress1D::db_density = 0;
+
+const int pylith::materials::ElasticStress1D::db_vs = 
+  pylith::materials::ElasticStress1D::db_density + 1;
+
+const int pylith::materials::ElasticStress1D::db_vp = 
+  pylith::materials::ElasticStress1D::db_vs + 1;
+
 // ----------------------------------------------------------------------
 // Default constructor.
 pylith::materials::ElasticStress1D::ElasticStress1D(void) :
-  ElasticMaterial(_ElasticStress1D::tensorSize,
+  ElasticMaterial(_ElasticStress1D::dimension,
+		  _ElasticStress1D::tensorSize,
 		  _ElasticStress1D::numElasticConsts,
-		  _ElasticStress1D::namesDBValues,
-		  _ElasticStress1D::namesInitialStateDBValues,
-		  _ElasticStress1D::numDBValues,
-		  _ElasticStress1D::properties,
-		  _ElasticStress1D::numProperties)
+		  Metadata(_ElasticStress1D::properties,
+			   _ElasticStress1D::numProperties,
+			   _ElasticStress1D::dbProperties,
+			   _ElasticStress1D::numDBProperties,
+			   0, 0,
+			   0, 0))
 { // constructor
-  _dimension = 1;
 } // constructor
 
 // ----------------------------------------------------------------------
@@ -88,16 +102,16 @@
 // Compute parameters from values in spatial database.
 void
 pylith::materials::ElasticStress1D::_dbToProperties(
-					      double* const propValues,
-					      const double_array& dbValues) const
+					    double* const propValues,
+					    const double_array& dbValues) const
 { // _dbToProperties
   assert(0 != propValues);
   const int numDBValues = dbValues.size();
-  assert(_ElasticStress1D::numDBValues == numDBValues);
+  assert(_ElasticStress1D::numDBProperties == numDBValues);
 
-  const double density = dbValues[_ElasticStress1D::didDensity];
-  const double vs = dbValues[_ElasticStress1D::didVs];
-  const double vp = dbValues[_ElasticStress1D::didVp];
+  const double density = dbValues[db_density];
+  const double vs = dbValues[db_vs];
+  const double vp = dbValues[db_vp];
  
   if (density <= 0.0 || vs <= 0.0 || vp <= 0.0) {
     std::ostringstream msg;
@@ -121,9 +135,9 @@
     throw std::runtime_error(msg.str());
   } // if
 
-  propValues[_ElasticStress1D::pidDensity] = density;
-  propValues[_ElasticStress1D::pidMu] = mu;
-  propValues[_ElasticStress1D::pidLambda] = lambda;
+  propValues[p_density] = density;
+  propValues[p_mu] = mu;
+  propValues[p_lambda] = lambda;
 
   PetscLogFlops(6);
 } // _dbToProperties
@@ -132,7 +146,7 @@
 // Nondimensionalize properties.
 void
 pylith::materials::ElasticStress1D::_nondimProperties(double* const values,
-							 const int nvalues) const
+						      const int nvalues) const
 { // _nondimProperties
   assert(0 != _normalizer);
   assert(0 != values);
@@ -140,16 +154,14 @@
 
   const double densityScale = _normalizer->densityScale();
   const double pressureScale = _normalizer->pressureScale();
-  values[_ElasticStress1D::pidDensity] = 
-    _normalizer->nondimensionalize(values[_ElasticStress1D::pidDensity],
-				   densityScale);
-  values[_ElasticStress1D::pidMu] = 
-    _normalizer->nondimensionalize(values[_ElasticStress1D::pidMu],
-				   pressureScale);
-  values[_ElasticStress1D::pidLambda] = 
-    _normalizer->nondimensionalize(values[_ElasticStress1D::pidLambda],
-				   pressureScale);
 
+  values[p_density] = 
+    _normalizer->nondimensionalize(values[p_density], densityScale);
+  values[p_mu] = 
+    _normalizer->nondimensionalize(values[p_mu], pressureScale);
+  values[p_lambda] = 
+    _normalizer->nondimensionalize(values[p_lambda], pressureScale);
+
   PetscLogFlops(3);
 } // _nondimProperties
 
@@ -165,63 +177,32 @@
 
   const double densityScale = _normalizer->densityScale();
   const double pressureScale = _normalizer->pressureScale();
-  values[_ElasticStress1D::pidDensity] = 
-    _normalizer->dimensionalize(values[_ElasticStress1D::pidDensity],
-				   densityScale);
-  values[_ElasticStress1D::pidMu] = 
-    _normalizer->dimensionalize(values[_ElasticStress1D::pidMu],
-				   pressureScale);
-  values[_ElasticStress1D::pidLambda] = 
-    _normalizer->dimensionalize(values[_ElasticStress1D::pidLambda],
-				   pressureScale);
 
+  values[p_density] = 
+    _normalizer->dimensionalize(values[p_density], densityScale);
+  values[p_mu] = 
+    _normalizer->dimensionalize(values[p_mu], pressureScale);
+  values[p_lambda] = 
+    _normalizer->dimensionalize(values[p_lambda], pressureScale);
+
   PetscLogFlops(3);
 } // _dimProperties
 
 // ----------------------------------------------------------------------
-// Nondimensionalize initial state.
-void
-pylith::materials::ElasticStress1D::_nondimInitState(double* const values,
-							const int nvalues) const
-{ // _nondimInitState
-  assert(0 != _normalizer);
-  assert(0 != values);
-  assert(nvalues == _ElasticStress1D::numInitialStateDBValues);
-
-  const double pressureScale = _normalizer->pressureScale();
-  _normalizer->nondimensionalize(values, nvalues, pressureScale);
-
-  PetscLogFlops(nvalues);
-} // _nondimInitState
-
-// ----------------------------------------------------------------------
-// Dimensionalize initial state.
-void
-pylith::materials::ElasticStress1D::_dimInitState(double* const values,
-						     const int nvalues) const
-{ // _dimInitState
-  assert(0 != _normalizer);
-  assert(0 != values);
-  assert(nvalues == _ElasticStress1D::numInitialStateDBValues);
-  
-  const double pressureScale = _normalizer->pressureScale();
-  _normalizer->dimensionalize(values, nvalues, pressureScale);
-
-  PetscLogFlops(nvalues);
-} // _dimInitState
-
-// ----------------------------------------------------------------------
 // Compute density at location from properties.
 void
 pylith::materials::ElasticStress1D::_calcDensity(double* const density,
 						 const double* properties,
-						 const int numProperties)
+						 const int numProperties,
+						 const double* stateVars,
+						 const int numStateVars)
 { // _calcDensity
   assert(0 != density);
   assert(0 != properties);
-  assert(_totalPropsQuadPt == numProperties);
+  assert(_numPropsQuadPt == numProperties);
+  assert(0 == numStateVars);
 
-  density[0] = properties[_ElasticStress1D::pidDensity];
+  density[0] = properties[p_density];
 } // _calcDensity
 
 // ----------------------------------------------------------------------
@@ -231,54 +212,70 @@
 						const int stressSize,
 						const double* properties,
 						const int numProperties,
+						const double* stateVars,
+						const int numStateVars,
 						const double* totalStrain,
 						const int strainSize,
-						const double* initialState,
-						const int initialStateSize,
+						const double* initialStress,
+						const int initialStressSize,
+						const double* initialStrain,
+						const int initialStrainSize,
 						const bool computeStateVars)
 { // _calcStress
   assert(0 != stress);
   assert(_ElasticStress1D::tensorSize == stressSize);
   assert(0 != properties);
-  assert(_totalPropsQuadPt == numProperties);
+  assert(_numPropsQuadPt == numProperties);
+  assert(0 == numStateVars);
   assert(0 != totalStrain);
   assert(_ElasticStress1D::tensorSize == strainSize);
-  assert(_ElasticStress1D::tensorSize == initialStateSize);
+  assert(0 != initialStress);
+  assert(_ElasticStress1D::tensorSize == initialStressSize);
+  assert(0 != initialStrain);
+  assert(_ElasticStress1D::tensorSize == initialStrainSize);
 
-  const double density = properties[_ElasticStress1D::pidDensity];
-  const double mu = properties[_ElasticStress1D::pidMu];
-  const double lambda = properties[_ElasticStress1D::pidLambda];
+  const double density = properties[p_density];
+  const double mu = properties[p_mu];
+  const double lambda = properties[p_lambda];
 
-  const double e11 = totalStrain[0];
-  stress[0] = mu * (3.0*lambda+2.0*mu) / (lambda + mu) * e11 + initialState[0];
+  const double e11 = totalStrain[0] + initialStrain[0];
+  stress[0] = mu * (3.0*lambda+2.0*mu) / (lambda + mu) * e11 + initialStress[0];
 
-  PetscLogFlops(7);
+  PetscLogFlops(9);
 } // _calcStress
 
 // ----------------------------------------------------------------------
 // Compute derivative of elasticity matrix at location from properties.
 void
 pylith::materials::ElasticStress1D::_calcElasticConsts(
-				  double* const elasticConsts,
-				  const int numElasticConsts,
-				  const double* properties,
-				  const int numProperties,
-				  const double* totalStrain,
-				  const int strainSize,
-			          const double* initialState,
-			          const int initialStateSize)
+					     double* const elasticConsts,
+					     const int numElasticConsts,
+					     const double* properties,
+					     const int numProperties,
+					     const double* stateVars,
+					     const int numStateVars,
+					     const double* totalStrain,
+					     const int strainSize,
+					     const double* initialStress,
+					     const int initialStressSize,
+					     const double* initialStrain,
+					     const int initialStrainSize)
 { // _calcElasticConsts
   assert(0 != elasticConsts);
   assert(_ElasticStress1D::numElasticConsts == numElasticConsts);
   assert(0 != properties);
-  assert(_totalPropsQuadPt == numProperties);
+  assert(_numPropsQuadPt == numProperties);
+  assert(0 == numStateVars);
   assert(0 != totalStrain);
   assert(_ElasticStress1D::tensorSize == strainSize);
-  assert(_ElasticStress1D::tensorSize == initialStateSize);
+  assert(0 != initialStress);
+  assert(_ElasticStress1D::tensorSize == initialStressSize);
+  assert(0 != initialStrain);
+  assert(_ElasticStress1D::tensorSize == initialStrainSize);
  
-  const double density = properties[_ElasticStress1D::pidDensity];
-  const double mu = properties[_ElasticStress1D::pidMu];
-  const double lambda = properties[_ElasticStress1D::pidLambda];
+  const double density = properties[p_density];
+  const double mu = properties[p_mu];
+  const double lambda = properties[p_lambda];
 
   elasticConsts[0] = mu * (3.0*lambda+2.0*mu) / (lambda + mu);
 
@@ -288,8 +285,11 @@
 // ----------------------------------------------------------------------
 // Get stable time step for implicit time integration.
 double
-pylith::materials::ElasticStress1D::_stableTimeStepImplicit(const double* properties,
-				 const int numProperties) const
+pylith::materials::ElasticStress1D::_stableTimeStepImplicit(
+					      const double* properties,
+					      const int numProperties,
+					      const double* stateVars,
+					      const int numStateVars) const
 { // _stableTimeStepImplicit
   return pylith::PYLITH_MAXDOUBLE;
 } // _stableTimeStepImplicit

Modified: short/3D/PyLith/branches/pylith-swig/libsrc/materials/ElasticStress1D.hh
===================================================================
--- short/3D/PyLith/branches/pylith-swig/libsrc/materials/ElasticStress1D.hh	2009-02-23 00:25:34 UTC (rev 14117)
+++ short/3D/PyLith/branches/pylith-swig/libsrc/materials/ElasticStress1D.hh	2009-02-23 03:08:39 UTC (rev 14118)
@@ -25,17 +25,10 @@
 #if !defined(pylith_materials_elasticstress1d_hh)
 #define pylith_materials_elasticstress1d_hh
 
-#include "ElasticMaterial.hh"
+// Include directives ---------------------------------------------------
+#include "ElasticMaterial.hh" // ISA ElasticMaterial
 
-/// Namespace for pylith package
-namespace pylith {
-  namespace materials {
-    class ElasticStress1D;
-    class TestElasticStress1D; // unit testing
-  } // materials
-} // pylith
-
-/// 1-D, linear elastic material with axial stres.
+// ElasticStress1D ------------------------------------------------------
 class pylith::materials::ElasticStress1D : public ElasticMaterial
 { // class ElasticStress1D
   friend class TestElasticStress1D; // unit testing
@@ -79,22 +72,6 @@
   void _dimProperties(double* const values,
 		      const int nvalues) const;
 
-  /** Nondimensionalize initial state.
-   *
-   * @param values Array of initial state values.
-   * @param nvalues Number of values.
-   */
-  void _nondimInitState(double* const values,
-			const int nvalues) const;
-
-  /** Dimensionalize initial state.
-   *
-   * @param values Array of initial state values.
-   * @param nvalues Number of values.
-   */
-  void _dimInitState(double* const values,
-		     const int nvalues) const;
-
   /** Compute density from properties.
    *
    * @param density Array for density.
@@ -103,31 +80,42 @@
    */
   void _calcDensity(double* const density,
 		    const double* properties,
-		    const int numProperties);
+		    const int numProperties,
+		    const double* stateVars,
+		    const int numStateVars);
 
-  /** Compute stress tensor from properties. If the state variables
-   * are from the previous time step, then the computeStateVars flag
-   * should be set to true so that the state variables are updated
-   * (but not stored) when computing the stresses.
+  /** Compute stress tensor from properties and state variables. If
+   * the state variables are from the previous time step, then the
+   * computeStateVars flag should be set to true so that the state
+   * variables are updated (but not stored) when computing the
+   * stresses.
    *
    * @param stress Array for stress tensor.
    * @param stressSize Size of stress tensor.
    * @param properties Properties at location.
    * @param numProperties Number of properties.
+   * @param stateVars State variables at location.
+   * @param numStateVars Number of state variables.
    * @param totalStrain Total strain at location.
    * @param strainSize Size of strain tensor.
-   * @param initialState Initial state values.
-   * @param initialStateSize Size of initial state array.
-   * @param computeStateVars Flag indicating to compute updated state vars.
+   * @param initialStress Initial stress tensor at location.
+   * @param initialStressSize Size of initial stress array.
+   * @param initialStrain Initial strain tensor at location.
+   * @param initialStrainSize Size of initial strain array.
+   * @param computeStateVars Flag indicating to compute updated state variables.
    */
   void _calcStress(double* const stress,
 		   const int stressSize,
 		   const double* properties,
 		   const int numProperties,
+		   const double* stateVars,
+		   const int numStateVars,
 		   const double* totalStrain,
 		   const int strainSize,
-		   const double* initialState,
-		   const int initialStateSize,
+		   const double* initialStress,
+		   const int initialStressSize,
+		   const double* initialStrain,
+		   const int initialStrainSize,
 		   const bool computeStateVars);
 
   /** Compute derivatives of elasticity matrix from properties.
@@ -136,27 +124,52 @@
    * @param numElasticConsts Number of elastic constants.
    * @param properties Properties at location.
    * @param numProperties Number of properties.
+   * @param stateVars State variables at location.
+   * @param numStateVars Number of state variables.
    * @param totalStrain Total strain at location.
    * @param strainSize Size of strain tensor.
-   * @param initialState Initial state values.
-   * @param initialStateSize Size of initial state array.
+   * @param initialStress Initial stress tensor at location.
+   * @param initialStressSize Size of initial stress array.
+   * @param initialStrain Initial strain tensor at location.
+   * @param initialStrainSize Size of initial strain array.
    */
   void _calcElasticConsts(double* const elasticConsts,
 			  const int numElasticConsts,
 			  const double* properties,
 			  const int numProperties,
+			  const double* stateVars,
+			  const int numStateVars,
 			  const double* totalStrain,
 			  const int strainSize,
-		          const double* initialState,
-		          const int initialStateSize);
+			  const double* initialStress,
+			  const int initialStressSize,
+			  const double* initialStrain,
+			  const int initialStrainSize);
 
   /** Get stable time step for implicit time integration.
    *
+   * @param properties Properties at location.
+   * @param numProperties Number of properties.
+   * @param stateVars State variables at location.
+   * @param numStateVars Number of state variables.
+   *
    * @returns Time step
    */
   double _stableTimeStepImplicit(const double* properties,
-				 const int numProperties) const;
+				 const int numProperties,
+				 const double* stateVars,
+				 const int numStateVars) const;
 
+  // PRIVATE MEMBERS ////////////////////////////////////////////////////
+private :
+
+  static const int p_density;
+  static const int p_mu;
+  static const int p_lambda;
+  static const int db_density;
+  static const int db_vs;
+  static const int db_vp;
+
   // NOT IMPLEMENTED ////////////////////////////////////////////////////
 private :
 

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-23 00:25:34 UTC (rev 14117)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/Makefile.am	2009-02-23 03:08:39 UTC (rev 14118)
@@ -24,13 +24,13 @@
 	TestMetadata.cc \
 	TestMaterial.cc \
 	TestElasticMaterial.cc \
+	TestElasticStrain1D.cc \
+	TestElasticStress1D.cc \
+	TestElasticPlaneStrain.cc \
+	TestElasticPlaneStress.cc \
 	TestElasticIsotropic3D.cc \
 	test_materials.cc
 
-#	TestElasticPlaneStrain.cc \
-#	TestElasticPlaneStress.cc \
-#	TestElasticStrain1D.cc \
-#	TestElasticStress1D.cc \
 #	TestGenMaxwellIsotropic3D.cc \
 #	TestMaxwellIsotropic3D.cc 
 
@@ -51,12 +51,12 @@
 testmaterials_SOURCES += \
 	data/MaterialData.cc \
 	data/ElasticMaterialData.cc \
+	data/ElasticStrain1DData.cc \
+	data/ElasticStress1DData.cc \
+	data/ElasticPlaneStrainData.cc \
+	data/ElasticPlaneStressData.cc \
 	data/ElasticIsotropic3DData.cc 
 
-#	data/ElasticPlaneStrainData.cc \
-#	data/ElasticPlaneStressData.cc \
-#	data/ElasticStrain1DData.cc \
-#	data/ElasticStress1DData.cc \
 #	data/GenMaxwellIsotropic3DElasticData.cc \
 #	data/GenMaxwellIsotropic3DTimeDepData.cc \
 #	data/MaxwellIsotropic3DElasticData.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-23 00:25:34 UTC (rev 14117)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticIsotropic3D.cc	2009-02-23 03:08:39 UTC (rev 14118)
@@ -17,7 +17,6 @@
 #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 );
@@ -31,14 +30,7 @@
   _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);
+  setupNormalizer();
 } // setUp
 
 

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-23 00:25:34 UTC (rev 14117)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticIsotropic3D.hh	2009-02-23 03:08:39 UTC (rev 14118)
@@ -26,9 +26,7 @@
 /// Namespace for pylith package
 namespace pylith {
   namespace materials {
-    class ElasticIsotropic3D;
     class TestElasticIsotropic3D;
-    class ElasticIsotropic3DData;
   } // materials
 } // pylith
 

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-23 00:25:34 UTC (rev 14117)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticMaterial.cc	2009-02-23 03:08:39 UTC (rev 14118)
@@ -599,5 +599,19 @@
   CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, dt/dtE, tolerance);
 } // _testStableTimeStepImplicit
 
+// ----------------------------------------------------------------------
+// Setup nondimensionalization.
+void
+pylith::materials::TestElasticMaterial::setupNormalizer(void)
+{ // setupNormalizer
+  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);
+} // setupNormalizer
 
+
 // End of file 

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-23 00:25:34 UTC (rev 14117)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticMaterial.hh	2009-02-23 03:08:39 UTC (rev 14118)
@@ -111,7 +111,12 @@
   /// Test _stableTimeStepImplicit().
   void test_stableTimeStepImplicit(void);
 
+  // PROTECTED METHODS //////////////////////////////////////////////////
+protected :
 
+  /// Setup nondimensionalization.
+  void setupNormalizer(void);
+
   // PROTECTED MEMBERS //////////////////////////////////////////////////
 protected :
 

Modified: short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticPlaneStrain.cc
===================================================================
--- short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticPlaneStrain.cc	2009-02-23 00:25:34 UTC (rev 14117)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticPlaneStrain.cc	2009-02-23 03:08:39 UTC (rev 14118)
@@ -30,55 +30,8 @@
   _matElastic = new ElasticPlaneStrain();
   _data = new ElasticPlaneStrainData();
   _dataElastic = new ElasticPlaneStrainData();
+  setupNormalizer();
 } // setUp
 
-// ----------------------------------------------------------------------
-// Test usesUpdateProperties()
-void
-pylith::materials::TestElasticPlaneStrain::testUsesUpdateProperties(void)
-{ // testUsesUpdateProperties
-  ElasticPlaneStrain material;
-  CPPUNIT_ASSERT_EQUAL(false, material.usesUpdateProperties());
-} // testUsesUpdateProperties
 
-// ----------------------------------------------------------------------
-// Test updateProperties()
-void
-pylith::materials::TestElasticPlaneStrain::testUpdateProperties(void)
-{ // testUpdateProperties
-  ElasticPlaneStrain material;
-  ElasticPlaneStrainData 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(&parameters[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/TestElasticPlaneStrain.hh
===================================================================
--- short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticPlaneStrain.hh	2009-02-23 00:25:34 UTC (rev 14117)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticPlaneStrain.hh	2009-02-23 03:08:39 UTC (rev 14118)
@@ -26,9 +26,7 @@
 /// Namespace for pylith package
 namespace pylith {
   namespace materials {
-    class ElasticPlaneStrain;
     class TestElasticPlaneStrain;
-    class ElasticPlaneStrainData;
   } // materials
 } // pylith
 
@@ -40,16 +38,17 @@
   CPPUNIT_TEST_SUITE( TestElasticPlaneStrain );
 
   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 +57,6 @@
   /// Setup testing data.
   void setUp(void);
 
-  /// Test usesUpdateProperties().
-  void testUsesUpdateProperties(void);
-
-  /// Test updateProperties()
-  void testUpdateProperties(void);
-
 }; // class TestElasticPlaneStrain
 
 #endif // pylith_materials_testelasticplanestrain_hh

Modified: short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticPlaneStress.cc
===================================================================
--- short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticPlaneStress.cc	2009-02-23 00:25:34 UTC (rev 14117)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticPlaneStress.cc	2009-02-23 03:08:39 UTC (rev 14118)
@@ -30,55 +30,8 @@
   _matElastic = new ElasticPlaneStress();
   _data = new ElasticPlaneStressData();
   _dataElastic = new ElasticPlaneStressData();
+  setupNormalizer();
 } // setUp
 
-// ----------------------------------------------------------------------
-// Test usesUpdateProperties()
-void
-pylith::materials::TestElasticPlaneStress::testUsesUpdateProperties(void)
-{ // testUsesUpdateProperties
-  ElasticPlaneStress material;
-  CPPUNIT_ASSERT_EQUAL(false, material.usesUpdateProperties());
-} // testUsesUpdateProperties
 
-// ----------------------------------------------------------------------
-// Test updateProperties()
-void
-pylith::materials::TestElasticPlaneStress::testUpdateProperties(void)
-{ // testUpdateProperties
-  ElasticPlaneStress material;
-  ElasticPlaneStressData 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(&parameters[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/TestElasticPlaneStress.hh
===================================================================
--- short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticPlaneStress.hh	2009-02-23 00:25:34 UTC (rev 14117)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticPlaneStress.hh	2009-02-23 03:08:39 UTC (rev 14118)
@@ -26,9 +26,7 @@
 /// Namespace for pylith package
 namespace pylith {
   namespace materials {
-    class ElasticPlaneStress;
     class TestElasticPlaneStress;
-    class ElasticPlaneStressData;
   } // materials
 } // pylith
 
@@ -40,16 +38,17 @@
   CPPUNIT_TEST_SUITE( TestElasticPlaneStress );
 
   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 +57,6 @@
   /// Setup testing data.
   void setUp(void);
 
-  /// Test usesUpdateProperties().
-  void testUsesUpdateProperties(void);
-
-  /// Test updateProperties()
-  void testUpdateProperties(void);
-
 }; // class TestElasticPlaneStress
 
 #endif // pylith_materials_testelasticplanestress_hh

Modified: short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticStrain1D.cc
===================================================================
--- short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticStrain1D.cc	2009-02-23 00:25:34 UTC (rev 14117)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticStrain1D.cc	2009-02-23 03:08:39 UTC (rev 14118)
@@ -30,55 +30,8 @@
   _matElastic = new ElasticStrain1D();
   _data = new ElasticStrain1DData();
   _dataElastic = new ElasticStrain1DData();
+  setupNormalizer();
 } // setUp
 
-// ----------------------------------------------------------------------
-// Test usesUpdateProperties()
-void
-pylith::materials::TestElasticStrain1D::testUsesUpdateProperties(void)
-{ // testUsesUpdateProperties
-  ElasticStrain1D material;
-  CPPUNIT_ASSERT_EQUAL(false, material.usesUpdateProperties());
-} // testUsesUpdateProperties
 
-// ----------------------------------------------------------------------
-// Test updateProperties()
-void
-pylith::materials::TestElasticStrain1D::testUpdateProperties(void)
-{ // testUpdateProperties
-  ElasticStrain1D material;
-  ElasticStrain1DData 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 initialState(initialStateSize);
-  double_array totalStrain(tensorSize);
-  for (int i=0; i < tensorSize; ++i) {
-    totalStrain[i] = i;
-    initialState[i] = 0.1*i;
-  } // for
-  
-  material._updateProperties(&parameters[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/TestElasticStrain1D.hh
===================================================================
--- short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticStrain1D.hh	2009-02-23 00:25:34 UTC (rev 14117)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticStrain1D.hh	2009-02-23 03:08:39 UTC (rev 14118)
@@ -26,9 +26,7 @@
 /// Namespace for pylith package
 namespace pylith {
   namespace materials {
-    class ElasticStrain1D;
     class TestElasticStrain1D;
-    class ElasticStrain1DData;
   } // materials
 } // pylith
 
@@ -40,16 +38,17 @@
   CPPUNIT_TEST_SUITE( TestElasticStrain1D );
 
   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 +57,6 @@
   /// Setup testing data.
   void setUp(void);
 
-  /// Test usesUpdateProperties().
-  void testUsesUpdateProperties(void);
-
-  /// Test updateProperties()
-  void testUpdateProperties(void);
-
 }; // class TestElasticStrain1D
 
 #endif // pylith_materials_testelasticstrain1d_hh

Modified: short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticStress1D.cc
===================================================================
--- short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticStress1D.cc	2009-02-23 00:25:34 UTC (rev 14117)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticStress1D.cc	2009-02-23 03:08:39 UTC (rev 14118)
@@ -30,55 +30,8 @@
   _matElastic = new ElasticStress1D();
   _data = new ElasticStress1DData();
   _dataElastic = new ElasticStress1DData();
+  setupNormalizer();
 } // setUp
 
-// ----------------------------------------------------------------------
-// Test usesUpdateProperties()
-void
-pylith::materials::TestElasticStress1D::testUsesUpdateProperties(void)
-{ // testUsesUpdateProperties
-  ElasticStress1D material;
-  CPPUNIT_ASSERT_EQUAL(false, material.usesUpdateProperties());
-} // testUsesUpdateProperties
 
-// ----------------------------------------------------------------------
-// Test updateProperties()
-void
-pylith::materials::TestElasticStress1D::testUpdateProperties(void)
-{ // testUpdateProperties
-  ElasticStress1D material;
-  ElasticStress1DData 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(&parameters[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/TestElasticStress1D.hh
===================================================================
--- short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticStress1D.hh	2009-02-23 00:25:34 UTC (rev 14117)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/TestElasticStress1D.hh	2009-02-23 03:08:39 UTC (rev 14118)
@@ -26,9 +26,7 @@
 /// Namespace for pylith package
 namespace pylith {
   namespace materials {
-    class ElasticStress1D;
     class TestElasticStress1D;
-    class ElasticStress1DData;
   } // materials
 } // pylith
 
@@ -40,16 +38,17 @@
   CPPUNIT_TEST_SUITE( TestElasticStress1D );
 
   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 +57,6 @@
   /// Setup testing data.
   void setUp(void);
 
-  /// Test usesUpdateProperties().
-  void testUsesUpdateProperties(void);
-
-  /// Test updateProperties()
-  void testUpdateProperties(void);
-
 }; // class TestElasticStress1D
 
 #endif // pylith_materials_testelasticstress1d_hh

Modified: short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticPlaneStrain.py
===================================================================
--- short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticPlaneStrain.py	2009-02-23 00:25:34 UTC (rev 14117)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticPlaneStrain.py	2009-02-23 03:08:39 UTC (rev 14118)
@@ -20,6 +20,10 @@
 import numpy
 
 # ----------------------------------------------------------------------
+dimension = 2
+numElasticConsts = 6
+tensorSize = 3
+
 # ElasticPlaneStrain class
 class ElasticPlaneStrain(ElasticMaterialApp):
   """
@@ -35,66 +39,84 @@
     """
     ElasticMaterialApp.__init__(self, name)
 
-    self.dimension = 2
+    numLocs = 2
 
-    self.numDBValues = 3
-    self.numInitialStateValues = 3
-    self.dbValues = ["density", "vs", "vp"]
-    self.initialStateDBValues = ["stress_xx", "stress_yy", "stress_xy"]
-    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]
-    initialStateA = [1.2e4, 2.1e4, 3.2e4]
+    strainA = [1.1e-4, 1.2e-4, 1.3e-4]
+    initialStressA = [2.1e4, 2.2e4, 2.3e4]
+    initialStrainA = [3.1e-4, 3.2e-4, 3.3e-4]
+    muA = vsA*vsA*densityA
+    lambdaA = vpA*vpA*densityA - 2.0*muA
     
     densityB = 2000.0
     vsB = 1200.0
     vpB = vsB*3**0.5
-    strainB = [1.2e-4, 2.3e-4, 3.4e-4]
-    initialStateB = [2.1e4, 3.2e4, 4.3e4]
-
-    self.dbData = numpy.array([ [densityA, vsA, vpA],
-                                [densityB, vsB, vpB] ],
-                              dtype=numpy.float64)
-    muA = vsA*vsA*densityA
-    lambdaA = vpA*vpA*densityA - 2.0*muA
+    strainB = [4.1e-4, 4.2e-4, 4.3e-4]
+    initialStressB = [5.1e4, 5.2e4, 5.3e4]
+    initialStrainB = [6.1e-4, 6.2e-4, 6.3e-4]
     muB = vsB*vsB*densityB
     lambdaB = vpB*vpB*densityB - 2.0*muB
-    self.parameterData = numpy.array([ [densityA, muA, lambdaA],
-                                       [densityB, muB, lambdaB] ],
+
+    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)
+    self.properties = numpy.array([ [densityA, muA, lambdaA],                                                       [densityB, muB, lambdaB] ],
                                      dtype=numpy.float64)
 
-    self.initialStateDBData = numpy.array([initialStateA, initialStateB],
-                                          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.initialState = numpy.array([initialStateA, initialStateB],
-                                        dtype=numpy.float64)
+    self.initialStress = numpy.array([initialStressA,
+                                      initialStressB],
+                                    dtype=numpy.float64)
+    self.initialStrain = numpy.array([initialStrainA,
+                                      initialStrainB],
+                                    dtype=numpy.float64)
     
-    self.numLocs = 2
-    numElasticConsts = 6
-    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, 3), 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.
     """
@@ -108,13 +130,14 @@
                                  C2222, C2212,
                                  C1212], dtype=numpy.float64)
 
-    strain = numpy.reshape(strainV, (3,1))
+    strain = numpy.reshape(strainV, (tensorSize,1))
     elastic = numpy.array([ [C1111, C1122, C1112],
                             [C1122, C2222, C2212],
                             [C1112, C2212, C1212] ],
                           dtype=numpy.float64)
-    initialState = numpy.reshape(initialStateV, (3,1))
-    stress = numpy.dot(elastic, strain) + initialState
+    initialStress = numpy.reshape(initialStressV, (tensorSize,1))
+    initialStrain = numpy.reshape(initialStrainV, (tensorSize,1))
+    stress = numpy.dot(elastic, strain+initialStrain) + initialStress
     return (elasticConsts, numpy.ravel(stress))
   
 

Modified: short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticPlaneStrainData.cc
===================================================================
--- short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticPlaneStrainData.cc	2009-02-23 00:25:34 UTC (rev 14117)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticPlaneStrainData.cc	2009-02-23 03:08:39 UTC (rev 14118)
@@ -17,37 +17,47 @@
 
 const int pylith::materials::ElasticPlaneStrainData::_dimension = 2;
 
-const int pylith::materials::ElasticPlaneStrainData::_numDBValues = 3;
+const int pylith::materials::ElasticPlaneStrainData::_numLocs = 2;
 
-const int pylith::materials::ElasticPlaneStrainData::_numInitialStateValues = 3;
+const int pylith::materials::ElasticPlaneStrainData::_numProperties = 3;
 
-const int pylith::materials::ElasticPlaneStrainData::_numParameters = 3;
+const int pylith::materials::ElasticPlaneStrainData::_numStateVars = 0;
 
-const int pylith::materials::ElasticPlaneStrainData::_numParamsQuadPt = 3;
+const int pylith::materials::ElasticPlaneStrainData::_numDBProperties = 3;
 
-const int pylith::materials::ElasticPlaneStrainData::_numLocs = 2;
+const int pylith::materials::ElasticPlaneStrainData::_numDBStateVars = 0;
 
+const int pylith::materials::ElasticPlaneStrainData::_numPropsQuadPt = 3;
+
+const int pylith::materials::ElasticPlaneStrainData::_numVarsQuadPt = 0;
+
+const double pylith::materials::ElasticPlaneStrainData::_lengthScale =   1.00000000e+03;
+
+const double pylith::materials::ElasticPlaneStrainData::_timeScale =   1.00000000e+00;
+
+const double pylith::materials::ElasticPlaneStrainData::_pressureScale =   2.25000000e+10;
+
+const double pylith::materials::ElasticPlaneStrainData::_densityScale =   1.00000000e+03;
+
 const double pylith::materials::ElasticPlaneStrainData::_dtStableImplicit =   1.00000000e+30;
 
-const int pylith::materials::ElasticPlaneStrainData::_numParamValues[] = {
+const int pylith::materials::ElasticPlaneStrainData::_numPropertyValues[] = {
 1,
 1,
 1,
 };
 
-const char* pylith::materials::ElasticPlaneStrainData::_dbValues[] = {
+const int* pylith::materials::ElasticPlaneStrainData::_numStateVarValues = 0;
+
+const char* pylith::materials::ElasticPlaneStrainData::_dbPropertyValues[] = {
 "density",
 "vs",
 "vp",
 };
 
-const char* pylith::materials::ElasticPlaneStrainData::_initialStateDBValues[] = {
-"stress_xx",
-"stress_yy",
-"stress_xy",
-};
+const char** pylith::materials::ElasticPlaneStrainData::_dbStateVarValues = 0;
 
-const double pylith::materials::ElasticPlaneStrainData::_dbData[] = {
+const double pylith::materials::ElasticPlaneStrainData::_dbProperties[] = {
   2.50000000e+03,
   3.00000000e+03,
   5.19615242e+03,
@@ -56,16 +66,9 @@
   2.07846097e+03,
 };
 
-const double pylith::materials::ElasticPlaneStrainData::_initialStateDBData[] = {
-  1.20000000e+04,
-  2.10000000e+04,
-  3.20000000e+04,
-  2.10000000e+04,
-  3.20000000e+04,
-  4.30000000e+04,
-};
+const double* pylith::materials::ElasticPlaneStrainData::_dbStateVars = 0;
 
-const double pylith::materials::ElasticPlaneStrainData::_parameterData[] = {
+const double pylith::materials::ElasticPlaneStrainData::_properties[] = {
   2.50000000e+03,
   2.25000000e+10,
   2.25000000e+10,
@@ -74,15 +77,19 @@
   2.88000000e+09,
 };
 
-const double pylith::materials::ElasticPlaneStrainData::_initialState[] = {
-  1.20000000e+04,
-  2.10000000e+04,
-  3.20000000e+04,
-  2.10000000e+04,
-  3.20000000e+04,
-  4.30000000e+04,
+const double* pylith::materials::ElasticPlaneStrainData::_stateVars = 0;
+
+const double pylith::materials::ElasticPlaneStrainData::_propertiesNondim[] = {
+  2.50000000e+00,
+  1.00000000e+00,
+  1.00000000e+00,
+  2.00000000e+00,
+  1.28000000e-01,
+  1.28000000e-01,
 };
 
+const double* pylith::materials::ElasticPlaneStrainData::_stateVarsNondim = 0;
+
 const double pylith::materials::ElasticPlaneStrainData::_density[] = {
   2.50000000e+03,
   2.00000000e+03,
@@ -90,20 +97,20 @@
 
 const double pylith::materials::ElasticPlaneStrainData::_strain[] = {
   1.10000000e-04,
-  2.20000000e-04,
-  3.30000000e-04,
   1.20000000e-04,
-  2.30000000e-04,
-  3.40000000e-04,
+  1.30000000e-04,
+  4.10000000e-04,
+  4.20000000e-04,
+  4.30000000e-04,
 };
 
 const double pylith::materials::ElasticPlaneStrainData::_stress[] = {
-  1.23870000e+07,
-  1.73460000e+07,
-  1.48820000e+07,
-  1.72020000e+06,
-  2.36480000e+06,
-  2.00140000e+06,
+  3.82710000e+07,
+  3.91720000e+07,
+  2.07230000e+07,
+  1.18590000e+07,
+  1.19752000e+07,
+  6.15860000e+06,
 };
 
 const double pylith::materials::ElasticPlaneStrainData::_elasticConsts[] = {
@@ -121,26 +128,58 @@
   5.76000000e+09,
 };
 
+const double pylith::materials::ElasticPlaneStrainData::_initialStress[] = {
+  2.10000000e+04,
+  2.20000000e+04,
+  2.30000000e+04,
+  5.10000000e+04,
+  5.20000000e+04,
+  5.30000000e+04,
+};
+
+const double pylith::materials::ElasticPlaneStrainData::_initialStrain[] = {
+  3.10000000e-04,
+  3.20000000e-04,
+  3.30000000e-04,
+  6.10000000e-04,
+  6.20000000e-04,
+  6.30000000e-04,
+};
+
+const double* pylith::materials::ElasticPlaneStrainData::_stateVarsUpdated = 0;
+
 pylith::materials::ElasticPlaneStrainData::ElasticPlaneStrainData(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::ElasticPlaneStrainData::~ElasticPlaneStrainData(void)

Modified: short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticPlaneStrainData.hh
===================================================================
--- short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticPlaneStrainData.hh	2009-02-23 00:25:34 UTC (rev 14117)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticPlaneStrainData.hh	2009-02-23 03:08:39 UTC (rev 14118)
@@ -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_elasticplanestraindata_hh

Modified: short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticPlaneStress.py
===================================================================
--- short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticPlaneStress.py	2009-02-23 00:25:34 UTC (rev 14117)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticPlaneStress.py	2009-02-23 03:08:39 UTC (rev 14118)
@@ -20,6 +20,10 @@
 import numpy
 
 # ----------------------------------------------------------------------
+dimension = 2
+numElasticConsts = 6
+tensorSize = 3
+
 # ElasticPlaneStrain class
 class ElasticPlaneStrain(ElasticMaterialApp):
   """
@@ -35,65 +39,84 @@
     """
     ElasticMaterialApp.__init__(self, name)
 
-    self.dimension = 2
+    numLocs = 2
 
-    self.numDBValues = 3
-    self.numInitialStateValues = 3
-    self.dbValues = ["density", "vs", "vp"]
-    self.initialStateDBValues = ["stress_xx", "stress_yy", "stress_xy"]
-    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]
-    initialStateA = [1.2e4, 2.3e4, 3.2e4]
+    strainA = [1.1e-4, 1.2e-4, 1.3e-4]
+    initialStressA = [2.1e4, 2.2e4, 2.3e4]
+    initialStrainA = [3.1e-4, 3.2e-4, 3.3e-4]
+    muA = vsA*vsA*densityA
+    lambdaA = vpA*vpA*densityA - 2.0*muA
     
     densityB = 2000.0
     vsB = 1200.0
     vpB = vsB*3**0.5
-    strainB = [1.2e-4, 2.3e-4, 3.4e-4]
-    initialStateB = [2.1e4, 3.2e4, 4.3e4]
-
-    self.dbData = numpy.array([ [densityA, vsA, vpA],
-                                [densityB, vsB, vpB] ],
-                              dtype=numpy.float64)
-    muA = vsA*vsA*densityA
-    lambdaA = vpA*vpA*densityA - 2.0*muA
+    strainB = [4.1e-4, 4.2e-4, 4.3e-4]
+    initialStressB = [5.1e4, 5.2e4, 5.3e4]
+    initialStrainB = [6.1e-4, 6.2e-4, 6.3e-4]
     muB = vsB*vsB*densityB
     lambdaB = vpB*vpB*densityB - 2.0*muB
-    self.parameterData = numpy.array([ [densityA, muA, lambdaA],
-                                       [densityB, muB, lambdaB] ],
+
+    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)
+    self.properties = numpy.array([ [densityA, muA, lambdaA],                                                       [densityB, muB, lambdaB] ],
                                      dtype=numpy.float64)
 
-    self.initialStateDBData = numpy.array([initialStateA, initialStateB],
-                                          dtype=numpy.float64)
-    self.initialState = numpy.array([initialStateA, initialStateB],
+    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)
+    self.initialStrain = numpy.array([initialStrainA,
+                                      initialStrainB],
+                                    dtype=numpy.float64)
     
-    self.numLocs = 2
-    numElasticConsts = 6
-    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, 3), 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.
     """
@@ -107,13 +130,14 @@
                                  C2222, C2212,
                                  C1212], dtype=numpy.float64)
 
-    strain = numpy.reshape(strainV, (3,1))
-    initialState = numpy.reshape(initialStateV, (3,1))
+    strain = numpy.reshape(strainV, (tensorSize,1))
+    initialStress = numpy.reshape(initialStressV, (tensorSize,1))
+    initialStrain = numpy.reshape(initialStrainV, (tensorSize,1))
     elastic = numpy.array([ [C1111, C1122, C1112],
                             [C1122, C2222, C2212],
                             [C1112, C2212, C1212] ],
                           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/branches/pylith-swig/unittests/libtests/materials/data/ElasticPlaneStressData.cc
===================================================================
--- short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticPlaneStressData.cc	2009-02-23 00:25:34 UTC (rev 14117)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticPlaneStressData.cc	2009-02-23 03:08:39 UTC (rev 14118)
@@ -17,37 +17,47 @@
 
 const int pylith::materials::ElasticPlaneStressData::_dimension = 2;
 
-const int pylith::materials::ElasticPlaneStressData::_numDBValues = 3;
+const int pylith::materials::ElasticPlaneStressData::_numLocs = 2;
 
-const int pylith::materials::ElasticPlaneStressData::_numInitialStateValues = 3;
+const int pylith::materials::ElasticPlaneStressData::_numProperties = 3;
 
-const int pylith::materials::ElasticPlaneStressData::_numParameters = 3;
+const int pylith::materials::ElasticPlaneStressData::_numStateVars = 0;
 
-const int pylith::materials::ElasticPlaneStressData::_numParamsQuadPt = 3;
+const int pylith::materials::ElasticPlaneStressData::_numDBProperties = 3;
 
-const int pylith::materials::ElasticPlaneStressData::_numLocs = 2;
+const int pylith::materials::ElasticPlaneStressData::_numDBStateVars = 0;
 
+const int pylith::materials::ElasticPlaneStressData::_numPropsQuadPt = 3;
+
+const int pylith::materials::ElasticPlaneStressData::_numVarsQuadPt = 0;
+
+const double pylith::materials::ElasticPlaneStressData::_lengthScale =   1.00000000e+03;
+
+const double pylith::materials::ElasticPlaneStressData::_timeScale =   1.00000000e+00;
+
+const double pylith::materials::ElasticPlaneStressData::_pressureScale =   2.25000000e+10;
+
+const double pylith::materials::ElasticPlaneStressData::_densityScale =   1.00000000e+03;
+
 const double pylith::materials::ElasticPlaneStressData::_dtStableImplicit =   1.00000000e+30;
 
-const int pylith::materials::ElasticPlaneStressData::_numParamValues[] = {
+const int pylith::materials::ElasticPlaneStressData::_numPropertyValues[] = {
 1,
 1,
 1,
 };
 
-const char* pylith::materials::ElasticPlaneStressData::_dbValues[] = {
+const int* pylith::materials::ElasticPlaneStressData::_numStateVarValues = 0;
+
+const char* pylith::materials::ElasticPlaneStressData::_dbPropertyValues[] = {
 "density",
 "vs",
 "vp",
 };
 
-const char* pylith::materials::ElasticPlaneStressData::_initialStateDBValues[] = {
-"stress_xx",
-"stress_yy",
-"stress_xy",
-};
+const char** pylith::materials::ElasticPlaneStressData::_dbStateVarValues = 0;
 
-const double pylith::materials::ElasticPlaneStressData::_dbData[] = {
+const double pylith::materials::ElasticPlaneStressData::_dbProperties[] = {
   2.50000000e+03,
   3.00000000e+03,
   5.19615242e+03,
@@ -56,16 +66,9 @@
   2.07846097e+03,
 };
 
-const double pylith::materials::ElasticPlaneStressData::_initialStateDBData[] = {
-  1.20000000e+04,
-  2.30000000e+04,
-  3.20000000e+04,
-  2.10000000e+04,
-  3.20000000e+04,
-  4.30000000e+04,
-};
+const double* pylith::materials::ElasticPlaneStressData::_dbStateVars = 0;
 
-const double pylith::materials::ElasticPlaneStressData::_parameterData[] = {
+const double pylith::materials::ElasticPlaneStressData::_properties[] = {
   2.50000000e+03,
   2.25000000e+10,
   2.25000000e+10,
@@ -74,15 +77,19 @@
   2.88000000e+09,
 };
 
-const double pylith::materials::ElasticPlaneStressData::_initialState[] = {
-  1.20000000e+04,
-  2.30000000e+04,
-  3.20000000e+04,
-  2.10000000e+04,
-  3.20000000e+04,
-  4.30000000e+04,
+const double* pylith::materials::ElasticPlaneStressData::_stateVars = 0;
+
+const double pylith::materials::ElasticPlaneStressData::_propertiesNondim[] = {
+  2.50000000e+00,
+  1.00000000e+00,
+  1.00000000e+00,
+  2.00000000e+00,
+  1.28000000e-01,
+  1.28000000e-01,
 };
 
+const double* pylith::materials::ElasticPlaneStressData::_stateVarsNondim = 0;
+
 const double pylith::materials::ElasticPlaneStressData::_density[] = {
   2.50000000e+03,
   2.00000000e+03,
@@ -90,20 +97,20 @@
 
 const double pylith::materials::ElasticPlaneStressData::_strain[] = {
   1.10000000e-04,
-  2.20000000e-04,
-  3.30000000e-04,
   1.20000000e-04,
-  2.30000000e-04,
-  3.40000000e-04,
+  1.30000000e-04,
+  4.10000000e-04,
+  4.20000000e-04,
+  4.30000000e-04,
 };
 
 const double pylith::materials::ElasticPlaneStressData::_stress[] = {
-  9.91200000e+06,
-  1.48730000e+07,
-  1.48820000e+07,
-  1.38420000e+06,
-  2.02880000e+06,
-  2.00140000e+06,
+  3.18210000e+07,
+  3.27220000e+07,
+  2.07230000e+07,
+  9.88140000e+06,
+  9.99760000e+06,
+  6.15860000e+06,
 };
 
 const double pylith::materials::ElasticPlaneStressData::_elasticConsts[] = {
@@ -121,26 +128,58 @@
   5.76000000e+09,
 };
 
+const double pylith::materials::ElasticPlaneStressData::_initialStress[] = {
+  2.10000000e+04,
+  2.20000000e+04,
+  2.30000000e+04,
+  5.10000000e+04,
+  5.20000000e+04,
+  5.30000000e+04,
+};
+
+const double pylith::materials::ElasticPlaneStressData::_initialStrain[] = {
+  3.10000000e-04,
+  3.20000000e-04,
+  3.30000000e-04,
+  6.10000000e-04,
+  6.20000000e-04,
+  6.30000000e-04,
+};
+
+const double* pylith::materials::ElasticPlaneStressData::_stateVarsUpdated = 0;
+
 pylith::materials::ElasticPlaneStressData::ElasticPlaneStressData(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::ElasticPlaneStressData::~ElasticPlaneStressData(void)

Modified: short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticPlaneStressData.hh
===================================================================
--- short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticPlaneStressData.hh	2009-02-23 00:25:34 UTC (rev 14117)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticPlaneStressData.hh	2009-02-23 03:08:39 UTC (rev 14118)
@@ -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_elasticplanestressdata_hh

Modified: short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticStrain1D.py
===================================================================
--- short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticStrain1D.py	2009-02-23 00:25:34 UTC (rev 14117)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticStrain1D.py	2009-02-23 03:08:39 UTC (rev 14118)
@@ -20,6 +20,10 @@
 import numpy
 
 # ----------------------------------------------------------------------
+dimension = 1
+numElasticConsts = 1
+tensorSize = 1
+
 # ElasticStrain1D class
 class ElasticStrain1D(ElasticMaterialApp):
   """
@@ -35,78 +39,96 @@
     """
     ElasticMaterialApp.__init__(self, name)
 
-    self.dimension = 1
+    numLocs = 2
 
-    self.numDBValues = 3
-    self.numInitialStateValues = 1
-    self.dbValues = ["density", "vs", "vp"]
-    self.initialStateDBValues = ["stress_xx"]
-    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]
-    initialStateA = [1.2e4]
+    initialStressA = [2.1e4]
+    initialStrainA = [3.1e-4]
+    muA = vsA*vsA*densityA
+    lambdaA = vpA*vpA*densityA - 2.0*muA
     
     densityB = 2000.0
     vsB = 1200.0
     vpB = vsB*3**0.5
-    strainB = [1.2e-4]
-    initialStateB = [2.1e4]
-
-    self.dbData = numpy.array([ [densityA, vsA, vpA],
-                                [densityB, vsB, vpB] ],
-                              dtype=numpy.float64)
-    muA = vsA*vsA*densityA
-    lambdaA = vpA*vpA*densityA - 2.0*muA
-    lambda2muA = lambdaA + 2.0*muA
+    strainB = [4.1e-4]
+    initialStressB = [5.1e4]
+    initialStrainB = [6.1e-4]
     muB = vsB*vsB*densityB
     lambdaB = vpB*vpB*densityB - 2.0*muB
-    lambda2muB = lambdaB + 2.0*muB
-    self.parameterData = numpy.array([ [densityA, muA, lambdaA],
-                                       [densityB, muB, lambdaB] ],
+
+    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)
+    self.properties = numpy.array([ [densityA, muA, lambdaA],                                                       [densityB, muB, lambdaB] ],
                                      dtype=numpy.float64)
 
-    self.initialStateDBData = numpy.array([initialStateA, initialStateB],
-                                          dtype=numpy.float64)
-    self.initialState = numpy.array([initialStateA, initialStateB],
+    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)
-        
-    self.numLocs = 2
-    numElasticConsts = 1
-    self.density = numpy.array([densityA, densityB],
+    self.initialStrain = numpy.array([initialStrainA,
+                                      initialStrainB],
+                                    dtype=numpy.float64)
+    
+    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, 1), 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, lambda2muA,
-                                               initialStateA)
-    (self.elasticConsts[1,:], self.stress[1,:]) = \
-                              self._calcStress(strainB, densityB, lambda2muB,
-                                               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, lambda2muV, initialStateV):
+  def _calcStress(self, strainV, densityV, muV, lambdaV, 
+                  initialStressV, initialStrainV):
     """
     Compute stress and derivative of elasticity matrix.
     """
-    C1111 = lambda2muV
+    C1111 = lambdaV + 2.0*muV
     elasticConsts = numpy.array([C1111], dtype=numpy.float64)
 
     strain = numpy.reshape(strainV, (1,1))
-    initialState = numpy.reshape(initialStateV, (1,1))
+    initialStress = numpy.reshape(initialStressV, (1,1))
+    initialStrain = numpy.reshape(initialStrainV, (1,1))
     elastic = numpy.array([ [C1111] ],
                           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/branches/pylith-swig/unittests/libtests/materials/data/ElasticStrain1DData.cc
===================================================================
--- short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticStrain1DData.cc	2009-02-23 00:25:34 UTC (rev 14117)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticStrain1DData.cc	2009-02-23 03:08:39 UTC (rev 14118)
@@ -17,35 +17,47 @@
 
 const int pylith::materials::ElasticStrain1DData::_dimension = 1;
 
-const int pylith::materials::ElasticStrain1DData::_numDBValues = 3;
+const int pylith::materials::ElasticStrain1DData::_numLocs = 2;
 
-const int pylith::materials::ElasticStrain1DData::_numInitialStateValues = 1;
+const int pylith::materials::ElasticStrain1DData::_numProperties = 3;
 
-const int pylith::materials::ElasticStrain1DData::_numParameters = 3;
+const int pylith::materials::ElasticStrain1DData::_numStateVars = 0;
 
-const int pylith::materials::ElasticStrain1DData::_numParamsQuadPt = 3;
+const int pylith::materials::ElasticStrain1DData::_numDBProperties = 3;
 
-const int pylith::materials::ElasticStrain1DData::_numLocs = 2;
+const int pylith::materials::ElasticStrain1DData::_numDBStateVars = 0;
 
+const int pylith::materials::ElasticStrain1DData::_numPropsQuadPt = 3;
+
+const int pylith::materials::ElasticStrain1DData::_numVarsQuadPt = 0;
+
+const double pylith::materials::ElasticStrain1DData::_lengthScale =   1.00000000e+03;
+
+const double pylith::materials::ElasticStrain1DData::_timeScale =   1.00000000e+00;
+
+const double pylith::materials::ElasticStrain1DData::_pressureScale =   2.25000000e+10;
+
+const double pylith::materials::ElasticStrain1DData::_densityScale =   1.00000000e+03;
+
 const double pylith::materials::ElasticStrain1DData::_dtStableImplicit =   1.00000000e+30;
 
-const int pylith::materials::ElasticStrain1DData::_numParamValues[] = {
+const int pylith::materials::ElasticStrain1DData::_numPropertyValues[] = {
 1,
 1,
 1,
 };
 
-const char* pylith::materials::ElasticStrain1DData::_dbValues[] = {
+const int* pylith::materials::ElasticStrain1DData::_numStateVarValues = 0;
+
+const char* pylith::materials::ElasticStrain1DData::_dbPropertyValues[] = {
 "density",
 "vs",
 "vp",
 };
 
-const char* pylith::materials::ElasticStrain1DData::_initialStateDBValues[] = {
-"stress_xx",
-};
+const char** pylith::materials::ElasticStrain1DData::_dbStateVarValues = 0;
 
-const double pylith::materials::ElasticStrain1DData::_dbData[] = {
+const double pylith::materials::ElasticStrain1DData::_dbProperties[] = {
   2.50000000e+03,
   3.00000000e+03,
   5.19615242e+03,
@@ -54,12 +66,9 @@
   2.07846097e+03,
 };
 
-const double pylith::materials::ElasticStrain1DData::_initialStateDBData[] = {
-  1.20000000e+04,
-  2.10000000e+04,
-};
+const double* pylith::materials::ElasticStrain1DData::_dbStateVars = 0;
 
-const double pylith::materials::ElasticStrain1DData::_parameterData[] = {
+const double pylith::materials::ElasticStrain1DData::_properties[] = {
   2.50000000e+03,
   2.25000000e+10,
   2.25000000e+10,
@@ -68,11 +77,19 @@
   2.88000000e+09,
 };
 
-const double pylith::materials::ElasticStrain1DData::_initialState[] = {
-  1.20000000e+04,
-  2.10000000e+04,
+const double* pylith::materials::ElasticStrain1DData::_stateVars = 0;
+
+const double pylith::materials::ElasticStrain1DData::_propertiesNondim[] = {
+  2.50000000e+00,
+  1.00000000e+00,
+  1.00000000e+00,
+  2.00000000e+00,
+  1.28000000e-01,
+  1.28000000e-01,
 };
 
+const double* pylith::materials::ElasticStrain1DData::_stateVarsNondim = 0;
+
 const double pylith::materials::ElasticStrain1DData::_density[] = {
   2.50000000e+03,
   2.00000000e+03,
@@ -80,12 +97,12 @@
 
 const double pylith::materials::ElasticStrain1DData::_strain[] = {
   1.10000000e-04,
-  1.20000000e-04,
+  4.10000000e-04,
 };
 
 const double pylith::materials::ElasticStrain1DData::_stress[] = {
-  7.43700000e+06,
-  1.05780000e+06,
+  2.83710000e+07,
+  8.86380000e+06,
 };
 
 const double pylith::materials::ElasticStrain1DData::_elasticConsts[] = {
@@ -93,26 +110,50 @@
   8.64000000e+09,
 };
 
+const double pylith::materials::ElasticStrain1DData::_initialStress[] = {
+  2.10000000e+04,
+  5.10000000e+04,
+};
+
+const double pylith::materials::ElasticStrain1DData::_initialStrain[] = {
+  3.10000000e-04,
+  6.10000000e-04,
+};
+
+const double* pylith::materials::ElasticStrain1DData::_stateVarsUpdated = 0;
+
 pylith::materials::ElasticStrain1DData::ElasticStrain1DData(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::ElasticStrain1DData::~ElasticStrain1DData(void)

Modified: short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticStrain1DData.hh
===================================================================
--- short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticStrain1DData.hh	2009-02-23 00:25:34 UTC (rev 14117)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticStrain1DData.hh	2009-02-23 03:08:39 UTC (rev 14118)
@@ -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_elasticstrain1ddata_hh

Modified: short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticStress1D.py
===================================================================
--- short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticStress1D.py	2009-02-23 00:25:34 UTC (rev 14117)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticStress1D.py	2009-02-23 03:08:39 UTC (rev 14118)
@@ -20,6 +20,10 @@
 import numpy
 
 # ----------------------------------------------------------------------
+dimension = 1
+numElasticConsts = 1
+tensorSize = 1
+
 # ElasticStress1D class
 class ElasticStress1D(ElasticMaterialApp):
   """
@@ -35,65 +39,84 @@
     """
     ElasticMaterialApp.__init__(self, name)
 
-    self.dimension = 1
+    numLocs = 2
 
-    self.numDBValues = 3
-    self.numInitialStateValues = 1
-    self.dbValues = ["density", "vs", "vp"]
-    self.initialStateDBValues = ["stress_xx"]
-    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]
-    initialStateA = [1.2e4]
+    initialStressA = [2.1e4]
+    initialStrainA = [3.1e-4]
+    muA = vsA*vsA*densityA
+    lambdaA = vpA*vpA*densityA - 2.0*muA
     
     densityB = 2000.0
     vsB = 1200.0
     vpB = vsB*3**0.5
-    strainB = [1.2e-4]
-    initialStateB = [2.1e4]
-
-    self.dbData = numpy.array([ [densityA, vsA, vpA],
-                                [densityB, vsB, vpB] ],
-                              dtype=numpy.float64)
-    muA = vsA*vsA*densityA
-    lambdaA = vpA*vpA*densityA - 2.0*muA
+    strainB = [4.1e-4]
+    initialStressB = [5.1e4]
+    initialStrainB = [6.1e-4]
     muB = vsB*vsB*densityB
     lambdaB = vpB*vpB*densityB - 2.0*muB
-    self.parameterData = numpy.array([ [densityA, muA, lambdaA],
-                                       [densityB, muB, lambdaB] ],
+
+    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)
+    self.properties = numpy.array([ [densityA, muA, lambdaA],                                                       [densityB, muB, lambdaB] ],
                                      dtype=numpy.float64)
 
-    self.initialStateDBData = numpy.array([initialStateA, initialStateB],
-                                          dtype=numpy.float64)
-    self.initialState = numpy.array([initialStateA, initialStateB],
+    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)
+    self.initialStrain = numpy.array([initialStrainA,
+                                      initialStrainB],
+                                    dtype=numpy.float64)
     
-    self.numLocs = 2
-    numElasticConsts = 1
-    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, 1), 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.
     """
@@ -101,10 +124,11 @@
     elasticConsts = numpy.array([C1111], dtype=numpy.float64)
 
     strain = numpy.reshape(strainV, (1,1))
-    initialState = numpy.reshape(initialStateV, (1,1))
+    initialStress = numpy.reshape(initialStressV, (1,1))
+    initialStrain = numpy.reshape(initialStrainV, (1,1))
     elastic = numpy.array([ [C1111] ],
                           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/ElasticStress1DData.cc
===================================================================
--- short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticStress1DData.cc	2009-02-23 00:25:34 UTC (rev 14117)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticStress1DData.cc	2009-02-23 03:08:39 UTC (rev 14118)
@@ -17,35 +17,47 @@
 
 const int pylith::materials::ElasticStress1DData::_dimension = 1;
 
-const int pylith::materials::ElasticStress1DData::_numDBValues = 3;
+const int pylith::materials::ElasticStress1DData::_numLocs = 2;
 
-const int pylith::materials::ElasticStress1DData::_numInitialStateValues = 1;
+const int pylith::materials::ElasticStress1DData::_numProperties = 3;
 
-const int pylith::materials::ElasticStress1DData::_numParameters = 3;
+const int pylith::materials::ElasticStress1DData::_numStateVars = 0;
 
-const int pylith::materials::ElasticStress1DData::_numParamsQuadPt = 3;
+const int pylith::materials::ElasticStress1DData::_numDBProperties = 3;
 
-const int pylith::materials::ElasticStress1DData::_numLocs = 2;
+const int pylith::materials::ElasticStress1DData::_numDBStateVars = 0;
 
+const int pylith::materials::ElasticStress1DData::_numPropsQuadPt = 3;
+
+const int pylith::materials::ElasticStress1DData::_numVarsQuadPt = 0;
+
+const double pylith::materials::ElasticStress1DData::_lengthScale =   1.00000000e+03;
+
+const double pylith::materials::ElasticStress1DData::_timeScale =   1.00000000e+00;
+
+const double pylith::materials::ElasticStress1DData::_pressureScale =   2.25000000e+10;
+
+const double pylith::materials::ElasticStress1DData::_densityScale =   1.00000000e+03;
+
 const double pylith::materials::ElasticStress1DData::_dtStableImplicit =   1.00000000e+30;
 
-const int pylith::materials::ElasticStress1DData::_numParamValues[] = {
+const int pylith::materials::ElasticStress1DData::_numPropertyValues[] = {
 1,
 1,
 1,
 };
 
-const char* pylith::materials::ElasticStress1DData::_dbValues[] = {
+const int* pylith::materials::ElasticStress1DData::_numStateVarValues = 0;
+
+const char* pylith::materials::ElasticStress1DData::_dbPropertyValues[] = {
 "density",
 "vs",
 "vp",
 };
 
-const char* pylith::materials::ElasticStress1DData::_initialStateDBValues[] = {
-"stress_xx",
-};
+const char** pylith::materials::ElasticStress1DData::_dbStateVarValues = 0;
 
-const double pylith::materials::ElasticStress1DData::_dbData[] = {
+const double pylith::materials::ElasticStress1DData::_dbProperties[] = {
   2.50000000e+03,
   3.00000000e+03,
   5.19615242e+03,
@@ -54,12 +66,9 @@
   2.07846097e+03,
 };
 
-const double pylith::materials::ElasticStress1DData::_initialStateDBData[] = {
-  1.20000000e+04,
-  2.10000000e+04,
-};
+const double* pylith::materials::ElasticStress1DData::_dbStateVars = 0;
 
-const double pylith::materials::ElasticStress1DData::_parameterData[] = {
+const double pylith::materials::ElasticStress1DData::_properties[] = {
   2.50000000e+03,
   2.25000000e+10,
   2.25000000e+10,
@@ -68,11 +77,19 @@
   2.88000000e+09,
 };
 
-const double pylith::materials::ElasticStress1DData::_initialState[] = {
-  1.20000000e+04,
-  2.10000000e+04,
+const double* pylith::materials::ElasticStress1DData::_stateVars = 0;
+
+const double pylith::materials::ElasticStress1DData::_propertiesNondim[] = {
+  2.50000000e+00,
+  1.00000000e+00,
+  1.00000000e+00,
+  2.00000000e+00,
+  1.28000000e-01,
+  1.28000000e-01,
 };
 
+const double* pylith::materials::ElasticStress1DData::_stateVarsNondim = 0;
+
 const double pylith::materials::ElasticStress1DData::_density[] = {
   2.50000000e+03,
   2.00000000e+03,
@@ -80,12 +97,12 @@
 
 const double pylith::materials::ElasticStress1DData::_strain[] = {
   1.10000000e-04,
-  1.20000000e-04,
+  4.10000000e-04,
 };
 
 const double pylith::materials::ElasticStress1DData::_stress[] = {
-  6.19950000e+06,
-  8.85000000e+05,
+  2.36460000e+07,
+  7.39500000e+06,
 };
 
 const double pylith::materials::ElasticStress1DData::_elasticConsts[] = {
@@ -93,26 +110,50 @@
   7.20000000e+09,
 };
 
+const double pylith::materials::ElasticStress1DData::_initialStress[] = {
+  2.10000000e+04,
+  5.10000000e+04,
+};
+
+const double pylith::materials::ElasticStress1DData::_initialStrain[] = {
+  3.10000000e-04,
+  6.10000000e-04,
+};
+
+const double* pylith::materials::ElasticStress1DData::_stateVarsUpdated = 0;
+
 pylith::materials::ElasticStress1DData::ElasticStress1DData(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::ElasticStress1DData::~ElasticStress1DData(void)

Modified: short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticStress1DData.hh
===================================================================
--- short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticStress1DData.hh	2009-02-23 00:25:34 UTC (rev 14117)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/ElasticStress1DData.hh	2009-02-23 03:08:39 UTC (rev 14118)
@@ -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_elasticstress1ddata_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-23 00:25:34 UTC (rev 14117)
+++ short/3D/PyLith/branches/pylith-swig/unittests/libtests/materials/data/generate.sh	2009-02-23 03:08:39 UTC (rev 14118)
@@ -37,27 +37,27 @@
 
   # 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