[cig-commits] r7288 - in short/3D/PyLith/trunk: libsrc/feassemble libsrc/materials unittests/libtests/materials

brad at geodynamics.org brad at geodynamics.org
Mon Jun 18 14:08:14 PDT 2007


Author: brad
Date: 2007-06-18 14:08:14 -0700 (Mon, 18 Jun 2007)
New Revision: 7288

Modified:
   short/3D/PyLith/trunk/libsrc/feassemble/ElasticityExplicit.cc
   short/3D/PyLith/trunk/libsrc/feassemble/ElasticityImplicit.cc
   short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial.cc
   short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial.hh
   short/3D/PyLith/trunk/libsrc/materials/Material.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticIsotropic3D.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticMaterial.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticPlaneStrain.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticPlaneStress.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticStrain1D.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticStress1D.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/TestMaxwellIsotropic3D.cc
Log:
Fixed bug in ElasticMaterial::updateState(). Sections not updated after computing updated state. Made unit tests more rigorous (make sure values don't change for purely elastic materials; force failure for MaxwellIsotropic3D until Charles fills in data for test.

Modified: short/3D/PyLith/trunk/libsrc/feassemble/ElasticityExplicit.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/ElasticityExplicit.cc	2007-06-18 19:24:07 UTC (rev 7287)
+++ short/3D/PyLith/trunk/libsrc/feassemble/ElasticityExplicit.cc	2007-06-18 21:08:14 UTC (rev 7288)
@@ -166,8 +166,8 @@
     // Compute geometry information for current cell
     _quadrature->computeGeometry(mesh, coordinates, *c_iter);
 
-    // Set cell data in material
-    _material->initCellData(*c_iter, numQuadPts);
+    // Get state variables for cell.
+    _material->getStateVarsCell(*c_iter, numQuadPts);
 
     // Reset element vector to zero
     _resetCellVector();
@@ -341,8 +341,8 @@
     // Compute geometry information for current cell
     _quadrature->computeGeometry(mesh, coordinates, *c_iter);
 
-    // Set cell data in material
-    _material->initCellData(*c_iter, numQuadPts);
+    // Get state variables for cell.
+    _material->getStateVarsCell(*c_iter, numQuadPts);
 
     // Reset element vector to zero
     _resetCellMatrix();
@@ -450,9 +450,6 @@
     // Compute geometry information for current cell
     _quadrature->computeGeometry(mesh, coordinates, *c_iter);
 
-    // Set cell data in material
-    _material->initCellData(*c_iter, numQuadPts);
-
     // Restrict input fields to cell
     mesh->restrict(disp, *c_iter, &dispCell[0], cellVecSize);
 
@@ -474,7 +471,7 @@
 		<< std::endl;
       assert(0);
     } // else
-    _material->updateState(totalStrain);
+    _material->updateState(totalStrain, *c_iter);
   } // for
 } // updateState
 

Modified: short/3D/PyLith/trunk/libsrc/feassemble/ElasticityImplicit.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/ElasticityImplicit.cc	2007-06-18 19:24:07 UTC (rev 7287)
+++ short/3D/PyLith/trunk/libsrc/feassemble/ElasticityImplicit.cc	2007-06-18 21:08:14 UTC (rev 7288)
@@ -162,8 +162,8 @@
     // Compute geometry information for current cell
     _quadrature->computeGeometry(mesh, coordinates, *c_iter);
 
-    // Set cell data in material
-    _material->initCellData(*c_iter, numQuadPts);
+    // Get state variables for cell.
+    _material->getStateVarsCell(*c_iter, numQuadPts);
 
     // Reset element vector to zero
     _resetCellVector();
@@ -308,8 +308,8 @@
     // Compute geometry information for current cell
     _quadrature->computeGeometry(mesh, coordinates, *c_iter);
 
-    // Set cell data in material
-    _material->initCellData(*c_iter, numQuadPts);
+    // Get state variables for cell.
+    _material->getStateVarsCell(*c_iter, numQuadPts);
 
     // Reset element vector to zero
     _resetCellMatrix();
