[cig-commits] r16605 - in short/3D/PyLith/trunk: . unittests/libtests/feassemble unittests/libtests/feassemble/data
brad at geodynamics.org
brad at geodynamics.org
Fri Apr 30 17:46:22 PDT 2010
Author: brad
Date: 2010-04-30 17:46:21 -0700 (Fri, 30 Apr 2010)
New Revision: 16605
Added:
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityApp.py
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitApp.py
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityLgDeformApp.py
Removed:
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorElasticity.py
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorElasticityLgDeform.py
Modified:
short/3D/PyLith/trunk/TODO
short/3D/PyLith/trunk/unittests/libtests/feassemble/Makefile.am
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit1DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit1DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit2DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit2DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit3DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit3DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav1DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav1DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav2DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav2DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav3DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav3DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicit.py
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/generate.sh
Log:
Added unit tests for ElasticityExplicit::integrateResidualLumped().
Modified: short/3D/PyLith/trunk/TODO
===================================================================
--- short/3D/PyLith/trunk/TODO 2010-04-30 16:56:33 UTC (rev 16604)
+++ short/3D/PyLith/trunk/TODO 2010-05-01 00:46:21 UTC (rev 16605)
@@ -38,9 +38,37 @@
+ governing equations
+ Large deformation formulation
+ Lumped solver
+ + Cleanup bulk constitutive models (consistent w/governing eqns)
+* Cleanup PETSc setttings in examples
+ ksp_view, monitor, converged reason
+
+* Tutorials
+ 3d/hex8
+ 1. Dirichlet BC (static)
+ 2. Neumann BC (static)
+ 3. Earthquake rupture (static)
+ 4. Dirichlet BC (quasi-static)
+ 5. Dirichlet + Neumann (quasi-static)
+ 6. Multiple earthquake rupture + creep (quasi-static)
+ 7. Earthquake rupture + creep + Dirichlet BC (quasi-static)
+ 8. Add power-law rheology (quasi-static)
+ 9. Replace power-law with Drucker-Prager elastoplastic
+ 10. Static friction + Dirichlet BC (static)
+ 11. Static friction + Dirchlet BC (quasi-static)
+ 12. Rate- and state-friction + Dirichlet BC (quasi-static)??
+
+Write up description of Savage and Prescott (1978) benchmark and
+distribute to Greg Lyzenga and Jay Parker
+
+Need full-scale test with variation in physical properties within a material.
+
+----------------------------------------------------------------------
SECONDARY PRIORITIES
+----------------------------------------------------------------------
+* Output to HDF5 files
+
* Uniform global refinement for tets with faults
* Cleanup
@@ -59,18 +87,20 @@
FRICTION
----------------------------------------------------------------------
+TPV205-2D
+ quad4, tri3
TPV205
+ hex8, tet4
+
TPV?? (rate and state)
+TPV?? Drucker-Prager
-
----------------------------------------------------------------------
LUMPED SOLVER
----------------------------------------------------------------------
Unit tests
- ElasticityExplicit
- integrateResidualLumped()
ElasticityExplicitTet4
integrateResidualLumped()
ElasticityExplicitLgDeform
@@ -81,38 +111,6 @@
adjustSolnLumped()
----------------------------------------------------------------------
-TODO BEFORE WORKSHOP 2010
-----------------------------------------------------------------------
-
-Examples
- Cleanup PETSc setttings
- ksp_view, monitor, converged reason
-
-Tutorial
- 3d/hex8
- 1. Dirichlet BC (static)
- 2. Neumann BC (static)
- 3. Earthquake rupture (static)
- 4. Dirichlet BC (quasi-static)
- 5. Dirichlet + Neumann (quasi-static)
- 6. Multiple earthquake rupture + creep (quasi-static)
- 7. Earthquake rupture + creep + Dirichlet BC (quasi-static)
- 8. Add power-law rheology (quasi-static)
- 9. Replace power-law with Drucker-Prager elastoplastic
- 10. Static friction + Dirichlet BC (static)
- 11. Static friction + Dirchlet BC (quasi-static)
- 12. Rate- and state-friction + Dirichlet BC (quasi-static)??
-
-Write up description of Savage and Prescott (1978) benchmark and
-distribute to Greg Lyzenga and Jay Parker
-
-Rewrite governing equations to include fault implementation
-
-Rewrite bulk constitutive models
-
-Need full-scale test with variation in physical properties within a material.
-
-----------------------------------------------------------------------
CLEANUP
----------------------------------------------------------------------
@@ -329,15 +327,6 @@
MISC PRIORITIES (Brad)
======================================================================
-2. Additional unit tests
- a. FaultCohesive
- i. Add checking of faultMesh [not currently used]
-
-3. Allow use of all elasticity constants (9 for 2-D, 36 for 3-D).
- a. Materials C++ code
- b. Integrator C++ code
- b. Material C++ unit tests
-
4. OutputManager
a. VertexFilterChangeCS
OutputFilter for writing vertex coordinates in another
@@ -349,26 +338,6 @@
======================================================================
----------------------------------------------------------------------
-Release 1.5
-----------------------------------------------------------------------
-
- 1. Fault constitutive models
-
- Static friction
- Linear slip-weakening
- Rate- and state-friction w/ageing law
-
- Spontaneous (dynamic) fault rupture output
- Slip and tractions (time histories)
- State variables (time histories)
- Orientation (diagnostic)
- Properties (diagnostic)
-
- 2. Large deformations
-
- 3. Finite strain
-
-----------------------------------------------------------------------
Release 1.6
----------------------------------------------------------------------
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/Makefile.am 2010-04-30 16:56:33 UTC (rev 16604)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/Makefile.am 2010-05-01 00:46:21 UTC (rev 16605)
@@ -201,6 +201,7 @@
data/GeomDataTet3D.cc \
data/GeomDataHex3D.cc \
data/IntegratorData.cc \
+ data/ElasticityExplicitData.cc \
data/ElasticityExplicitData1DLinear.cc \
data/ElasticityExplicitData1DQuadratic.cc \
data/ElasticityExplicitData2DLinear.cc \
@@ -281,6 +282,7 @@
data/GeomDataTet3D.hh \
data/GeomDataHex3D.hh \
data/IntegratorData.hh \
+ data/ElasticityExplicitData.hh \
data/ElasticityExplicitData1DLinear.hh \
data/ElasticityExplicitData1DQuadratic.hh \
data/ElasticityExplicitData2DLinear.hh \
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit.cc 2010-04-30 16:56:33 UTC (rev 16604)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit.cc 2010-05-01 00:46:21 UTC (rev 16605)
@@ -15,7 +15,7 @@
#include "TestElasticityExplicit.hh" // Implementation of class methods
#include "pylith/feassemble/ElasticityExplicit.hh" // USES ElasticityExplicit
-#include "data/IntegratorData.hh" // USES IntegratorData
+#include "data/ElasticityExplicitData.hh" // USES IntegratorData
#include "pylith/materials/ElasticIsotropic3D.hh" // USES ElasticIsotropic3D
#include "pylith/feassemble/Quadrature.hh" // USES Quadrature
@@ -198,6 +198,46 @@
} // testIntegrateResidual
// ----------------------------------------------------------------------
+// Test integrateResidual().
+void
+pylith::feassemble::TestElasticityExplicit::testIntegrateResidualLumped(void)
+{ // testIntegrateResidualLumped
+ CPPUNIT_ASSERT(0 != _data);
+
+ topology::Mesh mesh;
+ ElasticityExplicit integrator;
+ topology::SolutionFields fields(mesh);
+ _initialize(&mesh, &integrator, &fields);
+
+ topology::Field<topology::Mesh>& residual = fields.get("residual");
+ const double t = 1.0;
+ integrator.integrateResidualLumped(residual, t, &fields);
+
+ const double* valsE = _data->valsResidualLumped;
+ const int sizeE = _data->spaceDim * _data->numVertices;
+
+ const ALE::Obj<RealSection>& residualSection = residual.section();
+ CPPUNIT_ASSERT(!residualSection.isNull());
+ const double* vals = residualSection->restrictSpace();
+ const int size = residualSection->sizeWithBC();
+ CPPUNIT_ASSERT_EQUAL(sizeE, size);
+
+#if 0
+ residual.view("RESIDUAL");
+ std::cout << "EXPECTED RESIDUAL" << std::endl;
+ for (int i=0; i < size; ++i)
+ std::cout << " " << valsE[i] << std::endl;
+#endif
+
+ const double tolerance = 1.0e-06;
+ for (int i=0; i < size; ++i)
+ if (fabs(valsE[i]) > 1.0)
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, vals[i]/valsE[i], tolerance);
+ else
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(valsE[i], vals[i], tolerance);
+} // testIntegrateResidualLumped
+
+// ----------------------------------------------------------------------
// Test integrateJacobian().
void
pylith::feassemble::TestElasticityExplicit::testIntegrateJacobian(void)
@@ -279,19 +319,8 @@
CPPUNIT_ASSERT_EQUAL(false, integrator.needNewJacobian());
jacobian.complete();
- const double* valsMatrixE = _data->valsJacobian;
- const int sizeE = _data->numVertices * _data->spaceDim;
- double_array valsE(sizeE);
- const int spaceDim = _data->spaceDim;
- const int numBasis = _data->numVertices;
- for (int iBasis=0; iBasis < numBasis; ++iBasis)
- for (int iDim=0; iDim < spaceDim; ++iDim) {
- const int indexRow = (iBasis*spaceDim+iDim)*numBasis*spaceDim;
- double value = 0.0;
- for (int jBasis=0; jBasis < numBasis; ++jBasis)
- value += valsMatrixE[indexRow + jBasis*spaceDim+iDim];
- valsE[iBasis*spaceDim+iDim] = value;
- } // for
+ double_array valsE;
+ _lumpJacobian(&valsE);
#if 0 // DEBUGGING
// TEMPORARY
@@ -309,6 +338,7 @@
CPPUNIT_ASSERT(!jacobianSection.isNull());
const double* vals = jacobianSection->restrictSpace();
const int size = jacobianSection->sizeWithBC();
+ const int sizeE = _data->numVertices * _data->spaceDim;
CPPUNIT_ASSERT_EQUAL(sizeE, size);
const double tolerance = 1.0e-06;
@@ -486,5 +516,28 @@
} // for
} // _initialize
+// ----------------------------------------------------------------------
+// Compute lumped Jacobian matrix.
+void
+pylith::feassemble::TestElasticityExplicit::_lumpJacobian(
+ double_array* jacobian)
+{ // _lumpJacobian
+ assert(0 != jacobian);
+ const double* jacobianFull = _data->valsJacobian;
+ const int size = _data->numVertices * _data->spaceDim;
+ jacobian->resize(size);
+ const int spaceDim = _data->spaceDim;
+ const int numBasis = _data->numVertices;
+ for (int iBasis=0; iBasis < numBasis; ++iBasis)
+ for (int iDim=0; iDim < spaceDim; ++iDim) {
+ const int indexRow = (iBasis*spaceDim+iDim)*numBasis*spaceDim;
+ double value = 0.0;
+ for (int jBasis=0; jBasis < numBasis; ++jBasis)
+ value += jacobianFull[indexRow + jBasis*spaceDim+iDim];
+ (*jacobian)[iBasis*spaceDim+iDim] = value;
+ } // for
+} // _lumpJacobian
+
+
// End of file
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit.hh 2010-04-30 16:56:33 UTC (rev 16604)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit.hh 2010-05-01 00:46:21 UTC (rev 16605)
@@ -26,6 +26,7 @@
#include "pylith/feassemble/feassemblefwd.hh" // forward declarations
#include "pylith/topology/topologyfwd.hh" // USES Mesh, SolutionFields
#include "pylith/materials/materialsfwd.hh" // USES ElasticMaterial
+#include "pylith/utils/arrayfwd.hh" // USES double_array
#include "spatialdata/spatialdb/spatialdbfwd.hh" // USES GravityField
@@ -33,7 +34,7 @@
namespace pylith {
namespace feassemble {
class TestElasticityExplicit;
- class IntegratorData;
+ class ElasticityExplicitData;
} // feassemble
} // pylith
@@ -86,6 +87,9 @@
/// Test integrateResidual().
void testIntegrateResidual(void);
+ /// Test integrateResidualLumped().
+ void testIntegrateResidualLumped(void);
+
/// Test integrateJacobian().
void testIntegrateJacobian(void);
@@ -101,7 +105,7 @@
// PROTECTED MEMBERS //////////////////////////////////////////////////
protected :
- IntegratorData* _data; ///< Data for testing.
+ ElasticityExplicitData* _data; ///< Data for testing.
materials::ElasticMaterial* _material; ///< Elastic material.
Quadrature<topology::Mesh>* _quadrature; ///< Quadrature information.
spatialdata::spatialdb::GravityField* _gravityField; ///< Gravity field.
@@ -119,6 +123,12 @@
ElasticityExplicit* const integrator,
topology::SolutionFields* const fields);
+ /** Compute lumped Jacobian matrix.
+ *
+ * @param jacobian Lumped jacobian as an array.
+ */
+ void _lumpJacobian(double_array* jacobian);
+
}; // class TestElasticityExplicit
#endif // pylith_feassemble_testelasticityexplicit_hh
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit1DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit1DLinear.hh 2010-04-30 16:56:33 UTC (rev 16604)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit1DLinear.hh 2010-05-01 00:46:21 UTC (rev 16605)
@@ -40,6 +40,7 @@
CPPUNIT_TEST( testInitialize );
CPPUNIT_TEST( testIntegrateResidual );
+ CPPUNIT_TEST( testIntegrateResidualLumped );
CPPUNIT_TEST( testIntegrateJacobian );
CPPUNIT_TEST( testIntegrateJacobianLumped );
CPPUNIT_TEST( testUpdateStateVars );
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit1DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit1DQuadratic.hh 2010-04-30 16:56:33 UTC (rev 16604)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit1DQuadratic.hh 2010-05-01 00:46:21 UTC (rev 16605)
@@ -40,6 +40,7 @@
CPPUNIT_TEST( testInitialize );
CPPUNIT_TEST( testIntegrateResidual );
+ CPPUNIT_TEST( testIntegrateResidualLumped );
CPPUNIT_TEST( testIntegrateJacobian );
CPPUNIT_TEST( testIntegrateJacobianLumped );
CPPUNIT_TEST( testUpdateStateVars );
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit2DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit2DLinear.hh 2010-04-30 16:56:33 UTC (rev 16604)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit2DLinear.hh 2010-05-01 00:46:21 UTC (rev 16605)
@@ -40,6 +40,7 @@
CPPUNIT_TEST( testInitialize );
CPPUNIT_TEST( testIntegrateResidual );
+ CPPUNIT_TEST( testIntegrateResidualLumped );
CPPUNIT_TEST( testIntegrateJacobian );
CPPUNIT_TEST( testIntegrateJacobianLumped );
CPPUNIT_TEST( testUpdateStateVars );
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit2DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit2DQuadratic.hh 2010-04-30 16:56:33 UTC (rev 16604)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit2DQuadratic.hh 2010-05-01 00:46:21 UTC (rev 16605)
@@ -40,6 +40,7 @@
CPPUNIT_TEST( testInitialize );
CPPUNIT_TEST( testIntegrateResidual );
+ CPPUNIT_TEST( testIntegrateResidualLumped );
CPPUNIT_TEST( testIntegrateJacobian );
CPPUNIT_TEST( testIntegrateJacobianLumped );
CPPUNIT_TEST( testUpdateStateVars );
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit3DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit3DLinear.hh 2010-04-30 16:56:33 UTC (rev 16604)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit3DLinear.hh 2010-05-01 00:46:21 UTC (rev 16605)
@@ -40,6 +40,7 @@
CPPUNIT_TEST( testInitialize );
CPPUNIT_TEST( testIntegrateResidual );
+ CPPUNIT_TEST( testIntegrateResidualLumped );
CPPUNIT_TEST( testIntegrateJacobian );
CPPUNIT_TEST( testIntegrateJacobianLumped );
CPPUNIT_TEST( testUpdateStateVars );
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit3DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit3DQuadratic.hh 2010-04-30 16:56:33 UTC (rev 16604)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit3DQuadratic.hh 2010-05-01 00:46:21 UTC (rev 16605)
@@ -40,6 +40,7 @@
CPPUNIT_TEST( testInitialize );
CPPUNIT_TEST( testIntegrateResidual );
+ CPPUNIT_TEST( testIntegrateResidualLumped );
CPPUNIT_TEST( testIntegrateJacobian );
CPPUNIT_TEST( testIntegrateJacobianLumped );
CPPUNIT_TEST( testUpdateStateVars );
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav1DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav1DLinear.hh 2010-04-30 16:56:33 UTC (rev 16604)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav1DLinear.hh 2010-05-01 00:46:21 UTC (rev 16605)
@@ -40,7 +40,9 @@
CPPUNIT_TEST( testInitialize );
CPPUNIT_TEST( testIntegrateResidual );
+ CPPUNIT_TEST( testIntegrateResidualLumped );
CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testIntegrateJacobianLumped );
CPPUNIT_TEST( testUpdateStateVars );
CPPUNIT_TEST_SUITE_END();
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav1DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav1DQuadratic.hh 2010-04-30 16:56:33 UTC (rev 16604)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav1DQuadratic.hh 2010-05-01 00:46:21 UTC (rev 16605)
@@ -40,7 +40,9 @@
CPPUNIT_TEST( testInitialize );
CPPUNIT_TEST( testIntegrateResidual );
+ CPPUNIT_TEST( testIntegrateResidualLumped );
CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testIntegrateJacobianLumped );
CPPUNIT_TEST( testUpdateStateVars );
CPPUNIT_TEST_SUITE_END();
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav2DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav2DLinear.hh 2010-04-30 16:56:33 UTC (rev 16604)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav2DLinear.hh 2010-05-01 00:46:21 UTC (rev 16605)
@@ -40,7 +40,9 @@
CPPUNIT_TEST( testInitialize );
CPPUNIT_TEST( testIntegrateResidual );
+ CPPUNIT_TEST( testIntegrateResidualLumped );
CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testIntegrateJacobianLumped );
CPPUNIT_TEST( testUpdateStateVars );
CPPUNIT_TEST_SUITE_END();
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav2DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav2DQuadratic.hh 2010-04-30 16:56:33 UTC (rev 16604)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav2DQuadratic.hh 2010-05-01 00:46:21 UTC (rev 16605)
@@ -40,7 +40,9 @@
CPPUNIT_TEST( testInitialize );
CPPUNIT_TEST( testIntegrateResidual );
+ CPPUNIT_TEST( testIntegrateResidualLumped );
CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testIntegrateJacobianLumped );
CPPUNIT_TEST( testUpdateStateVars );
CPPUNIT_TEST_SUITE_END();
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav3DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav3DLinear.hh 2010-04-30 16:56:33 UTC (rev 16604)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav3DLinear.hh 2010-05-01 00:46:21 UTC (rev 16605)
@@ -40,7 +40,9 @@
CPPUNIT_TEST( testInitialize );
CPPUNIT_TEST( testIntegrateResidual );
+ CPPUNIT_TEST( testIntegrateResidualLumped );
CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testIntegrateJacobianLumped );
CPPUNIT_TEST( testUpdateStateVars );
CPPUNIT_TEST_SUITE_END();
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav3DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav3DQuadratic.hh 2010-04-30 16:56:33 UTC (rev 16604)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav3DQuadratic.hh 2010-05-01 00:46:21 UTC (rev 16605)
@@ -40,7 +40,9 @@
CPPUNIT_TEST( testInitialize );
CPPUNIT_TEST( testIntegrateResidual );
+ CPPUNIT_TEST( testIntegrateResidualLumped );
CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testIntegrateJacobianLumped );
CPPUNIT_TEST( testUpdateStateVars );
CPPUNIT_TEST_SUITE_END();
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityApp.py (from rev 16604, short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorElasticity.py)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityApp.py (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityApp.py 2010-05-01 00:46:21 UTC (rev 16605)
@@ -0,0 +1,304 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+# Brad T. Aagaard
+# U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file unittests/libtests/feassemble/data/ElasticityApp.py
+
+## @brief Python application for generating C++ data files for testing
+## C++ elasticity integrator objects.
+
+from IntegratorApp import IntegratorApp
+
+import numpy
+import feutils
+
+# ----------------------------------------------------------------------
+
+# ElasticityApp class
+class ElasticityApp(IntegratorApp):
+ """
+ Python application for generating C++ data files for testing C++
+ elasticity integrator objects.
+ """
+
+ # INVENTORY //////////////////////////////////////////////////////////
+
+ class Inventory(IntegratorApp.Inventory):
+ """Python object for managing IntegratorApp facilities and properties."""
+
+ ## @class Inventory
+ ## Python object for managing ElasticityIntegrator facilities and
+ ## properties.
+ ##
+ ## \b Properties
+ ## @li \b useGravity Include gravitational body forces in residual.
+ ##
+ ## \b Facilities
+ ## @li \b formulation Elasticity formulation.
+
+ import pyre.inventory
+
+ useGravity = pyre.inventory.bool("use_gravity", default=False)
+ useGravity.meta['tip'] = "Include gravitational body forces in residual."
+
+ from ElasticityImplicit import ElasticityImplicit
+ formulation = pyre.inventory.facility("formulation",
+ factory=ElasticityImplicit)
+ formulation.meta['tip'] = "Elasticity formulation."
+
+
+ # PUBLIC METHODS /////////////////////////////////////////////////////
+
+ def __init__(self, name="elasticityapp"):
+ """
+ Constructor.
+ """
+ IntegratorApp.__init__(self, name)
+
+ self.density = None
+ self.lameMu = None
+ self.lameLambda = None
+
+ return
+
+
+ # PRIVATE METHODS ////////////////////////////////////////////////////
+
+ def _configure(self):
+ """
+ Set members using inventory.
+ """
+ IntegratorApp._configure(self)
+ self.useGravity = self.inventory.useGravity
+ self.formulation = self.inventory.formulation
+ return
+
+
+ def _calculateResidual(self):
+ """
+ Calculate contribution to residual of operator for integrator.
+ """
+ self.valsResidual = self.formulation.calculateResidual(self)
+ if self.useGravity:
+ self.valsResidual += self._calculateGravityVec()
+ return
+
+
+ def _calculateJacobian(self):
+ """
+ Calculate contribution to Jacobian matrix of operator for integrator.
+ """
+ self.valsJacobian = self.formulation.calculateJacobian(self)
+ return
+
+
+ def _calculateStiffnessMat(self):
+ """
+ Calculate stiffness matrix.
+
+ """
+ import feutils
+
+ K = numpy.zeros( (self.spaceDim*self.numVertices,
+ self.spaceDim*self.numVertices),
+ dtype=numpy.float64)
+
+ # Matrix of elasticity values
+ D = self._calculateElasticityMat()
+
+ for cell in self.cells:
+ cellK = numpy.zeros( (self.spaceDim*self.numBasis,
+ self.spaceDim*self.numBasis),
+ dtype=numpy.float64)
+ vertices = self.vertices[cell, :]
+ (jacobian, jacobianInv, jacobianDet, basisDeriv) = \
+ feutils.calculateJacobian(self.quadrature, vertices)
+ for iQuad in xrange(self.numQuadPts):
+ wt = self.quadWts[iQuad] * jacobianDet[iQuad]
+ B = self._calculateBasisDerivMat(basisDeriv, iQuad)
+ cellK[:] += wt * numpy.dot(numpy.dot(B.transpose(), D), B)
+ feutils.assembleMat(K, cellK, cell, self.spaceDim)
+ return K
+
+
+ def _calculateMassMat(self):
+ """
+ Calculate mass matrix.
+ """
+
+ M = numpy.zeros( (self.spaceDim*self.numVertices,
+ self.spaceDim*self.numVertices),
+ dtype=numpy.float64)
+
+ for cell in self.cells:
+ cellM = numpy.zeros( (self.spaceDim*self.numBasis,
+ self.spaceDim*self.numBasis),
+ dtype=numpy.float64)
+ vertices = self.vertices[cell, :]
+ (jacobian, jacobianInv, jacobianDet, basisDeriv) = \
+ feutils.calculateJacobian(self.quadrature, vertices)
+ for iQuad in xrange(self.numQuadPts):
+ wt = self.quadWts[iQuad] * jacobianDet[iQuad]
+ N = self._calculateBasisMat(iQuad)
+ cellM[:] += self.density * wt * numpy.dot(N.transpose(), N)
+ feutils.assembleMat(M, cellM, cell, self.spaceDim)
+ return M
+
+
+ def _calculateGravityVec(self):
+ """
+ Calculate body force vector.
+ """
+ gravityGlobal = numpy.zeros((self.numVertices*self.spaceDim),
+ dtype=numpy.float64)
+ for cell in self.cells:
+ gravityCell = numpy.zeros((self.spaceDim*self.numBasis))
+ vertices = self.vertices[cell, :]
+ (jacobian, jacobianInv, jacobianDet, basisDeriv) = \
+ feutils.calculateJacobian(self.quadrature, vertices)
+ for iQuad in xrange(self.numQuadPts):
+ wt = self.quadWts[iQuad] * jacobianDet[iQuad] * self.density
+ for iBasis in xrange(self.numBasis):
+ valI = wt * self.basis[iQuad, iBasis]
+ for iDim in xrange(self.spaceDim):
+ gravityCell[iDim + iBasis * self.spaceDim] += \
+ valI * self.gravityVec[iDim]
+ feutils.assembleVec(gravityGlobal, gravityCell, cell, self.spaceDim)
+ return gravityGlobal
+
+
+ def _calculateElasticityMat(self):
+ """
+ Calculate elasticity matrix.
+ """
+ if 1 == self.cellDim:
+ lambda2mu = self.lameLambda + 2*self.lameMu
+ C1111 = lambda2mu
+ D = numpy.array([ [C1111] ],
+ dtype=numpy.float64)
+ elif 2 == self.cellDim:
+ lambda2mu = self.lameLambda + 2*self.lameMu
+ C1111 = lambda2mu
+ C1122 = self.lameLambda
+ C1112 = 0.0
+ C2211 = self.lameLambda
+ C2222 = lambda2mu
+ C2212 = 0.0
+ C1211 = 0.0
+ C1222 = 0.0
+ C1212 = 2.0*self.lameMu
+ D = numpy.array([ [C1111, C1122, 0.5*C1112],
+ [C2211, C2222, 0.5*C2212],
+ [0.5*C1211, 0.5*C1222, 0.5*C1212] ],
+ dtype=numpy.float64)
+ elif 3 == self.cellDim:
+ lambda2mu = self.lameLambda + 2.0*self.lameMu
+ C1111 = lambda2mu
+ C1122 = self.lameLambda
+ C1133 = self.lameLambda
+ C1112 = 0.0
+ C1123 = 0.0
+ C1113 = 0.0
+ C2211 = self.lameLambda
+ C2222 = lambda2mu
+ C2233 = self.lameLambda
+ C2212 = 0.0
+ C2223 = 0.0
+ C2213 = 0.0
+ C3311 = self.lameLambda
+ C3322 = self.lameLambda
+ C3333 = lambda2mu
+ C3312 = 0.0
+ C3323 = 0.0
+ C3313 = 0.0
+ C1211 = 0.0
+ C1222 = 0.0
+ C1233 = 0.0
+ C1212 = 2.0*self.lameMu
+ C1223 = 0.0
+ C1213 = 0.0
+ C2311 = 0.0
+ C2322 = 0.0
+ C2333 = 0.0
+ C2312 = 0.0
+ C2323 = 2.0*self.lameMu
+ C2313 = 0.0
+ C1311 = 0.0
+ C1322 = 0.0
+ C1333 = 0.0
+ C1312 = 0.0
+ C1323 = 0.0
+ C1313 = 2.0*self.lameMu
+ D = numpy.array([ [C1111, C1122, C1133, 0.5*C1112, 0.5*C1123, 0.5*C1113],
+ [C2211, C2222, C2233, 0.5*C2212, 0.5*C2223, 0.5*C2213],
+ [C3311, C3322, C3333, 0.5*C3312, 0.5*C3323, 0.5*C3313],
+ [0.5*C1211, 0.5*C1222, 0.5*C1233, 0.5*C1212, 0.5*C1223, 0.5*C1213],
+ [0.5*C2311, 0.5*C2322, 0.5*C2333, 0.5*C2312, 0.5*C2323, 0.5*C2313],
+ [0.5*C1311, 0.5*C1322, 0.5*C1333, 0.5*C1312, 0.5*C1323, 0.5*C1313] ],
+ dtype=numpy.float64)
+ return D
+
+
+ def _calculateBasisMat(self, iQuad):
+ """
+ Calculate matrix of basis functions.
+ """
+ N = numpy.zeros( (self.spaceDim, self.spaceDim*self.numBasis),
+ dtype=numpy.float64)
+ for iBasis in xrange(self.numBasis):
+ for iDim in xrange(self.spaceDim):
+ N[iDim, iBasis*self.spaceDim+iDim] = self.basis[iQuad, iBasis]
+ return N
+
+
+ def _calculateBasisDerivMat(self, basisDeriv, iQuad):
+ """
+ Calculate matrix of derivatives of basis functions.
+ """
+ if 3 == self.spaceDim:
+ B = numpy.zeros( (6, self.spaceDim*self.numBasis),
+ dtype=numpy.float64)
+ for iBasis in xrange(self.numBasis):
+ B[0, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 0]
+ B[1, iBasis*self.spaceDim+1] = basisDeriv[iQuad, iBasis, 1]
+ B[2, iBasis*self.spaceDim+2] = basisDeriv[iQuad, iBasis, 2]
+ B[3, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 1]
+ B[3, iBasis*self.spaceDim+1] = basisDeriv[iQuad, iBasis, 0]
+ B[4, iBasis*self.spaceDim+1] = basisDeriv[iQuad, iBasis, 2]
+ B[4, iBasis*self.spaceDim+2] = basisDeriv[iQuad, iBasis, 1]
+ B[5, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 2]
+ B[5, iBasis*self.spaceDim+2] = basisDeriv[iQuad, iBasis, 0]
+ elif 2 == self.spaceDim:
+ B = numpy.zeros( (3, self.spaceDim*self.numBasis),
+ dtype=numpy.float64)
+ for iBasis in xrange(self.numBasis):
+ B[0, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 0]
+ B[1, iBasis*self.spaceDim+1] = basisDeriv[iQuad, iBasis, 1]
+ B[2, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 1]
+ B[2, iBasis*self.spaceDim+1] = basisDeriv[iQuad, iBasis, 0]
+ elif 1 == self.spaceDim:
+ B = numpy.zeros( (1, self.spaceDim*self.numBasis),
+ dtype=numpy.float64)
+ for iBasis in xrange(self.numBasis):
+ B[0, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 0]
+ else:
+ raise ValueError("Unknown spatial dimension '%d'." % self.spaceDim)
+ return B
+
+
+# MAIN /////////////////////////////////////////////////////////////////
+if __name__ == "__main__":
+
+ app = ElasticityApp()
+ app.run()
+
+
+# End of file
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicit.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicit.py 2010-04-30 16:56:33 UTC (rev 16604)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicit.py 2010-05-01 00:46:21 UTC (rev 16605)
@@ -68,6 +68,55 @@
return jacobian
+ def calculateResidualLumped(self, integrator):
+ """
+ Calculate contribution to residual of operator for integrator.
+
+ {r} = (1/dt**2)[M](-{u(t+dt)} + 2 {u(t)} - {u(t-dt)}) -
+ [K]{u(t)}
+ """
+ K = integrator._calculateStiffnessMat()
+ M = integrator._calculateMassMat()
+ Ml = self._lumpMatrix(M, integrator.numBasis, integrator.spaceDim)
+
+ vel = (integrator.fieldT + integrator.fieldTIncr - integrator.fieldTmdt) / (2.0*integrator.dt)
+ acc = (integrator.fieldTIncr - integrator.fieldT + integrator.fieldTmdt) / (integrator.dt**2)
+ acc = acc.flatten()
+ residual = -Ml*acc - numpy.dot(K, integrator.fieldT).flatten()
+ return residual.flatten()
+
+
+ def calculateJacobianLumped(self, integrator):
+ """
+ Calculate contribution to Jacobian matrix of operator for integrator.
+
+ [A] = (1/dt**2)[M]
+ """
+ M = integrator._calculateMassMat()
+ Ml = self._lumpMatrix(M, integrator.numBasis, integrator.spaceDim)
+
+ jacobian = 1.0/integrator.dt**2 * Ml
+ return jacobian.flatten()
+
+
+ def _lumpMatrix(self, matrix, numBasis, spaceDim):
+ """
+ Lump matrix.
+ """
+ (nrows,ncols) = matrix.shape
+ assert(numBasis * spaceDim == nrows)
+ assert(nrows == ncols)
+ vector = numpy.zeros( (ncols), dtype=numpy.float64)
+
+ for iBasis in xrange(numBasis):
+ for iDim in xrange(spaceDim):
+ v = 0.0
+ for jBasis in xrange(numBasis):
+ v += matrix[iBasis*spaceDim+iDim,jBasis*spaceDim+iDim]
+ vector[iBasis*spaceDim+iDim] = v
+ return vector
+
+
# FACTORY //////////////////////////////////////////////////////////////
def formulation():
return ElasticityExplicit()
Added: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitApp.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitApp.py (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitApp.py 2010-05-01 00:46:21 UTC (rev 16605)
@@ -0,0 +1,97 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+# Brad T. Aagaard
+# U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file unittests/libtests/feassemble/data/ElasticityExplicitApp.py
+
+## @brief Python application for generating C++ data files for testing
+## C++ elasticity integrator objects.
+
+from ElasticityApp import ElasticityApp
+
+import numpy
+import feutils
+
+# ----------------------------------------------------------------------
+
+# ElasticityExplicitApp class
+class ElasticityExplicitApp(ElasticityApp):
+ """
+ Python application for generating C++ data files for testing C++
+ elasticity integrator objects.
+ """
+
+ # PUBLIC METHODS /////////////////////////////////////////////////////
+
+ def __init__(self, name="elasticityexplicitapp"):
+ """
+ Constructor.
+ """
+ ElasticityApp.__init__(self, name)
+
+ return
+
+
+ def main(self):
+ """
+ Run the application.
+ """
+ self._collectData()
+ self._calculateResidual()
+ self._calculateJacobian()
+ self._calculateResidualLumped()
+ self._calculateJacobianLumped()
+ self._initData()
+ self.data.write(self.name)
+ return
+
+
+ # PRIVATE METHODS ////////////////////////////////////////////////////
+
+ def _calculateResidualLumped(self):
+ """
+ Calculate contribution to residual of operator for integrator.
+ """
+ self.valsResidualLumped = self.formulation.calculateResidualLumped(self)
+ if self.useGravity:
+ self.valsResidualLumped += self._calculateGravityVec()
+ return
+
+
+ def _calculateJacobianLumped(self):
+ """
+ Calculate contribution to Jacobian matrix of operator for integrator.
+ """
+ self.valsJacobianLumped = self.formulation.calculateJacobianLumped(self)
+ return
+
+
+ def _initData(self):
+
+ ElasticityApp._initData(self)
+ # Calculated values
+ self.data.addArray(vtype="double", name="_valsResidualLumped",
+ values=self.valsResidualLumped,
+ format="%16.8e", ncols=self.spaceDim)
+ self.data.addArray(vtype="double", name="_valsJacobianLumped",
+ values=self.valsJacobianLumped,
+ format="%16.8e", ncols=self.spaceDim)
+ return
+
+
+# MAIN /////////////////////////////////////////////////////////////////
+if __name__ == "__main__":
+
+ app = ElasticityExplicitApp()
+ app.run()
+
+
+# End of file
Added: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData.cc 2010-05-01 00:46:21 UTC (rev 16605)
@@ -0,0 +1,30 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#include "ElasticityExplicitData.hh"
+
+// ----------------------------------------------------------------------
+// Constructor
+pylith::feassemble::ElasticityExplicitData::ElasticityExplicitData(void) :
+ valsResidualLumped(0),
+ valsJacobianLumped(0)
+{ // constructor
+} // constructor
+
+// ----------------------------------------------------------------------
+// Destructor
+pylith::feassemble::ElasticityExplicitData::~ElasticityExplicitData(void)
+{ // destructor
+} // destructor
+
+
+// End of file
Added: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData.hh 2010-05-01 00:46:21 UTC (rev 16605)
@@ -0,0 +1,48 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#if !defined(pylith_feassemble_elasticityexplicitdata_hh)
+#define pylith_feassemble_elasticityexplicitdata_hh
+
+#include "IntegratorData.hh" // ISA IntegratorData
+
+namespace pylith {
+ namespace feassemble {
+ class ElasticityExplicitData;
+ } // pylith
+} // feassemble
+
+class pylith::feassemble::ElasticityExplicitData : public IntegratorData
+{
+
+// PUBLIC METHODS ///////////////////////////////////////////////////////
+public :
+
+ /// Constructor
+ ElasticityExplicitData(void);
+
+ /// Destructor
+ ~ElasticityExplicitData(void);
+
+// PUBLIC MEMBERS ///////////////////////////////////////////////////////
+public:
+
+ /// @name Calculated values.
+ //@{
+ double* valsResidualLumped; ///< Expected values from residual calculation (lumped Jacobian).
+ double* valsJacobianLumped; ///< Expected values from lumped Jacobian calculation.
+ //@}
+};
+
+#endif // pylith_feassemble_elasticityexplicitdata_hh
+
+// End of file
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.cc 2010-04-30 16:56:33 UTC (rev 16604)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.cc 2010-05-01 00:46:21 UTC (rev 16605)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application integratorelasticity.
+// This file was generated from python application elasticityexplicitapp.
#include "ElasticityExplicitData1DLinear.hh"
@@ -100,6 +100,16 @@
1.40625000e+07,
};
+const double pylith::feassemble::ElasticityExplicitData1DLinear::_valsResidualLumped[] = {
+ 1.59690625e+10,
+ -1.60421875e+10,
+};
+
+const double pylith::feassemble::ElasticityExplicitData1DLinear::_valsJacobianLumped[] = {
+ 2.81250000e+07,
+ 2.81250000e+07,
+};
+
pylith::feassemble::ElasticityExplicitData1DLinear::ElasticityExplicitData1DLinear(void)
{ // constructor
spaceDim = _spaceDim;
@@ -126,6 +136,8 @@
fieldTmdt = const_cast<double*>(_fieldTmdt);
valsResidual = const_cast<double*>(_valsResidual);
valsJacobian = const_cast<double*>(_valsJacobian);
+ valsResidualLumped = const_cast<double*>(_valsResidualLumped);
+ valsJacobianLumped = const_cast<double*>(_valsJacobianLumped);
} // constructor
pylith::feassemble::ElasticityExplicitData1DLinear::~ElasticityExplicitData1DLinear(void)
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.hh 2010-04-30 16:56:33 UTC (rev 16604)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.hh 2010-05-01 00:46:21 UTC (rev 16605)
@@ -11,12 +11,12 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application integratorelasticity.
+// This file was generated from python application elasticityexplicitapp.
#if !defined(pylith_feassemble_elasticityexplicitdata1dlinear_hh)
#define pylith_feassemble_elasticityexplicitdata1dlinear_hh
-#include "IntegratorData.hh"
+#include "ElasticityExplicitData.hh"
namespace pylith {
namespace feassemble {
@@ -24,7 +24,7 @@
} // pylith
} // feassemble
-class pylith::feassemble::ElasticityExplicitData1DLinear : public IntegratorData
+class pylith::feassemble::ElasticityExplicitData1DLinear : public ElasticityExplicitData
{
public:
@@ -85,6 +85,10 @@
static const double _valsJacobian[];
+ static const double _valsResidualLumped[];
+
+ static const double _valsJacobianLumped[];
+
};
#endif // pylith_feassemble_elasticityexplicitdata1dlinear_hh
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DQuadratic.cc 2010-04-30 16:56:33 UTC (rev 16604)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DQuadratic.cc 2010-05-01 00:46:21 UTC (rev 16605)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application integratorelasticity.
+// This file was generated from python application elasticityexplicitapp.
#include "ElasticityExplicitData1DQuadratic.hh"
@@ -120,6 +120,18 @@
2.50000000e+07,
};
+const double pylith::feassemble::ElasticityExplicitData1DQuadratic::_valsResidualLumped[] = {
+ 5.59896875e+10,
+ 1.36000000e+11,
+ -1.92056250e+11,
+};
+
+const double pylith::feassemble::ElasticityExplicitData1DQuadratic::_valsJacobianLumped[] = {
+ 9.37500000e+06,
+ 9.37500000e+06,
+ 3.75000000e+07,
+};
+
pylith::feassemble::ElasticityExplicitData1DQuadratic::ElasticityExplicitData1DQuadratic(void)
{ // constructor
spaceDim = _spaceDim;
@@ -146,6 +158,8 @@
fieldTmdt = const_cast<double*>(_fieldTmdt);
valsResidual = const_cast<double*>(_valsResidual);
valsJacobian = const_cast<double*>(_valsJacobian);
+ valsResidualLumped = const_cast<double*>(_valsResidualLumped);
+ valsJacobianLumped = const_cast<double*>(_valsJacobianLumped);
} // constructor
pylith::feassemble::ElasticityExplicitData1DQuadratic::~ElasticityExplicitData1DQuadratic(void)
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DQuadratic.hh 2010-04-30 16:56:33 UTC (rev 16604)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DQuadratic.hh 2010-05-01 00:46:21 UTC (rev 16605)
@@ -11,12 +11,12 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application integratorelasticity.
+// This file was generated from python application elasticityexplicitapp.
#if !defined(pylith_feassemble_elasticityexplicitdata1dquadratic_hh)
#define pylith_feassemble_elasticityexplicitdata1dquadratic_hh
-#include "IntegratorData.hh"
+#include "ElasticityExplicitData.hh"
namespace pylith {
namespace feassemble {
@@ -24,7 +24,7 @@
} // pylith
} // feassemble
-class pylith::feassemble::ElasticityExplicitData1DQuadratic : public IntegratorData
+class pylith::feassemble::ElasticityExplicitData1DQuadratic : public ElasticityExplicitData
{
public:
@@ -85,6 +85,10 @@
static const double _valsJacobian[];
+ static const double _valsResidualLumped[];
+
+ static const double _valsJacobianLumped[];
+
};
#endif // pylith_feassemble_elasticityexplicitdata1dquadratic_hh
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DLinear.cc 2010-04-30 16:56:33 UTC (rev 16604)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DLinear.cc 2010-05-01 00:46:21 UTC (rev 16605)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application integratorelasticity.
+// This file was generated from python application elasticityexplicitapp.
#include "ElasticityExplicitData2DLinear.hh"
@@ -120,6 +120,18 @@
0.00000000e+00, 3.81944444e+05,
};
+const double pylith::feassemble::ElasticityExplicitData2DLinear::_valsResidualLumped[] = {
+ -1.66797633e+10, 3.09149858e+10,
+ -2.30569129e+09, -2.72130502e+10,
+ 1.89830483e+10, -3.70273769e+09,
+};
+
+const double pylith::feassemble::ElasticityExplicitData2DLinear::_valsJacobianLumped[] = {
+ 1.14583333e+06, 1.14583333e+06,
+ 1.14583333e+06, 1.14583333e+06,
+ 1.14583333e+06, 1.14583333e+06,
+};
+
pylith::feassemble::ElasticityExplicitData2DLinear::ElasticityExplicitData2DLinear(void)
{ // constructor
spaceDim = _spaceDim;
@@ -146,6 +158,8 @@
fieldTmdt = const_cast<double*>(_fieldTmdt);
valsResidual = const_cast<double*>(_valsResidual);
valsJacobian = const_cast<double*>(_valsJacobian);
+ valsResidualLumped = const_cast<double*>(_valsResidualLumped);
+ valsJacobianLumped = const_cast<double*>(_valsJacobianLumped);
} // constructor
pylith::feassemble::ElasticityExplicitData2DLinear::~ElasticityExplicitData2DLinear(void)
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DLinear.hh 2010-04-30 16:56:33 UTC (rev 16604)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DLinear.hh 2010-05-01 00:46:21 UTC (rev 16605)
@@ -11,12 +11,12 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application integratorelasticity.
+// This file was generated from python application elasticityexplicitapp.
#if !defined(pylith_feassemble_elasticityexplicitdata2dlinear_hh)
#define pylith_feassemble_elasticityexplicitdata2dlinear_hh
-#include "IntegratorData.hh"
+#include "ElasticityExplicitData.hh"
namespace pylith {
namespace feassemble {
@@ -24,7 +24,7 @@
} // pylith
} // feassemble
-class pylith::feassemble::ElasticityExplicitData2DLinear : public IntegratorData
+class pylith::feassemble::ElasticityExplicitData2DLinear : public ElasticityExplicitData
{
public:
@@ -85,6 +85,10 @@
static const double _valsJacobian[];
+ static const double _valsResidualLumped[];
+
+ static const double _valsJacobianLumped[];
+
};
#endif // pylith_feassemble_elasticityexplicitdata2dlinear_hh
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DQuadratic.cc 2010-04-30 16:56:33 UTC (rev 16604)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DQuadratic.cc 2010-05-01 00:46:21 UTC (rev 16605)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application integratorelasticity.
+// This file was generated from python application elasticityexplicitapp.
#include "ElasticityExplicitData2DQuadratic.hh"
@@ -247,6 +247,24 @@
0.00000000e+00, 8.46679688e+06,
};
+const double pylith::feassemble::ElasticityExplicitData2DQuadratic::_valsResidualLumped[] = {
+ 1.06607998e+10, 9.01610069e+10,
+ -2.93282002e+10, -4.67480816e+09,
+ 4.90766782e+09, 6.17202257e+10,
+ 6.30202202e+10, 1.02131902e+11,
+ -6.40793371e+10, -1.84814510e+11,
+ 1.48326542e+10, -6.45158012e+10,
+};
+
+const double pylith::feassemble::ElasticityExplicitData2DQuadratic::_valsJacobianLumped[] = {
+ 4.21875000e+06, 4.21875000e+06,
+ 3.98437500e+06, 3.98437500e+06,
+ 3.98437500e+06, 3.98437500e+06,
+ 2.25000000e+07, 2.25000000e+07,
+ 5.15625000e+06, 5.15625000e+06,
+ 5.15625000e+06, 5.15625000e+06,
+};
+
pylith::feassemble::ElasticityExplicitData2DQuadratic::ElasticityExplicitData2DQuadratic(void)
{ // constructor
spaceDim = _spaceDim;
@@ -273,6 +291,8 @@
fieldTmdt = const_cast<double*>(_fieldTmdt);
valsResidual = const_cast<double*>(_valsResidual);
valsJacobian = const_cast<double*>(_valsJacobian);
+ valsResidualLumped = const_cast<double*>(_valsResidualLumped);
+ valsJacobianLumped = const_cast<double*>(_valsJacobianLumped);
} // constructor
pylith::feassemble::ElasticityExplicitData2DQuadratic::~ElasticityExplicitData2DQuadratic(void)
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DQuadratic.hh 2010-04-30 16:56:33 UTC (rev 16604)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DQuadratic.hh 2010-05-01 00:46:21 UTC (rev 16605)
@@ -11,12 +11,12 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application integratorelasticity.
+// This file was generated from python application elasticityexplicitapp.
#if !defined(pylith_feassemble_elasticityexplicitdata2dquadratic_hh)
#define pylith_feassemble_elasticityexplicitdata2dquadratic_hh
-#include "IntegratorData.hh"
+#include "ElasticityExplicitData.hh"
namespace pylith {
namespace feassemble {
@@ -24,7 +24,7 @@
} // pylith
} // feassemble
-class pylith::feassemble::ElasticityExplicitData2DQuadratic : public IntegratorData
+class pylith::feassemble::ElasticityExplicitData2DQuadratic : public ElasticityExplicitData
{
public:
@@ -85,6 +85,10 @@
static const double _valsJacobian[];
+ static const double _valsResidualLumped[];
+
+ static const double _valsJacobianLumped[];
+
};
#endif // pylith_feassemble_elasticityexplicitdata2dquadratic_hh
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DLinear.cc 2010-04-30 16:56:33 UTC (rev 16604)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DLinear.cc 2010-05-01 00:46:21 UTC (rev 16605)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application integratorelasticity.
+// This file was generated from python application elasticityexplicitapp.
#include "ElasticityExplicitData3DLinear.hh"
@@ -157,6 +157,20 @@
0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
};
+const double pylith::feassemble::ElasticityExplicitData3DLinear::_valsResidualLumped[] = {
+ -6.07498709e+09, 3.62529830e+10, 3.19732678e+09,
+ -4.00813455e+09, 6.66863247e+10, 2.19218130e+10,
+ 6.67228741e+09, -1.05594008e+11, -3.15003008e+10,
+ 3.41419674e+09, 2.65469976e+09, 6.38385094e+09,
+};
+
+const double pylith::feassemble::ElasticityExplicitData3DLinear::_valsJacobianLumped[] = {
+ 3.36250000e+06, 3.36250000e+06, 3.36250000e+06,
+ 3.36250000e+06, 3.36250000e+06, 3.36250000e+06,
+ 3.36250000e+06, 3.36250000e+06, 3.36250000e+06,
+ 3.36250000e+06, 3.36250000e+06, 3.36250000e+06,
+};
+
pylith::feassemble::ElasticityExplicitData3DLinear::ElasticityExplicitData3DLinear(void)
{ // constructor
spaceDim = _spaceDim;
@@ -183,6 +197,8 @@
fieldTmdt = const_cast<double*>(_fieldTmdt);
valsResidual = const_cast<double*>(_valsResidual);
valsJacobian = const_cast<double*>(_valsJacobian);
+ valsResidualLumped = const_cast<double*>(_valsResidualLumped);
+ valsJacobianLumped = const_cast<double*>(_valsJacobianLumped);
} // constructor
pylith::feassemble::ElasticityExplicitData3DLinear::~ElasticityExplicitData3DLinear(void)
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DLinear.hh 2010-04-30 16:56:33 UTC (rev 16604)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DLinear.hh 2010-05-01 00:46:21 UTC (rev 16605)
@@ -11,12 +11,12 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application integratorelasticity.
+// This file was generated from python application elasticityexplicitapp.
#if !defined(pylith_feassemble_elasticityexplicitdata3dlinear_hh)
#define pylith_feassemble_elasticityexplicitdata3dlinear_hh
-#include "IntegratorData.hh"
+#include "ElasticityExplicitData.hh"
namespace pylith {
namespace feassemble {
@@ -24,7 +24,7 @@
} // pylith
} // feassemble
-class pylith::feassemble::ElasticityExplicitData3DLinear : public IntegratorData
+class pylith::feassemble::ElasticityExplicitData3DLinear : public ElasticityExplicitData
{
public:
@@ -85,6 +85,10 @@
static const double _valsJacobian[];
+ static const double _valsResidualLumped[];
+
+ static const double _valsJacobianLumped[];
+
};
#endif // pylith_feassemble_elasticityexplicitdata3dlinear_hh
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DQuadratic.cc 2010-04-30 16:56:33 UTC (rev 16604)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DQuadratic.cc 2010-05-01 00:46:21 UTC (rev 16605)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application integratorelasticity.
+// This file was generated from python application elasticityexplicitapp.
#include "ElasticityExplicitData3DQuadratic.hh"
@@ -496,6 +496,32 @@
0.00000000e+00, 0.00000000e+00, 3.25847917e+06,
};
+const double pylith::feassemble::ElasticityExplicitData3DQuadratic::_valsResidualLumped[] = {
+ 2.17441536e+10, -9.08020975e+09, 2.06935737e+10,
+ 6.22351054e+10, -2.47908763e+10, 7.42269985e+09,
+ -4.60097182e+10, -5.34117225e+10, -3.15185315e+10,
+ -1.00516830e+10, 4.19873726e+10, -3.87317709e+10,
+ -8.42078211e+09, 6.33182361e+10, -3.42844355e+09,
+ 6.62278190e+10, 1.09244311e+11, -3.72731067e+10,
+ -9.59516349e+10, -5.29561314e+10, -2.51167317e+10,
+ -1.25237479e+10, -6.06732213e+10, 1.03805264e+10,
+ -3.24416221e+10, 5.14211527e+10, 7.31454785e+09,
+ 5.52060281e+10, -6.50368653e+10, 9.02716524e+10,
+};
+
+const double pylith::feassemble::ElasticityExplicitData3DQuadratic::_valsJacobianLumped[] = {
+ 2.57903646e+06, 2.57903646e+06, 2.57903646e+06,
+ 2.40117187e+06, 2.40117187e+06, 2.40117187e+06,
+ 2.40117188e+06, 2.40117188e+06, 2.40117188e+06,
+ 2.40117188e+06, 2.40117188e+06, 2.40117188e+06,
+ 1.20947917e+07, 1.20947917e+07, 1.20947917e+07,
+ 8.35963542e+06, 8.35963542e+06, 8.35963542e+06,
+ 8.35963542e+06, 8.35963542e+06, 8.35963542e+06,
+ 8.35963542e+06, 8.35963542e+06, 8.35963542e+06,
+ 1.20947917e+07, 1.20947917e+07, 1.20947917e+07,
+ 1.20947917e+07, 1.20947917e+07, 1.20947917e+07,
+};
+
pylith::feassemble::ElasticityExplicitData3DQuadratic::ElasticityExplicitData3DQuadratic(void)
{ // constructor
spaceDim = _spaceDim;
@@ -522,6 +548,8 @@
fieldTmdt = const_cast<double*>(_fieldTmdt);
valsResidual = const_cast<double*>(_valsResidual);
valsJacobian = const_cast<double*>(_valsJacobian);
+ valsResidualLumped = const_cast<double*>(_valsResidualLumped);
+ valsJacobianLumped = const_cast<double*>(_valsJacobianLumped);
} // constructor
pylith::feassemble::ElasticityExplicitData3DQuadratic::~ElasticityExplicitData3DQuadratic(void)
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DQuadratic.hh 2010-04-30 16:56:33 UTC (rev 16604)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DQuadratic.hh 2010-05-01 00:46:21 UTC (rev 16605)
@@ -11,12 +11,12 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application integratorelasticity.
+// This file was generated from python application elasticityexplicitapp.
#if !defined(pylith_feassemble_elasticityexplicitdata3dquadratic_hh)
#define pylith_feassemble_elasticityexplicitdata3dquadratic_hh
-#include "IntegratorData.hh"
+#include "ElasticityExplicitData.hh"
namespace pylith {
namespace feassemble {
@@ -24,7 +24,7 @@
} // pylith
} // feassemble
-class pylith::feassemble::ElasticityExplicitData3DQuadratic : public IntegratorData
+class pylith::feassemble::ElasticityExplicitData3DQuadratic : public ElasticityExplicitData
{
public:
@@ -85,6 +85,10 @@
static const double _valsJacobian[];
+ static const double _valsResidualLumped[];
+
+ static const double _valsJacobianLumped[];
+
};
#endif // pylith_feassemble_elasticityexplicitdata3dquadratic_hh
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DLinear.cc 2010-04-30 16:56:33 UTC (rev 16604)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DLinear.cc 2010-05-01 00:46:21 UTC (rev 16605)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application integratorelasticity.
+// This file was generated from python application elasticityexplicitapp.
#include "ElasticityExplicitGravData1DLinear.hh"
@@ -100,6 +100,16 @@
1.40625000e+07,
};
+const double pylith::feassemble::ElasticityExplicitGravData1DLinear::_valsResidualLumped[] = {
+ -2.65280938e+11,
+ -2.97292188e+11,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData1DLinear::_valsJacobianLumped[] = {
+ 2.81250000e+07,
+ 2.81250000e+07,
+};
+
pylith::feassemble::ElasticityExplicitGravData1DLinear::ElasticityExplicitGravData1DLinear(void)
{ // constructor
spaceDim = _spaceDim;
@@ -126,6 +136,8 @@
fieldTmdt = const_cast<double*>(_fieldTmdt);
valsResidual = const_cast<double*>(_valsResidual);
valsJacobian = const_cast<double*>(_valsJacobian);
+ valsResidualLumped = const_cast<double*>(_valsResidualLumped);
+ valsJacobianLumped = const_cast<double*>(_valsJacobianLumped);
} // constructor
pylith::feassemble::ElasticityExplicitGravData1DLinear::~ElasticityExplicitGravData1DLinear(void)
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DLinear.hh 2010-04-30 16:56:33 UTC (rev 16604)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DLinear.hh 2010-05-01 00:46:21 UTC (rev 16605)
@@ -11,12 +11,12 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application integratorelasticity.
+// This file was generated from python application elasticityexplicitapp.
#if !defined(pylith_feassemble_elasticityexplicitgravdata1dlinear_hh)
#define pylith_feassemble_elasticityexplicitgravdata1dlinear_hh
-#include "IntegratorData.hh"
+#include "ElasticityExplicitData.hh"
namespace pylith {
namespace feassemble {
@@ -24,7 +24,7 @@
} // pylith
} // feassemble
-class pylith::feassemble::ElasticityExplicitGravData1DLinear : public IntegratorData
+class pylith::feassemble::ElasticityExplicitGravData1DLinear : public ElasticityExplicitData
{
public:
@@ -85,6 +85,10 @@
static const double _valsJacobian[];
+ static const double _valsResidualLumped[];
+
+ static const double _valsJacobianLumped[];
+
};
#endif // pylith_feassemble_elasticityexplicitgravdata1dlinear_hh
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DQuadratic.cc 2010-04-30 16:56:33 UTC (rev 16604)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DQuadratic.cc 2010-05-01 00:46:21 UTC (rev 16605)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application integratorelasticity.
+// This file was generated from python application elasticityexplicitapp.
#include "ElasticityExplicitGravData1DQuadratic.hh"
@@ -120,6 +120,18 @@
2.50000000e+07,
};
+const double pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_valsResidualLumped[] = {
+ -3.77603125e+10,
+ 4.22500000e+10,
+ -5.67056250e+11,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_valsJacobianLumped[] = {
+ 9.37500000e+06,
+ 9.37500000e+06,
+ 3.75000000e+07,
+};
+
pylith::feassemble::ElasticityExplicitGravData1DQuadratic::ElasticityExplicitGravData1DQuadratic(void)
{ // constructor
spaceDim = _spaceDim;
@@ -146,6 +158,8 @@
fieldTmdt = const_cast<double*>(_fieldTmdt);
valsResidual = const_cast<double*>(_valsResidual);
valsJacobian = const_cast<double*>(_valsJacobian);
+ valsResidualLumped = const_cast<double*>(_valsResidualLumped);
+ valsJacobianLumped = const_cast<double*>(_valsJacobianLumped);
} // constructor
pylith::feassemble::ElasticityExplicitGravData1DQuadratic::~ElasticityExplicitGravData1DQuadratic(void)
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DQuadratic.hh 2010-04-30 16:56:33 UTC (rev 16604)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DQuadratic.hh 2010-05-01 00:46:21 UTC (rev 16605)
@@ -11,12 +11,12 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application integratorelasticity.
+// This file was generated from python application elasticityexplicitapp.
#if !defined(pylith_feassemble_elasticityexplicitgravdata1dquadratic_hh)
#define pylith_feassemble_elasticityexplicitgravdata1dquadratic_hh
-#include "IntegratorData.hh"
+#include "ElasticityExplicitData.hh"
namespace pylith {
namespace feassemble {
@@ -24,7 +24,7 @@
} // pylith
} // feassemble
-class pylith::feassemble::ElasticityExplicitGravData1DQuadratic : public IntegratorData
+class pylith::feassemble::ElasticityExplicitGravData1DQuadratic : public ElasticityExplicitData
{
public:
@@ -85,6 +85,10 @@
static const double _valsJacobian[];
+ static const double _valsResidualLumped[];
+
+ static const double _valsJacobianLumped[];
+
};
#endif // pylith_feassemble_elasticityexplicitgravdata1dquadratic_hh
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DLinear.cc 2010-04-30 16:56:33 UTC (rev 16604)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DLinear.cc 2010-05-01 00:46:21 UTC (rev 16605)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application integratorelasticity.
+// This file was generated from python application elasticityexplicitapp.
#include "ElasticityExplicitGravData2DLinear.hh"
@@ -120,6 +120,18 @@
0.00000000e+00, 3.81944444e+05,
};
+const double pylith::feassemble::ElasticityExplicitGravData2DLinear::_valsResidualLumped[] = {
+ -1.66797633e+10, 1.94566525e+10,
+ -2.30569129e+09, -3.86713835e+10,
+ 1.89830483e+10, -1.51610710e+10,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData2DLinear::_valsJacobianLumped[] = {
+ 1.14583333e+06, 1.14583333e+06,
+ 1.14583333e+06, 1.14583333e+06,
+ 1.14583333e+06, 1.14583333e+06,
+};
+
pylith::feassemble::ElasticityExplicitGravData2DLinear::ElasticityExplicitGravData2DLinear(void)
{ // constructor
spaceDim = _spaceDim;
@@ -146,6 +158,8 @@
fieldTmdt = const_cast<double*>(_fieldTmdt);
valsResidual = const_cast<double*>(_valsResidual);
valsJacobian = const_cast<double*>(_valsJacobian);
+ valsResidualLumped = const_cast<double*>(_valsResidualLumped);
+ valsJacobianLumped = const_cast<double*>(_valsJacobianLumped);
} // constructor
pylith::feassemble::ElasticityExplicitGravData2DLinear::~ElasticityExplicitGravData2DLinear(void)
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DLinear.hh 2010-04-30 16:56:33 UTC (rev 16604)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DLinear.hh 2010-05-01 00:46:21 UTC (rev 16605)
@@ -11,12 +11,12 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application integratorelasticity.
+// This file was generated from python application elasticityexplicitapp.
#if !defined(pylith_feassemble_elasticityexplicitgravdata2dlinear_hh)
#define pylith_feassemble_elasticityexplicitgravdata2dlinear_hh
-#include "IntegratorData.hh"
+#include "ElasticityExplicitData.hh"
namespace pylith {
namespace feassemble {
@@ -24,7 +24,7 @@
} // pylith
} // feassemble
-class pylith::feassemble::ElasticityExplicitGravData2DLinear : public IntegratorData
+class pylith::feassemble::ElasticityExplicitGravData2DLinear : public ElasticityExplicitData
{
public:
@@ -85,6 +85,10 @@
static const double _valsJacobian[];
+ static const double _valsResidualLumped[];
+
+ static const double _valsJacobianLumped[];
+
};
#endif // pylith_feassemble_elasticityexplicitgravdata2dlinear_hh
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DQuadratic.cc 2010-04-30 16:56:33 UTC (rev 16604)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DQuadratic.cc 2010-05-01 00:46:21 UTC (rev 16605)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application integratorelasticity.
+// This file was generated from python application elasticityexplicitapp.
#include "ElasticityExplicitGravData2DQuadratic.hh"
@@ -247,6 +247,24 @@
0.00000000e+00, 8.46679688e+06,
};
+const double pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_valsResidualLumped[] = {
+ 1.06607998e+10, 4.79735069e+10,
+ -2.93282002e+10, -4.45185582e+10,
+ 4.90766782e+09, 2.18764757e+10,
+ 6.30202202e+10, -1.22868098e+11,
+ -6.40793371e+10, -2.36377010e+11,
+ 1.48326542e+10, -1.16078301e+11,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_valsJacobianLumped[] = {
+ 4.21875000e+06, 4.21875000e+06,
+ 3.98437500e+06, 3.98437500e+06,
+ 3.98437500e+06, 3.98437500e+06,
+ 2.25000000e+07, 2.25000000e+07,
+ 5.15625000e+06, 5.15625000e+06,
+ 5.15625000e+06, 5.15625000e+06,
+};
+
pylith::feassemble::ElasticityExplicitGravData2DQuadratic::ElasticityExplicitGravData2DQuadratic(void)
{ // constructor
spaceDim = _spaceDim;
@@ -273,6 +291,8 @@
fieldTmdt = const_cast<double*>(_fieldTmdt);
valsResidual = const_cast<double*>(_valsResidual);
valsJacobian = const_cast<double*>(_valsJacobian);
+ valsResidualLumped = const_cast<double*>(_valsResidualLumped);
+ valsJacobianLumped = const_cast<double*>(_valsJacobianLumped);
} // constructor
pylith::feassemble::ElasticityExplicitGravData2DQuadratic::~ElasticityExplicitGravData2DQuadratic(void)
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DQuadratic.hh 2010-04-30 16:56:33 UTC (rev 16604)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DQuadratic.hh 2010-05-01 00:46:21 UTC (rev 16605)
@@ -11,12 +11,12 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application integratorelasticity.
+// This file was generated from python application elasticityexplicitapp.
#if !defined(pylith_feassemble_elasticityexplicitgravdata2dquadratic_hh)
#define pylith_feassemble_elasticityexplicitgravdata2dquadratic_hh
-#include "IntegratorData.hh"
+#include "ElasticityExplicitData.hh"
namespace pylith {
namespace feassemble {
@@ -24,7 +24,7 @@
} // pylith
} // feassemble
-class pylith::feassemble::ElasticityExplicitGravData2DQuadratic : public IntegratorData
+class pylith::feassemble::ElasticityExplicitGravData2DQuadratic : public ElasticityExplicitData
{
public:
@@ -85,6 +85,10 @@
static const double _valsJacobian[];
+ static const double _valsResidualLumped[];
+
+ static const double _valsJacobianLumped[];
+
};
#endif // pylith_feassemble_elasticityexplicitgravdata2dquadratic_hh
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DLinear.cc 2010-04-30 16:56:33 UTC (rev 16604)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DLinear.cc 2010-05-01 00:46:21 UTC (rev 16605)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application integratorelasticity.
+// This file was generated from python application elasticityexplicitapp.
#include "ElasticityExplicitGravData3DLinear.hh"
@@ -157,6 +157,20 @@
0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
};
+const double pylith::feassemble::ElasticityExplicitGravData3DLinear::_valsResidualLumped[] = {
+ -6.07498709e+09, 3.62529830e+10, -3.04276732e+10,
+ -4.00813455e+09, 6.66863247e+10, -1.17031870e+10,
+ 6.67228741e+09, -1.05594008e+11, -6.51253008e+10,
+ 3.41419674e+09, 2.65469976e+09, -2.72411491e+10,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData3DLinear::_valsJacobianLumped[] = {
+ 3.36250000e+06, 3.36250000e+06, 3.36250000e+06,
+ 3.36250000e+06, 3.36250000e+06, 3.36250000e+06,
+ 3.36250000e+06, 3.36250000e+06, 3.36250000e+06,
+ 3.36250000e+06, 3.36250000e+06, 3.36250000e+06,
+};
+
pylith::feassemble::ElasticityExplicitGravData3DLinear::ElasticityExplicitGravData3DLinear(void)
{ // constructor
spaceDim = _spaceDim;
@@ -183,6 +197,8 @@
fieldTmdt = const_cast<double*>(_fieldTmdt);
valsResidual = const_cast<double*>(_valsResidual);
valsJacobian = const_cast<double*>(_valsJacobian);
+ valsResidualLumped = const_cast<double*>(_valsResidualLumped);
+ valsJacobianLumped = const_cast<double*>(_valsJacobianLumped);
} // constructor
pylith::feassemble::ElasticityExplicitGravData3DLinear::~ElasticityExplicitGravData3DLinear(void)
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DLinear.hh 2010-04-30 16:56:33 UTC (rev 16604)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DLinear.hh 2010-05-01 00:46:21 UTC (rev 16605)
@@ -11,12 +11,12 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application integratorelasticity.
+// This file was generated from python application elasticityexplicitapp.
#if !defined(pylith_feassemble_elasticityexplicitgravdata3dlinear_hh)
#define pylith_feassemble_elasticityexplicitgravdata3dlinear_hh
-#include "IntegratorData.hh"
+#include "ElasticityExplicitData.hh"
namespace pylith {
namespace feassemble {
@@ -24,7 +24,7 @@
} // pylith
} // feassemble
-class pylith::feassemble::ElasticityExplicitGravData3DLinear : public IntegratorData
+class pylith::feassemble::ElasticityExplicitGravData3DLinear : public ElasticityExplicitData
{
public:
@@ -85,6 +85,10 @@
static const double _valsJacobian[];
+ static const double _valsResidualLumped[];
+
+ static const double _valsJacobianLumped[];
+
};
#endif // pylith_feassemble_elasticityexplicitgravdata3dlinear_hh
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DQuadratic.cc 2010-04-30 16:56:33 UTC (rev 16604)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DQuadratic.cc 2010-05-01 00:46:21 UTC (rev 16605)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application integratorelasticity.
+// This file was generated from python application elasticityexplicitapp.
#include "ElasticityExplicitGravData3DQuadratic.hh"
@@ -496,6 +496,32 @@
0.00000000e+00, 0.00000000e+00, 3.25847917e+06,
};
+const double pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_valsResidualLumped[] = {
+ 2.17441536e+10, -9.08020975e+09, -5.09679086e+09,
+ 6.22351054e+10, -2.47908763e+10, -1.65890189e+10,
+ -4.60097182e+10, -5.34117225e+10, -5.55302502e+10,
+ -1.00516830e+10, 4.19873726e+10, -6.27434896e+10,
+ -8.42078211e+09, 6.33182361e+10, -1.24376360e+11,
+ 6.62278190e+10, 1.09244311e+11, -1.20869461e+11,
+ -9.59516349e+10, -5.29561314e+10, -1.08713086e+11,
+ -1.25237479e+10, -6.06732213e+10, -7.32158278e+10,
+ -3.24416221e+10, 5.14211527e+10, -1.13633369e+11,
+ 5.52060281e+10, -6.50368653e+10, -3.06762643e+10,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_valsJacobianLumped[] = {
+ 2.57903646e+06, 2.57903646e+06, 2.57903646e+06,
+ 2.40117187e+06, 2.40117187e+06, 2.40117187e+06,
+ 2.40117188e+06, 2.40117188e+06, 2.40117188e+06,
+ 2.40117188e+06, 2.40117188e+06, 2.40117188e+06,
+ 1.20947917e+07, 1.20947917e+07, 1.20947917e+07,
+ 8.35963542e+06, 8.35963542e+06, 8.35963542e+06,
+ 8.35963542e+06, 8.35963542e+06, 8.35963542e+06,
+ 8.35963542e+06, 8.35963542e+06, 8.35963542e+06,
+ 1.20947917e+07, 1.20947917e+07, 1.20947917e+07,
+ 1.20947917e+07, 1.20947917e+07, 1.20947917e+07,
+};
+
pylith::feassemble::ElasticityExplicitGravData3DQuadratic::ElasticityExplicitGravData3DQuadratic(void)
{ // constructor
spaceDim = _spaceDim;
@@ -522,6 +548,8 @@
fieldTmdt = const_cast<double*>(_fieldTmdt);
valsResidual = const_cast<double*>(_valsResidual);
valsJacobian = const_cast<double*>(_valsJacobian);
+ valsResidualLumped = const_cast<double*>(_valsResidualLumped);
+ valsJacobianLumped = const_cast<double*>(_valsJacobianLumped);
} // constructor
pylith::feassemble::ElasticityExplicitGravData3DQuadratic::~ElasticityExplicitGravData3DQuadratic(void)
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DQuadratic.hh 2010-04-30 16:56:33 UTC (rev 16604)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DQuadratic.hh 2010-05-01 00:46:21 UTC (rev 16605)
@@ -11,12 +11,12 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application integratorelasticity.
+// This file was generated from python application elasticityexplicitapp.
#if !defined(pylith_feassemble_elasticityexplicitgravdata3dquadratic_hh)
#define pylith_feassemble_elasticityexplicitgravdata3dquadratic_hh
-#include "IntegratorData.hh"
+#include "ElasticityExplicitData.hh"
namespace pylith {
namespace feassemble {
@@ -24,7 +24,7 @@
} // pylith
} // feassemble
-class pylith::feassemble::ElasticityExplicitGravData3DQuadratic : public IntegratorData
+class pylith::feassemble::ElasticityExplicitGravData3DQuadratic : public ElasticityExplicitData
{
public:
@@ -85,6 +85,10 @@
static const double _valsJacobian[];
+ static const double _valsResidualLumped[];
+
+ static const double _valsJacobianLumped[];
+
};
#endif // pylith_feassemble_elasticityexplicitgravdata3dquadratic_hh
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityLgDeformApp.py (from rev 16604, short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorElasticityLgDeform.py)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityLgDeformApp.py (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityLgDeformApp.py 2010-05-01 00:46:21 UTC (rev 16605)
@@ -0,0 +1,347 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+# Brad T. Aagaard
+# U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file unittests/libtests/feassemble/data/ElasticityAppLgDeform.py
+
+## @brief Python application for generating C++ data files for testing
+## C++ elasticity integrator objects.
+
+from ElasticityApp import ElasticityApp
+
+import numpy
+import feutils
+
+# ----------------------------------------------------------------------
+
+# ElasticityAppLgDeform class
+class ElasticityAppLgDeform(ElasticityApp):
+ """
+ Python application for generating C++ data files for testing C++
+ elasticity integrator objects.
+ """
+
+ # PUBLIC METHODS /////////////////////////////////////////////////////
+
+ def __init__(self, name="elasticityapplgdeform"):
+ """
+ Constructor.
+ """
+ ElasticityApp.__init__(self, name)
+
+ return
+
+
+ # PRIVATE METHODS ////////////////////////////////////////////////////
+
+ def _calculateStiffnessMat(self):
+ """
+ Calculate stiffness matrix.
+
+ """
+ import feutils
+
+ K = numpy.zeros( (self.spaceDim*self.numVertices,
+ self.spaceDim*self.numVertices),
+ dtype=numpy.float64)
+
+ # Matrix of elasticity values
+ D = self._calculateElasticityMat()
+
+ for cell in self.cells:
+ cellK = numpy.zeros( (self.spaceDim*self.numBasis,
+ self.spaceDim*self.numBasis),
+ dtype=numpy.float64)
+ vertices = self.vertices[cell, :]
+ (jacobian, jacobianInv, jacobianDet, basisDeriv) = \
+ feutils.calculateJacobian(self.quadrature, vertices)
+ fieldTpdt = self.fieldT + self.fieldTIncr
+ for iQuad in xrange(self.numQuadPts):
+ wt = self.quadWts[iQuad] * jacobianDet[iQuad]
+ BL0 = self._calculateBasisDerivMatLinear0(basisDeriv, iQuad)
+ BL1 = self._calculateBasisDerivMatLinear1(basisDeriv, iQuad, fieldTpdt)
+ BL = BL0 + BL1
+ cellK[:] += wt * numpy.dot(numpy.dot(BL.transpose(), D), BL)
+ BNL = self._calculateBasisDerivMatNonlinear(basisDeriv, iQuad)
+ strain = self._calculateStrain(basisDeriv, iQuad, fieldTpdt)
+ S = self._calculateStress(strain, D)
+ cellK[:] += wt * numpy.dot(numpy.dot(BNL.transpose(), S), BNL)
+ feutils.assembleMat(K, cellK, cell, self.spaceDim)
+ return K
+
+
+ def _calculateBasisDerivMatLinear0(self, basisDeriv, iQuad):
+ """
+ Calculate matrix of derivatives of basis functions.
+ """
+ if 3 == self.spaceDim:
+ B = numpy.zeros( (6, self.spaceDim*self.numBasis),
+ dtype=numpy.float64)
+ for iBasis in xrange(self.numBasis):
+ B[0, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 0]
+ B[1, iBasis*self.spaceDim+1] = basisDeriv[iQuad, iBasis, 1]
+ B[2, iBasis*self.spaceDim+2] = basisDeriv[iQuad, iBasis, 2]
+ B[3, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 1]
+ B[3, iBasis*self.spaceDim+1] = basisDeriv[iQuad, iBasis, 0]
+ B[4, iBasis*self.spaceDim+1] = basisDeriv[iQuad, iBasis, 2]
+ B[4, iBasis*self.spaceDim+2] = basisDeriv[iQuad, iBasis, 1]
+ B[5, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 2]
+ B[5, iBasis*self.spaceDim+2] = basisDeriv[iQuad, iBasis, 0]
+ elif 2 == self.spaceDim:
+ B = numpy.zeros( (3, self.spaceDim*self.numBasis),
+ dtype=numpy.float64)
+ for iBasis in xrange(self.numBasis):
+ B[0, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 0]
+ B[1, iBasis*self.spaceDim+1] = basisDeriv[iQuad, iBasis, 1]
+ B[2, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 1]
+ B[2, iBasis*self.spaceDim+1] = basisDeriv[iQuad, iBasis, 0]
+ elif 1 == self.spaceDim:
+ B = numpy.zeros( (1, self.spaceDim*self.numBasis),
+ dtype=numpy.float64)
+ for iBasis in xrange(self.numBasis):
+ B[0, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 0]
+ else:
+ raise ValueError("Unknown spatial dimension '%d'." % self.spaceDim)
+ return B
+
+
+ def _calculateBasisDerivMatLinear1(self, basisDeriv, iQuad, disp):
+ """
+ Calculate matrix of derivatives of basis functions.
+ """
+ if 3 == self.spaceDim:
+ B = numpy.zeros( (6, self.spaceDim*self.numBasis),
+ dtype=numpy.float64)
+ l11 = 0.0
+ l12 = 0.0
+ l13 = 0.0
+ l21 = 0.0
+ l22 = 0.0
+ l23 = 0.0
+ l31 = 0.0
+ l32 = 0.0
+ l33 = 0.0
+ for kBasis in xrange(self.numBasis):
+ l11 += basisDeriv[iQuad, kBasis, 0]*disp[kBasis*self.spaceDim ]
+ l12 += basisDeriv[iQuad, kBasis, 1]*disp[kBasis*self.spaceDim ]
+ l13 += basisDeriv[iQuad, kBasis, 2]*disp[kBasis*self.spaceDim ]
+ l21 += basisDeriv[iQuad, kBasis, 0]*disp[kBasis*self.spaceDim+1]
+ l22 += basisDeriv[iQuad, kBasis, 1]*disp[kBasis*self.spaceDim+1]
+ l23 += basisDeriv[iQuad, kBasis, 2]*disp[kBasis*self.spaceDim+1]
+ l31 += basisDeriv[iQuad, kBasis, 0]*disp[kBasis*self.spaceDim+2]
+ l32 += basisDeriv[iQuad, kBasis, 1]*disp[kBasis*self.spaceDim+2]
+ l33 += basisDeriv[iQuad, kBasis, 2]*disp[kBasis*self.spaceDim+2]
+ for iBasis in xrange(self.numBasis):
+ B[0, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 0]*l11
+ B[0, iBasis*self.spaceDim+1] = basisDeriv[iQuad, iBasis, 0]*l21
+ B[0, iBasis*self.spaceDim+2] = basisDeriv[iQuad, iBasis, 0]*l31
+ B[1, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 1]*l12
+ B[1, iBasis*self.spaceDim+1] = basisDeriv[iQuad, iBasis, 1]*l22
+ B[1, iBasis*self.spaceDim+2] = basisDeriv[iQuad, iBasis, 1]*l32
+ B[2, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 2]*l13
+ B[2, iBasis*self.spaceDim+1] = basisDeriv[iQuad, iBasis, 2]*l23
+ B[2, iBasis*self.spaceDim+2] = basisDeriv[iQuad, iBasis, 2]*l33
+
+ B[3, iBasis*self.spaceDim+0] = \
+ basisDeriv[iQuad, iBasis, 1]*l11 + basisDeriv[iQuad, iBasis, 0]*l12
+ B[3, iBasis*self.spaceDim+1] = \
+ basisDeriv[iQuad, iBasis, 0]*l22 + basisDeriv[iQuad, iBasis, 1]*l21
+ B[3, iBasis*self.spaceDim+2] = \
+ basisDeriv[iQuad, iBasis, 1]*l31 + basisDeriv[iQuad, iBasis, 0]*l32
+
+ B[4, iBasis*self.spaceDim+0] = \
+ basisDeriv[iQuad, iBasis, 2]*l12 + basisDeriv[iQuad, iBasis, 1]*l13
+ B[4, iBasis*self.spaceDim+1] = \
+ basisDeriv[iQuad, iBasis, 2]*l22 + basisDeriv[iQuad, iBasis, 1]*l23
+ B[4, iBasis*self.spaceDim+2] = \
+ basisDeriv[iQuad, iBasis, 1]*l33 + basisDeriv[iQuad, iBasis, 2]*l32
+
+ B[5, iBasis*self.spaceDim+0] = \
+ basisDeriv[iQuad, iBasis, 2]*l11 + basisDeriv[iQuad, iBasis, 0]*l13
+ B[5, iBasis*self.spaceDim+1] = \
+ basisDeriv[iQuad, iBasis, 2]*l21 + basisDeriv[iQuad, iBasis, 0]*l23
+ B[5, iBasis*self.spaceDim+2] = \
+ basisDeriv[iQuad, iBasis, 0]*l33 + basisDeriv[iQuad, iBasis, 2]*l31
+
+ elif 2 == self.spaceDim:
+ B = numpy.zeros( (3, self.spaceDim*self.numBasis),
+ dtype=numpy.float64)
+ l11 = 0.0
+ l12 = 0.0
+ l21 = 0.0
+ l22 = 0.0
+ for kBasis in xrange(self.numBasis):
+ l11 += basisDeriv[iQuad, kBasis, 0]*disp[kBasis*self.spaceDim ]
+ l12 += basisDeriv[iQuad, kBasis, 1]*disp[kBasis*self.spaceDim ]
+ l21 += basisDeriv[iQuad, kBasis, 0]*disp[kBasis*self.spaceDim+1]
+ l22 += basisDeriv[iQuad, kBasis, 1]*disp[kBasis*self.spaceDim+1]
+ for iBasis in xrange(self.numBasis):
+ B[0, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 0]*l11
+ B[0, iBasis*self.spaceDim+1] = basisDeriv[iQuad, iBasis, 0]*l21
+ B[1, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 1]*l12
+ B[1, iBasis*self.spaceDim+1] = basisDeriv[iQuad, iBasis, 1]*l22
+ B[2, iBasis*self.spaceDim+0] = \
+ basisDeriv[iQuad, iBasis, 1]*l11 + basisDeriv[iQuad, iBasis, 0]*l12
+ B[2, iBasis*self.spaceDim+1] = \
+ basisDeriv[iQuad, iBasis, 0]*l22 + basisDeriv[iQuad, iBasis, 1]*l21
+
+ elif 1 == self.spaceDim:
+ B = numpy.zeros( (1, self.spaceDim*self.numBasis),
+ dtype=numpy.float64)
+ l11 = 0.0
+ for kBasis in xrange(self.numBasis):
+ l11 += basisDeriv[iQuad, kBasis, 0]*disp[kBasis]
+ for iBasis in xrange(self.numBasis):
+ B[0, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 0]*l11
+ else:
+ raise ValueError("Unknown spatial dimension '%d'." % self.spaceDim)
+ return B
+
+
+ def _calculateBasisDerivMatNonlinear(self, basisDeriv, iQuad):
+ """
+ Calculate matrix of derivatives of basis functions.
+ """
+ B = numpy.zeros( (self.spaceDim*self.spaceDim,
+ self.spaceDim*self.numBasis),
+ dtype=numpy.float64)
+ for iBasis in xrange(self.numBasis):
+ for iDim in xrange(self.spaceDim):
+ for jDim in xrange(self.spaceDim):
+ B[jDim+iDim*self.spaceDim, iBasis*self.spaceDim+iDim] = \
+ basisDeriv[iQuad, iBasis, jDim]
+ return B
+
+
+ def _calculateStrain(self, basisDeriv, iQuad, disp):
+ """
+ Calculte Green-Lagrange strain. Shear strains are twice the
+ Green-Lagrance values for compatibility with computing the strains
+ using the B matrix in the infinitesimal strain case.
+ """
+ if 3 == self.spaceDim:
+ strain = numpy.zeros( (1,6), dtype=numpy.float64)
+
+ l11 = 0.0
+ l12 = 0.0
+ l13 = 0.0
+ l21 = 0.0
+ l22 = 0.0
+ l23 = 0.0
+ l31 = 0.0
+ l32 = 0.0
+ l33 = 0.0
+ for kBasis in xrange(self.numBasis):
+ l11 += basisDeriv[iQuad, kBasis, 0]*disp[kBasis*self.spaceDim ]
+ l12 += basisDeriv[iQuad, kBasis, 1]*disp[kBasis*self.spaceDim ]
+ l13 += basisDeriv[iQuad, kBasis, 2]*disp[kBasis*self.spaceDim ]
+ l21 += basisDeriv[iQuad, kBasis, 0]*disp[kBasis*self.spaceDim+1]
+ l22 += basisDeriv[iQuad, kBasis, 1]*disp[kBasis*self.spaceDim+1]
+ l23 += basisDeriv[iQuad, kBasis, 2]*disp[kBasis*self.spaceDim+1]
+ l31 += basisDeriv[iQuad, kBasis, 0]*disp[kBasis*self.spaceDim+2]
+ l32 += basisDeriv[iQuad, kBasis, 1]*disp[kBasis*self.spaceDim+2]
+ l33 += basisDeriv[iQuad, kBasis, 2]*disp[kBasis*self.spaceDim+2]
+ strain[0, 0] = 0.5*(l11*l11 + l21*l21 + l31*l31)
+ strain[0, 1] = 0.5*(l12*l12 + l22*l22 + l32*l32)
+ strain[0, 2] = 0.5*(l13*l13 + l23*l23 + l33*l33)
+ strain[0, 3] = (l11*l12 + l21*l22 + l31*l32) # Use 2*e12 (D has mu)
+ strain[0, 4] = (l12*l13 + l22*l23 + l32*l33)
+ strain[0, 5] = (l11*l13 + l21*l23 + l31*l33)
+ for iBasis in xrange(self.numBasis):
+ strain[0, 0] += \
+ basisDeriv[iQuad, iBasis, 0]*disp[iBasis*self.spaceDim ]
+ strain[0, 1] += \
+ basisDeriv[iQuad, iBasis, 1]*disp[iBasis*self.spaceDim+1]
+ strain[0, 2] += \
+ basisDeriv[iQuad, iBasis, 2]*disp[iBasis*self.spaceDim+2]
+ strain[0, 3] += \
+ (basisDeriv[iQuad, iBasis, 0]*disp[iBasis*self.spaceDim+1] +
+ basisDeriv[iQuad, iBasis, 1]*disp[iBasis*self.spaceDim ])
+ strain[0, 4] += \
+ (basisDeriv[iQuad, iBasis, 1]*disp[iBasis*self.spaceDim+2] +
+ basisDeriv[iQuad, iBasis, 2]*disp[iBasis*self.spaceDim+1])
+ strain[0, 5] += \
+ (basisDeriv[iQuad, iBasis, 0]*disp[iBasis*self.spaceDim+2] +
+ basisDeriv[iQuad, iBasis, 2]*disp[iBasis*self.spaceDim ])
+
+ elif 2 == self.spaceDim:
+ strain = numpy.zeros( (1,3), dtype=numpy.float64)
+ l11 = 0.0
+ l12 = 0.0
+ l21 = 0.0
+ l22 = 0.0
+ for kBasis in xrange(self.numBasis):
+ l11 += basisDeriv[iQuad, kBasis, 0]*disp[kBasis*self.spaceDim ]
+ l12 += basisDeriv[iQuad, kBasis, 1]*disp[kBasis*self.spaceDim ]
+ l21 += basisDeriv[iQuad, kBasis, 0]*disp[kBasis*self.spaceDim+1]
+ l22 += basisDeriv[iQuad, kBasis, 1]*disp[kBasis*self.spaceDim+1]
+ strain[0, 0] = 0.5*(l11*l11 + l21*l21)
+ strain[0, 1] = 0.5*(l12*l12 + l22*l22)
+ strain[0, 2] = (l11*l12 + l21*l22) # Use 2*e12 (D has mu, not 2*mu)
+ for iBasis in xrange(self.numBasis):
+ strain[0, 0] += \
+ basisDeriv[iQuad, iBasis, 0]*disp[iBasis*self.spaceDim ]
+ strain[0, 1] += \
+ basisDeriv[iQuad, iBasis, 1]*disp[iBasis*self.spaceDim+1]
+ strain[0, 2] += \
+ (basisDeriv[iQuad, iBasis, 0]*disp[iBasis*self.spaceDim+1] +
+ basisDeriv[iQuad, iBasis, 1]*disp[iBasis*self.spaceDim ])
+
+ elif 1 == self.spaceDim:
+ strain = numpy.zeros( (1,1), dtype=numpy.float64)
+ l11 = 0.0
+ for kBasis in xrange(self.numBasis):
+ l11 += basisDeriv[iQuad, kBasis, 0]*disp[kBasis]
+ strain[0, 0] = 0.5*l11*l11
+ for iBasis in xrange(self.numBasis):
+ strain[0, 0] += basisDeriv[iQuad, iBasis, 0]*disp[iBasis]
+ else:
+ raise ValueError("Unknown spatial dimension '%d'." % self.spaceDim)
+
+ return strain
+
+
+ def _calculateStress(self, strain, D):
+ """
+ Calculte 2nd Priola-Kirchoff stress matrix.
+ """
+ S = numpy.zeros( (self.spaceDim*self.spaceDim,
+ self.spaceDim*self.spaceDim), dtype=numpy.float64)
+ Svec = numpy.dot(D, strain.transpose())
+ if 3 == self.spaceDim:
+ Smat = numpy.array([[Svec[0,0], Svec[3,0], Svec[5,0]],
+ [Svec[3,0], Svec[1,0], Svec[4,0]],
+ [Svec[5,0], Svec[4,0], Svec[2,0]]],
+ dtype=numpy.float64)
+ S[0:3,0:3] = Smat[:]
+ S[3:6,3:6] = Smat[:]
+ S[6:9,6:9] = Smat[:]
+ elif 2 == self.spaceDim:
+ Smat = numpy.array([[Svec[0,0], Svec[2,0]],
+ [Svec[2,0], Svec[1,0]]], dtype=numpy.float64)
+ S[0:2,0:2] = Smat[:]
+ S[2:4,2:4] = Smat[:]
+ elif 1 == self.spaceDim:
+ Smat = numpy.array([[Svec[0]]], dtype=numpy.float64)
+ S[0:1,0:1] = Smat[:]
+ else:
+ raise ValueError("Unknown spatial dimension '%d'." % self.spaceDim)
+ return S
+
+
+# MAIN /////////////////////////////////////////////////////////////////
+if __name__ == "__main__":
+
+ app = ElasticityAppLgDeform()
+ app.run()
+
+
+# End of file
Deleted: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorElasticity.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorElasticity.py 2010-04-30 16:56:33 UTC (rev 16604)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorElasticity.py 2010-05-01 00:46:21 UTC (rev 16605)
@@ -1,304 +0,0 @@
-#!/usr/bin/env python
-#
-# ----------------------------------------------------------------------
-#
-# Brad T. Aagaard
-# U.S. Geological Survey
-#
-# <LicenseText>
-#
-# ----------------------------------------------------------------------
-#
-
-## @file unittests/libtests/feassemble/data/IntegratorElasticity.py
-
-## @brief Python application for generating C++ data files for testing
-## C++ elasticity integrator objects.
-
-from IntegratorApp import IntegratorApp
-
-import numpy
-import feutils
-
-# ----------------------------------------------------------------------
-
-# IntegratorElasticity class
-class IntegratorElasticity(IntegratorApp):
- """
- Python application for generating C++ data files for testing C++
- elasticity integrator objects.
- """
-
- # INVENTORY //////////////////////////////////////////////////////////
-
- class Inventory(IntegratorApp.Inventory):
- """Python object for managing IntegratorApp facilities and properties."""
-
- ## @class Inventory
- ## Python object for managing ElasticityIntegrator facilities and
- ## properties.
- ##
- ## \b Properties
- ## @li \b useGravity Include gravitational body forces in residual.
- ##
- ## \b Facilities
- ## @li \b formulation Elasticity formulation.
-
- import pyre.inventory
-
- useGravity = pyre.inventory.bool("use_gravity", default=False)
- useGravity.meta['tip'] = "Include gravitational body forces in residual."
-
- from ElasticityImplicit import ElasticityImplicit
- formulation = pyre.inventory.facility("formulation",
- factory=ElasticityImplicit)
- formulation.meta['tip'] = "Elasticity formulation."
-
-
- # PUBLIC METHODS /////////////////////////////////////////////////////
-
- def __init__(self, name="integratorelasticity"):
- """
- Constructor.
- """
- IntegratorApp.__init__(self, name)
-
- self.density = None
- self.lameMu = None
- self.lameLambda = None
-
- return
-
-
- # PRIVATE METHODS ////////////////////////////////////////////////////
-
- def _configure(self):
- """
- Set members using inventory.
- """
- IntegratorApp._configure(self)
- self.useGravity = self.inventory.useGravity
- self.formulation = self.inventory.formulation
- return
-
-
- def _calculateResidual(self):
- """
- Calculate contribution to residual of operator for integrator.
- """
- self.valsResidual = self.formulation.calculateResidual(self)
- if self.useGravity:
- self.valsResidual += self._calculateGravityVec()
- return
-
-
- def _calculateJacobian(self):
- """
- Calculate contribution to Jacobian matrix of operator for integrator.
- """
- self.valsJacobian = self.formulation.calculateJacobian(self)
- return
-
-
- def _calculateStiffnessMat(self):
- """
- Calculate stiffness matrix.
-
- """
- import feutils
-
- K = numpy.zeros( (self.spaceDim*self.numVertices,
- self.spaceDim*self.numVertices),
- dtype=numpy.float64)
-
- # Matrix of elasticity values
- D = self._calculateElasticityMat()
-
- for cell in self.cells:
- cellK = numpy.zeros( (self.spaceDim*self.numBasis,
- self.spaceDim*self.numBasis),
- dtype=numpy.float64)
- vertices = self.vertices[cell, :]
- (jacobian, jacobianInv, jacobianDet, basisDeriv) = \
- feutils.calculateJacobian(self.quadrature, vertices)
- for iQuad in xrange(self.numQuadPts):
- wt = self.quadWts[iQuad] * jacobianDet[iQuad]
- B = self._calculateBasisDerivMat(basisDeriv, iQuad)
- cellK[:] += wt * numpy.dot(numpy.dot(B.transpose(), D), B)
- feutils.assembleMat(K, cellK, cell, self.spaceDim)
- return K
-
-
- def _calculateMassMat(self):
- """
- Calculate mass matrix.
- """
-
- M = numpy.zeros( (self.spaceDim*self.numVertices,
- self.spaceDim*self.numVertices),
- dtype=numpy.float64)
-
- for cell in self.cells:
- cellM = numpy.zeros( (self.spaceDim*self.numBasis,
- self.spaceDim*self.numBasis),
- dtype=numpy.float64)
- vertices = self.vertices[cell, :]
- (jacobian, jacobianInv, jacobianDet, basisDeriv) = \
- feutils.calculateJacobian(self.quadrature, vertices)
- for iQuad in xrange(self.numQuadPts):
- wt = self.quadWts[iQuad] * jacobianDet[iQuad]
- N = self._calculateBasisMat(iQuad)
- cellM[:] += self.density * wt * numpy.dot(N.transpose(), N)
- feutils.assembleMat(M, cellM, cell, self.spaceDim)
- return M
-
-
- def _calculateGravityVec(self):
- """
- Calculate body force vector.
- """
- gravityGlobal = numpy.zeros((self.numVertices*self.spaceDim),
- dtype=numpy.float64)
- for cell in self.cells:
- gravityCell = numpy.zeros((self.spaceDim*self.numBasis))
- vertices = self.vertices[cell, :]
- (jacobian, jacobianInv, jacobianDet, basisDeriv) = \
- feutils.calculateJacobian(self.quadrature, vertices)
- for iQuad in xrange(self.numQuadPts):
- wt = self.quadWts[iQuad] * jacobianDet[iQuad] * self.density
- for iBasis in xrange(self.numBasis):
- valI = wt * self.basis[iQuad, iBasis]
- for iDim in xrange(self.spaceDim):
- gravityCell[iDim + iBasis * self.spaceDim] += \
- valI * self.gravityVec[iDim]
- feutils.assembleVec(gravityGlobal, gravityCell, cell, self.spaceDim)
- return gravityGlobal
-
-
- def _calculateElasticityMat(self):
- """
- Calculate elasticity matrix.
- """
- if 1 == self.cellDim:
- lambda2mu = self.lameLambda + 2*self.lameMu
- C1111 = lambda2mu
- D = numpy.array([ [C1111] ],
- dtype=numpy.float64)
- elif 2 == self.cellDim:
- lambda2mu = self.lameLambda + 2*self.lameMu
- C1111 = lambda2mu
- C1122 = self.lameLambda
- C1112 = 0.0
- C2211 = self.lameLambda
- C2222 = lambda2mu
- C2212 = 0.0
- C1211 = 0.0
- C1222 = 0.0
- C1212 = 2.0*self.lameMu
- D = numpy.array([ [C1111, C1122, 0.5*C1112],
- [C2211, C2222, 0.5*C2212],
- [0.5*C1211, 0.5*C1222, 0.5*C1212] ],
- dtype=numpy.float64)
- elif 3 == self.cellDim:
- lambda2mu = self.lameLambda + 2.0*self.lameMu
- C1111 = lambda2mu
- C1122 = self.lameLambda
- C1133 = self.lameLambda
- C1112 = 0.0
- C1123 = 0.0
- C1113 = 0.0
- C2211 = self.lameLambda
- C2222 = lambda2mu
- C2233 = self.lameLambda
- C2212 = 0.0
- C2223 = 0.0
- C2213 = 0.0
- C3311 = self.lameLambda
- C3322 = self.lameLambda
- C3333 = lambda2mu
- C3312 = 0.0
- C3323 = 0.0
- C3313 = 0.0
- C1211 = 0.0
- C1222 = 0.0
- C1233 = 0.0
- C1212 = 2.0*self.lameMu
- C1223 = 0.0
- C1213 = 0.0
- C2311 = 0.0
- C2322 = 0.0
- C2333 = 0.0
- C2312 = 0.0
- C2323 = 2.0*self.lameMu
- C2313 = 0.0
- C1311 = 0.0
- C1322 = 0.0
- C1333 = 0.0
- C1312 = 0.0
- C1323 = 0.0
- C1313 = 2.0*self.lameMu
- D = numpy.array([ [C1111, C1122, C1133, 0.5*C1112, 0.5*C1123, 0.5*C1113],
- [C2211, C2222, C2233, 0.5*C2212, 0.5*C2223, 0.5*C2213],
- [C3311, C3322, C3333, 0.5*C3312, 0.5*C3323, 0.5*C3313],
- [0.5*C1211, 0.5*C1222, 0.5*C1233, 0.5*C1212, 0.5*C1223, 0.5*C1213],
- [0.5*C2311, 0.5*C2322, 0.5*C2333, 0.5*C2312, 0.5*C2323, 0.5*C2313],
- [0.5*C1311, 0.5*C1322, 0.5*C1333, 0.5*C1312, 0.5*C1323, 0.5*C1313] ],
- dtype=numpy.float64)
- return D
-
-
- def _calculateBasisMat(self, iQuad):
- """
- Calculate matrix of basis functions.
- """
- N = numpy.zeros( (self.spaceDim, self.spaceDim*self.numBasis),
- dtype=numpy.float64)
- for iBasis in xrange(self.numBasis):
- for iDim in xrange(self.spaceDim):
- N[iDim, iBasis*self.spaceDim+iDim] = self.basis[iQuad, iBasis]
- return N
-
-
- def _calculateBasisDerivMat(self, basisDeriv, iQuad):
- """
- Calculate matrix of derivatives of basis functions.
- """
- if 3 == self.spaceDim:
- B = numpy.zeros( (6, self.spaceDim*self.numBasis),
- dtype=numpy.float64)
- for iBasis in xrange(self.numBasis):
- B[0, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 0]
- B[1, iBasis*self.spaceDim+1] = basisDeriv[iQuad, iBasis, 1]
- B[2, iBasis*self.spaceDim+2] = basisDeriv[iQuad, iBasis, 2]
- B[3, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 1]
- B[3, iBasis*self.spaceDim+1] = basisDeriv[iQuad, iBasis, 0]
- B[4, iBasis*self.spaceDim+1] = basisDeriv[iQuad, iBasis, 2]
- B[4, iBasis*self.spaceDim+2] = basisDeriv[iQuad, iBasis, 1]
- B[5, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 2]
- B[5, iBasis*self.spaceDim+2] = basisDeriv[iQuad, iBasis, 0]
- elif 2 == self.spaceDim:
- B = numpy.zeros( (3, self.spaceDim*self.numBasis),
- dtype=numpy.float64)
- for iBasis in xrange(self.numBasis):
- B[0, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 0]
- B[1, iBasis*self.spaceDim+1] = basisDeriv[iQuad, iBasis, 1]
- B[2, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 1]
- B[2, iBasis*self.spaceDim+1] = basisDeriv[iQuad, iBasis, 0]
- elif 1 == self.spaceDim:
- B = numpy.zeros( (1, self.spaceDim*self.numBasis),
- dtype=numpy.float64)
- for iBasis in xrange(self.numBasis):
- B[0, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 0]
- else:
- raise ValueError("Unknown spatial dimension '%d'." % self.spaceDim)
- return B
-
-
-# MAIN /////////////////////////////////////////////////////////////////
-if __name__ == "__main__":
-
- app = IntegratorElasticity()
- app.run()
-
-
-# End of file
Deleted: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorElasticityLgDeform.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorElasticityLgDeform.py 2010-04-30 16:56:33 UTC (rev 16604)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorElasticityLgDeform.py 2010-05-01 00:46:21 UTC (rev 16605)
@@ -1,347 +0,0 @@
-#!/usr/bin/env python
-#
-# ----------------------------------------------------------------------
-#
-# Brad T. Aagaard
-# U.S. Geological Survey
-#
-# <LicenseText>
-#
-# ----------------------------------------------------------------------
-#
-
-## @file unittests/libtests/feassemble/data/IntegratorElasticityLgDeform.py
-
-## @brief Python application for generating C++ data files for testing
-## C++ elasticity integrator objects.
-
-from IntegratorElasticity import IntegratorElasticity
-
-import numpy
-import feutils
-
-# ----------------------------------------------------------------------
-
-# IntegratorElasticityLgDeform class
-class IntegratorElasticityLgDeform(IntegratorElasticity):
- """
- Python application for generating C++ data files for testing C++
- elasticity integrator objects.
- """
-
- # PUBLIC METHODS /////////////////////////////////////////////////////
-
- def __init__(self, name="integratorelasticitylgdeform"):
- """
- Constructor.
- """
- IntegratorElasticity.__init__(self, name)
-
- return
-
-
- # PRIVATE METHODS ////////////////////////////////////////////////////
-
- def _calculateStiffnessMat(self):
- """
- Calculate stiffness matrix.
-
- """
- import feutils
-
- K = numpy.zeros( (self.spaceDim*self.numVertices,
- self.spaceDim*self.numVertices),
- dtype=numpy.float64)
-
- # Matrix of elasticity values
- D = self._calculateElasticityMat()
-
- for cell in self.cells:
- cellK = numpy.zeros( (self.spaceDim*self.numBasis,
- self.spaceDim*self.numBasis),
- dtype=numpy.float64)
- vertices = self.vertices[cell, :]
- (jacobian, jacobianInv, jacobianDet, basisDeriv) = \
- feutils.calculateJacobian(self.quadrature, vertices)
- fieldTpdt = self.fieldT + self.fieldTIncr
- for iQuad in xrange(self.numQuadPts):
- wt = self.quadWts[iQuad] * jacobianDet[iQuad]
- BL0 = self._calculateBasisDerivMatLinear0(basisDeriv, iQuad)
- BL1 = self._calculateBasisDerivMatLinear1(basisDeriv, iQuad, fieldTpdt)
- BL = BL0 + BL1
- cellK[:] += wt * numpy.dot(numpy.dot(BL.transpose(), D), BL)
- BNL = self._calculateBasisDerivMatNonlinear(basisDeriv, iQuad)
- strain = self._calculateStrain(basisDeriv, iQuad, fieldTpdt)
- S = self._calculateStress(strain, D)
- cellK[:] += wt * numpy.dot(numpy.dot(BNL.transpose(), S), BNL)
- feutils.assembleMat(K, cellK, cell, self.spaceDim)
- return K
-
-
- def _calculateBasisDerivMatLinear0(self, basisDeriv, iQuad):
- """
- Calculate matrix of derivatives of basis functions.
- """
- if 3 == self.spaceDim:
- B = numpy.zeros( (6, self.spaceDim*self.numBasis),
- dtype=numpy.float64)
- for iBasis in xrange(self.numBasis):
- B[0, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 0]
- B[1, iBasis*self.spaceDim+1] = basisDeriv[iQuad, iBasis, 1]
- B[2, iBasis*self.spaceDim+2] = basisDeriv[iQuad, iBasis, 2]
- B[3, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 1]
- B[3, iBasis*self.spaceDim+1] = basisDeriv[iQuad, iBasis, 0]
- B[4, iBasis*self.spaceDim+1] = basisDeriv[iQuad, iBasis, 2]
- B[4, iBasis*self.spaceDim+2] = basisDeriv[iQuad, iBasis, 1]
- B[5, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 2]
- B[5, iBasis*self.spaceDim+2] = basisDeriv[iQuad, iBasis, 0]
- elif 2 == self.spaceDim:
- B = numpy.zeros( (3, self.spaceDim*self.numBasis),
- dtype=numpy.float64)
- for iBasis in xrange(self.numBasis):
- B[0, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 0]
- B[1, iBasis*self.spaceDim+1] = basisDeriv[iQuad, iBasis, 1]
- B[2, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 1]
- B[2, iBasis*self.spaceDim+1] = basisDeriv[iQuad, iBasis, 0]
- elif 1 == self.spaceDim:
- B = numpy.zeros( (1, self.spaceDim*self.numBasis),
- dtype=numpy.float64)
- for iBasis in xrange(self.numBasis):
- B[0, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 0]
- else:
- raise ValueError("Unknown spatial dimension '%d'." % self.spaceDim)
- return B
-
-
- def _calculateBasisDerivMatLinear1(self, basisDeriv, iQuad, disp):
- """
- Calculate matrix of derivatives of basis functions.
- """
- if 3 == self.spaceDim:
- B = numpy.zeros( (6, self.spaceDim*self.numBasis),
- dtype=numpy.float64)
- l11 = 0.0
- l12 = 0.0
- l13 = 0.0
- l21 = 0.0
- l22 = 0.0
- l23 = 0.0
- l31 = 0.0
- l32 = 0.0
- l33 = 0.0
- for kBasis in xrange(self.numBasis):
- l11 += basisDeriv[iQuad, kBasis, 0]*disp[kBasis*self.spaceDim ]
- l12 += basisDeriv[iQuad, kBasis, 1]*disp[kBasis*self.spaceDim ]
- l13 += basisDeriv[iQuad, kBasis, 2]*disp[kBasis*self.spaceDim ]
- l21 += basisDeriv[iQuad, kBasis, 0]*disp[kBasis*self.spaceDim+1]
- l22 += basisDeriv[iQuad, kBasis, 1]*disp[kBasis*self.spaceDim+1]
- l23 += basisDeriv[iQuad, kBasis, 2]*disp[kBasis*self.spaceDim+1]
- l31 += basisDeriv[iQuad, kBasis, 0]*disp[kBasis*self.spaceDim+2]
- l32 += basisDeriv[iQuad, kBasis, 1]*disp[kBasis*self.spaceDim+2]
- l33 += basisDeriv[iQuad, kBasis, 2]*disp[kBasis*self.spaceDim+2]
- for iBasis in xrange(self.numBasis):
- B[0, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 0]*l11
- B[0, iBasis*self.spaceDim+1] = basisDeriv[iQuad, iBasis, 0]*l21
- B[0, iBasis*self.spaceDim+2] = basisDeriv[iQuad, iBasis, 0]*l31
- B[1, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 1]*l12
- B[1, iBasis*self.spaceDim+1] = basisDeriv[iQuad, iBasis, 1]*l22
- B[1, iBasis*self.spaceDim+2] = basisDeriv[iQuad, iBasis, 1]*l32
- B[2, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 2]*l13
- B[2, iBasis*self.spaceDim+1] = basisDeriv[iQuad, iBasis, 2]*l23
- B[2, iBasis*self.spaceDim+2] = basisDeriv[iQuad, iBasis, 2]*l33
-
- B[3, iBasis*self.spaceDim+0] = \
- basisDeriv[iQuad, iBasis, 1]*l11 + basisDeriv[iQuad, iBasis, 0]*l12
- B[3, iBasis*self.spaceDim+1] = \
- basisDeriv[iQuad, iBasis, 0]*l22 + basisDeriv[iQuad, iBasis, 1]*l21
- B[3, iBasis*self.spaceDim+2] = \
- basisDeriv[iQuad, iBasis, 1]*l31 + basisDeriv[iQuad, iBasis, 0]*l32
-
- B[4, iBasis*self.spaceDim+0] = \
- basisDeriv[iQuad, iBasis, 2]*l12 + basisDeriv[iQuad, iBasis, 1]*l13
- B[4, iBasis*self.spaceDim+1] = \
- basisDeriv[iQuad, iBasis, 2]*l22 + basisDeriv[iQuad, iBasis, 1]*l23
- B[4, iBasis*self.spaceDim+2] = \
- basisDeriv[iQuad, iBasis, 1]*l33 + basisDeriv[iQuad, iBasis, 2]*l32
-
- B[5, iBasis*self.spaceDim+0] = \
- basisDeriv[iQuad, iBasis, 2]*l11 + basisDeriv[iQuad, iBasis, 0]*l13
- B[5, iBasis*self.spaceDim+1] = \
- basisDeriv[iQuad, iBasis, 2]*l21 + basisDeriv[iQuad, iBasis, 0]*l23
- B[5, iBasis*self.spaceDim+2] = \
- basisDeriv[iQuad, iBasis, 0]*l33 + basisDeriv[iQuad, iBasis, 2]*l31
-
- elif 2 == self.spaceDim:
- B = numpy.zeros( (3, self.spaceDim*self.numBasis),
- dtype=numpy.float64)
- l11 = 0.0
- l12 = 0.0
- l21 = 0.0
- l22 = 0.0
- for kBasis in xrange(self.numBasis):
- l11 += basisDeriv[iQuad, kBasis, 0]*disp[kBasis*self.spaceDim ]
- l12 += basisDeriv[iQuad, kBasis, 1]*disp[kBasis*self.spaceDim ]
- l21 += basisDeriv[iQuad, kBasis, 0]*disp[kBasis*self.spaceDim+1]
- l22 += basisDeriv[iQuad, kBasis, 1]*disp[kBasis*self.spaceDim+1]
- for iBasis in xrange(self.numBasis):
- B[0, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 0]*l11
- B[0, iBasis*self.spaceDim+1] = basisDeriv[iQuad, iBasis, 0]*l21
- B[1, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 1]*l12
- B[1, iBasis*self.spaceDim+1] = basisDeriv[iQuad, iBasis, 1]*l22
- B[2, iBasis*self.spaceDim+0] = \
- basisDeriv[iQuad, iBasis, 1]*l11 + basisDeriv[iQuad, iBasis, 0]*l12
- B[2, iBasis*self.spaceDim+1] = \
- basisDeriv[iQuad, iBasis, 0]*l22 + basisDeriv[iQuad, iBasis, 1]*l21
-
- elif 1 == self.spaceDim:
- B = numpy.zeros( (1, self.spaceDim*self.numBasis),
- dtype=numpy.float64)
- l11 = 0.0
- for kBasis in xrange(self.numBasis):
- l11 += basisDeriv[iQuad, kBasis, 0]*disp[kBasis]
- for iBasis in xrange(self.numBasis):
- B[0, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 0]*l11
- else:
- raise ValueError("Unknown spatial dimension '%d'." % self.spaceDim)
- return B
-
-
- def _calculateBasisDerivMatNonlinear(self, basisDeriv, iQuad):
- """
- Calculate matrix of derivatives of basis functions.
- """
- B = numpy.zeros( (self.spaceDim*self.spaceDim,
- self.spaceDim*self.numBasis),
- dtype=numpy.float64)
- for iBasis in xrange(self.numBasis):
- for iDim in xrange(self.spaceDim):
- for jDim in xrange(self.spaceDim):
- B[jDim+iDim*self.spaceDim, iBasis*self.spaceDim+iDim] = \
- basisDeriv[iQuad, iBasis, jDim]
- return B
-
-
- def _calculateStrain(self, basisDeriv, iQuad, disp):
- """
- Calculte Green-Lagrange strain. Shear strains are twice the
- Green-Lagrance values for compatibility with computing the strains
- using the B matrix in the infinitesimal strain case.
- """
- if 3 == self.spaceDim:
- strain = numpy.zeros( (1,6), dtype=numpy.float64)
-
- l11 = 0.0
- l12 = 0.0
- l13 = 0.0
- l21 = 0.0
- l22 = 0.0
- l23 = 0.0
- l31 = 0.0
- l32 = 0.0
- l33 = 0.0
- for kBasis in xrange(self.numBasis):
- l11 += basisDeriv[iQuad, kBasis, 0]*disp[kBasis*self.spaceDim ]
- l12 += basisDeriv[iQuad, kBasis, 1]*disp[kBasis*self.spaceDim ]
- l13 += basisDeriv[iQuad, kBasis, 2]*disp[kBasis*self.spaceDim ]
- l21 += basisDeriv[iQuad, kBasis, 0]*disp[kBasis*self.spaceDim+1]
- l22 += basisDeriv[iQuad, kBasis, 1]*disp[kBasis*self.spaceDim+1]
- l23 += basisDeriv[iQuad, kBasis, 2]*disp[kBasis*self.spaceDim+1]
- l31 += basisDeriv[iQuad, kBasis, 0]*disp[kBasis*self.spaceDim+2]
- l32 += basisDeriv[iQuad, kBasis, 1]*disp[kBasis*self.spaceDim+2]
- l33 += basisDeriv[iQuad, kBasis, 2]*disp[kBasis*self.spaceDim+2]
- strain[0, 0] = 0.5*(l11*l11 + l21*l21 + l31*l31)
- strain[0, 1] = 0.5*(l12*l12 + l22*l22 + l32*l32)
- strain[0, 2] = 0.5*(l13*l13 + l23*l23 + l33*l33)
- strain[0, 3] = (l11*l12 + l21*l22 + l31*l32) # Use 2*e12 (D has mu)
- strain[0, 4] = (l12*l13 + l22*l23 + l32*l33)
- strain[0, 5] = (l11*l13 + l21*l23 + l31*l33)
- for iBasis in xrange(self.numBasis):
- strain[0, 0] += \
- basisDeriv[iQuad, iBasis, 0]*disp[iBasis*self.spaceDim ]
- strain[0, 1] += \
- basisDeriv[iQuad, iBasis, 1]*disp[iBasis*self.spaceDim+1]
- strain[0, 2] += \
- basisDeriv[iQuad, iBasis, 2]*disp[iBasis*self.spaceDim+2]
- strain[0, 3] += \
- (basisDeriv[iQuad, iBasis, 0]*disp[iBasis*self.spaceDim+1] +
- basisDeriv[iQuad, iBasis, 1]*disp[iBasis*self.spaceDim ])
- strain[0, 4] += \
- (basisDeriv[iQuad, iBasis, 1]*disp[iBasis*self.spaceDim+2] +
- basisDeriv[iQuad, iBasis, 2]*disp[iBasis*self.spaceDim+1])
- strain[0, 5] += \
- (basisDeriv[iQuad, iBasis, 0]*disp[iBasis*self.spaceDim+2] +
- basisDeriv[iQuad, iBasis, 2]*disp[iBasis*self.spaceDim ])
-
- elif 2 == self.spaceDim:
- strain = numpy.zeros( (1,3), dtype=numpy.float64)
- l11 = 0.0
- l12 = 0.0
- l21 = 0.0
- l22 = 0.0
- for kBasis in xrange(self.numBasis):
- l11 += basisDeriv[iQuad, kBasis, 0]*disp[kBasis*self.spaceDim ]
- l12 += basisDeriv[iQuad, kBasis, 1]*disp[kBasis*self.spaceDim ]
- l21 += basisDeriv[iQuad, kBasis, 0]*disp[kBasis*self.spaceDim+1]
- l22 += basisDeriv[iQuad, kBasis, 1]*disp[kBasis*self.spaceDim+1]
- strain[0, 0] = 0.5*(l11*l11 + l21*l21)
- strain[0, 1] = 0.5*(l12*l12 + l22*l22)
- strain[0, 2] = (l11*l12 + l21*l22) # Use 2*e12 (D has mu, not 2*mu)
- for iBasis in xrange(self.numBasis):
- strain[0, 0] += \
- basisDeriv[iQuad, iBasis, 0]*disp[iBasis*self.spaceDim ]
- strain[0, 1] += \
- basisDeriv[iQuad, iBasis, 1]*disp[iBasis*self.spaceDim+1]
- strain[0, 2] += \
- (basisDeriv[iQuad, iBasis, 0]*disp[iBasis*self.spaceDim+1] +
- basisDeriv[iQuad, iBasis, 1]*disp[iBasis*self.spaceDim ])
-
- elif 1 == self.spaceDim:
- strain = numpy.zeros( (1,1), dtype=numpy.float64)
- l11 = 0.0
- for kBasis in xrange(self.numBasis):
- l11 += basisDeriv[iQuad, kBasis, 0]*disp[kBasis]
- strain[0, 0] = 0.5*l11*l11
- for iBasis in xrange(self.numBasis):
- strain[0, 0] += basisDeriv[iQuad, iBasis, 0]*disp[iBasis]
- else:
- raise ValueError("Unknown spatial dimension '%d'." % self.spaceDim)
-
- return strain
-
-
- def _calculateStress(self, strain, D):
- """
- Calculte 2nd Priola-Kirchoff stress matrix.
- """
- S = numpy.zeros( (self.spaceDim*self.spaceDim,
- self.spaceDim*self.spaceDim), dtype=numpy.float64)
- Svec = numpy.dot(D, strain.transpose())
- if 3 == self.spaceDim:
- Smat = numpy.array([[Svec[0,0], Svec[3,0], Svec[5,0]],
- [Svec[3,0], Svec[1,0], Svec[4,0]],
- [Svec[5,0], Svec[4,0], Svec[2,0]]],
- dtype=numpy.float64)
- S[0:3,0:3] = Smat[:]
- S[3:6,3:6] = Smat[:]
- S[6:9,6:9] = Smat[:]
- elif 2 == self.spaceDim:
- Smat = numpy.array([[Svec[0,0], Svec[2,0]],
- [Svec[2,0], Svec[1,0]]], dtype=numpy.float64)
- S[0:2,0:2] = Smat[:]
- S[2:4,2:4] = Smat[:]
- elif 1 == self.spaceDim:
- Smat = numpy.array([[Svec[0]]], dtype=numpy.float64)
- S[0:1,0:1] = Smat[:]
- else:
- raise ValueError("Unknown spatial dimension '%d'." % self.spaceDim)
- return S
-
-
-# MAIN /////////////////////////////////////////////////////////////////
-if __name__ == "__main__":
-
- app = IntegratorElasticityLgDeform()
- app.run()
-
-
-# End of file
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/generate.sh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/generate.sh 2010-04-30 16:56:33 UTC (rev 16604)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/generate.sh 2010-05-01 00:46:21 UTC (rev 16605)
@@ -136,43 +136,43 @@
# 1-D ----------------------------------------------------------------
- python IntegratorElasticity.py \
+ python ElasticityExplicitApp.py \
--formulation=ElasticityExplicit \
--data.namespace=pylith,feassemble \
--data.object=ElasticityExplicitData1DLinear \
- --data.parent=IntegratorData \
+ --data.parent=ElasticityExplicitData \
--mesh=Mesh1DLinear \
--quadrature=Quadrature1DLinear \
--material=MaterialElasticStrain1D \
--solution=Solution1DLinear
- python IntegratorElasticity.py \
+ python ElasticityExplicitApp.py \
--formulation=ElasticityExplicit \
--data.namespace=pylith,feassemble \
--data.object=ElasticityExplicitData1DQuadratic \
- --data.parent=IntegratorData \
+ --data.parent=ElasticityExplicitData \
--mesh=Mesh1DQuadratic \
--quadrature=Quadrature1DQuadratic \
--material=MaterialElasticStrain1D \
--solution=Solution1DQuadratic
- python IntegratorElasticity.py \
+ python ElasticityExplicitApp.py \
--use_gravity=True \
--formulation=ElasticityExplicit \
--data.namespace=pylith,feassemble \
--data.object=ElasticityExplicitGravData1DLinear \
- --data.parent=IntegratorData \
+ --data.parent=ElasticityExplicitData \
--mesh=Mesh1DLinear \
--quadrature=Quadrature1DLinear \
--material=MaterialElasticStrain1D \
--solution=Solution1DLinear
- python IntegratorElasticity.py \
+ python ElasticityExplicitApp.py \
--use_gravity=True \
--formulation=ElasticityExplicit \
--data.namespace=pylith,feassemble \
--data.object=ElasticityExplicitGravData1DQuadratic \
- --data.parent=IntegratorData \
+ --data.parent=ElasticityExplicitData \
--mesh=Mesh1DQuadratic \
--quadrature=Quadrature1DQuadratic \
--material=MaterialElasticStrain1D \
@@ -180,43 +180,43 @@
# 2-D ----------------------------------------------------------------
- python IntegratorElasticity.py \
+ python ElasticityExplicitApp.py \
--formulation=ElasticityExplicit \
--data.namespace=pylith,feassemble \
--data.object=ElasticityExplicitData2DLinear \
- --data.parent=IntegratorData \
+ --data.parent=ElasticityExplicitData \
--mesh=Mesh2DLinear \
--quadrature=Quadrature2DLinear \
--material=ElasticPlaneStrain \
--solution=Solution2DLinear
- python IntegratorElasticity.py \
+ python ElasticityExplicitApp.py \
--formulation=ElasticityExplicit \
--data.namespace=pylith,feassemble \
--data.object=ElasticityExplicitData2DQuadratic \
- --data.parent=IntegratorData \
+ --data.parent=ElasticityExplicitData \
--mesh=Mesh2DQuadratic \
--quadrature=Quadrature2DQuadratic \
--material=ElasticPlaneStrain \
--solution=Solution2DQuadratic
- python IntegratorElasticity.py \
+ python ElasticityExplicitApp.py \
--use_gravity=True \
--formulation=ElasticityExplicit \
--data.namespace=pylith,feassemble \
--data.object=ElasticityExplicitGravData2DLinear \
- --data.parent=IntegratorData \
+ --data.parent=ElasticityExplicitData \
--mesh=Mesh2DLinear \
--quadrature=Quadrature2DLinear \
--material=ElasticPlaneStrain \
--solution=Solution2DLinear
- python IntegratorElasticity.py \
+ python ElasticityExplicitApp.py \
--use_gravity=True \
--formulation=ElasticityExplicit \
--data.namespace=pylith,feassemble \
--data.object=ElasticityExplicitGravData2DQuadratic \
- --data.parent=IntegratorData \
+ --data.parent=ElasticityExplicitData \
--mesh=Mesh2DQuadratic \
--quadrature=Quadrature2DQuadratic \
--material=ElasticPlaneStrain \
@@ -226,43 +226,43 @@
# 3-D ----------------------------------------------------------------
- python IntegratorElasticity.py \
+ python ElasticityExplicitApp.py \
--formulation=ElasticityExplicit \
--data.namespace=pylith,feassemble \
--data.object=ElasticityExplicitData3DLinear \
- --data.parent=IntegratorData \
+ --data.parent=ElasticityExplicitData \
--mesh=Mesh3DLinear \
--quadrature=Quadrature3DLinear \
--material=ElasticIsotropic3D \
--solution=Solution3DLinear
- python IntegratorElasticity.py \
+ python ElasticityExplicitApp.py \
--formulation=ElasticityExplicit \
--data.namespace=pylith,feassemble \
--data.object=ElasticityExplicitData3DQuadratic \
- --data.parent=IntegratorData \
+ --data.parent=ElasticityExplicitData \
--mesh=Mesh3DQuadratic \
--quadrature=Quadrature3DQuadratic \
--material=ElasticIsotropic3D \
--solution=Solution3DQuadratic
- python IntegratorElasticity.py \
+ python ElasticityExplicitApp.py \
--use_gravity=True \
--formulation=ElasticityExplicit \
--data.namespace=pylith,feassemble \
--data.object=ElasticityExplicitGravData3DLinear \
- --data.parent=IntegratorData \
+ --data.parent=ElasticityExplicitData \
--mesh=Mesh3DLinear \
--quadrature=Quadrature3DLinear \
--material=ElasticIsotropic3D \
--solution=Solution3DLinear
- python IntegratorElasticity.py \
+ python ElasticityExplicitApp.py \
--use_gravity=True \
--formulation=ElasticityExplicit \
--data.namespace=pylith,feassemble \
--data.object=ElasticityExplicitGravData3DQuadratic \
- --data.parent=IntegratorData \
+ --data.parent=ElasticityExplicitData \
--mesh=Mesh3DQuadratic \
--quadrature=Quadrature3DQuadratic \
--material=ElasticIsotropic3D \
@@ -275,7 +275,7 @@
# 1-D ----------------------------------------------------------------
- python IntegratorElasticity.py \
+ python ElasticityApp.py \
--formulation=ElasticityImplicit \
--data.namespace=pylith,feassemble \
--data.object=ElasticityImplicitData1DLinear \
@@ -285,7 +285,7 @@
--material=MaterialElasticStrain1D \
--solution=Solution1DLinear
- python IntegratorElasticity.py \
+ python ElasticityApp.py \
--formulation=ElasticityImplicit \
--data.namespace=pylith,feassemble \
--data.object=ElasticityImplicitData1DQuadratic \
@@ -295,7 +295,7 @@
--material=MaterialElasticStrain1D \
--solution=Solution1DQuadratic
- python IntegratorElasticity.py \
+ python ElasticityApp.py \
--use_gravity=True \
--formulation=ElasticityImplicit \
--data.namespace=pylith,feassemble \
@@ -306,7 +306,7 @@
--material=MaterialElasticStrain1D \
--solution=Solution1DLinear
- python IntegratorElasticity.py \
+ python ElasticityApp.py \
--use_gravity=True \
--formulation=ElasticityImplicit \
--data.namespace=pylith,feassemble \
@@ -319,7 +319,7 @@
# 2-D ----------------------------------------------------------------
- python IntegratorElasticity.py \
+ python ElasticityApp.py \
--formulation=ElasticityImplicit \
--data.namespace=pylith,feassemble \
--data.object=ElasticityImplicitData2DLinear \
@@ -329,7 +329,7 @@
--material=ElasticPlaneStrain \
--solution=Solution2DLinear
- python IntegratorElasticity.py \
+ python ElasticityApp.py \
--formulation=ElasticityImplicit \
--data.namespace=pylith,feassemble \
--data.object=ElasticityImplicitData2DQuadratic \
@@ -339,7 +339,7 @@
--material=ElasticPlaneStrain \
--solution=Solution2DQuadratic
- python IntegratorElasticity.py \
+ python ElasticityApp.py \
--use_gravity=True \
--formulation=ElasticityImplicit \
--data.namespace=pylith,feassemble \
@@ -350,7 +350,7 @@
--material=ElasticPlaneStrain \
--solution=Solution2DLinear
- python IntegratorElasticity.py \
+ python ElasticityApp.py \
--use_gravity=True \
--formulation=ElasticityImplicit \
--data.namespace=pylith,feassemble \
@@ -364,7 +364,7 @@
# 3-D ----------------------------------------------------------------
- python IntegratorElasticity.py \
+ python ElasticityApp.py \
--formulation=ElasticityImplicit \
--data.namespace=pylith,feassemble \
--data.object=ElasticityImplicitData3DLinear \
@@ -374,7 +374,7 @@
--material=ElasticIsotropic3D \
--solution=Solution3DLinear
- python IntegratorElasticity.py \
+ python ElasticityApp.py \
--formulation=ElasticityImplicit \
--data.namespace=pylith,feassemble \
--data.object=ElasticityImplicitData3DQuadratic \
@@ -384,7 +384,7 @@
--material=ElasticIsotropic3D \
--solution=Solution3DQuadratic
- python IntegratorElasticity.py \
+ python ElasticityApp.py \
--use_gravity=True \
--formulation=ElasticityImplicit \
--data.namespace=pylith,feassemble \
@@ -395,7 +395,7 @@
--material=ElasticIsotropic3D \
--solution=Solution3DLinear
- python IntegratorElasticity.py \
+ python ElasticityApp.py \
--use_gravity=True \
--formulation=ElasticityImplicit \
--data.namespace=pylith,feassemble \
@@ -413,7 +413,7 @@
# 1-D ----------------------------------------------------------------
- python IntegratorElasticityLgDeform.py \
+ python ElasticityAppLgDeform.py \
--formulation=ElasticityExplicitLgDeform \
--data.namespace=pylith,feassemble \
--data.object=ElasticityExplicitLgDeformData1DLinear \
@@ -423,7 +423,7 @@
--material=MaterialElasticStrain1D \
--solution=Solution1DLinear
- python IntegratorElasticityLgDeform.py \
+ python ElasticityAppLgDeform.py \
--formulation=ElasticityExplicitLgDeform \
--data.namespace=pylith,feassemble \
--data.object=ElasticityExplicitLgDeformData1DQuadratic \
@@ -433,7 +433,7 @@
--material=MaterialElasticStrain1D \
--solution=Solution1DQuadratic
- python IntegratorElasticityLgDeform.py \
+ python ElasticityAppLgDeform.py \
--use_gravity=True \
--formulation=ElasticityExplicitLgDeform \
--data.namespace=pylith,feassemble \
@@ -444,7 +444,7 @@
--material=MaterialElasticStrain1D \
--solution=Solution1DLinear
- python IntegratorElasticityLgDeform.py \
+ python ElasticityAppLgDeform.py \
--use_gravity=True \
--formulation=ElasticityExplicitLgDeform \
--data.namespace=pylith,feassemble \
@@ -458,7 +458,7 @@
# 2-D ----------------------------------------------------------------
- python IntegratorElasticityLgDeform.py \
+ python ElasticityAppLgDeform.py \
--formulation=ElasticityExplicitLgDeform \
--data.namespace=pylith,feassemble \
--data.object=ElasticityExplicitLgDeformData2DLinear \
@@ -468,7 +468,7 @@
--material=ElasticPlaneStrain \
--solution=Solution2DLinear
- python IntegratorElasticityLgDeform.py \
+ python ElasticityAppLgDeform.py \
--formulation=ElasticityExplicitLgDeform \
--data.namespace=pylith,feassemble \
--data.object=ElasticityExplicitLgDeformData2DQuadratic \
@@ -478,7 +478,7 @@
--material=ElasticPlaneStrain \
--solution=Solution2DQuadratic
- python IntegratorElasticityLgDeform.py \
+ python ElasticityAppLgDeform.py \
--use_gravity=True \
--formulation=ElasticityExplicitLgDeform \
--data.namespace=pylith,feassemble \
@@ -489,7 +489,7 @@
--material=ElasticPlaneStrain \
--solution=Solution2DLinear
- python IntegratorElasticityLgDeform.py \
+ python ElasticityAppLgDeform.py \
--use_gravity=True \
--formulation=ElasticityExplicitLgDeform \
--data.namespace=pylith,feassemble \
@@ -503,7 +503,7 @@
# 3-D ----------------------------------------------------------------
- python IntegratorElasticityLgDeform.py \
+ python ElasticityAppLgDeform.py \
--formulation=ElasticityExplicitLgDeform \
--data.namespace=pylith,feassemble \
--data.object=ElasticityExplicitLgDeformData3DLinear \
@@ -513,7 +513,7 @@
--material=ElasticIsotropic3D \
--solution=Solution3DLinear
- python IntegratorElasticityLgDeform.py \
+ python ElasticityAppLgDeform.py \
--formulation=ElasticityExplicitLgDeform \
--data.namespace=pylith,feassemble \
--data.object=ElasticityExplicitLgDeformData3DQuadratic \
@@ -523,7 +523,7 @@
--material=ElasticIsotropic3D \
--solution=Solution3DQuadratic
- python IntegratorElasticityLgDeform.py \
+ python ElasticityAppLgDeform.py \
--use_gravity=True \
--formulation=ElasticityExplicitLgDeform \
--data.namespace=pylith,feassemble \
@@ -534,7 +534,7 @@
--material=ElasticIsotropic3D \
--solution=Solution3DLinear
- python IntegratorElasticityLgDeform.py \
+ python ElasticityAppLgDeform.py \
--use_gravity=True \
--formulation=ElasticityExplicitLgDeform \
--data.namespace=pylith,feassemble \
@@ -553,7 +553,7 @@
# 1-D ----------------------------------------------------------------
- python IntegratorElasticityLgDeform.py \
+ python ElasticityAppLgDeform.py \
--formulation=ElasticityImplicitLgDeform \
--data.namespace=pylith,feassemble \
--data.object=ElasticityImplicitLgDeformData1DLinear \
@@ -563,7 +563,7 @@
--material=MaterialElasticStrain1D \
--solution=Solution1DLinear
- python IntegratorElasticityLgDeform.py \
+ python ElasticityAppLgDeform.py \
--formulation=ElasticityImplicitLgDeform \
--data.namespace=pylith,feassemble \
--data.object=ElasticityImplicitLgDeformData1DQuadratic \
@@ -573,7 +573,7 @@
--material=MaterialElasticStrain1D \
--solution=Solution1DQuadratic
- python IntegratorElasticityLgDeform.py \
+ python ElasticityAppLgDeform.py \
--use_gravity=True \
--formulation=ElasticityImplicitLgDeform \
--data.namespace=pylith,feassemble \
@@ -584,7 +584,7 @@
--material=MaterialElasticStrain1D \
--solution=Solution1DLinear
- python IntegratorElasticityLgDeform.py \
+ python ElasticityAppLgDeform.py \
--use_gravity=True \
--formulation=ElasticityImplicitLgDeform \
--data.namespace=pylith,feassemble \
@@ -598,7 +598,7 @@
# 2-D ----------------------------------------------------------------
- python IntegratorElasticityLgDeform.py \
+ python ElasticityAppLgDeform.py \
--formulation=ElasticityImplicitLgDeform \
--data.namespace=pylith,feassemble \
--data.object=ElasticityImplicitLgDeformData2DLinear \
@@ -608,7 +608,7 @@
--material=ElasticPlaneStrain \
--solution=Solution2DLinear
- python IntegratorElasticityLgDeform.py \
+ python ElasticityAppLgDeform.py \
--formulation=ElasticityImplicitLgDeform \
--data.namespace=pylith,feassemble \
--data.object=ElasticityImplicitLgDeformData2DQuadratic \
@@ -618,7 +618,7 @@
--material=ElasticPlaneStrain \
--solution=Solution2DQuadratic
- python IntegratorElasticityLgDeform.py \
+ python ElasticityAppLgDeform.py \
--use_gravity=True \
--formulation=ElasticityImplicitLgDeform \
--data.namespace=pylith,feassemble \
@@ -629,7 +629,7 @@
--material=ElasticPlaneStrain \
--solution=Solution2DLinear
- python IntegratorElasticityLgDeform.py \
+ python ElasticityAppLgDeform.py \
--use_gravity=True \
--formulation=ElasticityImplicitLgDeform \
--data.namespace=pylith,feassemble \
@@ -643,7 +643,7 @@
# 3-D ----------------------------------------------------------------
- python IntegratorElasticityLgDeform.py \
+ python ElasticityAppLgDeform.py \
--formulation=ElasticityImplicitLgDeform \
--data.namespace=pylith,feassemble \
--data.object=ElasticityImplicitLgDeformData3DLinear \
@@ -653,7 +653,7 @@
--material=ElasticIsotropic3D \
--solution=Solution3DLinear
- python IntegratorElasticityLgDeform.py \
+ python ElasticityAppLgDeform.py \
--formulation=ElasticityImplicitLgDeform \
--data.namespace=pylith,feassemble \
--data.object=ElasticityImplicitLgDeformData3DQuadratic \
@@ -663,7 +663,7 @@
--material=ElasticIsotropic3D \
--solution=Solution3DQuadratic
- python IntegratorElasticityLgDeform.py \
+ python ElasticityAppLgDeform.py \
--use_gravity=True \
--formulation=ElasticityImplicitLgDeform \
--data.namespace=pylith,feassemble \
@@ -674,7 +674,7 @@
--material=ElasticIsotropic3D \
--solution=Solution3DLinear
- python IntegratorElasticityLgDeform.py \
+ python ElasticityAppLgDeform.py \
--use_gravity=True \
--formulation=ElasticityImplicitLgDeform \
--data.namespace=pylith,feassemble \
More information about the CIG-COMMITS
mailing list