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

brad at geodynamics.org brad at geodynamics.org
Thu Apr 12 09:36:07 PDT 2007


Author: brad
Date: 2007-04-12 09:36:07 -0700 (Thu, 12 Apr 2007)
New Revision: 6553

Added:
   short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticPlaneStress.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticPlaneStress.hh
   short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticStress1D.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticStress1D.hh
   short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticPlaneStress.py
   short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticPlaneStressData.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticPlaneStressData.hh
   short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticStress1D.py
   short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticStress1DData.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticStress1DData.hh
   short/3D/PyLith/trunk/unittests/pytests/materials/TestElasticPlaneStrain.py
   short/3D/PyLith/trunk/unittests/pytests/materials/TestElasticPlaneStress.py
   short/3D/PyLith/trunk/unittests/pytests/materials/TestElasticStrain1D.py
   short/3D/PyLith/trunk/unittests/pytests/materials/TestElasticStress1D.py
Modified:
   short/3D/PyLith/trunk/TODO
   short/3D/PyLith/trunk/unittests/libtests/materials/Makefile.am
   short/3D/PyLith/trunk/unittests/libtests/materials/TestMaterial.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticMaterialData.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticMaterialData.hh
   short/3D/PyLith/trunk/unittests/libtests/materials/data/MaterialData.cc
   short/3D/PyLith/trunk/unittests/libtests/materials/data/MaterialData.hh
   short/3D/PyLith/trunk/unittests/libtests/materials/data/generate.sh
   short/3D/PyLith/trunk/unittests/pytests/materials/testmaterials.py
Log:
Finished implementing C++ and Python unit tests for simple 1-D, 2-D, and 3-D elastic materials.

Modified: short/3D/PyLith/trunk/TODO
===================================================================
--- short/3D/PyLith/trunk/TODO	2007-04-12 16:23:17 UTC (rev 6552)
+++ short/3D/PyLith/trunk/TODO	2007-04-12 16:36:07 UTC (rev 6553)
@@ -11,22 +11,17 @@
 
   add isNull() assertions before using ALE::Obj.
 
-  add check to material::initialize material dimension must match cell dimension
+  add check to material::initialize: material dimension must match
+  cell dimension
 
 0. Update unit testing.
 
-  a.  Add unit tests for ElasticStrain1D, ElasticStress1D,
-      ElasticPlaneStrain, ElasticPlaneStress.
-
-      Need to check parameters for multiple locations or get rid of
-      multiple locations in test data.
-
   b. Update MeshIOAscii tests (groups of vertices and cells)
 
 1. Finish implementing ExplicitElasticity and Explicit
    a. Double check loops for calcConstant() and calcJacobian()
    b. Make sure memory allocation/deallocation is outside loop over cells
-   b. Create complete test (1 time step)
+   b. Create unit test (construction of constant term and Jacobian)
 
 2. Start implementing faults
    a. Create Faults object

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/Makefile.am	2007-04-12 16:23:17 UTC (rev 6552)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/Makefile.am	2007-04-12 16:36:07 UTC (rev 6553)
@@ -25,7 +25,9 @@
 	TestElasticMaterial.cc \
 	TestElasticIsotropic3D.cc \
 	TestElasticPlaneStrain.cc \
+	TestElasticPlaneStress.cc \
 	TestElasticStrain1D.cc \
+	TestElasticStress1D.cc \
 	test_materials.cc
 
 noinst_HEADERS = \
@@ -37,14 +39,18 @@
 	data/ElasticMaterialData.cc \
 	data/ElasticIsotropic3DData.cc \
 	data/ElasticPlaneStrainData.cc \
-	data/ElasticStrain1DData.cc
+	data/ElasticPlaneStressData.cc \
+	data/ElasticStrain1DData.cc \
+	data/ElasticStress1DData.cc
 
 noinst_HEADERS += \
 	data/MaterialData.hh \
 	data/ElasticMaterialData.hh \
 	data/ElasticIsotropic3DData.hh \
 	data/ElasticPlaneStrainData.hh \