@@ -407,9 +407,6 @@
     // Compute geometry information for current cell
     _quadrature->computeGeometry(mesh, coordinates, *c_iter);
 
-    // Set cell data in material
-    _material->initCellData(*c_iter, numQuadPts);
-
     // Restrict input fields to cell
     mesh->restrict(disp, *c_iter, &dispCell[0], cellVecSize);
 
@@ -420,7 +417,7 @@
     calcTotalStrainFn(&totalStrain, basisDeriv, dispCell, numBasis);
 
     // Update material state
-    _material->updateState(totalStrain);
+    _material->updateState(totalStrain, *c_iter);
   } // for
 
   _material->useElasticBehavior(false);

Modified: short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial.cc	2007-06-18 19:24:07 UTC (rev 7287)
+++ short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial.cc	2007-06-18 21:08:14 UTC (rev 7288)
@@ -85,11 +85,11 @@
 } // calcDerivElastic
 
 // ----------------------------------------------------------------------
-// Initialize arrays holding cell data.
+// Get cell's state variable information from material's sections.
 void
-pylith::materials::ElasticMaterial::initCellData(const Mesh::point_type& cell,
+pylith::materials::ElasticMaterial::getStateVarsCell(const Mesh::point_type& cell,
 						 const int numQuadPts)
-{ // initCellData
+{ // getStateVarsCell
   if (_numQuadPts != numQuadPts) {
     _numQuadPts = numQuadPts;
 
@@ -111,19 +111,42 @@
   } // if
 
   _getParameters(cell);
-} // initCellData
+} // getStateVarsCell
 
 // ----------------------------------------------------------------------
 // Update state variables (for next time step).
 void
 pylith::materials::ElasticMaterial::updateState(
-				const std::vector<double_array>& totalStrain)
+				const std::vector<double_array>& totalStrain,
+				const Mesh::point_type& cell)
 { // updateState
   const int numQuadPts = _numQuadPts;
+  getStateVarsCell(cell, numQuadPts);
+
   assert(_paramsCell.size() == numQuadPts);
-
   for (int iQuad=0; iQuad < numQuadPts; ++iQuad)
     _updateState(&_paramsCell[iQuad], totalStrain[iQuad]);
+
+  int_array numParamValues;
+  _numParamValues(&numParamValues);
+  const int numParams = numParamValues.size();
+  const char** paramNames = _parameterNames();
+  
+  for (int iParam=0; iParam < numParams; ++iParam) {
+    const ALE::Obj<real_section_type> parameter = 
+      _parameters->getReal(paramNames[iParam]);
+    assert(!parameter.isNull());
+
+    const int numValues = numParamValues[iParam];
+    double_array parameterCell(numQuadPts*numValues);
+    
+    assert(parameter->getFiberDimension(cell) == numQuadPts*numValues);
+    for (int iQuadPt=0; iQuadPt < numQuadPts; ++iQuadPt)
+      for (int iValue=0; iValue < numValues; ++iValue)
+	parameterCell[iQuadPt*numValues+iValue] = 
+	  _paramsCell[iQuadPt][iParam][iValue];
+    parameter->updatePoint(cell, &parameterCell[0]);
+  } // for
 } // updateState
 
 // ----------------------------------------------------------------------

Modified: short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial.hh	2007-06-18 19:24:07 UTC (rev 7287)
+++ short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial.hh	2007-06-18 21:08:14 UTC (rev 7288)
@@ -48,13 +48,13 @@
   virtual
   ~ElasticMaterial(void);
 
-  /** Initialize arrays holding cell data.
+  /** Push cell's state variable information into material's sections.
    *
    * @param cell Finite element cell
    * @param numQuadPts Number of quadrature points
    */
