[cig-commits] r16000 - in short/3D/PyLith/branches/pylith-friction: libsrc/feassemble unittests/libtests/feassemble unittests/libtests/feassemble/data
brad at geodynamics.org
brad at geodynamics.org
Wed Nov 18 15:05:46 PST 2009
Author: brad
Date: 2009-11-18 15:05:45 -0800 (Wed, 18 Nov 2009)
New Revision: 16000
Added:
short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform1DQuadratic.cc
short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform1DQuadratic.hh
short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DLinear.cc
short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DLinear.hh
short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DQuadratic.cc
short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DQuadratic.hh
short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DQuadratic.cc
short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DQuadratic.hh
short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DLinear.cc
short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DLinear.hh
short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DQuadratic.cc
short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DQuadratic.hh
Modified:
short/3D/PyLith/branches/pylith-friction/libsrc/feassemble/ElasticityExplicitLgDeform.cc
short/3D/PyLith/branches/pylith-friction/libsrc/feassemble/ElasticityImplicitLgDeform.cc
short/3D/PyLith/branches/pylith-friction/libsrc/feassemble/IntegratorElasticityLgDeform.cc
short/3D/PyLith/branches/pylith-friction/libsrc/feassemble/jacobian2d_lgdeform.wxm
short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/Makefile.am
short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DLinear.cc
short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/IntegratorElasticityLgDeform.py
short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/Mesh1DLinear.py
short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/generate.sh
Log:
Work on large deformation unit tests. Fixed some large deformation bugs in computing the Jacobian.
Modified: short/3D/PyLith/branches/pylith-friction/libsrc/feassemble/ElasticityExplicitLgDeform.cc
===================================================================
--- short/3D/PyLith/branches/pylith-friction/libsrc/feassemble/ElasticityExplicitLgDeform.cc 2009-11-18 19:08:41 UTC (rev 15999)
+++ short/3D/PyLith/branches/pylith-friction/libsrc/feassemble/ElasticityExplicitLgDeform.cc 2009-11-18 23:05:45 UTC (rev 16000)
@@ -118,7 +118,6 @@
// Get cell geometry information that doesn't depend on cell
const int numQuadPts = _quadrature->numQuadPts();
- const double_array& vertices = _quadrature->refGeometry().vertices();
const double_array& quadWts = _quadrature->quadWts();
assert(quadWts.size() == numQuadPts);
const int numBasis = _quadrature->numBasis();
@@ -306,7 +305,7 @@
// Compute B(transpose) * sigma, first computing strains
_logger->eventBegin(stressEvent);
- _calcDeformation(&deformCell, basisDeriv, vertices, dispTCell,
+ _calcDeformation(&deformCell, basisDeriv, coordinatesCell, dispTCell,
numBasis, numQuadPts, spaceDim);
calcTotalStrainFn(&strainCell, deformCell, numQuadPts);
const double_array& stressCell = _material->calcStress(strainCell, true);
Modified: short/3D/PyLith/branches/pylith-friction/libsrc/feassemble/ElasticityImplicitLgDeform.cc
===================================================================
--- short/3D/PyLith/branches/pylith-friction/libsrc/feassemble/ElasticityImplicitLgDeform.cc 2009-11-18 19:08:41 UTC (rev 15999)
+++ short/3D/PyLith/branches/pylith-friction/libsrc/feassemble/ElasticityImplicitLgDeform.cc 2009-11-18 23:05:45 UTC (rev 16000)
@@ -127,7 +127,6 @@
// Get cell geometry information that doesn't depend on cell
const int numQuadPts = _quadrature->numQuadPts();
- const double_array& vertices = _quadrature->refGeometry().vertices();
const double_array& quadWts = _quadrature->quadWts();
assert(quadWts.size() == numQuadPts);
const int numBasis = _quadrature->numBasis();
@@ -291,7 +290,7 @@
// Compute B(transpose) * sigma, first computing deformation
// tensor and strains
_logger->eventBegin(stressEvent);
- _calcDeformation(&deformCell, basisDeriv, vertices, dispTpdtCell,
+ _calcDeformation(&deformCell, basisDeriv, coordinatesCell, dispTpdtCell,
numBasis, numQuadPts, spaceDim);
calcTotalStrainFn(&strainCell, deformCell, numQuadPts);
const double_array& stressCell = _material->calcStress(strainCell, true);
@@ -344,7 +343,6 @@
// Get cell geometry information that doesn't depend on cell
const int numQuadPts = _quadrature->numQuadPts();
- const double_array& vertices = _quadrature->refGeometry().vertices();
const double_array& quadWts = _quadrature->quadWts();
assert(quadWts.size() == numQuadPts);
const int numBasis = _quadrature->numBasis();
@@ -479,7 +477,7 @@
_logger->eventBegin(computeEvent);
// Compute deformation tensor, strains, and stresses
- _calcDeformation(&deformCell, basisDeriv, vertices, dispTpdtCell,
+ _calcDeformation(&deformCell, basisDeriv, coordinatesCell, dispTpdtCell,
numBasis, numQuadPts, spaceDim);
calcTotalStrainFn(&strainCell, deformCell, numQuadPts);
Modified: short/3D/PyLith/branches/pylith-friction/libsrc/feassemble/IntegratorElasticityLgDeform.cc
===================================================================
--- short/3D/PyLith/branches/pylith-friction/libsrc/feassemble/IntegratorElasticityLgDeform.cc 2009-11-18 19:08:41 UTC (rev 15999)
+++ short/3D/PyLith/branches/pylith-friction/libsrc/feassemble/IntegratorElasticityLgDeform.cc 2009-11-18 23:05:45 UTC (rev 16000)
@@ -520,13 +520,6 @@
const double valIJnl = valInl * basisDeriv[iQ+jBasis];
const int iBlock = iBasis*spaceDim * (numBasis*spaceDim);
const int jBlock = jBasis*spaceDim;
- std::cout << "iBasis: " << iBasis
- << ", jBasis: " << jBasis
- << ", l11: " << l11
- << ", valIJ: " << valIJ
- << ", s11: " << s11
- << ", valInl" << valIJnl
- << std::endl;
_cellMatrix[iBlock+jBlock] += valIJ + valIJnl;
} // for
} // for
@@ -573,7 +566,7 @@
const int iS = iQuad*tensorSize;
const double s11 = stress[iS+0];
const double s22 = stress[iS+1];
- const double s12 = stress[iS+2];
+ const double s12 = stress[iS+2] * 0.5; // WHY 0.5!!!!
double l11 = 0.0;
double l12 = 0.0;
@@ -605,15 +598,18 @@
// Generated using Maxima (see jacobian2d_lgdeform.wxm)
const double Ki0j0 =
- l12*Niq*(l12*Niq*l12*Njq*C2222 +
- l12*Niq*((l11+1.0)*Njq+l12*Njp)*C2212 +
- l12*Niq*(l11+1.0)*Njp*C1122) +
- ((l11+1.0)*Niq+l12*Nip)*(l12*Njq*C2212 +
- ((l11+1.0)*Njq+l12*Njp)*C1212 +
- (l11+1.0)*Njp*C1112) +
- (l11+1.0)*Nip*(l12*Njq*C1122 +
- ((l11+1.0)*Njq+l12*Njp)*C1112 +
- (l11+1.0)*Njp*C1111);
+ l12*Niq*(l12*Njq*C2222 +
+ ((l11+1)*Njq+l12*Njp)*C2212 +
+ (l11+1)*Njp*C1122) +
+ ((l11+1)*Niq+l12*Nip)*(l12*Njq*C2212 +
+ ((l11+1)*Njq+l12*Njp)*C1212 +
+ (l11+1)*Njp*C1112) +
+ (l11+1)*Nip*(l12*Njq*C1122 +
+ ((l11+1)*Njq+l12*Njp)*C1112 +
+ (l11+1)*Njp*C1111);
+
+
+
const double Ki0j1 =
l12*Niq*((l22+1.0)*Njq*C2222 +
(l21*Njq+(l22+1.0)*Njp)*C2212 +
@@ -649,6 +645,15 @@
const int jBlock = (jB);
const int jBlock1 = (jB+1);
+ std::cout << "s11: " << s11
+ << ", s12: " << s12
+ << ", s22: " << s22
+ << ", Knl: " << Knl
+ << ", Ki0j0: " << Ki0j0
+ << ", Ki0j1: " << Ki0j1
+ << ", Ki1j0: " << Ki1j0
+ << ", Ki1j1: " << Ki1j1
+ << std::endl;
_cellMatrix[iBlock +jBlock ] += Ki0j0 + Knl;
_cellMatrix[iBlock +jBlock1] += Ki0j1;
_cellMatrix[iBlock1+jBlock ] += Ki1j0;
@@ -657,6 +662,13 @@
} // for
} // for
PetscLogFlops(numQuadPts*(1+numBasis*(2+numBasis*(3*11+4))));
+
+ std::cout << "cellMatrix: ";
+ for (int i=0; i < numBasis*spaceDim; ++i) {
+ for (int j=0; j < numBasis*spaceDim; ++j)
+ std::cout << " " << _cellMatrix[i*numBasis*spaceDim+j];
+ std::cout << std::endl;
+ } // for
} // _elasticityJacobian2D
// ----------------------------------------------------------------------
@@ -1143,7 +1155,7 @@
for (int iQuad=0; iQuad < numQuadPts; ++iQuad)
- (*strain)[iQuad] = 0.5*(deform[iQuad]*deform[iQuad] - 1.0);
+ (*strain)[iQuad] = 0.5*(deform[iQuad]*deform[iQuad] - 1.0);
} // _calcTotalStrain1D
// ----------------------------------------------------------------------
@@ -1178,6 +1190,12 @@
(*strain)[iStrain+2] =
0.5 * (deform[iDeform ]*deform[iDeform+1] +
deform[iDeform+2]*deform[iDeform+3]);
+ std::cout << "iQuad: " << iQuad
+ << ", strain:"
+ << " " << (*strain)[iStrain ]
+ << " " << (*strain)[iStrain+1]
+ << " " << (*strain)[iStrain+2]
+ << std::endl;
} // for
} // _calcTotalStrain2D
@@ -1255,9 +1273,30 @@
for (int iBasis=0, iQ=iQuad*numBasis*dim; iBasis < numBasis; ++iBasis)
for (int iDim=0, indexD=0; iDim < dim; ++iDim)
for (int jDim=0; jDim < dim; ++jDim, ++indexD)
+ {
(*deform)[iQuad*deformSize+indexD] +=
basisDeriv[iQ+iBasis*dim+jDim] *
(vertices[iBasis*dim+iDim] + disp[iBasis*dim+iDim]);
+ std::cout << "vertex: " << vertices[iBasis*dim+iDim]
+ << ", disp: " << disp[iBasis*dim+iDim]
+ << ", basisDeriv: " << basisDeriv[iQ+iBasis*dim+jDim]
+ << std::endl;
+ }
+
+ for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
+ std::cout << "\n\niQuad: " << iQuad
+ << ", deformation tensor: "
+ << std::endl;
+ for (int iDim=0; iDim < dim; ++iDim) {
+ std::cout << " ";
+ for (int jDim=0; jDim < dim; ++jDim) {
+ std::cout << " " << (*deform)[iQuad*deformSize+iDim*dim+jDim];
+ }
+ std::cout << std::endl;
+ }
+ }
+
+
} // _calcDeformation
Modified: short/3D/PyLith/branches/pylith-friction/libsrc/feassemble/jacobian2d_lgdeform.wxm
===================================================================
--- short/3D/PyLith/branches/pylith-friction/libsrc/feassemble/jacobian2d_lgdeform.wxm 2009-11-18 19:08:41 UTC (rev 15999)
+++ short/3D/PyLith/branches/pylith-friction/libsrc/feassemble/jacobian2d_lgdeform.wxm 2009-11-18 23:05:45 UTC (rev 16000)
@@ -1,5 +1,5 @@
/* [wxMaxima batch file version 1] [ DO NOT EDIT BY HAND! ]*/
-/* [ Created with wxMaxima version 0.8.3a ] */
+/* [ Created with wxMaxima version 0.8.2 ] */
/* [wxMaxima: input start ] */
Bnl: matrix([N11,0,N21,0,N31,0],
Modified: short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/Makefile.am
===================================================================
--- short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/Makefile.am 2009-11-18 19:08:41 UTC (rev 15999)
+++ short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/Makefile.am 2009-11-18 23:05:45 UTC (rev 16000)
@@ -69,6 +69,9 @@
TestIntegratorElasticityLgDeform.cc \
TestElasticityImplicitLgDeform.cc \
TestElasticityImplicitLgDeform1DLinear.cc \
+ TestElasticityImplicitLgDeform1DQuadratic.cc \
+ TestElasticityImplicitLgDeform2DLinear.cc \
+ TestElasticityImplicitLgDeform2DQuadratic.cc \
test_feassemble.cc
@@ -97,6 +100,9 @@
TestElasticityImplicitGrav3DQuadratic.hh \
TestElasticityImplicitLgDeform.hh \
TestElasticityImplicitLgDeform1DLinear.hh \
+ TestElasticityImplicitLgDeform1DQuadratic.hh \
+ TestElasticityImplicitLgDeform2DLinear.hh \
+ TestElasticityImplicitLgDeform2DQuadratic.hh \
TestGeometryPoint1D.hh \
TestGeometryPoint2D.hh \
TestGeometryPoint3D.hh \
@@ -157,6 +163,9 @@
data/ElasticityImplicitGravData3DLinear.cc \
data/ElasticityImplicitGravData3DQuadratic.cc \
data/ElasticityImplicitLgDeformData1DLinear.cc \
+ data/ElasticityImplicitLgDeformData1DQuadratic.cc \
+ data/ElasticityImplicitLgDeformData2DLinear.cc \
+ data/ElasticityImplicitLgDeformData2DQuadratic.cc \
data/QuadratureData.cc \
data/QuadratureData1DLinear.cc \
data/QuadratureData1DQuadratic.cc \
@@ -208,6 +217,9 @@
data/ElasticityImplicitGravData3DLinear.hh \
data/ElasticityImplicitGravData3DQuadratic.hh \
data/ElasticityImplicitLgDeformData1DLinear.hh \
+ data/ElasticityImplicitLgDeformData1DQuadratic.hh \
+ data/ElasticityImplicitLgDeformData2DLinear.hh \
+ data/ElasticityImplicitLgDeformData2DQuadratic.hh \
data/QuadratureData.hh \
data/QuadratureData1DLinear.hh \
data/QuadratureData1DQuadratic.hh \
Added: short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform1DQuadratic.cc
===================================================================
--- short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform1DQuadratic.cc (rev 0)
+++ short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform1DQuadratic.cc 2009-11-18 23:05:45 UTC (rev 16000)
@@ -0,0 +1,47 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestElasticityImplicitLgDeform1DQuadratic.hh" // Implementation of class methods
+
+#include "data/ElasticityImplicitLgDeformData1DQuadratic.hh"
+
+#include "pylith/topology/Mesh.hh" // USES Quadrature<Mesh>
+#include "pylith/feassemble/Quadrature.hh" // USES Quadrature
+#include "pylith/feassemble/GeometryLine1D.hh" // USES GeometryLine1D
+#include "pylith/materials/ElasticStrain1D.hh" // USES ElasticStrain1D
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::feassemble::TestElasticityImplicitLgDeform1DQuadratic );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::feassemble::TestElasticityImplicitLgDeform1DQuadratic::setUp(void)
+{ // setUp
+ TestElasticityImplicitLgDeform::setUp();
+
+ _data = new ElasticityImplicitLgDeformData1DQuadratic();
+ _gravityField = 0;
+ GeometryLine1D geometry;
+ CPPUNIT_ASSERT(0 != _quadrature);
+ _quadrature->refGeometry(&geometry);
+ _material = new materials::ElasticStrain1D;
+
+ CPPUNIT_ASSERT(0 != _data);
+ CPPUNIT_ASSERT_EQUAL(std::string("ElasticStrain1D"),
+ std::string(_data->matType));
+} // setUp
+
+
+// End of file
Added: short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform1DQuadratic.hh
===================================================================
--- short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform1DQuadratic.hh (rev 0)
+++ short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform1DQuadratic.hh 2009-11-18 23:05:45 UTC (rev 16000)
@@ -0,0 +1,60 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/feassemble/TestElasticityImplicitLgDeform1DQuadratic.hh
+ *
+ * @brief C++ TestElasticityImplicitLgDeform object
+ *
+ * C++ unit testing for ElasticityImplicitLgDeform with 1-D quadratic cells.
+ */
+
+#if !defined(pylith_feassemble_testelasticityimplicit1dquadratic_hh)
+#define pylith_feassemble_testelasticityimplicit1dquadratic_hh
+
+#include "TestElasticityImplicitLgDeform.hh" // ISA TestElasticityImplicitLgDeform
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace feassemble {
+ class TestElasticityImplicitLgDeform1DQuadratic;
+ } // feassemble
+} // pylith
+
+/// C++ unit testing for ElasticityImplicitLgDeform
+class pylith::feassemble::TestElasticityImplicitLgDeform1DQuadratic :
+ public TestElasticityImplicitLgDeform
+{ // class TestElasticityImplicitLgDeform1DQuadratic
+
+ // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+ CPPUNIT_TEST_SUITE( TestElasticityImplicitLgDeform1DQuadratic );
+
+ CPPUNIT_TEST( testInitialize );
+ CPPUNIT_TEST( testIntegrateResidual );
+ CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testUpdateStateVars );
+ CPPUNIT_TEST( testStableTimeStep );
+
+ CPPUNIT_TEST_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Setup testing data.
+ void setUp(void);
+
+}; // class TestElasticityImplicitLgDeform1DQuadratic
+
+#endif // pylith_feassemble_testelasticityimplicit1dquadratic_hh
+
+
+// End of file
Added: short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DLinear.cc
===================================================================
--- short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DLinear.cc (rev 0)
+++ short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DLinear.cc 2009-11-18 23:05:45 UTC (rev 16000)
@@ -0,0 +1,49 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestElasticityImplicitLgDeform2DLinear.hh" // Implementation of class methods
+
+#include "data/ElasticityImplicitLgDeformData2DLinear.hh"
+
+#include "pylith/topology/Mesh.hh" // USES Quadrature<Mesh>
+#include "pylith/feassemble/Quadrature.hh" // USES Quadrature
+#include "pylith/feassemble/GeometryTri2D.hh" // USES GeometryTri2D
+#include "pylith/materials/ElasticPlaneStrain.hh" // USES ElasticPlaneStrain
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::feassemble::TestElasticityImplicitLgDeform2DLinear );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::feassemble::TestElasticityImplicitLgDeform2DLinear::setUp(void)
+{ // setUp
+ TestElasticityImplicitLgDeform::setUp();
+
+ _data = new ElasticityImplicitLgDeformData2DLinear();
+ _gravityField = 0;
+ CPPUNIT_ASSERT(0 != _quadrature);
+ GeometryTri2D geometry;
+ _quadrature->refGeometry(&geometry);
+
+ _material = new materials::ElasticPlaneStrain;
+ CPPUNIT_ASSERT(0 != _material);
+
+ CPPUNIT_ASSERT(0 != _data);
+ CPPUNIT_ASSERT_EQUAL(std::string("ElasticPlaneStrain"),
+ std::string(_data->matType));
+} // setUp
+
+
+// End of file
Added: short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DLinear.hh
===================================================================
--- short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DLinear.hh (rev 0)
+++ short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DLinear.hh 2009-11-18 23:05:45 UTC (rev 16000)
@@ -0,0 +1,60 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DLinear.hh
+ *
+ * @brief C++ TestElasticityImplicitLgDeform object
+ *
+ * C++ unit testing for ElasticityImplicitLgDeform with 2-D linear cells.
+ */
+
+#if !defined(pylith_feassemble_testelasticityimplicit2dlinear_hh)
+#define pylith_feassemble_testelasticityimplicit2dlinear_hh
+
+#include "TestElasticityImplicitLgDeform.hh" // ISA TestElasticityImplicitLgDeform
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace feassemble {
+ class TestElasticityImplicitLgDeform2DLinear;
+ } // feassemble
+} // pylith
+
+/// C++ unit testing for ElasticityImplicitLgDeform
+class pylith::feassemble::TestElasticityImplicitLgDeform2DLinear :
+ public TestElasticityImplicitLgDeform
+{ // class TestElasticityImplicitLgDeform2DLinear
+
+ // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+ CPPUNIT_TEST_SUITE( TestElasticityImplicitLgDeform2DLinear );
+
+ CPPUNIT_TEST( testInitialize );
+ CPPUNIT_TEST( testIntegrateResidual );
+ CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testUpdateStateVars );
+ CPPUNIT_TEST( testStableTimeStep );
+
+ CPPUNIT_TEST_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Setup testing data.
+ void setUp(void);
+
+}; // class TestElasticityImplicitLgDeform2DLinear
+
+#endif // pylith_feassemble_testelasticityimplicit2dlinear_hh
+
+
+// End of file
Added: short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DQuadratic.cc
===================================================================
--- short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DQuadratic.cc (rev 0)
+++ short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DQuadratic.cc 2009-11-18 23:05:45 UTC (rev 16000)
@@ -0,0 +1,49 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestElasticityImplicitLgDeform2DQuadratic.hh" // Implementation of class methods
+
+#include "data/ElasticityImplicitLgDeformData2DQuadratic.hh"
+
+#include "pylith/topology/Mesh.hh" // USES Quadrature<Mesh>
+#include "pylith/feassemble/Quadrature.hh" // USES Quadrature
+#include "pylith/feassemble/GeometryTri2D.hh" // USES GeometryTri2D
+#include "pylith/materials/ElasticPlaneStrain.hh" // USES ElasticPlaneStrain
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::feassemble::TestElasticityImplicitLgDeform2DQuadratic );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::feassemble::TestElasticityImplicitLgDeform2DQuadratic::setUp(void)
+{ // setUp
+ TestElasticityImplicitLgDeform::setUp();
+
+ _data = new ElasticityImplicitLgDeformData2DQuadratic();
+ _gravityField = 0;
+ CPPUNIT_ASSERT(0 != _quadrature);
+ GeometryTri2D geometry;
+ _quadrature->refGeometry(&geometry);
+
+ _material = new materials::ElasticPlaneStrain;
+ CPPUNIT_ASSERT(0 != _material);
+
+ CPPUNIT_ASSERT(0 != _data);
+ CPPUNIT_ASSERT_EQUAL(std::string("ElasticPlaneStrain"),
+ std::string(_data->matType));
+} // setUp
+
+
+// End of file
Added: short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DQuadratic.hh
===================================================================
--- short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DQuadratic.hh (rev 0)
+++ short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DQuadratic.hh 2009-11-18 23:05:45 UTC (rev 16000)
@@ -0,0 +1,60 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DQuadratic.hh
+ *
+ * @brief C++ TestElasticityImplicitLgDeform object
+ *
+ * C++ unit testing for ElasticityImplicitLgDeform with 2-D quadratic cells.
+ */
+
+#if !defined(pylith_feassemble_testelasticityimplicit2dquadratic_hh)
+#define pylith_feassemble_testelasticityimplicit2dquadratic_hh
+
+#include "TestElasticityImplicitLgDeform.hh" // ISA TestElasticityImplicitLgDeform
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace feassemble {
+ class TestElasticityImplicitLgDeform2DQuadratic;
+ } // feassemble
+} // pylith
+
+/// C++ unit testing for ElasticityImplicitLgDeform
+class pylith::feassemble::TestElasticityImplicitLgDeform2DQuadratic :
+ public TestElasticityImplicitLgDeform
+{ // class TestElasticityImplicitLgDeform2DQuadratic
+
+ // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+ CPPUNIT_TEST_SUITE( TestElasticityImplicitLgDeform2DQuadratic );
+
+ CPPUNIT_TEST( testInitialize );
+ CPPUNIT_TEST( testIntegrateResidual );
+ CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testUpdateStateVars );
+ CPPUNIT_TEST( testStableTimeStep );
+
+ CPPUNIT_TEST_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Setup testing data.
+ void setUp(void);
+
+}; // class TestElasticityImplicitLgDeform2DQuadratic
+
+#endif // pylith_feassemble_testelasticityimplicit2dquadratic_hh
+
+
+// End of file
Modified: short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DLinear.cc
===================================================================
--- short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DLinear.cc 2009-11-18 19:08:41 UTC (rev 15999)
+++ short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DLinear.cc 2009-11-18 23:05:45 UTC (rev 16000)
@@ -89,15 +89,15 @@
};
const double pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_valsResidual[] = {
- 6.19200000e+10,
- -6.19200000e+10,
+ 8.78400000e+10,
+ -8.78400000e+10,
};
const double pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_valsJacobian[] = {
- 6.88000000e+10,
- -6.88000000e+10,
- -6.88000000e+10,
- 6.88000000e+10,
+ 9.76000000e+10,
+ -9.76000000e+10,
+ -9.76000000e+10,
+ 9.76000000e+10,
};
pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::ElasticityImplicitLgDeformData1DLinear(void)
Added: short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DQuadratic.cc
===================================================================
--- short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DQuadratic.cc (rev 0)
+++ short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DQuadratic.cc 2009-11-18 23:05:45 UTC (rev 16000)
@@ -0,0 +1,155 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+// DO NOT EDIT THIS FILE
+// This file was generated from python application integratorelasticitylgdeform.
+
+#include "ElasticityImplicitLgDeformData1DQuadratic.hh"
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_spaceDim = 1;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_cellDim = 1;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_numVertices = 3;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_numCells = 1;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_numBasis = 3;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_numQuadPts = 2;
+
+const char* pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_matType = "ElasticStrain1D";
+
+const char* pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_matDBFilename = "data/elasticstrain1d.spatialdb";
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_matId = 0;
+
+const char* pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_matLabel = "elastic strain 1-D";
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_dt = 1.00000000e-02;
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_gravityVec[] = {
+ -1.00000000e+08,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_vertices[] = {
+ -2.50000000e-01,
+ 2.00000000e+00,
+ 8.75000000e-01,
+};
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_cells[] = {
+0,1,2,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_verticesRef[] = {
+ -1.00000000e+00,
+ 1.00000000e+00,
+ 0.00000000e+00,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_quadPts[] = {
+ -5.77350269e-01,
+ 5.77350269e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_quadWts[] = {
+ 1.00000000e+00, 1.00000000e+00,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_basis[] = {
+ 4.55341801e-01,
+ -1.22008468e-01,
+ 6.66666667e-01,
+ -1.22008468e-01,
+ 4.55341801e-01,
+ 6.66666667e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_basisDerivRef[] = {
+ -1.07735027e+00,
+ -7.73502692e-02,
+ 1.15470054e+00,
+ 7.73502692e-02,
+ 1.07735027e+00,
+ -1.15470054e+00,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_fieldTIncr[] = {
+ 1.20000000e+00,
+ 0.00000000e+00,
+ 1.70000000e+00,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_fieldT[] = {
+ 1.10000000e+00,
+ 1.00000000e-01,
+ 1.50000000e+00,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_fieldTmdt[] = {
+ 1.00000000e+00,
+ 1.00000000e-01,
+ 1.30000000e+00,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_valsResidual[] = {
+ 7.41034403e+11,
+ 1.71509070e+12,
+ -2.45612510e+12,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::_valsJacobian[] = {
+ 5.56003292e+11,
+ 7.76230453e+10,
+ -6.33626337e+11,
+ 7.76230453e+10,
+ 5.30719342e+11,
+ -6.08342387e+11,
+ -6.33626337e+11,
+ -6.08342387e+11,
+ 1.24196872e+12,
+};
+
+pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::ElasticityImplicitLgDeformData1DQuadratic(void)
+{ // constructor
+ spaceDim = _spaceDim;
+ cellDim = _cellDim;
+ numVertices = _numVertices;
+ numCells = _numCells;
+ numBasis = _numBasis;
+ numQuadPts = _numQuadPts;
+ matType = const_cast<char*>(_matType);
+ matDBFilename = const_cast<char*>(_matDBFilename);
+ matId = _matId;
+ matLabel = const_cast<char*>(_matLabel);
+ dt = _dt;
+ gravityVec = const_cast<double*>(_gravityVec);
+ vertices = const_cast<double*>(_vertices);
+ cells = const_cast<int*>(_cells);
+ verticesRef = const_cast<double*>(_verticesRef);
+ quadPts = const_cast<double*>(_quadPts);
+ quadWts = const_cast<double*>(_quadWts);
+ basis = const_cast<double*>(_basis);
+ basisDerivRef = const_cast<double*>(_basisDerivRef);
+ fieldTIncr = const_cast<double*>(_fieldTIncr);
+ fieldT = const_cast<double*>(_fieldT);
+ fieldTmdt = const_cast<double*>(_fieldTmdt);
+ valsResidual = const_cast<double*>(_valsResidual);
+ valsJacobian = const_cast<double*>(_valsJacobian);
+} // constructor
+
+pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic::~ElasticityImplicitLgDeformData1DQuadratic(void)
+{}
+
+
+// End of file
Added: short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DQuadratic.hh
===================================================================
--- short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DQuadratic.hh (rev 0)
+++ short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DQuadratic.hh 2009-11-18 23:05:45 UTC (rev 16000)
@@ -0,0 +1,92 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+// DO NOT EDIT THIS FILE
+// This file was generated from python application integratorelasticitylgdeform.
+
+#if !defined(pylith_feassemble_elasticityimplicitlgdeformdata1dquadratic_hh)
+#define pylith_feassemble_elasticityimplicitlgdeformdata1dquadratic_hh
+
+#include "IntegratorData.hh"
+
+namespace pylith {
+ namespace feassemble {
+ class ElasticityImplicitLgDeformData1DQuadratic;
+ } // pylith
+} // feassemble
+
+class pylith::feassemble::ElasticityImplicitLgDeformData1DQuadratic : public IntegratorData
+{
+
+public:
+
+ /// Constructor
+ ElasticityImplicitLgDeformData1DQuadratic(void);
+
+ /// Destructor
+ ~ElasticityImplicitLgDeformData1DQuadratic(void);
+
+private:
+
+ static const int _spaceDim;
+
+ static const int _cellDim;
+
+ static const int _numVertices;
+
+ static const int _numCells;
+
+ static const int _numBasis;
+
+ static const int _numQuadPts;
+
+ static const char* _matType;
+
+ static const char* _matDBFilename;
+
+ static const int _matId;
+
+ static const char* _matLabel;
+
+ static const double _dt;
+
+ static const double _gravityVec[];
+
+ static const double _vertices[];
+
+ static const int _cells[];
+
+ static const double _verticesRef[];
+
+ static const double _quadPts[];
+
+ static const double _quadWts[];
+
+ static const double _basis[];
+
+ static const double _basisDerivRef[];
+
+ static const double _fieldTIncr[];
+
+ static const double _fieldT[];
+
+ static const double _fieldTmdt[];
+
+ static const double _valsResidual[];
+
+ static const double _valsJacobian[];
+
+};
+
+#endif // pylith_feassemble_elasticityimplicitlgdeformdata1dquadratic_hh
+
+// End of file
Added: short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DLinear.cc
===================================================================
--- short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DLinear.cc (rev 0)
+++ short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DLinear.cc 2009-11-18 23:05:45 UTC (rev 16000)
@@ -0,0 +1,155 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+// DO NOT EDIT THIS FILE
+// This file was generated from python application integratorelasticitylgdeform.
+
+#include "ElasticityImplicitLgDeformData2DLinear.hh"
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_spaceDim = 2;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_cellDim = 2;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_numVertices = 3;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_numCells = 1;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_numBasis = 3;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_numQuadPts = 1;
+
+const char* pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_matType = "ElasticPlaneStrain";
+
+const char* pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_matDBFilename = "data/elasticplanestrain.spatialdb";
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_matId = 0;
+
+const char* pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_matLabel = "elastic strain 2-D";
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_dt = 1.00000000e-02;
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_gravityVec[] = {
+ 0.00000000e+00, -1.00000000e+08,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_vertices[] = {
+ 2.00000000e-01, -4.00000000e-01,
+ 3.00000000e-01, 5.00000000e-01,
+ -1.00000000e+00, -2.00000000e-01,
+};
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_cells[] = {
+0,1,2,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_verticesRef[] = {
+ -1.00000000e+00, -1.00000000e+00,
+ 1.00000000e+00, -1.00000000e+00,
+ -1.00000000e+00, 1.00000000e+00,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_quadPts[] = {
+ -3.33333333e-01, -3.33333333e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_quadWts[] = {
+ 5.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_basis[] = {
+ 3.33333333e-01, 3.33333333e-01,
+ 3.33333333e-01,};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_basisDerivRef[] = {
+ -5.00000000e-01, -5.00000000e-01,
+ 5.00000000e-01, 0.00000000e+00,
+ 0.00000000e+00, 5.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_fieldTIncr[] = {
+ 1.30000000e+00, -9.00000000e-01,
+ 1.40000000e+00, 1.50000000e+00,
+ 5.00000000e-01, -9.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_fieldT[] = {
+ 1.60000000e+00, -8.00000000e-01,
+ 9.00000000e-01, 7.00000000e-01,
+ -2.00000000e-01, -1.10000000e+00,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_fieldTmdt[] = {
+ 8.00000000e-01, 1.00000000e-01,
+ 5.00000000e-01, 3.00000000e-01,
+ -1.00000000e-01, -6.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_valsResidual[] = {
+ -9.10308020e+11, 2.62469069e+12,
+ 2.75564148e+11, -2.72579014e+12,
+ 6.34743872e+11, 1.01099452e+11,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_valsJacobian[] = {
+ 4.43599494e+11, -1.48699027e+11,
+ -2.83545181e+11, 8.77736676e+10,
+ -1.60054314e+11, 6.09253592e+10,
+ -1.48699027e+11, 7.63805884e+11,
+ 9.16706846e+10, -6.31084845e+11,
+ 5.70283422e+10, -1.32721039e+11,
+ -2.83545181e+11, 9.16706846e+10,
+ 2.78913924e+11, -2.94466026e+10,
+ 4.63125675e+09, -6.22240820e+10,
+ 8.77736676e+10, -6.31084845e+11,
+ -2.94466026e+10, 6.53761252e+11,
+ -5.83270649e+10, -2.26764071e+10,
+ -1.60054314e+11, 5.70283422e+10,
+ 4.63125675e+09, -5.83270649e+10,
+ 1.55423057e+11, 1.29872276e+09,
+ 6.09253592e+10, -1.32721039e+11,
+ -6.22240820e+10, -2.26764071e+10,
+ 1.29872276e+09, 1.55397446e+11,
+};
+
+pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::ElasticityImplicitLgDeformData2DLinear(void)
+{ // constructor
+ spaceDim = _spaceDim;
+ cellDim = _cellDim;
+ numVertices = _numVertices;
+ numCells = _numCells;
+ numBasis = _numBasis;
+ numQuadPts = _numQuadPts;
+ matType = const_cast<char*>(_matType);
+ matDBFilename = const_cast<char*>(_matDBFilename);
+ matId = _matId;
+ matLabel = const_cast<char*>(_matLabel);
+ dt = _dt;
+ gravityVec = const_cast<double*>(_gravityVec);
+ vertices = const_cast<double*>(_vertices);
+ cells = const_cast<int*>(_cells);
+ verticesRef = const_cast<double*>(_verticesRef);
+ quadPts = const_cast<double*>(_quadPts);
+ quadWts = const_cast<double*>(_quadWts);
+ basis = const_cast<double*>(_basis);
+ basisDerivRef = const_cast<double*>(_basisDerivRef);
+ fieldTIncr = const_cast<double*>(_fieldTIncr);
+ fieldT = const_cast<double*>(_fieldT);
+ fieldTmdt = const_cast<double*>(_fieldTmdt);
+ valsResidual = const_cast<double*>(_valsResidual);
+ valsJacobian = const_cast<double*>(_valsJacobian);
+} // constructor
+
+pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::~ElasticityImplicitLgDeformData2DLinear(void)
+{}
+
+
+// End of file
Added: short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DLinear.hh
===================================================================
--- short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DLinear.hh (rev 0)
+++ short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DLinear.hh 2009-11-18 23:05:45 UTC (rev 16000)
@@ -0,0 +1,92 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+// DO NOT EDIT THIS FILE
+// This file was generated from python application integratorelasticitylgdeform.
+
+#if !defined(pylith_feassemble_elasticityimplicitlgdeformdata2dlinear_hh)
+#define pylith_feassemble_elasticityimplicitlgdeformdata2dlinear_hh
+
+#include "IntegratorData.hh"
+
+namespace pylith {
+ namespace feassemble {
+ class ElasticityImplicitLgDeformData2DLinear;
+ } // pylith
+} // feassemble
+
+class pylith::feassemble::ElasticityImplicitLgDeformData2DLinear : public IntegratorData
+{
+
+public:
+
+ /// Constructor
+ ElasticityImplicitLgDeformData2DLinear(void);
+
+ /// Destructor
+ ~ElasticityImplicitLgDeformData2DLinear(void);
+
+private:
+
+ static const int _spaceDim;
+
+ static const int _cellDim;
+
+ static const int _numVertices;
+
+ static const int _numCells;
+
+ static const int _numBasis;
+
+ static const int _numQuadPts;
+
+ static const char* _matType;
+
+ static const char* _matDBFilename;
+
+ static const int _matId;
+
+ static const char* _matLabel;
+
+ static const double _dt;
+
+ static const double _gravityVec[];
+
+ static const double _vertices[];
+
+ static const int _cells[];
+
+ static const double _verticesRef[];
+
+ static const double _quadPts[];
+
+ static const double _quadWts[];
+
+ static const double _basis[];
+
+ static const double _basisDerivRef[];
+
+ static const double _fieldTIncr[];
+
+ static const double _fieldT[];
+
+ static const double _fieldTmdt[];
+
+ static const double _valsResidual[];
+
+ static const double _valsJacobian[];
+
+};
+
+#endif // pylith_feassemble_elasticityimplicitlgdeformdata2dlinear_hh
+
+// End of file
Added: short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DQuadratic.cc
===================================================================
--- short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DQuadratic.cc (rev 0)
+++ short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DQuadratic.cc 2009-11-18 23:05:45 UTC (rev 16000)
@@ -0,0 +1,282 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+// DO NOT EDIT THIS FILE
+// This file was generated from python application integratorelasticitylgdeform.
+
+#include "ElasticityImplicitLgDeformData2DQuadratic.hh"
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_spaceDim = 2;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_cellDim = 2;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_numVertices = 6;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_numCells = 1;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_numBasis = 6;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_numQuadPts = 6;
+
+const char* pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_matType = "ElasticPlaneStrain";
+
+const char* pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_matDBFilename = "data/elasticplanestrain.spatialdb";
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_matId = 0;
+
+const char* pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_matLabel = "elastic strain 2-D";
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_dt = 1.00000000e-02;
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_gravityVec[] = {
+ 0.00000000e+00, -1.00000000e+08,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_vertices[] = {
+ -1.00000000e+00, -1.00000000e+00,
+ 1.00000000e+00, 2.00000000e-01,
+ -1.50000000e+00, 5.00000000e-01,
+ -2.50000000e-01, 3.50000000e-01,
+ -1.25000000e+00, -2.50000000e-01,
+ 0.00000000e+00, -4.00000000e-01,
+};
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_cells[] = {
+0,1,2,3,4,5,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_verticesRef[] = {
+ -1.00000000e+00, -1.00000000e+00,
+ 1.00000000e+00, -1.00000000e+00,
+ -1.00000000e+00, 1.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00,
+ -1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -1.00000000e+00,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_quadPts[] = {
+ -7.50000000e-01, -7.50000000e-01,
+ 7.50000000e-01, -7.50000000e-01,
+ -7.50000000e-01, 7.50000000e-01,
+ 0.00000000e+00, -7.50000000e-01,
+ -7.50000000e-01, 0.00000000e+00,
+ 2.50000000e-01, 2.50000000e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_quadWts[] = {
+ 3.33333333e-01, 3.33333333e-01, 3.33333333e-01, 3.33333333e-01, 3.33333333e-01, 3.33333333e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_basis[] = {
+ 3.75000000e-01, -9.37500000e-02,
+ -9.37500000e-02, 6.25000000e-02,
+ 3.75000000e-01, 3.75000000e-01,
+ 0.00000000e+00, 6.56250000e-01,
+ -9.37500000e-02, 4.37500000e-01,
+ -0.00000000e+00, -0.00000000e+00,
+ 0.00000000e+00, -9.37500000e-02,
+ 6.56250000e-01, 4.37500000e-01,
+ -0.00000000e+00, -0.00000000e+00,
+ -9.37500000e-02, 0.00000000e+00,
+ -9.37500000e-02, 2.50000000e-01,
+ 1.87500000e-01, 7.50000000e-01,
+ -9.37500000e-02, -9.37500000e-02,
+ 0.00000000e+00, 2.50000000e-01,
+ 7.50000000e-01, 1.87500000e-01,
+ 3.75000000e-01, 1.56250000e-01,
+ 1.56250000e-01, 1.56250000e+00,
+ -6.25000000e-01, -6.25000000e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_basisDerivRef[] = {
+ -1.00000000e+00, -1.00000000e+00,
+ -2.50000000e-01, 0.00000000e+00,
+ 0.00000000e+00, -2.50000000e-01,
+ 2.50000000e-01, 2.50000000e-01,
+ -2.50000000e-01, 1.25000000e+00,
+ 1.25000000e+00, -2.50000000e-01,
+ 5.00000000e-01, 5.00000000e-01,
+ 1.25000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -2.50000000e-01,
+ 2.50000000e-01, 1.75000000e+00,
+ -2.50000000e-01, -2.50000000e-01,
+ -1.75000000e+00, -1.75000000e+00,
+ 5.00000000e-01, 5.00000000e-01,
+ -2.50000000e-01, 0.00000000e+00,
+ 0.00000000e+00, 1.25000000e+00,
+ 1.75000000e+00, 2.50000000e-01,
+ -1.75000000e+00, -1.75000000e+00,
+ -2.50000000e-01, -2.50000000e-01,
+ -2.50000000e-01, -2.50000000e-01,
+ 5.00000000e-01, 0.00000000e+00,
+ 0.00000000e+00, -2.50000000e-01,
+ 2.50000000e-01, 1.00000000e+00,
+ -2.50000000e-01, 5.00000000e-01,
+ -2.50000000e-01, -1.00000000e+00,
+ -2.50000000e-01, -2.50000000e-01,
+ -2.50000000e-01, 0.00000000e+00,
+ 0.00000000e+00, 5.00000000e-01,
+ 1.00000000e+00, 2.50000000e-01,
+ -1.00000000e+00, -2.50000000e-01,
+ 5.00000000e-01, -2.50000000e-01,
+ 1.00000000e+00, 1.00000000e+00,
+ 7.50000000e-01, 0.00000000e+00,
+ 0.00000000e+00, 7.50000000e-01,
+ 1.25000000e+00, 1.25000000e+00,
+ -1.25000000e+00, -1.75000000e+00,
+ -1.75000000e+00, -1.25000000e+00,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_fieldTIncr[] = {
+ -4.00000000e-01, -6.00000000e-01,
+ 7.00000000e-01, 8.00000000e-01,
+ 0.00000000e+00, 2.00000000e-01,
+ -5.00000000e-01, -4.00000000e-01,
+ 3.00000000e-01, 9.00000000e-01,
+ -3.00000000e-01, -9.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_fieldT[] = {
+ -3.00000000e-01, -4.00000000e-01,
+ 5.00000000e-01, 6.00000000e-01,
+ 0.00000000e+00, 1.00000000e-01,
+ -2.00000000e-01, -3.00000000e-01,
+ 2.00000000e-01, 3.00000000e-01,
+ -1.00000000e-01, -2.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_fieldTmdt[] = {
+ -2.00000000e-01, -3.00000000e-01,
+ 3.00000000e-01, 4.00000000e-01,
+ 0.00000000e+00, -1.00000000e-01,
+ -3.00000000e-01, -2.00000000e-01,
+ 1.00000000e-01, 4.00000000e-01,
+ -2.00000000e-01, -6.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_valsResidual[] = {
+ 3.39737351e+12, 5.19317954e+12,
+ -1.80774474e+12, -2.22000685e+12,
+ 2.65665681e+12, 3.51432165e+12,
+ 4.77718113e+12, 3.87082081e+12,
+ -7.52685354e+12, -1.20475569e+13,
+ -1.49661316e+12, 1.68924177e+12,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_valsJacobian[] = {
+ 1.21091900e+12, 5.56624427e+11,
+ 5.95878737e+10, 2.82688919e+10,
+ 6.89616587e+11, 3.46233237e+11,
+ 9.22245444e+11, 3.73904122e+11,
+ -1.91462842e+12, -9.41768992e+11,
+ -9.67740481e+11, -3.63261686e+11,
+ 5.56624427e+11, 1.75937634e+12,
+ 2.55818801e+10, 1.13588035e+11,
+ 3.45077232e+11, 7.71442168e+11,
+ 3.77747140e+11, 6.23361467e+11,
+ -9.44649933e+11, -2.62213755e+12,
+ -3.60380746e+11, -6.45630459e+11,
+ 5.95878737e+10, 2.55818801e+10,
+ 5.73354183e+11, 2.59713039e+11,
+ -8.46433708e+09, -2.59165131e+10,
+ -4.03504796e+11, -1.36798725e+11,
+ 8.32134883e+10, 6.73297341e+10,
+ -3.04186412e+11, -1.89909415e+11,
+ 2.82688919e+10, 1.13588035e+11,
+ 2.59713039e+11, 5.80155308e+11,
+ -2.66709077e+10, -3.33303021e+10,
+ -1.27273335e+11, -1.82757062e+11,
+ 6.53971169e+10, 1.67214691e+11,
+ -1.99434806e+11, -6.44870669e+11,
+ 6.89616587e+11, 3.45077232e+11,
+ -8.46433708e+09, -2.66709077e+10,
+ 9.46393649e+11, 4.11776807e+11,
+ 4.22061375e+11, 3.08031050e+11,
+ -1.66893291e+12, -8.05938575e+11,
+ -3.80674362e+11, -2.32275605e+11,
+ 3.46233237e+11, 7.71442168e+11,
+ -2.59165131e+10, -3.33303021e+10,
+ 4.11776807e+11, 9.71896809e+11,
+ 3.13343794e+11, 2.71248445e+11,
+ -8.11251320e+11, -1.81414784e+12,
+ -2.34186006e+11, -1.67109284e+11,
+ 9.22245444e+11, 3.77747140e+11,
+ -4.03504796e+11, -1.27273335e+11,
+ 4.22061375e+11, 3.13343794e+11,
+ 2.67767840e+12, 8.66541719e+11,
+ -1.76517544e+12, -9.28979272e+11,
+ -1.85330498e+12, -5.01380046e+11,
+ 3.73904122e+11, 6.23361467e+11,
+ -1.36798725e+11, -1.82757062e+11,
+ 3.08031050e+11, 2.71248445e+11,
+ 8.66541719e+11, 2.75987489e+12,
+ -9.20742130e+11, -1.59282386e+12,
+ -4.90936036e+11, -1.87890388e+12,
+ -1.91462842e+12, -9.44649933e+11,
+ 8.32134883e+10, 6.53971169e+10,
+ -1.66893291e+12, -8.11251320e+11,
+ -1.76517544e+12, -9.20742130e+11,
+ 4.09293769e+12, 2.04726998e+12,
+ 1.17258560e+12, 5.63976291e+11,
+ -9.41768992e+11, -2.62213755e+12,
+ 6.73297341e+10, 1.67214691e+11,
+ -8.05938575e+11, -1.81414784e+12,
+ -9.28979272e+11, -1.59282386e+12,
+ 2.04726998e+12, 5.59980472e+12,
+ 5.62087130e+11, 2.62089836e+11,
+ -9.67740481e+11, -3.60380746e+11,
+ -3.04186412e+11, -1.99434806e+11,
+ -3.80674362e+11, -2.34186006e+11,
+ -1.85330498e+12, -4.90936036e+11,
+ 1.17258560e+12, 5.62087130e+11,
+ 2.33332064e+12, 7.22850462e+11,
+ -3.63261686e+11, -6.45630459e+11,
+ -1.89909415e+11, -6.44870669e+11,
+ -2.32275605e+11, -1.67109284e+11,
+ -5.01380046e+11, -1.87890388e+12,
+ 5.63976291e+11, 2.62089836e+11,
+ 7.22850462e+11, 3.07442446e+12,
+};
+
+pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::ElasticityImplicitLgDeformData2DQuadratic(void)
+{ // constructor
+ spaceDim = _spaceDim;
+ cellDim = _cellDim;
+ numVertices = _numVertices;
+ numCells = _numCells;
+ numBasis = _numBasis;
+ numQuadPts = _numQuadPts;
+ matType = const_cast<char*>(_matType);
+ matDBFilename = const_cast<char*>(_matDBFilename);
+ matId = _matId;
+ matLabel = const_cast<char*>(_matLabel);
+ dt = _dt;
+ gravityVec = const_cast<double*>(_gravityVec);
+ vertices = const_cast<double*>(_vertices);
+ cells = const_cast<int*>(_cells);
+ verticesRef = const_cast<double*>(_verticesRef);
+ quadPts = const_cast<double*>(_quadPts);
+ quadWts = const_cast<double*>(_quadWts);
+ basis = const_cast<double*>(_basis);
+ basisDerivRef = const_cast<double*>(_basisDerivRef);
+ fieldTIncr = const_cast<double*>(_fieldTIncr);
+ fieldT = const_cast<double*>(_fieldT);
+ fieldTmdt = const_cast<double*>(_fieldTmdt);
+ valsResidual = const_cast<double*>(_valsResidual);
+ valsJacobian = const_cast<double*>(_valsJacobian);
+} // constructor
+
+pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::~ElasticityImplicitLgDeformData2DQuadratic(void)
+{}
+
+
+// End of file
Added: short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DQuadratic.hh
===================================================================
--- short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DQuadratic.hh (rev 0)
+++ short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DQuadratic.hh 2009-11-18 23:05:45 UTC (rev 16000)
@@ -0,0 +1,92 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+// DO NOT EDIT THIS FILE
+// This file was generated from python application integratorelasticitylgdeform.
+
+#if !defined(pylith_feassemble_elasticityimplicitlgdeformdata2dquadratic_hh)
+#define pylith_feassemble_elasticityimplicitlgdeformdata2dquadratic_hh
+
+#include "IntegratorData.hh"
+
+namespace pylith {
+ namespace feassemble {
+ class ElasticityImplicitLgDeformData2DQuadratic;
+ } // pylith
+} // feassemble
+
+class pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic : public IntegratorData
+{
+
+public:
+
+ /// Constructor
+ ElasticityImplicitLgDeformData2DQuadratic(void);
+
+ /// Destructor
+ ~ElasticityImplicitLgDeformData2DQuadratic(void);
+
+private:
+
+ static const int _spaceDim;
+
+ static const int _cellDim;
+
+ static const int _numVertices;
+
+ static const int _numCells;
+
+ static const int _numBasis;
+
+ static const int _numQuadPts;
+
+ static const char* _matType;
+
+ static const char* _matDBFilename;
+
+ static const int _matId;
+
+ static const char* _matLabel;
+
+ static const double _dt;
+
+ static const double _gravityVec[];
+
+ static const double _vertices[];
+
+ static const int _cells[];
+
+ static const double _verticesRef[];
+
+ static const double _quadPts[];
+
+ static const double _quadWts[];
+
+ static const double _basis[];
+
+ static const double _basisDerivRef[];
+
+ static const double _fieldTIncr[];
+
+ static const double _fieldT[];
+
+ static const double _fieldTmdt[];
+
+ static const double _valsResidual[];
+
+ static const double _valsJacobian[];
+
+};
+
+#endif // pylith_feassemble_elasticityimplicitlgdeformdata2dquadratic_hh
+
+// End of file
Modified: short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/IntegratorElasticityLgDeform.py
===================================================================
--- short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/IntegratorElasticityLgDeform.py 2009-11-18 19:08:41 UTC (rev 15999)
+++ short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/IntegratorElasticityLgDeform.py 2009-11-18 23:05:45 UTC (rev 16000)
@@ -67,16 +67,14 @@
for iQuad in xrange(self.numQuadPts):
wt = self.quadWts[iQuad] * jacobianDet[iQuad]
BL0 = self._calculateBasisDerivMatLinear0(basisDeriv, iQuad)
- cellK[:] += wt * numpy.dot(numpy.dot(BL0.transpose(), D), BL0)
BL1 = self._calculateBasisDerivMatLinear1(basisDeriv, iQuad, fieldTpdt)
- cellK[:] += wt * numpy.dot(numpy.dot(BL1.transpose(), D), BL1)
+ BL = BL0 + BL1
+ cellK[:] += wt * numpy.dot(numpy.dot(BL.transpose(), D), BL)
+ print "Kl",wt * numpy.dot(numpy.dot(BL.transpose(), D), BL)
BNL = self._calculateBasisDerivMatNonlinear(basisDeriv, iQuad)
- strain = numpy.dot(BL0+BL1, fieldTpdt)
+ strain = self._calculateStrain(basisDeriv, iQuad, fieldTpdt)
S = self._calculateStress(strain, D)
- print "BL0",BL0
- print "BL1",BL1
- print "D",D
- print "BNL",BNL
+ print "strain",strain
print "S",S
cellK[:] += wt * numpy.dot(numpy.dot(BNL.transpose(), S), BNL)
print "K",cellK
@@ -227,28 +225,75 @@
return B
+ def _calculateStrain(self, basisDeriv, iQuad, disp):
+ """
+ Calculte Green-Lagrange strain.
+ """
+ if 3 == self.spaceDim:
+ strain = numpy.zeros( (1,6), dtype=numpy.float64)
+
+ 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] = 0.5*(l11*l12 + l21*l22)
+ 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] += \
+ 0.5*(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)
+ Svec = numpy.dot(D, strain.transpose())
if 3 == self.spaceDim:
- Smat = numpy.array([[Svec[0], Svec[3], Svec[5]],
- [Svec[3], Svec[1], Svec[4]],
- [Svec[5], Svec[4], Svec[2]]], dtype=numpy.float64)
+ 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], Svec[2]],
- [Svec[2], Svec[1]]], dtype=numpy.float64)
+ 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
Modified: short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/Mesh1DLinear.py
===================================================================
--- short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/Mesh1DLinear.py 2009-11-18 19:08:41 UTC (rev 15999)
+++ short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/Mesh1DLinear.py 2009-11-18 23:05:45 UTC (rev 16000)
@@ -44,7 +44,7 @@
self.gravityVec = numpy.array( [-1.0e8], dtype=numpy.float64)
self.vertices = numpy.array( [[-0.25], [2.0]], dtype=numpy.float64)
self.cells = numpy.array( [[0, 1]], dtype=numpy.int32)
- self.verticesRef = numpy.array( [[-1.0], [1.0]], dtype=numpy.float64)
+ self.verticesRef = numpy.array( [[-1.0], [+1.0]], dtype=numpy.float64)
return
Modified: short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/generate.sh
===================================================================
--- short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/generate.sh 2009-11-18 19:08:41 UTC (rev 15999)
+++ short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/generate.sh 2009-11-18 23:05:45 UTC (rev 16000)
@@ -429,6 +429,7 @@
# 3-D ----------------------------------------------------------------
+if (( 0 )); then
python IntegratorElasticityLgDeform.py \
--formulation=ElasticityImplicit \
--data.namespace=pylith,feassemble \
@@ -470,6 +471,7 @@
--material=ElasticIsotropic3D \
--solution=Solution3DQuadratic
fi
+fi
fi
More information about the CIG-COMMITS
mailing list