+	data/ElasticPlaneStressData.hh \
 	data/ElasticStrain1DData.hh \
+	data/ElasticStress1DData.hh \
 	data/header.hh
 
 testmaterials_LDFLAGS = $(PETSC_LIB)

Added: short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticPlaneStress.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticPlaneStress.cc	2007-04-12 16:23:17 UTC (rev 6552)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticPlaneStress.cc	2007-04-12 16:36:07 UTC (rev 6553)
@@ -0,0 +1,85 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestElasticPlaneStress.hh" // Implementation of class methods
+
+#include "data/ElasticPlaneStressData.hh" // USES ElasticPlaneStressData
+
+#include "pylith/materials/ElasticPlaneStress.hh" // USES ElasticPlaneStress
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::materials::TestElasticPlaneStress );
+
+// ----------------------------------------------------------------------
+// Test DBValues()
+void
+pylith::materials::TestElasticPlaneStress::testDBValues(void)
+{ // testDBValues
+  ElasticPlaneStress material;
+  ElasticPlaneStressData data;
+  _testDBValues(&material, data);
+} // testDBValues
+
+// ----------------------------------------------------------------------
+// Test parameters()
+void
+pylith::materials::TestElasticPlaneStress::testParameters(void)
+{ // testParameters
+  ElasticPlaneStress material;
+  ElasticPlaneStressData data;
+  _testParameters(&material, data);
+} // testParameters
+
+// ----------------------------------------------------------------------
+// Test _dbToParameters()
+void
+pylith::materials::TestElasticPlaneStress::testDBToParameters(void)
+{ // testDBToParameters
+  ElasticPlaneStress material;
+  ElasticPlaneStressData data;
+  _testDBToParameters(&material, data);
+} // testDBToParameters
+
+// ----------------------------------------------------------------------
+// Test calcDensity()
+void
+pylith::materials::TestElasticPlaneStress::testCalcDensity(void)
+{ // testCalcDensity
+  ElasticPlaneStress material;
+  ElasticPlaneStressData data;
+  _testCalcDensity(&material, data);
+} // testCalcDensity
+
+// ----------------------------------------------------------------------
+// Test calcStress()
+void
+pylith::materials::TestElasticPlaneStress::testCalcStress(void)
+{ // testCalcStress
+  ElasticPlaneStress material;
+  ElasticPlaneStressData data;
+  _testCalcStress(&material, data);
+} // testCalcStress
+
+// ----------------------------------------------------------------------
+// Test calcElasticConsts()
+void
+pylith::materials::TestElasticPlaneStress::testCalcElasticConsts(void)
+{ // testElasticConsts
+  ElasticPlaneStress material;
+  ElasticPlaneStressData data;
+  _testCalcElasticConsts(&material, data);
+} // testElasticConsts
+
+
+// End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticPlaneStress.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticPlaneStress.hh	2007-04-12 16:23:17 UTC (rev 6552)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticPlaneStress.hh	2007-04-12 16:36:07 UTC (rev 6553)
@@ -0,0 +1,75 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/materials/TestElasticPlaneStress.hh
+ *
+ * @brief C++ TestElasticPlaneStress object
+ *
+ * C++ unit testing for ElasticPlaneStress.
+ */
+
+#if !defined(pylith_materials_testelasticplanestress_hh)
+#define pylith_materials_testelasticplanestress_hh
+
+#include "TestElasticMaterial.hh"
+
+/// Namespace for pylith package
+namespace pylith {
+  namespace materials {
+    class ElasticPlaneStress;
+    class TestElasticPlaneStress;
+    class ElasticPlaneStressData;
+  } // materials
+} // pylith
+
+/// C++ unit testing for ElasticPlaneStress
+class pylith::materials::TestElasticPlaneStress : public TestElasticMaterial
+{ // class TestElasticPlaneStress
+
+  // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+  CPPUNIT_TEST_SUITE( TestElasticPlaneStress );
+  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 TestElasticPlaneStress
+
+#endif // pylith_materials_testelasticplanestress_hh
+
+
+// End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticStress1D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticStress1D.cc	2007-04-12 16:23:17 UTC (rev 6552)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticStress1D.cc	2007-04-12 16:36:07 UTC (rev 6553)
@@ -0,0 +1,85 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestElasticStress1D.hh" // Implementation of class methods
+
+#include "data/ElasticStress1DData.hh" // USES ElasticStress1DData
+
+#include "pylith/materials/ElasticStress1D.hh" // USES ElasticStress1D
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::materials::TestElasticStress1D );
+
+// ----------------------------------------------------------------------
+// Test DBValues()
+void
+pylith::materials::TestElasticStress1D::testDBValues(void)
+{ // testDBValues
+  ElasticStress1D material;
+  ElasticStress1DData data;
+  _testDBValues(&material, data);
+} // testDBValues
+
+// ----------------------------------------------------------------------
+// Test parameters()
+void
+pylith::materials::TestElasticStress1D::testParameters(void)
+{ // testParameters
+  ElasticStress1D material;
+  ElasticStress1DData data;
+  _testParameters(&material, data);
+} // testParameters
+
+// ----------------------------------------------------------------------
+// Test _dbToParameters()
+void
+pylith::materials::TestElasticStress1D::testDBToParameters(void)
+{ // testDBToParameters
+  ElasticStress1D material;
+  ElasticStress1DData data;
+  _testDBToParameters(&material, data);
+} // testDBToParameters
+
+// ----------------------------------------------------------------------
+// Test calcDensity()
+void
+pylith::materials::TestElasticStress1D::testCalcDensity(void)
+{ // testCalcDensity
+  ElasticStress1D material;
+  ElasticStress1DData data;
+  _testCalcDensity(&material, data);
+} // testCalcDensity
+
+// ----------------------------------------------------------------------
+// Test calcStress()
+void
+pylith::materials::TestElasticStress1D::testCalcStress(void)
+{ // testCalcStress
+  ElasticStress1D material;
+  ElasticStress1DData data;
+  _testCalcStress(&material, data);
+} // testCalcStress
+
+// ----------------------------------------------------------------------
+// Test calcElasticConsts()
+void
+pylith::materials::TestElasticStress1D::testCalcElasticConsts(void)
+{ // testElasticConsts
+  ElasticStress1D material;
+  ElasticStress1DData data;
+  _testCalcElasticConsts(&material, data);
+} // testElasticConsts
+
+
+// End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticStress1D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticStress1D.hh	2007-04-12 16:23:17 UTC (rev 6552)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticStress1D.hh	2007-04-12 16:36:07 UTC (rev 6553)
@@ -0,0 +1,75 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/materials/TestElasticStress1D.hh
+ *
+ * @brief C++ TestElasticStress1D object
+ *
+ * C++ unit testing for ElasticStress1D.
+ */
+
+#if !defined(pylith_materials_testelasticstress1d_hh)
+#define pylith_materials_testelasticstress1d_hh
+
+#include "TestElasticMaterial.hh"
+
+/// Namespace for pylith package
+namespace pylith {
+  namespace materials {
+    class ElasticStress1D;
+    class TestElasticStress1D;
+    class ElasticStress1DData;
+  } // materials
+} // pylith
+
+/// C++ unit testing for ElasticStress1D
+class pylith::materials::TestElasticStress1D : public TestElasticMaterial
+{ // class TestElasticStress1D
+
+  // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+  CPPUNIT_TEST_SUITE( TestElasticStress1D );
+  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 TestElasticStress1D
+
+#endif // pylith_materials_testelasticstress1d_hh
+
+
+// End of file 

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/TestMaterial.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/TestMaterial.cc	2007-04-12 16:23:17 UTC (rev 6552)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/TestMaterial.cc	2007-04-12 16:36:07 UTC (rev 6553)
@@ -199,20 +199,25 @@
 { // _testDBToParameters
   CPPUNIT_ASSERT(0 != material);
   
-  double_array dbData(data.numDBValues);
-  for (int i=0; i < data.numDBValues; ++i)
-    dbData[i] = data.dbData[i];
+  const int numLocs = data.numLocs;
+  const int numDBValues = data.numDBValues;
+  double_array dbData(numDBValues);
 
-  const int numParameters = data.numParameters;
-  double* const parameterDataE = data.parameterData;
+  for (int iLoc=0; iLoc < numLocs; ++iLoc) {
+    for (int i=0; i < numDBValues; ++i)
+      dbData[i] = data.dbData[iLoc*numDBValues+i];
 
-  double_array parameterData(numParameters);
-  material->_dbToParameters(&parameterData, dbData);
+    const int numParameters = data.numParameters;
+    double* const parameterDataE = &data.parameterData[iLoc*numParameters];
 
-  const double tolerance = 1.0e-06;
-  for (int i=0; i < numParameters; ++i)
-    CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, parameterData[i]/parameterDataE[i],
-				 tolerance);
+    double_array parameterData(numParameters);
+    material->_dbToParameters(&parameterData, dbData);
+
+    const double tolerance = 1.0e-06;
+    for (int i=0; i < numParameters; ++i)
+      CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, parameterData[i]/parameterDataE[i],
+				   tolerance);
+  } // for
 } // _testDBToParameters
 
 // ----------------------------------------------------------------------

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticMaterialData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticMaterialData.cc	2007-04-12 16:23:17 UTC (rev 6552)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticMaterialData.cc	2007-04-12 16:36:07 UTC (rev 6553)
@@ -13,7 +13,6 @@
 #include "ElasticMaterialData.hh"
 
 pylith::materials::ElasticMaterialData::ElasticMaterialData(void) :
