[cig-commits] r15961 - in short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble: . data
brad at geodynamics.org
brad at geodynamics.org
Wed Nov 11 23:17:42 PST 2009
Author: brad
Date: 2009-11-11 23:17:42 -0800 (Wed, 11 Nov 2009)
New Revision: 15961
Added:
short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform.cc
short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform.hh
short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform1DLinear.cc
short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform1DLinear.hh
short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DLinear.cc
short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DLinear.hh
Modified:
short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/Makefile.am
Log:
Started adding C++ unit test data for implicit integration for large deformations.
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-12 05:13:32 UTC (rev 15960)
+++ short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/Makefile.am 2009-11-12 07:17:42 UTC (rev 15961)
@@ -67,6 +67,8 @@
TestElasticityImplicitGrav3DLinear.cc \
TestElasticityImplicitGrav3DQuadratic.cc \
TestIntegratorElasticityLgDeform.cc \
+ TestElasticityImplicitLgDeform.cc \
+ TestElasticityImplicitLgDeform1DLinear.cc \
test_feassemble.cc
@@ -93,6 +95,8 @@
TestElasticityImplicitGrav2DQuadratic.hh \
TestElasticityImplicitGrav3DLinear.hh \
TestElasticityImplicitGrav3DQuadratic.hh \
+ TestElasticityImplicitLgDeform.hh \
+ TestElasticityImplicitLgDeform1DLinear.hh \
TestGeometryPoint1D.hh \
TestGeometryPoint2D.hh \
TestGeometryPoint3D.hh \
@@ -152,6 +156,7 @@
data/ElasticityImplicitGravData2DQuadratic.cc \
data/ElasticityImplicitGravData3DLinear.cc \
data/ElasticityImplicitGravData3DQuadratic.cc \
+ data/ElasticityImplicitLgDeformData1DLinear.cc \
data/QuadratureData.cc \
data/QuadratureData1DLinear.cc \
data/QuadratureData1DQuadratic.cc \
@@ -202,6 +207,7 @@
data/ElasticityImplicitGravData2DQuadratic.hh \
data/ElasticityImplicitGravData3DLinear.hh \
data/ElasticityImplicitGravData3DQuadratic.hh \
+ data/ElasticityImplicitLgDeformData1DLinear.hh \
data/QuadratureData.hh \
data/QuadratureData1DLinear.hh \
data/QuadratureData1DQuadratic.hh \
Added: short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform.cc
===================================================================
--- short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform.cc (rev 0)
+++ short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform.cc 2009-11-12 07:17:42 UTC (rev 15961)
@@ -0,0 +1,387 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestElasticityImplicitLgDeform.hh" // Implementation of class methods
+
+#include "pylith/feassemble/ElasticityImplicitLgDeform.hh" // USES ElasticityImplicitLgDeform
+#include "data/IntegratorData.hh" // USES IntegratorData
+
+#include "pylith/utils/constdefs.h" // USES MAXDOUBLE
+#include "pylith/materials/ElasticIsotropic3D.hh" // USES ElasticIsotropic3D
+#include "pylith/feassemble/Quadrature.hh" // USES Quadrature
+#include "pylith/topology/Mesh.hh" // USES Mesh
+#include "pylith/topology/SolutionFields.hh" // USES SolutionFields
+#include "pylith/topology/Jacobian.hh" // USES Jacobian
+
+#include "spatialdata/geocoords/CSCart.hh" // USES CSCart
+#include "spatialdata/spatialdb/SimpleDB.hh" // USES SimpleDB
+#include "spatialdata/spatialdb/SimpleIOAscii.hh" // USES SimpleIOAscii
+#include "spatialdata/spatialdb/GravityField.hh" // USES GravityField
+#include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
+
+#include <math.h> // USES fabs()
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::feassemble::TestElasticityImplicitLgDeform );
+
+// ----------------------------------------------------------------------
+typedef pylith::topology::Mesh::SieveMesh SieveMesh;
+typedef pylith::topology::Mesh::RealSection RealSection;
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::feassemble::TestElasticityImplicitLgDeform::setUp(void)
+{ // setUp
+ _quadrature = new Quadrature<topology::Mesh>();
+ _data = 0;
+ _material = 0;
+ _gravityField = 0;
+} // setUp
+
+// ----------------------------------------------------------------------
+// Tear down testing data.
+void
+pylith::feassemble::TestElasticityImplicitLgDeform::tearDown(void)
+{ // tearDown
+ delete _data; _data = 0;
+ delete _quadrature; _quadrature = 0;
+ delete _material; _material = 0;
+ delete _gravityField; _gravityField = 0;
+} // tearDown
+
+// ----------------------------------------------------------------------
+// Test constructor.
+void
+pylith::feassemble::TestElasticityImplicitLgDeform::testConstructor(void)
+{ // testConstructor
+ ElasticityImplicitLgDeform integrator;
+} // testConstructor
+
+// ----------------------------------------------------------------------
+// Test timeStep().
+void
+pylith::feassemble::TestElasticityImplicitLgDeform::testTimeStep(void)
+{ // testTimeStep
+ ElasticityImplicitLgDeform integrator;
+
+ const double dt1 = 2.0;
+ integrator.timeStep(dt1);
+ CPPUNIT_ASSERT_EQUAL(dt1, integrator._dt);
+ integrator.timeStep(dt1);
+ CPPUNIT_ASSERT_EQUAL(dt1, integrator._dtm1);
+ CPPUNIT_ASSERT_EQUAL(dt1, integrator._dt);
+} // testTimeStep
+
+// ----------------------------------------------------------------------
+// Test material().
+void
+pylith::feassemble::TestElasticityImplicitLgDeform::testMaterial(void)
+{ // testMaterial
+ ElasticityImplicitLgDeform integrator;
+
+ materials::ElasticIsotropic3D material;
+ const int id = 3;
+ const std::string label("my material");
+ material.id(id);
+ material.label(label.c_str());
+ integrator.material(&material);
+ CPPUNIT_ASSERT_EQUAL(id, integrator._material->id());
+ CPPUNIT_ASSERT_EQUAL(label, std::string(integrator._material->label()));
+ CPPUNIT_ASSERT_EQUAL(integrator._dt, integrator._material->timeStep());
+ const double dt = 2.0;
+ integrator.timeStep(dt);
+ CPPUNIT_ASSERT_EQUAL(dt, integrator._material->timeStep());
+} // testMaterial
+
+// ----------------------------------------------------------------------
+// Test needNewJacobian().
+void
+pylith::feassemble::TestElasticityImplicitLgDeform::testNeedNewJacobian(void)
+{ // testNeedNewJacobian
+ ElasticityImplicitLgDeform integrator;
+
+ materials::ElasticIsotropic3D material;
+ integrator.material(&material);
+ CPPUNIT_ASSERT_EQUAL(true, integrator.needNewJacobian());
+ integrator._needNewJacobian = false;
+ CPPUNIT_ASSERT_EQUAL(false, integrator.needNewJacobian());
+} // testNeedNewJacobian
+
+// ----------------------------------------------------------------------
+// Test useSolnIncr().
+void
+pylith::feassemble::TestElasticityImplicitLgDeform::testUseSolnIncr(void)
+{ // testUseSolnIncr
+ ElasticityImplicitLgDeform integrator;
+
+ materials::ElasticIsotropic3D material;
+ integrator.material(&material);
+ CPPUNIT_ASSERT_EQUAL(false, integrator._useSolnIncr);
+ integrator.useSolnIncr(true);
+ CPPUNIT_ASSERT_EQUAL(true, integrator._useSolnIncr);
+} // testUseSolnIncr
+
+// ----------------------------------------------------------------------
+// Test initialize().
+void
+pylith::feassemble::TestElasticityImplicitLgDeform::testInitialize(void)
+{ // testInitialize
+ CPPUNIT_ASSERT(0 != _data);
+
+ topology::Mesh mesh;
+ ElasticityImplicitLgDeform integrator;
+ topology::SolutionFields fields(mesh);
+ _initialize(&mesh, &integrator, &fields);
+
+} // testInitialize
+
+// ----------------------------------------------------------------------
+// Test integrateResidual().
+void
+pylith::feassemble::TestElasticityImplicitLgDeform::testIntegrateResidual(void)
+{ // testIntegrateResidual
+ CPPUNIT_ASSERT(0 != _data);
+
+ topology::Mesh mesh;
+ ElasticityImplicitLgDeform integrator;
+ topology::SolutionFields fields(mesh);
+ _initialize(&mesh, &integrator, &fields);
+
+ topology::Field<topology::Mesh>& residual = fields.get("residual");
+ const double t = 1.0;
+ integrator.integrateResidual(residual, t, &fields);
+
+ const double* valsE = _data->valsResidual;
+ 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);
+
+ 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);
+} // testIntegrateResidual
+
+// ----------------------------------------------------------------------
+// Test integrateJacobian().
+void
+pylith::feassemble::TestElasticityImplicitLgDeform::testIntegrateJacobian(void)
+{ // testIntegrateJacobian
+ CPPUNIT_ASSERT(0 != _data);
+
+ topology::Mesh mesh;
+ ElasticityImplicitLgDeform integrator;
+ topology::SolutionFields fields(mesh);
+ _initialize(&mesh, &integrator, &fields);
+ integrator._needNewJacobian = true;
+
+ topology::Jacobian jacobian(fields);
+
+ const double t = 1.0;
+ //mesh->getSieve()->setDebug(10);
+ integrator.integrateJacobian(&jacobian, t, &fields);
+ CPPUNIT_ASSERT_EQUAL(false, integrator.needNewJacobian());
+ //mesh->getSieve()->setDebug(0);
+ jacobian.assemble("final_assembly");
+
+ const double* valsE = _data->valsJacobian;
+ const int nrowsE = _data->numVertices * _data->spaceDim;
+ const int ncolsE = _data->numVertices * _data->spaceDim;
+
+ const PetscMat jacobianMat = jacobian.matrix();
+
+ int nrows = 0;
+ int ncols = 0;
+ MatGetSize(jacobianMat, &nrows, &ncols);
+ CPPUNIT_ASSERT_EQUAL(nrowsE, nrows);
+ CPPUNIT_ASSERT_EQUAL(ncolsE, ncols);
+
+ PetscMat jDense;
+ PetscMat jSparseAIJ;
+ MatConvert(jacobianMat, MATSEQAIJ, MAT_INITIAL_MATRIX, &jSparseAIJ);
+ MatConvert(jSparseAIJ, MATSEQDENSE, MAT_INITIAL_MATRIX, &jDense);
+
+ double_array vals(nrows*ncols);
+ int_array rows(nrows);
+ int_array cols(ncols);
+ for (int iRow=0; iRow < nrows; ++iRow)
+ rows[iRow] = iRow;
+ for (int iCol=0; iCol < ncols; ++iCol)
+ cols[iCol] = iCol;
+ MatGetValues(jDense, nrows, &rows[0], ncols, &cols[0], &vals[0]);
+ const double tolerance = 1.0e-06;
+ for (int iRow=0; iRow < nrows; ++iRow)
+ for (int iCol=0; iCol < ncols; ++iCol) {
+ const int index = ncols*iRow+iCol;
+ if (fabs(valsE[index]) > 1.0)
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, vals[index]/valsE[index], tolerance);
+ else
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(valsE[index], vals[index], tolerance);
+ } // for
+ MatDestroy(jDense);
+ MatDestroy(jSparseAIJ);
+} // testIntegrateJacobian
+
+// ----------------------------------------------------------------------
+// Test updateStateVars().
+void
+pylith::feassemble::TestElasticityImplicitLgDeform::testUpdateStateVars(void)
+{ // testUpdateStateVars
+ CPPUNIT_ASSERT(0 != _data);
+
+ topology::Mesh mesh;
+ ElasticityImplicitLgDeform integrator;
+ topology::SolutionFields fields(mesh);
+ _initialize(&mesh, &integrator, &fields);
+
+ const double t = 1.0;
+ integrator.updateStateVars(t, &fields);
+} // testUpdateStateVars
+
+// ----------------------------------------------------------------------
+// Test StableTimeStep().
+void
+pylith::feassemble::TestElasticityImplicitLgDeform::testStableTimeStep(void)
+{ // testStableTimeStep
+
+ topology::Mesh mesh;
+ ElasticityImplicitLgDeform integrator;
+ topology::SolutionFields fields(mesh);
+ _initialize(&mesh, &integrator, &fields);
+
+ const double stableTimeStep = integrator.stableTimeStep(mesh);
+ CPPUNIT_ASSERT_EQUAL(pylith::PYLITH_MAXDOUBLE, stableTimeStep);
+} // testStableTimeStep
+
+// ----------------------------------------------------------------------
+// Initialize elasticity integrator.
+void
+pylith::feassemble::TestElasticityImplicitLgDeform::_initialize(
+ topology::Mesh* mesh,
+ ElasticityImplicitLgDeform* const integrator,
+ topology::SolutionFields* fields)
+{ // _initialize
+ CPPUNIT_ASSERT(0 != mesh);
+ CPPUNIT_ASSERT(0 != integrator);
+ CPPUNIT_ASSERT(0 != _data);
+ CPPUNIT_ASSERT(0 != _quadrature);
+ CPPUNIT_ASSERT(0 != _material);
+
+ // Setup mesh
+ spatialdata::geocoords::CSCart cs;
+ cs.setSpaceDim(_data->spaceDim);
+ cs.initialize();
+ mesh->coordsys(&cs);
+ mesh->createSieveMesh(_data->cellDim);
+ const ALE::Obj<SieveMesh>& sieveMesh = mesh->sieveMesh();
+ CPPUNIT_ASSERT(!sieveMesh.isNull());
+ ALE::Obj<SieveMesh::sieve_type> sieve =
+ new SieveMesh::sieve_type(mesh->comm());
+ CPPUNIT_ASSERT(!sieve.isNull());
+
+ // Cells and vertices
+ const bool interpolate = false;
+ ALE::Obj<ALE::Mesh::sieve_type> s =
+ new ALE::Mesh::sieve_type(sieve->comm(), sieve->debug());
+
+ ALE::SieveBuilder<ALE::Mesh>::buildTopology(s,
+ _data->cellDim, _data->numCells,
+ const_cast<int*>(_data->cells),
+ _data->numVertices,
+ interpolate, _data->numBasis);
+ std::map<ALE::Mesh::point_type,ALE::Mesh::point_type> renumbering;
+ ALE::ISieveConverter::convertSieve(*s, *sieve, renumbering);
+ sieveMesh->setSieve(sieve);
+ sieveMesh->stratify();
+ ALE::SieveBuilder<SieveMesh>::buildCoordinates(sieveMesh, _data->spaceDim,
+ _data->vertices);
+
+ // Material ids
+ const ALE::Obj<SieveMesh::label_sequence>& cells =
+ sieveMesh->heightStratum(0);
+ CPPUNIT_ASSERT(!cells.isNull());
+ const ALE::Obj<SieveMesh::label_type>& labelMaterials =
+ sieveMesh->createLabel("material-id");
+ CPPUNIT_ASSERT(!labelMaterials.isNull());
+ int i = 0;
+ for(SieveMesh::label_sequence::iterator e_iter=cells->begin();
+ e_iter != cells->end();
+ ++e_iter)
+ sieveMesh->setValue(labelMaterials, *e_iter, _data->matId);
+
+ // Setup quadrature
+ _quadrature->initialize(_data->basis, _data->numQuadPts, _data->numBasis,
+ _data->basisDerivRef, _data->numQuadPts,
+ _data->numBasis, _data->cellDim,
+ _data->quadPts, _data->numQuadPts, _data->cellDim,
+ _data->quadWts, _data->numQuadPts,
+ _data->spaceDim);
+
+ // Setup material
+ spatialdata::spatialdb::SimpleIOAscii iohandler;
+ iohandler.filename(_data->matDBFilename);
+ spatialdata::spatialdb::SimpleDB dbProperties;
+ dbProperties.ioHandler(&iohandler);
+
+ spatialdata::units::Nondimensional normalizer;
+
+ _material->id(_data->matId);
+ _material->label(_data->matLabel);
+ _material->dbProperties(&dbProperties);
+ _material->normalizer(normalizer);
+
+ integrator->quadrature(_quadrature);
+ integrator->gravityField(_gravityField);
+ integrator->timeStep(_data->dt);
+ integrator->material(_material);
+ integrator->initialize(*mesh);
+
+ // Setup fields
+ CPPUNIT_ASSERT(0 != fields);
+ fields->add("residual", "residual");
+ fields->add("disp(t)", "displacement");
+ fields->add("dispIncr(t->t+dt)", "displacement_increment");
+ fields->solutionName("dispIncr(t->t+dt)");
+
+ topology::Field<topology::Mesh>& residual = fields->get("residual");
+ residual.newSection(topology::FieldBase::VERTICES_FIELD, _data->spaceDim);
+ residual.allocate();
+ residual.zero();
+ fields->copyLayout("residual");
+
+ const int fieldSize = _data->spaceDim * _data->numVertices;
+ topology::Field<topology::Mesh>& dispT = fields->get("disp(t)");
+ const ALE::Obj<RealSection>& dispTSection = dispT.section();
+ CPPUNIT_ASSERT(!dispTSection.isNull());
+ topology::Field<topology::Mesh>& dispTIncr = fields->get("dispIncr(t->t+dt)");
+ const ALE::Obj<RealSection>& dispTIncrSection = dispTIncr.section();
+ CPPUNIT_ASSERT(!dispTIncrSection.isNull());
+ const int offset = _data->numCells;
+ for (int iVertex=0; iVertex < _data->numVertices; ++iVertex) {
+ dispTSection->updatePoint(iVertex+offset,
+ &_data->fieldT[iVertex*_data->spaceDim]);
+ dispTIncrSection->updatePoint(iVertex+offset,
+ &_data->fieldTIncr[iVertex*_data->spaceDim]);
+ } // for
+} // _initialize
+
+
+// End of file
Added: short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform.hh
===================================================================
--- short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform.hh (rev 0)
+++ short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform.hh 2009-11-12 07:17:42 UTC (rev 15961)
@@ -0,0 +1,124 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/feassemble/TestElasticityImplicitLgDeform.hh
+ *
+ * @brief C++ TestElasticityImplicitLgDeform object
+ *
+ * C++ unit testing for ElasticityImplicitLgDeform.
+ */
+
+#if !defined(pylith_feassemble_testelasticityimplicitlgdeform_hh)
+#define pylith_feassemble_testelasticityimplicitlgdeform_hh
+
+#include <cppunit/extensions/HelperMacros.h>
+
+#include "pylith/feassemble/feassemblefwd.hh" // forward declarations
+#include "pylith/topology/topologyfwd.hh" // USES Mesh, SolutionFields
+#include "pylith/materials/materialsfwd.hh" // USES ElasticMaterial
+
+#include "spatialdata/spatialdb/spatialdbfwd.hh" // USES GravityField
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace feassemble {
+ class TestElasticityImplicitLgDeform;
+ class IntegratorData;
+ } // feassemble
+} // pylith
+
+/// C++ unit testing for ElasticityImplicitLgDeform
+class pylith::feassemble::TestElasticityImplicitLgDeform : public CppUnit::TestFixture
+{ // class TestElasticityImplicitLgDeform
+
+ // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+ CPPUNIT_TEST_SUITE( TestElasticityImplicitLgDeform );
+
+ CPPUNIT_TEST( testConstructor );
+ CPPUNIT_TEST( testTimeStep );
+ CPPUNIT_TEST( testMaterial );
+ CPPUNIT_TEST( testNeedNewJacobian );
+ CPPUNIT_TEST( testUseSolnIncr );
+
+ // Testing of initialize(), integrateResidual(),
+ // integrateJacobian(), and updateStateVars() handled by derived
+ // classes.
+
+ CPPUNIT_TEST_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Setup testing data.
+ void setUp(void);
+
+ /// Tear down testing data.
+ void tearDown(void);
+
+ /// Test constructor.
+ void testConstructor(void);
+
+ /// Test timeStep().
+ void testTimeStep(void);
+
+ /// Test StableTimeStep().
+ void testStableTimeStep(void);
+
+ /// Test material().
+ void testMaterial(void);
+
+ /// Test needNewJacobian().
+ void testNeedNewJacobian(void);
+
+ /// Test useSolnIncr().
+ void testUseSolnIncr(void);
+
+ /// Test initialize().
+ void testInitialize(void);
+
+ /// Test integrateResidual().
+ void testIntegrateResidual(void);
+
+ /// Test integrateJacobian().
+ void testIntegrateJacobian(void);
+
+ /// Test updateStateVars().
+ void testUpdateStateVars(void);
+
+ // PROTECTED MEMBERS //////////////////////////////////////////////////
+protected :
+
+ IntegratorData* _data; ///< Data for testing.
+ materials::ElasticMaterial* _material; ///< Elastic material.
+ Quadrature<topology::Mesh>* _quadrature; ///< Quadrature information.
+ spatialdata::spatialdb::GravityField* _gravityField; ///< Gravity field.
+
+ // PRIVATE METHODS ////////////////////////////////////////////////////
+private :
+
+ /** Initialize elasticity integrator.
+ *
+ * @param mesh Finite-element mesh to initialize.
+ * @param integrator ElasticityIntegrator to initialize.
+ * @param fields Solution fields.
+ */
+ void _initialize(topology::Mesh* mesh,
+ ElasticityImplicitLgDeform* const integrator,
+ topology::SolutionFields* const fields);
+
+}; // class TestElasticityImplicitLgDeform
+
+#endif // pylith_feassemble_testelasticityimplicitlgdeform_hh
+
+
+// End of file
Added: short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform1DLinear.cc
===================================================================
--- short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform1DLinear.cc (rev 0)
+++ short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform1DLinear.cc 2009-11-12 07:17:42 UTC (rev 15961)
@@ -0,0 +1,47 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestElasticityImplicitLgDeform1DLinear.hh" // Implementation of class methods
+
+#include "data/ElasticityImplicitLgDeformData1DLinear.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::TestElasticityImplicitLgDeform1DLinear );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::feassemble::TestElasticityImplicitLgDeform1DLinear::setUp(void)
+{ // setUp
+ TestElasticityImplicitLgDeform::setUp();
+
+ _data = new ElasticityImplicitLgDeformData1DLinear();
+ _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/TestElasticityImplicitLgDeform1DLinear.hh
===================================================================
--- short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform1DLinear.hh (rev 0)
+++ short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform1DLinear.hh 2009-11-12 07:17:42 UTC (rev 15961)
@@ -0,0 +1,60 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/feassemble/TestElasticityImplicitLgDeform1DLinear.hh
+ *
+ * @brief C++ TestElasticityImplicitLgDeform object
+ *
+ * C++ unit testing for ElasticityImplicitLgDeform with 1-D linear cells.
+ */
+
+#if !defined(pylith_feassemble_testelasticityimplicit1dlinear_hh)
+#define pylith_feassemble_testelasticityimplicit1dlinear_hh
+
+#include "TestElasticityImplicitLgDeform.hh" // ISA TestElasticityImplicitLgDeform
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace feassemble {
+ class TestElasticityImplicitLgDeform1DLinear;
+ } // feassemble
+} // pylith
+
+/// C++ unit testing for ElasticityImplicitLgDeform
+class pylith::feassemble::TestElasticityImplicitLgDeform1DLinear :
+ public TestElasticityImplicitLgDeform
+{ // class TestElasticityImplicitLgDeform1DLinear
+
+ // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+ CPPUNIT_TEST_SUITE( TestElasticityImplicitLgDeform1DLinear );
+
+ 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 TestElasticityImplicitLgDeform1DLinear
+
+#endif // pylith_feassemble_testelasticityimplicit1dlinear_hh
+
+
+// End of file
Added: short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DLinear.cc
===================================================================
--- short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DLinear.cc (rev 0)
+++ short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DLinear.cc 2009-11-12 07:17:42 UTC (rev 15961)
@@ -0,0 +1,135 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+// DO NOT EDIT THIS FILE
+// This file was generated from python application integratorelasticitylgdeform.
+
+#include "ElasticityImplicitLgDeformData1DLinear.hh"
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_spaceDim = 1;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_cellDim = 1;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_numVertices = 2;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_numCells = 1;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_numBasis = 2;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_numQuadPts = 1;
+
+const char* pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_matType = "ElasticStrain1D";
+
+const char* pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_matDBFilename = "data/elasticstrain1d.spatialdb";
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_matId = 0;
+
+const char* pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_matLabel = "elastic strain 1-D";
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_dt = 1.00000000e-02;
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_gravityVec[] = {
+ -1.00000000e+08,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_vertices[] = {
+ -2.50000000e-01,
+ 2.00000000e+00,
+};
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_cells[] = {
+0,1,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_verticesRef[] = {
+ -1.00000000e+00,
+ 1.00000000e+00,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_quadPts[] = {
+ 0.00000000e+00,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_quadWts[] = {
+ 2.00000000e+00,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_basis[] = {
+ 5.00000000e-01,
+ 5.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_basisDerivRef[] = {
+ -5.00000000e-01,
+ 5.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_fieldTIncr[] = {
+ 1.20000000e+00,
+ 1.70000000e+00,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_fieldT[] = {
+ 1.10000000e+00,
+ 1.50000000e+00,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_fieldTmdt[] = {
+ 1.00000000e+00,
+ 1.30000000e+00,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_valsResidual[] = {
+ 6.19200000e+10,
+ -6.19200000e+10,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_valsJacobian[] = {
+ 6.88000000e+10,
+ -6.88000000e+10,
+ -6.88000000e+10,
+ 6.88000000e+10,
+};
+
+pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::ElasticityImplicitLgDeformData1DLinear(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::ElasticityImplicitLgDeformData1DLinear::~ElasticityImplicitLgDeformData1DLinear(void)
+{}
+
+
+// End of file
Added: short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DLinear.hh
===================================================================
--- short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DLinear.hh (rev 0)
+++ short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DLinear.hh 2009-11-12 07:17:42 UTC (rev 15961)
@@ -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_elasticityimplicitlgdeformdata1dlinear_hh)
+#define pylith_feassemble_elasticityimplicitlgdeformdata1dlinear_hh
+
+#include "IntegratorData.hh"
+
+namespace pylith {
+ namespace feassemble {
+ class ElasticityImplicitLgDeformData1DLinear;
+ } // pylith
+} // feassemble
+
+class pylith::feassemble::ElasticityImplicitLgDeformData1DLinear : public IntegratorData
+{
+
+public:
+
+ /// Constructor
+ ElasticityImplicitLgDeformData1DLinear(void);
+
+ /// Destructor
+ ~ElasticityImplicitLgDeformData1DLinear(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_elasticityimplicitlgdeformdata1dlinear_hh
+
+// End of file
More information about the CIG-COMMITS
mailing list