-  void initCellData(const Mesh::point_type& cell,
-		    const int numQuadPts);
+  void getStateVarsCell(const Mesh::point_type& cell,
+			const int numQuadPts);
 
   /** Compute density for cell at quadrature points.
    *
@@ -113,8 +113,10 @@
    *
    * @param totalStrain Total strain tensor at quadrature points
    *    [numQuadPts][tensorSize]
+   * @param cell Finite element cell
    */
-  void updateState(const std::vector<double_array>& totalStrain);
+  void updateState(const std::vector<double_array>& totalStrain,
+		   const Mesh::point_type& cell);
 
   /** Set whether elastic or inelastic constitutive relations are used.
    *

Modified: short/3D/PyLith/trunk/libsrc/materials/Material.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/Material.cc	2007-06-18 19:24:07 UTC (rev 7287)
+++ short/3D/PyLith/trunk/libsrc/materials/Material.cc	2007-06-18 21:08:14 UTC (rev 7288)
@@ -158,9 +158,9 @@
 	    paramData[iParam][iValue];
       } // for
     } // for
-    // Assemble cell contribution into fields
+    // Insert cell contribution into fields
     for (int iParam=0; iParam < numParams; ++iParam)
-      mesh->updateAdd(paramSections[iParam], *cellIter, &cellData[iParam][0]);
+      mesh->update(paramSections[iParam], *cellIter, &cellData[iParam][0]);
   } // for
 
   // Close database

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticIsotropic3D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticIsotropic3D.cc	2007-06-18 19:24:07 UTC (rev 7287)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticIsotropic3D.cc	2007-06-18 21:08:14 UTC (rev 7288)
@@ -96,9 +96,32 @@
 pylith::materials::TestElasticIsotropic3D::testUpdateState(void)
 { // testUpdateState
   ElasticIsotropic3D material;
+  ElasticIsotropic3DData data;
 
-  std::vector<double_array> totalStrain;
-  material.updateState(totalStrain);
+  const int numParams = data.numParameters;
+
+  std::vector<double_array> parameters(numParams);
+  const int paramsSize = 1;
+  for (int i=0; i < numParams; ++i) {
+    parameters[i].resize(numParams);
+    for (int j=0; j < paramsSize; ++j)
+      parameters[i][j] = i+j;
+  } // for
+    
+  const int tensorSize = 9;
+  double_array totalStrain(tensorSize);
+  for (int i=0; i < tensorSize; ++i)
+    totalStrain[i] = i;
+  
+  material._updateState(&parameters, totalStrain);
+
+  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][j], tolerance);
+    
+  for (int i=0; i < tensorSize; ++i)
+    CPPUNIT_ASSERT_DOUBLES_EQUAL(double(i), totalStrain[i], tolerance);
 } // testUpdateState
 
 

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticMaterial.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticMaterial.cc	2007-06-18 19:24:07 UTC (rev 7287)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticMaterial.cc	2007-06-18 21:08:14 UTC (rev 7288)
@@ -94,7 +94,7 @@
   cellData[1] = data.parameterData[5];
   parameterLambda->updateAddPoint(*cellIter, cellData);
 
-  material.initCellData(*cellIter, numQuadPts);
+  material.getStateVarsCell(*cellIter, numQuadPts);
   const std::vector<double_array>& density = material.calcDensity();
 
   const double tolerance = 1.0e-06;
@@ -195,7 +195,7 @@
       strain[iQuad][iStrain] = data.strain[i];
   } // for
 
-  material.initCellData(*cellIter, numQuadPts);
+  material.getStateVarsCell(*cellIter, numQuadPts);
   const std::vector<double_array>& stress = material.calcStress(strain);
 
   const double tolerance = 1.0e-06;
@@ -305,7 +305,7 @@
       strain[iQuad][iStrain] = data.strain[i];
   } // for
 
-  material.initCellData(*cellIter, numQuadPts);
+  material.getStateVarsCell(*cellIter, numQuadPts);
   const std::vector<double_array>& elasticConsts = 
     material.calcDerivElastic(strain);
 

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticPlaneStrain.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticPlaneStrain.cc	2007-06-18 19:24:07 UTC (rev 7287)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticPlaneStrain.cc	2007-06-18 21:08:14 UTC (rev 7288)
@@ -96,9 +96,32 @@
 pylith::materials::TestElasticPlaneStrain::testUpdateState(void)
 { // testUpdateState
   ElasticPlaneStrain material;
+  ElasticPlaneStrainData data;
 
-  std::vector<double_array> totalStrain;
-  material.updateState(totalStrain);
+  const int numParams = data.numParameters;
+
+  std::vector<double_array> parameters(numParams);
+  const int paramsSize = 1;
+  for (int i=0; i < numParams; ++i) {
+    parameters[i].resize(numParams);
+    for (int j=0; j < paramsSize; ++j)
+      parameters[i][j] = i+j;
+  } // for
+    
+  const int tensorSize = 9;
+  double_array totalStrain(tensorSize);
+  for (int i=0; i < tensorSize; ++i)
+    totalStrain[i] = i;
+  
+  material._updateState(&parameters, totalStrain);
+
+  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][j], tolerance);
+    
+  for (int i=0; i < tensorSize; ++i)
+    CPPUNIT_ASSERT_DOUBLES_EQUAL(double(i), totalStrain[i], tolerance);
 } // testUpdateState
 
 

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticPlaneStress.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticPlaneStress.cc	2007-06-18 19:24:07 UTC (rev 7287)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticPlaneStress.cc	2007-06-18 21:08:14 UTC (rev 7288)
@@ -96,9 +96,32 @@
 pylith::materials::TestElasticPlaneStress::testUpdateState(void)
 { // testUpdateState
   ElasticPlaneStress material;
+  ElasticPlaneStressData data;
 
-  std::vector<double_array> totalStrain;
-  material.updateState(totalStrain);
+  const int numParams = data.numParameters;
+
+  std::vector<double_array> parameters(numParams);
+  const int paramsSize = 1;
+  for (int i=0; i < numParams; ++i) {
+    parameters[i].resize(numParams);
+    for (int j=0; j < paramsSize; ++j)
+      parameters[i][j] = i+j;
+  } // for
+    
+  const int tensorSize = 9;
+  double_array totalStrain(tensorSize);
+  for (int i=0; i < tensorSize; ++i)
+    totalStrain[i] = i;
+  
+  material._updateState(&parameters, totalStrain);
+
+  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][j], tolerance);
+    
+  for (int i=0; i < tensorSize; ++i)
+    CPPUNIT_ASSERT_DOUBLES_EQUAL(double(i), totalStrain[i], tolerance);
 } // testUpdateState
 
 

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticStrain1D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticStrain1D.cc	2007-06-18 19:24:07 UTC (rev 7287)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticStrain1D.cc	2007-06-18 21:08:14 UTC (rev 7288)
@@ -96,9 +96,32 @@
 pylith::materials::TestElasticStrain1D::testUpdateState(void)
 { // testUpdateState
   ElasticStrain1D material;
+  ElasticStrain1DData data;
 
-  std::vector<double_array> totalStrain;
-  material.updateState(totalStrain);
+  const int numParams = data.numParameters;
+
+  std::vector<double_array> parameters(numParams);
+  const int paramsSize = 1;
+  for (int i=0; i < numParams; ++i) {
+    parameters[i].resize(numParams);
+    for (int j=0; j < paramsSize; ++j)
+      parameters[i][j] = i+j;
+  } // for
+    
+  const int tensorSize = 9;
+  double_array totalStrain(tensorSize);
+  for (int i=0; i < tensorSize; ++i)
+    totalStrain[i] = i;
+  
+  material._updateState(&parameters, totalStrain);
+
+  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][j], tolerance);
+    
+  for (int i=0; i < tensorSize; ++i)
+    CPPUNIT_ASSERT_DOUBLES_EQUAL(double(i), totalStrain[i], tolerance);
 } // testUpdateState
 
 

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticStress1D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticStress1D.cc	2007-06-18 19:24:07 UTC (rev 7287)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticStress1D.cc	2007-06-18 21:08:14 UTC (rev 7288)
@@ -96,9 +96,32 @@
 pylith::materials::TestElasticStress1D::testUpdateState(void)
 { // testUpdateState
   ElasticStress1D material;
+  ElasticStress1DData data;
 
-  std::vector<double_array> totalStrain;
-  material.updateState(totalStrain);
+  const int numParams = data.numParameters;
+
+  std::vector<double_array> parameters(numParams);
+  const int paramsSize = 1;
+  for (int i=0; i < numParams; ++i) {
+    parameters[i].resize(numParams);
+    for (int j=0; j < paramsSize; ++j)
+      parameters[i][j] = i+j;
+  } // for
+    
+  const int tensorSize = 9;
+  double_array totalStrain(tensorSize);
+  for (int i=0; i < tensorSize; ++i)
+    totalStrain[i] = i;
+  
+  material._updateState(&parameters, totalStrain);
+
+  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][j], tolerance);
+    
+  for (int i=0; i < tensorSize; ++i)
+    CPPUNIT_ASSERT_DOUBLES_EQUAL(double(i), totalStrain[i], tolerance);
 } // testUpdateState
 
 

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/TestMaxwellIsotropic3D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/TestMaxwellIsotropic3D.cc	2007-06-18 19:24:07 UTC (rev 7287)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/TestMaxwellIsotropic3D.cc	2007-06-18 21:08:14 UTC (rev 7288)
@@ -19,6 +19,7 @@
 
 #include "pylith/materials/MaxwellIsotropic3D.hh" // USES MaxwellIsotropic3D
 
+#include <stdexcept> // TEMPORARY
 // ----------------------------------------------------------------------
 CPPUNIT_TEST_SUITE_REGISTRATION( pylith::materials::TestMaxwellIsotropic3D );
 
@@ -82,8 +83,7 @@
 { // testDBValues
   MaxwellIsotropic3D material;
   MaxwellIsotropic3DElasticData data;
-  bool elasFlag = true;
-  material.useElasticBehavior(elasFlag);
+  material.useElasticBehavior(true);
   _testDBValues(&material, data);
 } // testDBValues
 
@@ -94,8 +94,7 @@
 { // testParameters
   MaxwellIsotropic3D material;
   MaxwellIsotropic3DElasticData data;
-  bool elasFlag = true;
-  material.useElasticBehavior(elasFlag);
+  material.useElasticBehavior(true);
   _testParameters(&material, data);
 } // testParameters
 
@@ -106,8 +105,7 @@
 { // testDBToParameters
   MaxwellIsotropic3D material;
   MaxwellIsotropic3DElasticData data;
-  bool elasFlag = true;
-  material.useElasticBehavior(elasFlag);
+  material.useElasticBehavior(true);
   _testDBToParameters(&material, data);
 } // testDBToParameters
 
@@ -118,8 +116,7 @@
 { // testCalcDensity
   MaxwellIsotropic3D material;
   MaxwellIsotropic3DElasticData data;
-  bool elasFlag = true;
-  material.useElasticBehavior(elasFlag);
+  material.useElasticBehavior(true);
   _testCalcDensity(&material, data);
 } // testCalcDensity
 
@@ -130,8 +127,7 @@
 { // testCalcStressElastic
   MaxwellIsotropic3D material;
   MaxwellIsotropic3DElasticData data;
-  bool elasFlag = true;
-  material.useElasticBehavior(elasFlag);
+  material.useElasticBehavior(true);
   _testCalcStress(&material, data);
 } // testCalcStressElastic
 
@@ -142,8 +138,7 @@
 { // testElasticConstsElastic
   MaxwellIsotropic3D material;
   MaxwellIsotropic3DElasticData data;
-  bool elasFlag = true;
-  material.useElasticBehavior(elasFlag);
+  material.useElasticBehavior(true);
   _testCalcElasticConsts(&material, data);
 } // testElasticConstsElastic
 
@@ -153,11 +148,37 @@
 pylith::materials::TestMaxwellIsotropic3D::testUpdateStateElastic(void)
 { // testUpdateStateElastic
   MaxwellIsotropic3D material;
+  MaxwellIsotropic3DElasticData data;
 
-  std::vector<double_array> totalStrain;
-  bool elasFlag = true;
-  material.useElasticBehavior(elasFlag);
-  material.updateState(totalStrain);
+  // CHARLES: Setup parameters and totalStrain so this works.
+
+#if 0
+  const int numParams = data.numParameters;
+
+  std::vector<double_array> parameters(numParams);
+  const int paramsSize = 1;
+  for (int i=0; i < numParams; ++i) {
+    parameters[i].resize(numParams);
+    for (int j=0; j < paramsSize; ++j)
+      parameters[i][j] = i+j;
+  } // for
+    
+  const int tensorSize = 9;
+  double_array totalStrain(tensorSize);
+  for (int i=0; i < tensorSize; ++i)
+    totalStrain[i] = i;
+  
+  material._updateState(&parameters, totalStrain);
+
+  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][j], tolerance);
+    
+  for (int i=0; i < tensorSize; ++i)
+    CPPUNIT_ASSERT_DOUBLES_EQUAL(double(i), totalStrain[i], tolerance);
+#endif
+  throw std::logic_error("Unit test not implemented.");
 } // testUpdateStateElastic
 
 // ----------------------------------------------------------------------
@@ -167,8 +188,7 @@
 { // testCalcStressTimeDep
   MaxwellIsotropic3D material;
   MaxwellIsotropic3DTimeDepData data;
-  bool elasFlag = false;
-  material.useElasticBehavior(elasFlag);
+  material.useElasticBehavior(false);
   double dt = 2.0e5;
   material.timeStep(dt);
   _testCalcStress(&material, data);
@@ -181,8 +201,7 @@
 { // testElasticConstsTimeDep
   MaxwellIsotropic3D material;
   MaxwellIsotropic3DTimeDepData data;
-  bool elasFlag = false;
-  material.useElasticBehavior(elasFlag);
+  material.useElasticBehavior(false);
   double dt = 2.0e5;
   material.timeStep(dt);
   _testCalcElasticConsts(&material, data);
@@ -194,13 +213,36 @@
 pylith::materials::TestMaxwellIsotropic3D::testUpdateStateTimeDep(void)
 { // testUpdateStateTimeDep
   MaxwellIsotropic3D material;
+  MaxwellIsotropic3DTimeDepData data;
 
-  std::vector<double_array> totalStrain;
-  bool elasFlag = false;
-  material.useElasticBehavior(elasFlag);
-  double dt = 2.0e5;
-  material.timeStep(dt);
-  material.updateState(totalStrain);
+  // CHARLES: Setup parameters and totalStrain so this works.
+#if 0
+  const int numParams = data.numParameters;
+
+  std::vector<double_array> parameters(numParams);
+  const int paramsSize = 1;
+  for (int i=0; i < numParams; ++i) {
+    parameters[i].resize(numParams);
+    for (int j=0; j < paramsSize; ++j)
+      parameters[i][j] = i+j;
+  } // for
+    
+  const int tensorSize = 9;
+  double_array totalStrain(tensorSize);
+  for (int i=0; i < tensorSize; ++i)
+    totalStrain[i] = i;
+  
+  material._updateState(&parameters, totalStrain);
+
+  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][j], tolerance);
+    
+  for (int i=0; i < tensorSize; ++i)
+    CPPUNIT_ASSERT_DOUBLES_EQUAL(double(i), totalStrain[i], tolerance);
+#endif
+  throw std::logic_error("Unit test not implemented.");
 } // testUpdateStateTimeDep
 
 



More information about the cig-commits mailing list