-  numLocs(0),
   density(0),
   strain(0),
   stress(0),

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticMaterialData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticMaterialData.hh	2007-04-12 16:23:17 UTC (rev 6552)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticMaterialData.hh	2007-04-12 16:36:07 UTC (rev 6553)
@@ -36,8 +36,6 @@
 // PUBLIC MEMBERS ///////////////////////////////////////////////////////
 public:
 
-  int numLocs; ///< Number of locations
-
   double* density; ///< Density at locations
   double* strain; ///< Strain at locations
   double* stress; ///< Stress at locations

Added: short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticPlaneStress.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticPlaneStress.py	2007-04-12 16:23:17 UTC (rev 6552)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticPlaneStress.py	2007-04-12 16:36:07 UTC (rev 6553)
@@ -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 = 4*muV * (lambdaV + muV) / (lambdaV + 2*muV)
+    C1122 = 2*muV*lambdaV / (lambdaV + 2*muV)
+    C1112 = 0.0
+    C2222 = 4*muV * (lambdaV + muV) / (lambdaV + 2*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/ElasticPlaneStressData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticPlaneStressData.cc	2007-04-12 16:23:17 UTC (rev 6552)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticPlaneStressData.cc	2007-04-12 16:36:07 UTC (rev 6553)
@@ -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 "ElasticPlaneStressData.hh"
+
+const int pylith::materials::ElasticPlaneStressData::_dimension = 2;
+
+const int pylith::materials::ElasticPlaneStressData::_numDBValues = 3;
+
+const int pylith::materials::ElasticPlaneStressData::_numParameters = 3;
+
+const int pylith::materials::ElasticPlaneStressData::_numLocs = 2;
+
+const char* pylith::materials::ElasticPlaneStressData::_dbValues[] = {
+"density",
+"vs",
+"vp",
+};
+
+const char* pylith::materials::ElasticPlaneStressData::_parameterNames[] = {
+"density",
+"mu",
+"lambda",
+};
+
+const double pylith::materials::ElasticPlaneStressData::_dbData[] = {
+  2.50000000e+03,
+  3.00000000e+03,
+  5.19615242e+03,
+  2.00000000e+03,
+  1.20000000e+03,
+  2.07846097e+03,
+};
+
+const double pylith::materials::ElasticPlaneStressData::_parameterData[] = {
+  2.50000000e+03,
+  2.25000000e+10,
+  2.25000000e+10,
+  2.00000000e+03,
+  2.88000000e+09,
+  2.88000000e+09,
+};
+
+const double pylith::materials::ElasticPlaneStressData::_density[] = {
+  2.50000000e+03,
+  2.00000000e+03,
+};
+
+const double pylith::materials::ElasticPlaneStressData::_strain[] = {
+  1.10000000e-04,
+  2.20000000e-04,
+  3.30000000e-04,
+  1.20000000e-04,
+  2.30000000e-04,
+  3.40000000e-04,
+};
+
+const double pylith::materials::ElasticPlaneStressData::_stress[] = {
+  9.90000000e+06,
+  1.48500000e+07,
+  1.48500000e+07,
+  1.36320000e+06,
+  1.99680000e+06,
+  1.95840000e+06,
+};
+
+const double pylith::materials::ElasticPlaneStressData::_elasticConsts[] = {
+  6.00000000e+10,
+  1.50000000e+10,
+  0.00000000e+00,
+  6.00000000e+10,
+  0.00000000e+00,
+  4.50000000e+10,
+  7.68000000e+09,
+  1.92000000e+09,
+  0.00000000e+00,
+  7.68000000e+09,
+  0.00000000e+00,
+  5.76000000e+09,
+};
+
+pylith::materials::ElasticPlaneStressData::ElasticPlaneStressData(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::ElasticPlaneStressData::~ElasticPlaneStressData(void)
+{}
+
+
+// End of file

Added: short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticPlaneStressData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticPlaneStressData.hh	2007-04-12 16:23:17 UTC (rev 6552)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticPlaneStressData.hh	2007-04-12 16:36:07 UTC (rev 6553)
@@ -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_elasticplanestressdata_hh)
+#define pylith_materials_elasticplanestressdata_hh
+
+#include "ElasticMaterialData.hh"
+
+namespace pylith {
+  namespace materials {
+     class ElasticPlaneStressData;
+  } // pylith
+} // materials
+
+class pylith::materials::ElasticPlaneStressData : public ElasticMaterialData
+{
+
+public: 
+
+  /// Constructor
+  ElasticPlaneStressData(void);
+
+  /// Destructor
+  ~ElasticPlaneStressData(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_elasticplanestressdata_hh
+
+// End of file

Added: short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticStress1D.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticStress1D.py	2007-04-12 16:23:17 UTC (rev 6552)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticStress1D.py	2007-04-12 16:36:07 UTC (rev 6553)
@@ -0,0 +1,105 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+#                           Brad T. Aagaard
+#                        U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file unittests/libtests/materials/data/ElasticStress1D.py
+
+## @brief Python application for generating C++ data files for testing
+## C++ ElasticStress1D object.
+
+from ElasticMaterialApp import ElasticMaterialApp
+
+import numpy
+
+# ----------------------------------------------------------------------
+# ElasticStress1D class
+class ElasticStress1D(ElasticMaterialApp):
+  """
+  Python application for generating C++ data files for testing C++
+  ElasticStress1D object.
+  """
+  
+  # PUBLIC METHODS /////////////////////////////////////////////////////
+  
+  def __init__(self, name="elasticstress1d"):
+    """
+    Constructor.
+    """
+    ElasticMaterialApp.__init__(self, name)
+
+    self.dimension = 1
+
+    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]
+    
+    densityB = 2000.0
+    vsB = 1200.0
+    vpB = vsB*3**0.5
+    strainB = [1.2e-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 = 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, 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 = muV * (3*lambdaV + 2*muV) / (lambdaV + muV)
+    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 = ElasticStress1D()
+  app.run()
+
+
+# End of file 

Added: short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticStress1DData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticStress1DData.cc	2007-04-12 16:23:17 UTC (rev 6552)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticStress1DData.cc	2007-04-12 16:36:07 UTC (rev 6553)
@@ -0,0 +1,96 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+//                           Brad T. Aagaard
+//                        U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+// DO NOT EDIT THIS FILE
+// This file was generated from python application elasticstress1d.
+
+#include "ElasticStress1DData.hh"
+
+const int pylith::materials::ElasticStress1DData::_dimension = 1;
+
+const int pylith::materials::ElasticStress1DData::_numDBValues = 3;
+
+const int pylith::materials::ElasticStress1DData::_numParameters = 3;
+
+const int pylith::materials::ElasticStress1DData::_numLocs = 2;
+
+const char* pylith::materials::ElasticStress1DData::_dbValues[] = {
+"density",
+"vs",
+"vp",
+};
+
+const char* pylith::materials::ElasticStress1DData::_parameterNames[] = {
+"density",
+"mu",
+"lambda",
+};
+
+const double pylith::materials::ElasticStress1DData::_dbData[] = {
+  2.50000000e+03,
+  3.00000000e+03,
+  5.19615242e+03,
+  2.00000000e+03,
+  1.20000000e+03,
+  2.07846097e+03,
+};
+
+const double pylith::materials::ElasticStress1DData::_parameterData[] = {
+  2.50000000e+03,
+  2.25000000e+10,
+  2.25000000e+10,
+  2.00000000e+03,
+  2.88000000e+09,
+  2.88000000e+09,
+};
+
+const double pylith::materials::ElasticStress1DData::_density[] = {
+  2.50000000e+03,
+  2.00000000e+03,
+};
+
+const double pylith::materials::ElasticStress1DData::_strain[] = {
+  1.10000000e-04,
+  1.20000000e-04,
+};
+
+const double pylith::materials::ElasticStress1DData::_stress[] = {
+  6.18750000e+06,
+  8.64000000e+05,
+};
+
+const double pylith::materials::ElasticStress1DData::_elasticConsts[] = {
+  5.62500000e+10,
+  7.20000000e+09,
+};
+
+pylith::materials::ElasticStress1DData::ElasticStress1DData(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::ElasticStress1DData::~ElasticStress1DData(void)
+{}
+
+
+// End of file

Added: short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticStress1DData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticStress1DData.hh	2007-04-12 16:23:17 UTC (rev 6552)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticStress1DData.hh	2007-04-12 16:36:07 UTC (rev 6553)
@@ -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 elasticstress1d.
+
+#if !defined(pylith_materials_elasticstress1ddata_hh)
+#define pylith_materials_elasticstress1ddata_hh
+
+#include "ElasticMaterialData.hh"
+
+namespace pylith {
+  namespace materials {
+     class ElasticStress1DData;
+  } // pylith
+} // materials
+
+class pylith::materials::ElasticStress1DData : public ElasticMaterialData
+{
+
+public: 
+
+  /// Constructor
+  ElasticStress1DData(void);
+
+  /// Destructor
+  ~ElasticStress1DData(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_elasticstress1ddata_hh
+
+// End of file

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/MaterialData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/MaterialData.cc	2007-04-12 16:23:17 UTC (rev 6552)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/MaterialData.cc	2007-04-12 16:36:07 UTC (rev 6553)
@@ -16,6 +16,7 @@
 // Constructor
 pylith::materials::MaterialData::MaterialData(void) :
   dimension(0),
+  numLocs(0),
   numDBValues(0),
   numParameters(0),
   dbValues(0),

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/MaterialData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/MaterialData.hh	2007-04-12 16:23:17 UTC (rev 6552)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/MaterialData.hh	2007-04-12 16:36:07 UTC (rev 6553)
@@ -35,6 +35,7 @@
 public:
 
   int dimension; ///< Number of dimensions
+  int numLocs; ///< Number of locations
 
   int numDBValues; ///< Number of database values
   int numParameters; ///< Number of parameters
@@ -42,8 +43,8 @@
   char** dbValues; ///< Aray of names of database values;
   char** parameterNames; //< Array of names of parameters
 
-  double* dbData; ///< Array of database values
-  double* parameterData; ///< Array of parameter values
+  double* dbData; ///< Array of database values at locations
+  double* parameterData; ///< Array of parameter values at locations
 };
 
 #endif // pylith_materials_materialdata_hh

Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/generate.sh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/generate.sh	2007-04-12 16:23:17 UTC (rev 6552)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/generate.sh	2007-04-12 16:36:07 UTC (rev 6553)
@@ -32,6 +32,11 @@
     --data.object=ElasticPlaneStrainData \
     --data.parent=ElasticMaterialData
 
+  python ElasticPlaneStress.py \
+    --data.namespace=pylith,materials \
+    --data.object=ElasticPlaneStressData \
+    --data.parent=ElasticMaterialData
+
   # 1-D ----------------------------------------------------------------
 
   python ElasticStrain1D.py \
@@ -39,6 +44,11 @@
     --data.object=ElasticStrain1DData \
     --data.parent=ElasticMaterialData
 
+  python ElasticStress1D.py \
+    --data.namespace=pylith,materials \
+    --data.object=ElasticStress1DData \
+    --data.parent=ElasticMaterialData
+
 fi
 
 # //////////////////////////////////////////////////////////////////////

Added: short/3D/PyLith/trunk/unittests/pytests/materials/TestElasticPlaneStrain.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/materials/TestElasticPlaneStrain.py	2007-04-12 16:23:17 UTC (rev 6552)
+++ short/3D/PyLith/trunk/unittests/pytests/materials/TestElasticPlaneStrain.py	2007-04-12 16:36:07 UTC (rev 6553)
@@ -0,0 +1,36 @@
+#!/usr/bin/env python
+#
+# ======================================================================
+#
+#                           Brad T. Aagaard
+#                        U.S. Geological Survey
+#
+# {LicenseText}
+#
+# ======================================================================
+#
+
+## @file unittests/pytests/materials/TestElasticPlaneStrain.py
+
+## @brief Unit testing of ElasticPlaneStrain object.
+
+import unittest
+
+# ----------------------------------------------------------------------
+class TestElasticPlaneStrain(unittest.TestCase):
+  """
+  Unit testing of ElasticPlaneStrain object.
+  """
+
+  def test_constructor(self):
+    """
+    Test constructor.
+    """
+    from pylith.materials.ElasticPlaneStrain import ElasticPlaneStrain
+    material = ElasticPlaneStrain()
+
+    self.assertNotEqual(None, material.cppHandle)
+    return
+
+
+# End of file 

Added: short/3D/PyLith/trunk/unittests/pytests/materials/TestElasticPlaneStress.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/materials/TestElasticPlaneStress.py	2007-04-12 16:23:17 UTC (rev 6552)
+++ short/3D/PyLith/trunk/unittests/pytests/materials/TestElasticPlaneStress.py	2007-04-12 16:36:07 UTC (rev 6553)
@@ -0,0 +1,36 @@
+#!/usr/bin/env python
+#
+# ======================================================================
+#
+#                           Brad T. Aagaard
+#                        U.S. Geological Survey
+#
+# {LicenseText}
+#
+# ======================================================================
+#
+
+## @file unittests/pytests/materials/TestElasticPlaneStress.py
+
+## @brief Unit testing of ElasticPlaneStress object.
+
+import unittest
+
+# ----------------------------------------------------------------------
+class TestElasticPlaneStress(unittest.TestCase):
+  """
+  Unit testing of ElasticPlaneStress object.
+  """
+
+  def test_constructor(self):
+    """
+    Test constructor.
+    """
+    from pylith.materials.ElasticPlaneStress import ElasticPlaneStress
+    material = ElasticPlaneStress()
+
+    self.assertNotEqual(None, material.cppHandle)
+    return
+
+
+# End of file 

Added: short/3D/PyLith/trunk/unittests/pytests/materials/TestElasticStrain1D.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/materials/TestElasticStrain1D.py	2007-04-12 16:23:17 UTC (rev 6552)
+++ short/3D/PyLith/trunk/unittests/pytests/materials/TestElasticStrain1D.py	2007-04-12 16:36:07 UTC (rev 6553)
@@ -0,0 +1,36 @@
+#!/usr/bin/env python
+#
+# ======================================================================
+#
+#                           Brad T. Aagaard
+#                        U.S. Geological Survey
+#
+# {LicenseText}
+#
+# ======================================================================
+#
+
+## @file unittests/pytests/materials/TestElasticStrain1D.py
+
+## @brief Unit testing of ElasticStrain1D object.
+
+import unittest
+
+# ----------------------------------------------------------------------
+class TestElasticStrain1D(unittest.TestCase):
+  """
+  Unit testing of ElasticStrain1D object.
+  """
+
+  def test_constructor(self):
+    """
+    Test constructor.
+    """
+    from pylith.materials.ElasticStrain1D import ElasticStrain1D
+    material = ElasticStrain1D()
+
+    self.assertNotEqual(None, material.cppHandle)
+    return
+
+
+# End of file 

Added: short/3D/PyLith/trunk/unittests/pytests/materials/TestElasticStress1D.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/materials/TestElasticStress1D.py	2007-04-12 16:23:17 UTC (rev 6552)
+++ short/3D/PyLith/trunk/unittests/pytests/materials/TestElasticStress1D.py	2007-04-12 16:36:07 UTC (rev 6553)
@@ -0,0 +1,36 @@
+#!/usr/bin/env python
+#
+# ======================================================================
+#
+#                           Brad T. Aagaard
+#                        U.S. Geological Survey
+#
+# {LicenseText}
+#
+# ======================================================================
+#
+
+## @file unittests/pytests/materials/TestElasticStress1D.py
+
+## @brief Unit testing of ElasticStress1D object.
+
+import unittest
+
+# ----------------------------------------------------------------------
+class TestElasticStress1D(unittest.TestCase):
+  """
+  Unit testing of ElasticStress1D object.
+  """
+
+  def test_constructor(self):
+    """
+    Test constructor.
+    """
+    from pylith.materials.ElasticStress1D import ElasticStress1D
+    material = ElasticStress1D()
+
+    self.assertNotEqual(None, material.cppHandle)
+    return
+
+
+# End of file 

Modified: short/3D/PyLith/trunk/unittests/pytests/materials/testmaterials.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/materials/testmaterials.py	2007-04-12 16:23:17 UTC (rev 6552)
+++ short/3D/PyLith/trunk/unittests/pytests/materials/testmaterials.py	2007-04-12 16:36:07 UTC (rev 6553)
@@ -62,6 +62,18 @@
     from TestElasticIsotropic3D import TestElasticIsotropic3D
     suite.addTest(unittest.makeSuite(TestElasticIsotropic3D))
 
+    from TestElasticPlaneStrain import TestElasticPlaneStrain
+    suite.addTest(unittest.makeSuite(TestElasticPlaneStrain))
+
+    from TestElasticPlaneStress import TestElasticPlaneStress
+    suite.addTest(unittest.makeSuite(TestElasticPlaneStress))
+
+    from TestElasticStrain1D import TestElasticStrain1D
+    suite.addTest(unittest.makeSuite(TestElasticStrain1D))
+
+    from TestElasticStress1D import TestElasticStress1D
+    suite.addTest(unittest.makeSuite(TestElasticStress1D))
+
     return suite
 
 



More information about the cig-commits mailing list