[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, ¶meterCell[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(¶meters, 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(¶meters, 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(¶meters, 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(¶meters, 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(¶meters, 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(¶meters, 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(¶meters, 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