[cig-commits] r6550 - in
short/3D/PyLith/trunk/unittests/libtests/materials: . data
brad at geodynamics.org
brad at geodynamics.org
Wed Apr 11 21:44:06 PDT 2007
Author: brad
Date: 2007-04-11 21:44:05 -0700 (Wed, 11 Apr 2007)
New Revision: 6550
Added:
short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticPlaneStrain.cc
short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticPlaneStrain.hh
short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticStrain1D.cc
short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticStrain1D.hh
short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticPlaneStrain.py
short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticPlaneStrainData.cc
short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticPlaneStrainData.hh
short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticStrain1D.py
short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticStrain1DData.cc
short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticStrain1DData.hh
Log:
Added tests for ElasticStrain1D and ElasticPlaneStrain materials.
Added: short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticPlaneStrain.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticPlaneStrain.cc 2007-04-12 04:42:10 UTC (rev 6549)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticPlaneStrain.cc 2007-04-12 04:44:05 UTC (rev 6550)
@@ -0,0 +1,85 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestElasticPlaneStrain.hh" // Implementation of class methods
+
+#include "data/ElasticPlaneStrainData.hh" // USES ElasticPlaneStrainData
+
+#include "pylith/materials/ElasticPlaneStrain.hh" // USES ElasticPlaneStrain
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::materials::TestElasticPlaneStrain );
+
+// ----------------------------------------------------------------------
+// Test DBValues()
+void
+pylith::materials::TestElasticPlaneStrain::testDBValues(void)
+{ // testDBValues
+ ElasticPlaneStrain material;
+ ElasticPlaneStrainData data;
+ _testDBValues(&material, data);
+} // testDBValues
+
+// ----------------------------------------------------------------------
+// Test parameters()
+void
+pylith::materials::TestElasticPlaneStrain::testParameters(void)
+{ // testParameters
+ ElasticPlaneStrain material;
+ ElasticPlaneStrainData data;
+ _testParameters(&material, data);
+} // testParameters
+
+// ----------------------------------------------------------------------
+// Test _dbToParameters()
+void
+pylith::materials::TestElasticPlaneStrain::testDBToParameters(void)
+{ // testDBToParameters
+ ElasticPlaneStrain material;
+ ElasticPlaneStrainData data;
+ _testDBToParameters(&material, data);
+} // testDBToParameters
+
+// ----------------------------------------------------------------------
+// Test calcDensity()
+void
+pylith::materials::TestElasticPlaneStrain::testCalcDensity(void)
+{ // testCalcDensity
+ ElasticPlaneStrain material;
+ ElasticPlaneStrainData data;
+ _testCalcDensity(&material, data);
+} // testCalcDensity
+
+// ----------------------------------------------------------------------
+// Test calcStress()
+void
+pylith::materials::TestElasticPlaneStrain::testCalcStress(void)
+{ // testCalcStress
+ ElasticPlaneStrain material;
+ ElasticPlaneStrainData data;
+ _testCalcStress(&material, data);
+} // testCalcStress
+
+// ----------------------------------------------------------------------
+// Test calcElasticConsts()
+void
+pylith::materials::TestElasticPlaneStrain::testCalcElasticConsts(void)
+{ // testElasticConsts
+ ElasticPlaneStrain material;
+ ElasticPlaneStrainData data;
+ _testCalcElasticConsts(&material, data);
+} // testElasticConsts
+
+
+// End of file
Added: short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticPlaneStrain.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticPlaneStrain.hh 2007-04-12 04:42:10 UTC (rev 6549)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticPlaneStrain.hh 2007-04-12 04:44:05 UTC (rev 6550)
@@ -0,0 +1,75 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/materials/TestElasticPlaneStrain.hh
+ *
+ * @brief C++ TestElasticPlaneStrain object
+ *
+ * C++ unit testing for ElasticPlaneStrain.
+ */
+
+#if !defined(pylith_materials_testelasticplanestrain_hh)
+#define pylith_materials_testelasticplanestrain_hh
+
+#include "TestElasticMaterial.hh"
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace materials {
+ class ElasticPlaneStrain;
+ class TestElasticPlaneStrain;
+ class ElasticPlaneStrainData;
+ } // materials
+} // pylith
+
+/// C++ unit testing for ElasticPlaneStrain
+class pylith::materials::TestElasticPlaneStrain : public TestElasticMaterial
+{ // class TestElasticPlaneStrain
+
+ // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+ CPPUNIT_TEST_SUITE( TestElasticPlaneStrain );
+ CPPUNIT_TEST( testDBToParameters );
+ CPPUNIT_TEST( testDBValues );
+ CPPUNIT_TEST( testParameters );
+ CPPUNIT_TEST( testCalcDensity );
+ CPPUNIT_TEST( testCalcStress );
+ CPPUNIT_TEST( testCalcElasticConsts );
+ CPPUNIT_TEST_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Test DBValues()
+ void testDBValues(void);
+
+ /// Test parameters()
+ void testParameters(void);
+
+ /// Test _dbToParameters()
+ void testDBToParameters(void);
+
+ /// Test calcDensity()
+ void testCalcDensity(void);
+
+ /// Test calcStress()
+ void testCalcStress(void);
+
+ /// Test calcElasticConsts()
+ void testCalcElasticConsts(void);
+
+}; // class TestElasticPlaneStrain
+
+#endif // pylith_materials_testelasticplanestrain_hh
+
+
+// End of file
Added: short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticStrain1D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticStrain1D.cc 2007-04-12 04:42:10 UTC (rev 6549)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticStrain1D.cc 2007-04-12 04:44:05 UTC (rev 6550)
@@ -0,0 +1,85 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestElasticStrain1D.hh" // Implementation of class methods
+
+#include "data/ElasticStrain1DData.hh" // USES ElasticStrain1DData
+
+#include "pylith/materials/ElasticStrain1D.hh" // USES ElasticStrain1D
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::materials::TestElasticStrain1D );
+
+// ----------------------------------------------------------------------
+// Test DBValues()
+void
+pylith::materials::TestElasticStrain1D::testDBValues(void)
+{ // testDBValues
+ ElasticStrain1D material;
+ ElasticStrain1DData data;
+ _testDBValues(&material, data);
+} // testDBValues
+
+// ----------------------------------------------------------------------
+// Test parameters()
+void
+pylith::materials::TestElasticStrain1D::testParameters(void)
+{ // testParameters
+ ElasticStrain1D material;
+ ElasticStrain1DData data;
+ _testParameters(&material, data);
+} // testParameters
+
+// ----------------------------------------------------------------------
+// Test _dbToParameters()
+void
+pylith::materials::TestElasticStrain1D::testDBToParameters(void)
+{ // testDBToParameters
+ ElasticStrain1D material;
+ ElasticStrain1DData data;
+ _testDBToParameters(&material, data);
+} // testDBToParameters
+
+// ----------------------------------------------------------------------
+// Test calcDensity()
+void
+pylith::materials::TestElasticStrain1D::testCalcDensity(void)
+{ // testCalcDensity
+ ElasticStrain1D material;
+ ElasticStrain1DData data;
+ _testCalcDensity(&material, data);
+} // testCalcDensity
+
+// ----------------------------------------------------------------------
+// Test calcStress()
+void
+pylith::materials::TestElasticStrain1D::testCalcStress(void)
+{ // testCalcStress
+ ElasticStrain1D material;
+ ElasticStrain1DData data;
+ _testCalcStress(&material, data);
+} // testCalcStress
+
+// ----------------------------------------------------------------------
+// Test calcElasticConsts()
+void
+pylith::materials::TestElasticStrain1D::testCalcElasticConsts(void)
+{ // testElasticConsts
+ ElasticStrain1D material;
+ ElasticStrain1DData data;
+ _testCalcElasticConsts(&material, data);
+} // testElasticConsts
+
+
+// End of file
Added: short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticStrain1D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticStrain1D.hh 2007-04-12 04:42:10 UTC (rev 6549)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticStrain1D.hh 2007-04-12 04:44:05 UTC (rev 6550)
@@ -0,0 +1,75 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/materials/TestElasticStrain1D.hh
+ *
+ * @brief C++ TestElasticStrain1D object
+ *
+ * C++ unit testing for ElasticStrain1D.
+ */
+
+#if !defined(pylith_materials_testelasticstrain1d_hh)
+#define pylith_materials_testelasticstrain1d_hh
+
+#include "TestElasticMaterial.hh"
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace materials {
+ class ElasticStrain1D;
+ class TestElasticStrain1D;
+ class ElasticStrain1DData;
+ } // materials
+} // pylith
+
+/// C++ unit testing for ElasticStrain1D
+class pylith::materials::TestElasticStrain1D : public TestElasticMaterial
+{ // class TestElasticStrain1D
+
+ // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+ CPPUNIT_TEST_SUITE( TestElasticStrain1D );
+ CPPUNIT_TEST( testDBToParameters );
+ CPPUNIT_TEST( testDBValues );
+ CPPUNIT_TEST( testParameters );
+ CPPUNIT_TEST( testCalcDensity );
+ CPPUNIT_TEST( testCalcStress );
+ CPPUNIT_TEST( testCalcElasticConsts );
+ CPPUNIT_TEST_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Test DBValues()
+ void testDBValues(void);
+
+ /// Test parameters()
+ void testParameters(void);
+
+ /// Test _dbToParameters()
+ void testDBToParameters(void);
+
+ /// Test calcDensity()
+ void testCalcDensity(void);
+
+ /// Test calcStress()
+ void testCalcStress(void);
+
+ /// Test calcElasticConsts()
+ void testCalcElasticConsts(void);
+
+}; // class TestElasticStrain1D
+
+#endif // pylith_materials_testelasticstrain1d_hh
+
+
+// End of file
Added: short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticPlaneStrain.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticPlaneStrain.py 2007-04-12 04:42:10 UTC (rev 6549)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticPlaneStrain.py 2007-04-12 04:44:05 UTC (rev 6550)
@@ -0,0 +1,114 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+# Brad T. Aagaard
+# U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file unittests/libtests/materials/data/ElasticPlaneStrain.py
+
+## @brief Python application for generating C++ data files for testing
+## C++ ElasticPlaneStrain object.
+
+from ElasticMaterialApp import ElasticMaterialApp
+
+import numpy
+
+# ----------------------------------------------------------------------
+# ElasticPlaneStrain class
+class ElasticPlaneStrain(ElasticMaterialApp):
+ """
+ Python application for generating C++ data files for testing C++
+ ElasticPlaneStrain object.
+ """
+
+ # PUBLIC METHODS /////////////////////////////////////////////////////
+
+ def __init__(self, name="elasticplanestrain"):
+ """
+ Constructor.
+ """
+ ElasticMaterialApp.__init__(self, name)
+
+ self.dimension = 2
+
+ self.numDBValues = 3
+ self.dbValues = ["density", "vs", "vp"]
+ self.numParameters = 3
+ self.parameterNames = ["density", "mu", "lambda"]
+
+ densityA = 2500.0
+ vsA = 3000.0
+ vpA = vsA*3**0.5
+ strainA = [1.1e-4, 2.2e-4, 3.3e-4]
+
+ densityB = 2000.0
+ vsB = 1200.0
+ vpB = vsB*3**0.5
+ strainB = [1.2e-4, 2.3e-4, 3.4e-4]
+
+ self.dbData = numpy.array([ [densityA, vsA, vpA],
+ [densityB, vsB, vpB] ],
+ dtype=numpy.float64)
+ muA = vsA*vsA*densityA
+ lambdaA = vpA*vpA*densityA - 2.0*muA
+ muB = vsB*vsB*densityB
+ lambdaB = vpB*vpB*densityB - 2.0*muB
+ self.parameterData = numpy.array([ [densityA, muA, lambdaA],
+ [densityB, muB, lambdaB] ],
+ dtype=numpy.float64)
+
+ self.numLocs = 2
+ numElasticConsts = 6
+ self.density = numpy.array([densityA, densityB],
+ dtype=numpy.float64)
+
+ 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)
+
+ (self.elasticConsts[0,:], self.stress[0,:]) = \
+ self._calcStress(strainA, densityA, muA, lambdaA)
+ (self.elasticConsts[1,:], self.stress[1,:]) = \
+ self._calcStress(strainB, densityB, muB, lambdaB)
+ return
+
+
+ def _calcStress(self, strainV, densityV, muV, lambdaV):
+ """
+ Compute stress and derivative of elasticity matrix.
+ """
+ C1111 = lambdaV + 2.0*muV
+ C1122 = lambdaV
+ C1112 = 0.0
+ C2222 = lambdaV + 2.0*muV
+ C2212 = 0.0
+ C1212 = 2.0*muV
+ elasticConsts = numpy.array([C1111, C1122, C1112,
+ C2222, C2212,
+ C1212], dtype=numpy.float64)
+
+ strain = numpy.reshape(strainV, (3,1))
+ elastic = numpy.array([ [C1111, C1122, C1112],
+ [C1122, C2222, C2212],
+ [C1112, C2212, C1212] ],
+ dtype=numpy.float64)
+ stress = numpy.dot(elastic, strain)
+ return (elasticConsts, numpy.ravel(stress))
+
+
+# MAIN /////////////////////////////////////////////////////////////////
+if __name__ == "__main__":
+
+ app = ElasticPlaneStrain()
+ app.run()
+
+
+# End of file
Added: short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticPlaneStrainData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticPlaneStrainData.cc 2007-04-12 04:42:10 UTC (rev 6549)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticPlaneStrainData.cc 2007-04-12 04:44:05 UTC (rev 6550)
@@ -0,0 +1,114 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+// DO NOT EDIT THIS FILE
+// This file was generated from python application elasticplanestrain.
+
+#include "ElasticPlaneStrainData.hh"
+
+const int pylith::materials::ElasticPlaneStrainData::_dimension = 2;
+
+const int pylith::materials::ElasticPlaneStrainData::_numDBValues = 3;
+
+const int pylith::materials::ElasticPlaneStrainData::_numParameters = 3;
+
+const int pylith::materials::ElasticPlaneStrainData::_numLocs = 2;
+
+const char* pylith::materials::ElasticPlaneStrainData::_dbValues[] = {
+"density",
+"vs",
+"vp",
+};
+
+const char* pylith::materials::ElasticPlaneStrainData::_parameterNames[] = {
+"density",
+"mu",
+"lambda",
+};
+
+const double pylith::materials::ElasticPlaneStrainData::_dbData[] = {
+ 2.50000000e+03,
+ 3.00000000e+03,
+ 5.19615242e+03,
+ 2.00000000e+03,
+ 1.20000000e+03,
+ 2.07846097e+03,
+};
+
+const double pylith::materials::ElasticPlaneStrainData::_parameterData[] = {
+ 2.50000000e+03,
+ 2.25000000e+10,
+ 2.25000000e+10,
+ 2.00000000e+03,
+ 2.88000000e+09,
+ 2.88000000e+09,
+};
+
+const double pylith::materials::ElasticPlaneStrainData::_density[] = {
+ 2.50000000e+03,
+ 2.00000000e+03,
+};
+
+const double pylith::materials::ElasticPlaneStrainData::_strain[] = {
+ 1.10000000e-04,
+ 2.20000000e-04,
+ 3.30000000e-04,
+ 1.20000000e-04,
+ 2.30000000e-04,
+ 3.40000000e-04,
+};
+
+const double pylith::materials::ElasticPlaneStrainData::_stress[] = {
+ 1.23750000e+07,
+ 1.73250000e+07,
+ 1.48500000e+07,
+ 1.69920000e+06,
+ 2.33280000e+06,
+ 1.95840000e+06,
+};
+
+const double pylith::materials::ElasticPlaneStrainData::_elasticConsts[] = {
+ 6.75000000e+10,
+ 2.25000000e+10,
+ 0.00000000e+00,
+ 6.75000000e+10,
+ 0.00000000e+00,
+ 4.50000000e+10,
+ 8.64000000e+09,
+ 2.88000000e+09,
+ 0.00000000e+00,
+ 8.64000000e+09,
+ 0.00000000e+00,
+ 5.76000000e+09,
+};
+
+pylith::materials::ElasticPlaneStrainData::ElasticPlaneStrainData(void)
+{ // constructor
+ dimension = _dimension;
+ numDBValues = _numDBValues;
+ numParameters = _numParameters;
+ numLocs = _numLocs;
+ dbValues = const_cast<char**>(_dbValues);
+ parameterNames = const_cast<char**>(_parameterNames);
+ dbData = const_cast<double*>(_dbData);
+ parameterData = const_cast<double*>(_parameterData);
+ density = const_cast<double*>(_density);
+ strain = const_cast<double*>(_strain);
+ stress = const_cast<double*>(_stress);
+ elasticConsts = const_cast<double*>(_elasticConsts);
+} // constructor
+
+pylith::materials::ElasticPlaneStrainData::~ElasticPlaneStrainData(void)
+{}
+
+
+// End of file
Added: short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticPlaneStrainData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticPlaneStrainData.hh 2007-04-12 04:42:10 UTC (rev 6549)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticPlaneStrainData.hh 2007-04-12 04:44:05 UTC (rev 6550)
@@ -0,0 +1,68 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+// DO NOT EDIT THIS FILE
+// This file was generated from python application elasticplanestrain.
+
+#if !defined(pylith_materials_elasticplanestraindata_hh)
+#define pylith_materials_elasticplanestraindata_hh
+
+#include "ElasticMaterialData.hh"
+
+namespace pylith {
+ namespace materials {
+ class ElasticPlaneStrainData;
+ } // pylith
+} // materials
+
+class pylith::materials::ElasticPlaneStrainData : public ElasticMaterialData
+{
+
+public:
+
+ /// Constructor
+ ElasticPlaneStrainData(void);
+
+ /// Destructor
+ ~ElasticPlaneStrainData(void);
+
+private:
+
+ static const int _dimension;
+
+ static const int _numDBValues;
+
+ static const int _numParameters;
+
+ static const int _numLocs;
+
+ static const char* _dbValues[];
+
+ static const char* _parameterNames[];
+
+ static const double _dbData[];
+
+ static const double _parameterData[];
+
+ static const double _density[];
+
+ static const double _strain[];
+
+ static const double _stress[];
+
+ static const double _elasticConsts[];
+
+};
+
+#endif // pylith_materials_elasticplanestraindata_hh
+
+// End of file
Added: short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticStrain1D.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticStrain1D.py 2007-04-12 04:42:10 UTC (rev 6549)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticStrain1D.py 2007-04-12 04:44:05 UTC (rev 6550)
@@ -0,0 +1,101 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+# Brad T. Aagaard
+# U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file unittests/libtests/materials/data/ElasticStrain1D.py
+
+## @brief Python application for generating C++ data files for testing
+## C++ ElasticStrain1D object.
+
+from ElasticMaterialApp import ElasticMaterialApp
+
+import numpy
+
+# ----------------------------------------------------------------------
+# ElasticStrain1D class
+class ElasticStrain1D(ElasticMaterialApp):
+ """
+ Python application for generating C++ data files for testing C++
+ ElasticStrain1D object.
+ """
+
+ # PUBLIC METHODS /////////////////////////////////////////////////////
+
+ def __init__(self, name="elasticstrain1d"):
+ """
+ Constructor.
+ """
+ ElasticMaterialApp.__init__(self, name)
+
+ self.dimension = 1
+
+ self.numDBValues = 2
+ self.dbValues = ["density", "vp"]
+ self.numParameters = 2
+ self.parameterNames = ["density", "lambda2mu"]
+
+ densityA = 2500.0
+ vpA = 5000.0
+ strainA = [1.1e-4]
+
+ densityB = 2000.0
+ vpB = 3000.0
+ strainB = [1.2e-4]
+
+ self.dbData = numpy.array([ [densityA, vpA],
+ [densityB, vpB] ],
+ dtype=numpy.float64)
+ lambda2muA = vpA*vpA*densityA
+ lambda2muB = vpB*vpB*densityB
+ self.parameterData = numpy.array([ [densityA, lambda2muA],
+ [densityB, lambda2muB] ],
+ dtype=numpy.float64)
+
+ self.numLocs = 2
+ numElasticConsts = 1
+ self.density = numpy.array([densityA, densityB],
+ dtype=numpy.float64)
+
+ 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)
+
+ (self.elasticConsts[0,:], self.stress[0,:]) = \
+ self._calcStress(strainA, densityA, lambda2muA)
+ (self.elasticConsts[1,:], self.stress[1,:]) = \
+ self._calcStress(strainB, densityB, lambda2muB)
+ return
+
+
+ def _calcStress(self, strainV, densityV, lambda2muV):
+ """
+ Compute stress and derivative of elasticity matrix.
+ """
+ C1111 = lambda2muV
+ elasticConsts = numpy.array([C1111], dtype=numpy.float64)
+
+ strain = numpy.reshape(strainV, (1,1))
+ elastic = numpy.array([ [C1111] ],
+ dtype=numpy.float64)
+ stress = numpy.dot(elastic, strain)
+ return (elasticConsts, numpy.ravel(stress))
+
+
+# MAIN /////////////////////////////////////////////////////////////////
+if __name__ == "__main__":
+
+ app = ElasticStrain1D()
+ app.run()
+
+
+# End of file
Added: short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticStrain1DData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticStrain1DData.cc 2007-04-12 04:42:10 UTC (rev 6549)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticStrain1DData.cc 2007-04-12 04:44:05 UTC (rev 6550)
@@ -0,0 +1,90 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+// DO NOT EDIT THIS FILE
+// This file was generated from python application elasticstrain1d.
+
+#include "ElasticStrain1DData.hh"
+
+const int pylith::materials::ElasticStrain1DData::_dimension = 1;
+
+const int pylith::materials::ElasticStrain1DData::_numDBValues = 2;
+
+const int pylith::materials::ElasticStrain1DData::_numParameters = 2;
+
+const int pylith::materials::ElasticStrain1DData::_numLocs = 2;
+
+const char* pylith::materials::ElasticStrain1DData::_dbValues[] = {
+"density",
+"vp",
+};
+
+const char* pylith::materials::ElasticStrain1DData::_parameterNames[] = {
+"density",
+"lambda2mu",
+};
+
+const double pylith::materials::ElasticStrain1DData::_dbData[] = {
+ 2.50000000e+03,
+ 5.00000000e+03,
+ 2.00000000e+03,
+ 3.00000000e+03,
+};
+
+const double pylith::materials::ElasticStrain1DData::_parameterData[] = {
+ 2.50000000e+03,
+ 6.25000000e+10,
+ 2.80000000e+03,
+ 1.80000000e+10,
+};
+
+const double pylith::materials::ElasticStrain1DData::_density[] = {
+ 2.50000000e+03,
+ 2.00000000e+03,
+};
+
+const double pylith::materials::ElasticStrain1DData::_strain[] = {
+ 1.10000000e-04,
+ 1.20000000e-04,
+};
+
+const double pylith::materials::ElasticStrain1DData::_stress[] = {
+ 6.87500000e+06,
+ 2.16000000e+06,
+};
+
+const double pylith::materials::ElasticStrain1DData::_elasticConsts[] = {
+ 6.25000000e+10,
+ 1.80000000e+10,
+};
+
+pylith::materials::ElasticStrain1DData::ElasticStrain1DData(void)
+{ // constructor
+ dimension = _dimension;
+ numDBValues = _numDBValues;
+ numParameters = _numParameters;
+ numLocs = _numLocs;
+ dbValues = const_cast<char**>(_dbValues);
+ parameterNames = const_cast<char**>(_parameterNames);
+ dbData = const_cast<double*>(_dbData);
+ parameterData = const_cast<double*>(_parameterData);
+ density = const_cast<double*>(_density);
+ strain = const_cast<double*>(_strain);
+ stress = const_cast<double*>(_stress);
+ elasticConsts = const_cast<double*>(_elasticConsts);
+} // constructor
+
+pylith::materials::ElasticStrain1DData::~ElasticStrain1DData(void)
+{}
+
+
+// End of file
Added: short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticStrain1DData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticStrain1DData.hh 2007-04-12 04:42:10 UTC (rev 6549)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticStrain1DData.hh 2007-04-12 04:44:05 UTC (rev 6550)
@@ -0,0 +1,68 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+// DO NOT EDIT THIS FILE
+// This file was generated from python application elasticstrain1d.
+
+#if !defined(pylith_materials_elasticstrain1ddata_hh)
+#define pylith_materials_elasticstrain1ddata_hh
+
+#include "ElasticMaterialData.hh"
+
+namespace pylith {
+ namespace materials {
+ class ElasticStrain1DData;
+ } // pylith
+} // materials
+
+class pylith::materials::ElasticStrain1DData : public ElasticMaterialData
+{
+
+public:
+
+ /// Constructor
+ ElasticStrain1DData(void);
+
+ /// Destructor
+ ~ElasticStrain1DData(void);
+
+private:
+
+ static const int _dimension;
+
+ static const int _numDBValues;
+
+ static const int _numParameters;
+
+ static const int _numLocs;
+
+ static const char* _dbValues[];
+
+ static const char* _parameterNames[];
+
+ static const double _dbData[];
+
+ static const double _parameterData[];
+
+ static const double _density[];
+
+ static const double _strain[];
+
+ static const double _stress[];
+
+ static const double _elasticConsts[];
+
+};
+
+#endif // pylith_materials_elasticstrain1ddata_hh
+
+// End of file
More information about the cig-commits
mailing list