[cig-commits] r6277 - in short/3D/PyLith/trunk: libsrc/materials
unittests/libtests/materials unittests/libtests/materials/data
brad at geodynamics.org
brad at geodynamics.org
Sun Mar 18 21:19:08 PDT 2007
Author: brad
Date: 2007-03-18 21:19:07 -0700 (Sun, 18 Mar 2007)
New Revision: 6277
Added:
short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticIsotropic3D.cc
short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticIsotropic3D.hh
short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticMaterial.cc
short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticMaterial.hh
short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticIsotropic3D.py
short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticMaterialApp.py
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/generate.sh
short/3D/PyLith/trunk/unittests/libtests/materials/data/header.hh
Modified:
short/3D/PyLith/trunk/libsrc/materials/ElasticIsotropic3D.cc
short/3D/PyLith/trunk/libsrc/materials/ElasticIsotropic3D.hh
short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial.hh
short/3D/PyLith/trunk/libsrc/materials/Material.hh
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/TestMaterial.hh
short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticIsotropic3DData.cc
short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticIsotropic3DData.hh
short/3D/PyLith/trunk/unittests/libtests/materials/data/MaterialData.hh
Log:
Implemented a bunch of material unit tests. Still need to implement 2 tests (currently forced to fail).
Modified: short/3D/PyLith/trunk/libsrc/materials/ElasticIsotropic3D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/ElasticIsotropic3D.cc 2007-03-17 02:03:36 UTC (rev 6276)
+++ short/3D/PyLith/trunk/libsrc/materials/ElasticIsotropic3D.cc 2007-03-19 04:19:07 UTC (rev 6277)
@@ -53,7 +53,7 @@
const int pylith::materials::_ElasticIsotropic3D::numElasticConsts = 21;
const int pylith::materials::_ElasticIsotropic3D::numDBValues = 3;
const char* pylith::materials::_ElasticIsotropic3D::namesDBValues[] =
- {"density", "vp", "vs" };
+ {"density", "vs", "vp" };
const int pylith::materials::_ElasticIsotropic3D::numParameters = 3;
const char* pylith::materials::_ElasticIsotropic3D::namesParameters[] =
{"density", "mu", "lambda" };
@@ -129,7 +129,7 @@
void
pylith::materials::ElasticIsotropic3D::_dbToParameters(double* paramVals,
const int numParams,
- double* dbValues,
+ const double* dbValues,
const int numValues) const
{ // computeParameters
assert(0 != paramVals);
@@ -194,11 +194,11 @@
_elasticConsts[indexC+ 7] = lambda; // C2233
_elasticConsts[indexC+ 8] = 0; // C2212
_elasticConsts[indexC+ 9] = 0; // C2223
- _elasticConsts[indexC+10] = 0; // C2212
+ _elasticConsts[indexC+10] = 0; // C2213
_elasticConsts[indexC+11] = lambda + 2.0*mu; // C3333
_elasticConsts[indexC+12] = 0; // C3312
_elasticConsts[indexC+13] = 0; // C3323
- _elasticConsts[indexC+14] = 0; // C3312
+ _elasticConsts[indexC+14] = 0; // C3313
_elasticConsts[indexC+15] = mu; // C1212
_elasticConsts[indexC+16] = 0; // C1223
_elasticConsts[indexC+17] = 0; // C1213
Modified: short/3D/PyLith/trunk/libsrc/materials/ElasticIsotropic3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/ElasticIsotropic3D.hh 2007-03-17 02:03:36 UTC (rev 6276)
+++ short/3D/PyLith/trunk/libsrc/materials/ElasticIsotropic3D.hh 2007-03-19 04:19:07 UTC (rev 6277)
@@ -112,7 +112,7 @@
*/
void _dbToParameters(double* paramVals,
const int numParams,
- double* dbValues,
+ const double* dbValues,
const int numValues) const;
/** Compute density at locations from parameters.
Modified: short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial.hh 2007-03-17 02:03:36 UTC (rev 6276)
+++ short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial.hh 2007-03-19 04:19:07 UTC (rev 6277)
@@ -28,12 +28,15 @@
namespace pylith {
namespace materials {
class ElasticMaterial;
+
+ class TestElasticMaterial; // unit testing
} // materials
} // pylith
/// C++ object for material constitutive model.
class pylith::materials::ElasticMaterial : public Material
{ // class ElasticMaterial
+ friend class TestElasticMaterial; ///< unit testing
// PUBLIC TYPEDEFS ////////////////////////////////////////////////////
public :
Modified: short/3D/PyLith/trunk/libsrc/materials/Material.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/Material.hh 2007-03-17 02:03:36 UTC (rev 6276)
+++ short/3D/PyLith/trunk/libsrc/materials/Material.hh 2007-03-19 04:19:07 UTC (rev 6277)
@@ -156,7 +156,7 @@
virtual
void _dbToParameters(double* paramVals,
const int numParams,
- double* dbValues,
+ const double* dbValues,
const int numValues) const = 0;
// NOT IMPLEMENTED ////////////////////////////////////////////////////
Modified: short/3D/PyLith/trunk/unittests/libtests/materials/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/Makefile.am 2007-03-17 02:03:36 UTC (rev 6276)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/Makefile.am 2007-03-19 04:19:07 UTC (rev 6277)
@@ -20,6 +20,8 @@
# Primary source files
testmaterials_SOURCES = \
TestMaterial.cc \
+ TestElasticMaterial.cc \
+ TestElasticIsotropic3D.cc \
test_materials.cc
noinst_HEADERS = \
@@ -28,10 +30,12 @@
# Source files associated with testing data
testmaterials_SOURCES += \
data/MaterialData.cc \
+ data/ElasticMaterialData.cc \
data/ElasticIsotropic3DData.cc
noinst_HEADERS += \
data/MaterialData.hh \
+ data/ElasticMaterialData.hh \
data/ElasticIsotropic3DData.hh
testmaterials_LDFLAGS = $(PETSC_LIB)
Added: short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticIsotropic3D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticIsotropic3D.cc 2007-03-17 02:03:36 UTC (rev 6276)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticIsotropic3D.cc 2007-03-19 04:19:07 UTC (rev 6277)
@@ -0,0 +1,74 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestElasticIsotropic3D.hh" // Implementation of class methods
+
+#include "pylith/materials/ElasticIsotropic3D.hh" // USES ElasticIsotropic3D
+#include "data/ElasticIsotropic3DData.hh" // USES ElasticIsotropic3DData
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::materials::TestElasticIsotropic3D );
+
+// ----------------------------------------------------------------------
+// Test DBValues()
+void
+pylith::materials::TestElasticIsotropic3D::testDBValues(void)
+{ // testDBValues
+ ElasticIsotropic3D material;
+ ElasticIsotropic3DData data;
+ _testDBValues(&material, data);
+} // testDBValues
+
+// ----------------------------------------------------------------------
+// Test parameters()
+void
+pylith::materials::TestElasticIsotropic3D::testParameters(void)
+{ // testParameters
+ ElasticIsotropic3D material;
+ ElasticIsotropic3DData data;
+ _testParameters(&material, data);
+} // testParameters
+
+// ----------------------------------------------------------------------
+// Test _dbToParameters()
+void
+pylith::materials::TestElasticIsotropic3D::testDBToParameters(void)
+{ // testDBToParameters
+ ElasticIsotropic3D material;
+ ElasticIsotropic3DData data;
+ _testDBToParameters(&material, data);
+} // testDBToParameters
+
+// ----------------------------------------------------------------------
+// Test calcDensity()
+void
+pylith::materials::TestElasticIsotropic3D::testCalcDensity(void)
+{ // testCalcDensity
+ ElasticIsotropic3D material;
+ ElasticIsotropic3DData data;
+ _testCalcDensity(&material, data);
+} // testCalcDensity
+
+// ----------------------------------------------------------------------
+// Test calcElasticConsts()
+void
+pylith::materials::TestElasticIsotropic3D::testCalcElasticConsts(void)
+{ // testElasticConsts
+ ElasticIsotropic3D material;
+ ElasticIsotropic3DData data;
+ _testCalcElasticConsts(&material, data);
+} // testElasticConsts
+
+
+// End of file
Added: short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticIsotropic3D.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticIsotropic3D.hh 2007-03-17 02:03:36 UTC (rev 6276)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticIsotropic3D.hh 2007-03-19 04:19:07 UTC (rev 6277)
@@ -0,0 +1,71 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/materials/TestElasticIsotropic3D.hh
+ *
+ * @brief C++ TestElasticIsotropic3D object
+ *
+ * C++ unit testing for ElasticIsotropic3D.
+ */
+
+#if !defined(pylith_materials_testelasticisotropic3d_hh)
+#define pylith_materials_testelasticisotropic3d_hh
+
+#include "TestElasticMaterial.hh"
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace materials {
+ class ElasticIsotropic3D;
+ class TestElasticIsotropic3D;
+ class ElasticIsotropic3DData;
+ } // materials
+} // pylith
+
+/// C++ unit testing for ElasticIsotropic3D
+class pylith::materials::TestElasticIsotropic3D : public TestElasticMaterial
+{ // class TestElasticIsotropic3D
+
+ // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+ CPPUNIT_TEST_SUITE( TestElasticIsotropic3D );
+ CPPUNIT_TEST( testDBToParameters );
+ CPPUNIT_TEST( testDBValues );
+ CPPUNIT_TEST( testParameters );
+ CPPUNIT_TEST( testCalcDensity );
+ 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 calcElasticConsts()
+ void testCalcElasticConsts(void);
+
+}; // class TestElasticIsotropic3D
+
+#endif // pylith_materials_testelasticisotropic3d_hh
+
+
+// End of file
Added: short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticMaterial.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticMaterial.cc 2007-03-17 02:03:36 UTC (rev 6276)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticMaterial.cc 2007-03-19 04:19:07 UTC (rev 6277)
@@ -0,0 +1,152 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestElasticMaterial.hh" // Implementation of class methods
+
+#include "pylith/materials/ElasticIsotropic3D.hh" // USES ElasticIsotropic3D
+#include "data/ElasticMaterialData.hh" // USES ElasticMaterialData
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::materials::TestElasticMaterial );
+
+// ----------------------------------------------------------------------
+// Test clone()
+void
+pylith::materials::TestElasticMaterial::testClone(void)
+{ // testClone
+ const char* label = "my_material";
+ const int id = 34;
+ ElasticIsotropic3D material;
+ material.label(label);
+ material.id(id);
+
+ ElasticMaterial* mycopy = material.clone();
+ CPPUNIT_ASSERT(0 != mycopy);
+ CPPUNIT_ASSERT(0 == strcmp(label, material.label().c_str()));
+ CPPUNIT_ASSERT_EQUAL(id, material.id());
+} // testClone
+
+// ----------------------------------------------------------------------
+// Test density()
+void
+pylith::materials::TestElasticMaterial::testDensity(void)
+{ // testDensity
+ const double densityE[] = { 1.0, 8.0 };
+ const int numQuadPts = 2;
+
+ ElasticIsotropic3D material;
+ material._density = (numQuadPts > 0) ? new double[numQuadPts] : 0;
+ CPPUNIT_ASSERT(0 != material._density);
+ memcpy(material._density, densityE, numQuadPts*sizeof(double));
+
+ const double* density = material.density();
+ for (int i=0; i < numQuadPts; ++i)
+ CPPUNIT_ASSERT_EQUAL(densityE[i], density[i]);
+} // testDensity
+
+// ----------------------------------------------------------------------
+// Test numElasticConsts() and elasticConsts()
+void
+pylith::materials::TestElasticMaterial::testElasticConsts(void)
+{ // testElasticConsts
+ const double elasticConstsE[] = { 4.0, 1.0, 2.0 };
+ const int numQuadPts = 3;
+
+ ElasticIsotropic3D material;
+ material._elasticConsts = (numQuadPts > 0) ? new double[numQuadPts] : 0;
+ CPPUNIT_ASSERT(0 != material._elasticConsts);
+ memcpy(material._elasticConsts, elasticConstsE, numQuadPts*sizeof(double));
+
+ const double* elasticConsts = material.elasticConsts();
+ for (int i=0; i < numQuadPts; ++i)
+ CPPUNIT_ASSERT_EQUAL(elasticConstsE[i], elasticConsts[i]);
+
+ CPPUNIT_ASSERT_EQUAL(21, material.numElasticConsts());
+} // testElasticConsts
+
+// ----------------------------------------------------------------------
+// Test calcProperties()
+void
+pylith::materials::TestElasticMaterial::testCalcProperties(void)
+{ // testCalcProperties
+ CPPUNIT_ASSERT(false);
+} // testCalcProperties
+
+// ----------------------------------------------------------------------
+// Test _initCellData()
+void
+pylith::materials::TestElasticMaterial::testInitCellData(void)
+{ // testInitCellData
+ ElasticIsotropic3D material;
+
+ CPPUNIT_ASSERT(0 == material._density);
+ CPPUNIT_ASSERT(0 == material._elasticConsts);
+ const int numQuadPts = 4;
+ material._initCellData(numQuadPts);
+ CPPUNIT_ASSERT(0 != material._density);
+ CPPUNIT_ASSERT(0 != material._elasticConsts);
+} // testInitCellData
+
+// ----------------------------------------------------------------------
+// Test _calcDensity()
+void
+pylith::materials::TestElasticMaterial::_testCalcDensity(
+ ElasticMaterial* material,
+ const ElasticMaterialData& data) const
+{ // _testCalcDensity
+ const int numQuadPts = data.numLocs;
+ material->_initCellData(numQuadPts);
+ material->_calcDensity(data.parameterData, data.numParameters, data.numLocs);
+ const double* density = material->density();
+ const double* densityE = data.density;
+
+ CPPUNIT_ASSERT(0 != density);
+ CPPUNIT_ASSERT(0 != densityE);
+
+ const double tolerance = 1.0e-06;
+ const double size = numQuadPts;
+ for (int i=0; i < size; ++i)
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, density[i]/densityE[i], tolerance);
+} // _testCalcDensity
+
+// ----------------------------------------------------------------------
+// Test _calcElasticConsts()
+void
+pylith::materials::TestElasticMaterial::_testCalcElasticConsts(
+ ElasticMaterial* material,
+ const ElasticMaterialData& data) const
+{ // _testCalcElasticConsts
+ const int numQuadPts = data.numLocs;
+ material->_initCellData(numQuadPts);
+ material->_calcElasticConsts(data.parameterData, data.numParameters,
+ data.numLocs);
+ const double* elasticConsts = material->elasticConsts();
+ const double* elasticConstsE = data.elasticConsts;
+
+ CPPUNIT_ASSERT(0 != elasticConsts);
+ CPPUNIT_ASSERT(0 != elasticConstsE);
+
+ const double tolerance = 1.0e-06;
+ const double size = numQuadPts * material->numElasticConsts();
+ for (int i=0; i < size; ++i)
+ if (fabs(elasticConstsE[i]) > tolerance)
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, elasticConsts[i]/elasticConstsE[i],
+ tolerance);
+ else
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(elasticConstsE[i], elasticConsts[i],
+ tolerance);
+} // _testCalcElasticConsts
+
+
+// End of file
Added: short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticMaterial.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticMaterial.hh 2007-03-17 02:03:36 UTC (rev 6276)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/TestElasticMaterial.hh 2007-03-19 04:19:07 UTC (rev 6277)
@@ -0,0 +1,89 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/materials/TestElasticMaterial.hh
+ *
+ * @brief C++ TestElasticMaterial object
+ *
+ * C++ unit testing for ElasticMaterial.
+ */
+
+#if !defined(pylith_materials_testelasticmaterial_hh)
+#define pylith_materials_testelasticmaterial_hh
+
+#include "TestMaterial.hh"
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace materials {
+ class ElasticMaterial;
+ class TestElasticMaterial;
+ class ElasticMaterialData;
+ } // materials
+} // pylith
+
+/// C++ unit testing for ElasticMaterial
+class pylith::materials::TestElasticMaterial : public TestMaterial
+{ // class TestElasticMaterial
+
+ // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+ CPPUNIT_TEST_SUITE( TestElasticMaterial );
+ CPPUNIT_TEST( testClone );
+ CPPUNIT_TEST( testDensity );
+ CPPUNIT_TEST( testElasticConsts );
+ CPPUNIT_TEST( testCalcProperties );
+ CPPUNIT_TEST( testInitCellData );
+ CPPUNIT_TEST_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Test clone()
+ void testClone(void);
+
+ /// Test density()
+ void testDensity(void);
+
+ /// Test elaticConsts()
+ void testElasticConsts(void);
+
+ /// Test calcProperties()
+ void testCalcProperties(void);
+
+ /// Test _initCellData()
+ void testInitCellData(void);
+
+ // PROTECTED METHODS //////////////////////////////////////////////////
+protected :
+
+ /** Test _calcDensity()
+ *
+ * @param material Pointer to material
+ * @param data Data for testing material
+ */
+ void _testCalcDensity(ElasticMaterial* material,
+ const ElasticMaterialData& data) const;
+
+ /** Test _calcElasticConsts()
+ *
+ * @param material Pointer to material
+ * @param data Data for testing material
+ */
+ void _testCalcElasticConsts(ElasticMaterial* material,
+ const ElasticMaterialData& data) const;
+
+}; // class TestElasticMaterial
+
+#endif // pylith_materials_testelasticmaterial_hh
+
+// End of file
Modified: short/3D/PyLith/trunk/unittests/libtests/materials/TestMaterial.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/TestMaterial.cc 2007-03-17 02:03:36 UTC (rev 6276)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/TestMaterial.cc 2007-03-19 04:19:07 UTC (rev 6277)
@@ -19,6 +19,8 @@
#include "spatialdata/spatialdb/SimpleDB.hh" // USES SimpleDB
+#include <math.h> // USES assert()
+
// ----------------------------------------------------------------------
CPPUNIT_TEST_SUITE_REGISTRATION( pylith::materials::TestMaterial );
@@ -76,7 +78,24 @@
pylith::materials::TestMaterial::_testDBToParameters(Material* material,
const MaterialData& data) const
{ // _testDBToParameters
- CPPUNIT_ASSERT(false);
+ CPPUNIT_ASSERT(0 != material);
+
+ const int numDBValues = data.numDBValues;
+ double* const dbData = data.dbData;
+ const int numParameters = data.numParameters;
+ double* const parameterDataE = data.parameterData;
+
+ double* parameterData = (numParameters > 0) ? new double[numParameters] : 0;
+ material->_dbToParameters(parameterData, numParameters,
+ dbData, numDBValues);
+
+ const double tolerance = 1.0e-06;
+ for (int i=0; i < numParameters; ++i)
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0,
+ parameterData[i]/parameterDataE[i],
+ tolerance);
+
+ delete[] parameterData; parameterData = 0;
} // _testDBToParameters
// ----------------------------------------------------------------------
@@ -85,6 +104,8 @@
pylith::materials::TestMaterial::_testDBValues(Material* material,
const MaterialData& data) const
{ // _testDBValues
+ CPPUNIT_ASSERT(0 != material);
+
const int numDBValues = data.numDBValues;
CPPUNIT_ASSERT(numDBValues == material->_numDBValues());
@@ -100,6 +121,8 @@
pylith::materials::TestMaterial::_testParameters(Material* material,
const MaterialData& data) const
{ // _testParameters
+ CPPUNIT_ASSERT(0 != material);
+
const int numParameters = data.numParameters;
CPPUNIT_ASSERT(numParameters == material->_numParameters());
Modified: short/3D/PyLith/trunk/unittests/libtests/materials/TestMaterial.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/TestMaterial.hh 2007-03-17 02:03:36 UTC (rev 6276)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/TestMaterial.hh 2007-03-19 04:19:07 UTC (rev 6277)
@@ -18,8 +18,8 @@
* C++ unit testing for Material.
*/
-#if !defined(pylith_materials_testquadrature_hh)
-#define pylith_materials_testquadrature_hh
+#if !defined(pylith_materials_testmaterial_hh)
+#define pylith_materials_testmaterial_hh
#include <cppunit/extensions/HelperMacros.h>
@@ -88,6 +88,6 @@
}; // class TestMaterial
-#endif // pylith_materials_testquadrature_hh
+#endif // pylith_materials_testmaterial_hh
// End of file
Added: short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticIsotropic3D.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticIsotropic3D.py 2007-03-17 02:03:36 UTC (rev 6276)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticIsotropic3D.py 2007-03-19 04:19:07 UTC (rev 6277)
@@ -0,0 +1,112 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+# Brad T. Aagaard
+# U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file unittests/libtests/materials/data/ElasticIsotropic3D.py
+
+## @brief Python application for generating C++ data files for testing
+## C++ ElasticIsotropic3D object.
+
+from ElasticMaterialApp import ElasticMaterialApp
+
+import numpy
+
+# ----------------------------------------------------------------------
+# ElasticIsotropic3D class
+class ElasticIsotropic3D(ElasticMaterialApp):
+ """
+ Python application for generating C++ data files for testing C++
+ ElasticIsotropic3D object.
+ """
+
+ # PUBLIC METHODS /////////////////////////////////////////////////////
+
+ def __init__(self, name="elasticisotropic3d"):
+ """
+ Constructor.
+ """
+ ElasticMaterialApp.__init__(self, name)
+
+ 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
+ densityB = 2000.0
+ vsB = 1200.0
+ vpB = vsB*3**0.5
+ 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 = 21
+ self.density = numpy.array([densityA, densityB],
+ dtype=numpy.float64)
+ self.elasticConsts = numpy.zeros( (self.numLocs, numElasticConsts),
+ dtype=numpy.float64)
+ self.elasticConsts[0,:] = self._calcElasticConsts(densityA, muA, lambdaA)
+ self.elasticConsts[1,:] = self._calcElasticConsts(densityB, muB, lambdaB)
+ return
+
+
+ def _calcElasticConsts(self, densityV, muV, lambdaV):
+ """
+ Compute elastic constants.
+ """
+ C1111 = lambdaV + 2.0*muV
+ C1122 = lambdaV
+ C1133 = lambdaV
+ C1112 = 0.0
+ C1123 = 0.0
+ C1113 = 0.0
+ C2222 = lambdaV + 2.0*muV
+ C2233 = lambdaV
+ C2212 = 0.0
+ C2223 = 0.0
+ C2213 = 0.0
+ C3333 = lambdaV + 2.0*muV
+ C3312 = 0.0
+ C3323 = 0.0
+ C3313 = 0.0
+ C1212 = muV
+ C1223 = 0.0
+ C1213 = 0.0
+ C2323 = muV
+ C2313 = 0.0
+ C1313 = muV
+ elasticConsts = numpy.array([C1111, C1122, C1133, C1112, C1123, C1113,
+ C2222, C2233, C2212, C2223, C2213,
+ C3333, C3312, C3323, C3313,
+ C1212, C1223, C1213,
+ C2323, C2313,
+ C1313], dtype=numpy.float64)
+ return elasticConsts
+
+
+# MAIN /////////////////////////////////////////////////////////////////
+if __name__ == "__main__":
+
+ app = ElasticIsotropic3D()
+ app.run()
+
+
+# End of file
Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticIsotropic3DData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticIsotropic3DData.cc 2007-03-17 02:03:36 UTC (rev 6276)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticIsotropic3DData.cc 2007-03-19 04:19:07 UTC (rev 6277)
@@ -10,25 +10,108 @@
// ======================================================================
//
+// DO NOT EDIT THIS FILE
+// This file was generated from python application elasticisotropic3d.
+
#include "ElasticIsotropic3DData.hh"
const int pylith::materials::ElasticIsotropic3DData::_numDBValues = 3;
-const int pylith::materials::ElasticIsotropic3DData::_numParameters = 1;
+const int pylith::materials::ElasticIsotropic3DData::_numParameters = 3;
-const char* pylith::materials::ElasticIsotropic3DData::_dbValues[] =
- { "density", "vp", "vs" };
+const int pylith::materials::ElasticIsotropic3DData::_numLocs = 2;
-const char* pylith::materials::ElasticIsotropic3DData::_parameterNames[] =
- { "density", "mu", "lambda" };
+const char* pylith::materials::ElasticIsotropic3DData::_dbValues[] = {
+"density",
+"vs",
+"vp",
+};
+const char* pylith::materials::ElasticIsotropic3DData::_parameterNames[] = {
+"density",
+"mu",
+"lambda",
+};
+const double pylith::materials::ElasticIsotropic3DData::_dbData[] = {
+ 2.50000000e+03,
+ 3.00000000e+03,
+ 5.19615242e+03,
+ 2.00000000e+03,
+ 1.20000000e+03,
+ 2.07846097e+03,
+};
+
+const double pylith::materials::ElasticIsotropic3DData::_parameterData[] = {
+ 2.50000000e+03,
+ 2.25000000e+10,
+ 2.25000000e+10,
+ 2.00000000e+03,
+ 2.88000000e+09,
+ 2.88000000e+09,
+};
+
+const double pylith::materials::ElasticIsotropic3DData::_density[] = {
+ 2.50000000e+03,
+ 2.00000000e+03,
+};
+
+const double pylith::materials::ElasticIsotropic3DData::_elasticConsts[] = {
+ 6.75000000e+10,
+ 2.25000000e+10,
+ 2.25000000e+10,
+ 0.00000000e+00,
+ 0.00000000e+00,
+ 0.00000000e+00,
+ 6.75000000e+10,
+ 2.25000000e+10,
+ 0.00000000e+00,
+ 0.00000000e+00,
+ 0.00000000e+00,
+ 6.75000000e+10,
+ 0.00000000e+00,
+ 0.00000000e+00,
+ 0.00000000e+00,
+ 2.25000000e+10,
+ 0.00000000e+00,
+ 0.00000000e+00,
+ 2.25000000e+10,
+ 0.00000000e+00,
+ 2.25000000e+10,
+ 8.64000000e+09,
+ 2.88000000e+09,
+ 2.88000000e+09,
+ 0.00000000e+00,
+ 0.00000000e+00,
+ 0.00000000e+00,
+ 8.64000000e+09,
+ 2.88000000e+09,
+ 0.00000000e+00,
+ 0.00000000e+00,
+ 0.00000000e+00,
+ 8.64000000e+09,
+ 0.00000000e+00,
+ 0.00000000e+00,
+ 0.00000000e+00,
+ 2.88000000e+09,
+ 0.00000000e+00,
+ 0.00000000e+00,
+ 2.88000000e+09,
+ 0.00000000e+00,
+ 2.88000000e+09,
+};
+
pylith::materials::ElasticIsotropic3DData::ElasticIsotropic3DData(void)
{ // constructor
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);
+ elasticConsts = const_cast<double*>(_elasticConsts);
} // constructor
pylith::materials::ElasticIsotropic3DData::~ElasticIsotropic3DData(void)
Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticIsotropic3DData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticIsotropic3DData.hh 2007-03-17 02:03:36 UTC (rev 6276)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticIsotropic3DData.hh 2007-03-19 04:19:07 UTC (rev 6277)
@@ -1,4 +1,3 @@
-
// -*- C++ -*-
//
// ======================================================================
@@ -11,10 +10,13 @@
// ======================================================================
//
+// DO NOT EDIT THIS FILE
+// This file was generated from python application elasticisotropic3d.
+
#if !defined(pylith_materials_elasticisotropic3ddata_hh)
#define pylith_materials_elasticisotropic3ddata_hh
-#include "MaterialData.hh"
+#include "ElasticMaterialData.hh"
namespace pylith {
namespace materials {
@@ -22,7 +24,7 @@
} // pylith
} // materials
-class pylith::materials::ElasticIsotropic3DData : public MaterialData
+class pylith::materials::ElasticIsotropic3DData : public ElasticMaterialData
{
public:
@@ -36,13 +38,25 @@
private:
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 _elasticConsts[];
+
};
#endif // pylith_materials_elasticisotropic3ddata_hh
-
// End of file
Added: short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticMaterialApp.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticMaterialApp.py 2007-03-17 02:03:36 UTC (rev 6276)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticMaterialApp.py 2007-03-19 04:19:07 UTC (rev 6277)
@@ -0,0 +1,125 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+# Brad T. Aagaard
+# U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file unittests/libtests/materials/data/ElasticMaterialApp.py
+
+## @brief Python application for generating C++ data files for testing
+## C++ elastic material objects.
+
+from pyre.applications.Script import Script
+
+import numpy
+
+# ElasticMaterialApp class
+class ElasticMaterialApp(Script):
+ """
+ Python application for generating C++ data files for testing C++
+ elastic material objects.
+ """
+
+ # INVENTORY //////////////////////////////////////////////////////////
+
+ class Inventory(Script.Inventory):
+ """
+ Python object for managing ElasticMaterialApp facilities and properties.
+ """
+
+ ## @class Inventory
+ ## Python object for managing ElasticMaterialApp facilities and properties.
+ ##
+ ## \b Properties
+ ## @li None
+ ##
+ ## \b Facilities
+ ## @li \b data Data manager.
+
+ import pyre.inventory
+
+ from pylith.utils.CppData import CppData
+ data = pyre.inventory.facility("data", factory=CppData)
+ data.meta['tip'] = "Data manager."
+
+
+ # PUBLIC METHODS /////////////////////////////////////////////////////
+
+ def __init__(self, name="elasticmaterialapp"):
+ """
+ Constructor.
+ """
+ Script.__init__(self, name)
+
+ # Material information
+ self.numDBValues = None
+ self.numParameters = None
+ self.dbValues = None
+ self.parameterNames = None
+ self.dbData = None
+ self.parameterData = None
+
+ # Elastic material information
+ self.numLocs = None
+ self.density = None
+ self.parameters = None
+ return
+
+
+ def main(self):
+ """
+ Run the application.
+ """
+ self._initData()
+ self.data.write(self.name)
+ return
+
+
+ # PRIVATE METHODS ////////////////////////////////////////////////////
+
+ def _configure(self):
+ """
+ Set members using inventory.
+ """
+ Script._configure(self)
+ self.data = self.inventory.data
+ return
+
+
+ def _initData(self):
+ self.data.addScalar(vtype="int", name="_numDBValues",
+ value=self.numDBValues,
+ format="%d")
+ self.data.addScalar(vtype="int", name="_numParameters",
+ value=self.numParameters,
+ format="%d")
+ self.data.addArray(vtype="char*", name="_dbValues", values=self.dbValues,
+ format="\"%s\"", ncols=1)
+ self.data.addArray(vtype="char*", name="_parameterNames",
+ values=self.parameterNames,
+ format="\"%s\"", ncols=1)
+ self.data.addArray(vtype="double", name="_dbData", values=self.dbData,
+ format="%16.8e", ncols=1)
+ self.data.addArray(vtype="double", name="_parameterData",
+ values=self.parameterData,
+ format="%16.8e", ncols=1)
+
+ self.data.addScalar(vtype="int", name="_numLocs", value=self.numLocs,
+ format="%d")
+ self.data.addArray(vtype="double", name="_density",
+ values=self.density,
+ format="%16.8e", ncols=1)
+ self.data.addArray(vtype="double", name="_elasticConsts",
+ values=self.elasticConsts,
+ format="%16.8e", ncols=1)
+
+ return
+
+
+# End of file
Added: short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticMaterialData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticMaterialData.cc 2007-03-17 02:03:36 UTC (rev 6276)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticMaterialData.cc 2007-03-19 04:19:07 UTC (rev 6277)
@@ -0,0 +1,26 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#include "ElasticMaterialData.hh"
+
+pylith::materials::ElasticMaterialData::ElasticMaterialData(void) :
+ numLocs(0),
+ density(0),
+ elasticConsts(0)
+{ // constructor
+} // constructor
+
+pylith::materials::ElasticMaterialData::~ElasticMaterialData(void)
+{}
+
+
+// End of file
Added: short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticMaterialData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticMaterialData.hh 2007-03-17 02:03:36 UTC (rev 6276)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/ElasticMaterialData.hh 2007-03-19 04:19:07 UTC (rev 6277)
@@ -0,0 +1,49 @@
+
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#if !defined(pylith_materials_elasticmaterialdata_hh)
+#define pylith_materials_elasticmaterialdata_hh
+
+#include "MaterialData.hh"
+
+namespace pylith {
+ namespace materials {
+ class ElasticMaterialData;
+ } // pylith
+} // materials
+
+class pylith::materials::ElasticMaterialData : public MaterialData
+{
+
+public:
+
+ /// Constructor
+ ElasticMaterialData(void);
+
+ /// Destructor
+ ~ElasticMaterialData(void);
+
+// PUBLIC MEMBERS ///////////////////////////////////////////////////////
+public:
+
+ int numLocs; ///< Number of locations
+
+ double* density; ///< Density at locations
+ double* elasticConsts; ///< Elastic constants at locations
+
+};
+
+#endif // pylith_materials_elasticmaterialdata_hh
+
+
+// End of file
Modified: short/3D/PyLith/trunk/unittests/libtests/materials/data/MaterialData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/MaterialData.hh 2007-03-17 02:03:36 UTC (rev 6276)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/MaterialData.hh 2007-03-19 04:19:07 UTC (rev 6277)
@@ -39,6 +39,9 @@
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
};
#endif // pylith_materials_materialdata_hh
Added: short/3D/PyLith/trunk/unittests/libtests/materials/data/generate.sh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/generate.sh 2007-03-17 02:03:36 UTC (rev 6276)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/generate.sh 2007-03-19 04:19:07 UTC (rev 6277)
@@ -0,0 +1,37 @@
+#!/bin/bash
+#
+# ======================================================================
+#
+# Brad T. Aagaard
+# U.S. Geological Survey
+#
+# {LicenseText}
+#
+# ======================================================================
+#
+
+if (( $# != 1 )); then
+ echo "usage: generate.sh elastic|viscoelastic|all"
+ exit 1
+fi
+
+# //////////////////////////////////////////////////////////////////////
+if [ $1 == "elastic" ] || [ $1 == "all" ]; then
+
+ # 3-D ----------------------------------------------------------------
+
+ python ElasticIsotropic3D.py \
+ --data.namespace=pylith,materials \
+ --data.object=ElasticIsotropic3DData \
+ --data.parent=ElasticMaterialData
+
+fi
+
+# //////////////////////////////////////////////////////////////////////
+if [ $1 == "viscoelastic" ] || [ $1 == "all" ]; then
+ echo "" >& /dev/null
+
+fi
+
+
+# End of file
Property changes on: short/3D/PyLith/trunk/unittests/libtests/materials/data/generate.sh
___________________________________________________________________
Name: svn:executable
+ *
Added: short/3D/PyLith/trunk/unittests/libtests/materials/data/header.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/materials/data/header.hh 2007-03-17 02:03:36 UTC (rev 6276)
+++ short/3D/PyLith/trunk/unittests/libtests/materials/data/header.hh 2007-03-19 04:19:07 UTC (rev 6277)
@@ -0,0 +1,12 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
More information about the cig-commits
mailing list