[cig-commits] r16094 - in short/3D/PyLith/trunk: . applications applications/utilities doc doc/developer doc/install doc/presentations doc/refguide doc/releasenotes doc/userguide doc/userguide/materials examples examples/3d examples/3d/hex8 examples/3d/tet4 examples/bar_shearwave examples/bar_shearwave/hex8 examples/bar_shearwave/hex8/output examples/bar_shearwave/quad4 examples/bar_shearwave/quad4/output examples/bar_shearwave/tet4 examples/bar_shearwave/tet4/output examples/bar_shearwave/tri3 examples/bar_shearwave/tri3/output examples/greensfns examples/greensfns/hex8 examples/greensfns/hex8/gfimpulses examples/greensfns/hex8/gfresponses examples/twocells examples/twocells/twohex8 examples/twocells/twoquad4 examples/twocells/twotet4 examples/twocells/twotet4-geoproj examples/twocells/twotri3 libsrc libsrc/bc libsrc/faults libsrc/feassemble libsrc/materials libsrc/meshio libsrc/problems libsrc/topology libsrc/utils modulesrc/faults modulesrc/feassemble modulesrc/include modulesrc/meshio playpen pylith pylith/faults pylith/feassemble pylith/meshio pylith/problems pylith/tests pylith/utils share templates tests tests/1d tests/1d/line2 tests/1d/line3 tests/2d tests/2d/quad4 tests/2d/tri3 tests/3d tests/3dnew/hex8 tests/petsc unittests unittests/libtests unittests/libtests/bc unittests/libtests/bc/data unittests/libtests/faults unittests/libtests/faults/data unittests/libtests/feassemble unittests/libtests/feassemble/data unittests/libtests/materials unittests/libtests/materials/data unittests/libtests/meshio unittests/libtests/meshio/data unittests/libtests/topology unittests/libtests/topology/data unittests/libtests/utils unittests/pytests unittests/pytests/bc unittests/pytests/bc/data unittests/pytests/faults unittests/pytests/faults/data unittests/pytests/feassemble unittests/pytests/feassemble/data unittests/pytests/materials unittests/pytests/materials/data unittests/pytests/meshio unittests/pytests/meshio/data unittests/pytests/mpi unittests/pytests/problems unittests/pytests/problems/data unittests/pytests/topology unittests/pytests/topology/data unittests/pytests/utils
brad at geodynamics.org
brad at geodynamics.org
Wed Dec 9 17:52:49 PST 2009
Author: brad
Date: 2009-12-09 17:52:12 -0800 (Wed, 09 Dec 2009)
New Revision: 16094
Added:
short/3D/PyLith/trunk/doc/releasenotes/announce_v1.5.0.txt
short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveDynL.cc
short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveDynL.hh
short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveDynL.icc
short/3D/PyLith/trunk/libsrc/faults/TimeHistorySlipFn.cc
short/3D/PyLith/trunk/libsrc/faults/TimeHistorySlipFn.hh
short/3D/PyLith/trunk/libsrc/faults/TimeHistorySlipFn.icc
short/3D/PyLith/trunk/libsrc/feassemble/ElasticityExplicitLgDeform.cc
short/3D/PyLith/trunk/libsrc/feassemble/ElasticityExplicitLgDeform.hh
short/3D/PyLith/trunk/libsrc/feassemble/ElasticityImplicitLgDeform.cc
short/3D/PyLith/trunk/libsrc/feassemble/ElasticityImplicitLgDeform.hh
short/3D/PyLith/trunk/libsrc/feassemble/IntegratorElasticityLgDeform.cc
short/3D/PyLith/trunk/libsrc/feassemble/IntegratorElasticityLgDeform.hh
short/3D/PyLith/trunk/libsrc/feassemble/jacobian2d_lgdeform.wxm
short/3D/PyLith/trunk/libsrc/feassemble/jacobian3d_lgdeform.wxm
short/3D/PyLith/trunk/libsrc/problems/SolverLumped.cc
short/3D/PyLith/trunk/libsrc/problems/SolverLumped.hh
short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveDynL.i
short/3D/PyLith/trunk/modulesrc/faults/TimeHistorySlipFn.i
short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityExplicitLgDeform.i
short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityImplicitLgDeform.i
short/3D/PyLith/trunk/modulesrc/feassemble/IntegratorElasticityLgDeform.i
short/3D/PyLith/trunk/playpen/friction/
short/3D/PyLith/trunk/pylith/faults/FaultCohesiveDyn.py
short/3D/PyLith/trunk/pylith/faults/FaultCohesiveDynL.py
short/3D/PyLith/trunk/pylith/faults/TimeHistorySlipFn.py
short/3D/PyLith/trunk/pylith/feassemble/ElasticityExplicitLgDeform.py
short/3D/PyLith/trunk/pylith/feassemble/ElasticityImplicitLgDeform.py
short/3D/PyLith/trunk/pylith/feassemble/IntegratorElasticityLgDeform.py
short/3D/PyLith/trunk/pylith/meshio/OutputFaultDyn.py
short/3D/PyLith/trunk/pylith/problems/ExplicitLgDeform.py
short/3D/PyLith/trunk/pylith/problems/ExplicitLumped.py
short/3D/PyLith/trunk/pylith/problems/ImplicitLgDeform.py
short/3D/PyLith/trunk/pylith/problems/SolverLumped.py
short/3D/PyLith/trunk/tests/1d/line2/lgdeformtranslation.cfg
short/3D/PyLith/trunk/tests/2d/quad4/TestLgDeformRigidBody.py
short/3D/PyLith/trunk/tests/2d/quad4/TestLgDeformTraction.py
short/3D/PyLith/trunk/tests/2d/quad4/lgdeformrigidbody.cfg
short/3D/PyLith/trunk/tests/2d/quad4/lgdeformtraction.cfg
short/3D/PyLith/trunk/tests/2d/quad4/lgdeformtraction_soln.py
short/3D/PyLith/trunk/tests/2d/quad4/rigidbody_gendb.py
short/3D/PyLith/trunk/tests/2d/quad4/rigidbody_soln.py
short/3D/PyLith/trunk/tests/3dnew/
short/3D/PyLith/trunk/unittests/libtests/faults/TestTimeHistorySlipFn.cc
short/3D/PyLith/trunk/unittests/libtests/faults/TestTimeHistorySlipFn.hh
short/3D/PyLith/trunk/unittests/libtests/faults/data/slipfn.timedb
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav1DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav1DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav1DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav1DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav2DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav2DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav2DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav2DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav3DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav3DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav3DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav3DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform1DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform1DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform1DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform1DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform2DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform2DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform2DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform2DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform3DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform3DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform3DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform3DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav1DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav1DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav1DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav1DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav2DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav2DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav2DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav2DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav3DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav3DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav3DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav3DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform1DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform1DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform1DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform1DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform3DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform3DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform3DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform3DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav1DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav1DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav1DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav1DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav2DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav2DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav2DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav2DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav3DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav3DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav3DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav3DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegratorElasticityLgDeform.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegratorElasticityLgDeform.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeform.py
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData1DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData1DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData1DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData1DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData2DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData2DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData2DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData2DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData3DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData3DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData3DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData3DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData1DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData1DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData1DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData1DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData2DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData2DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData2DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData2DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData3DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData3DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData3DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData3DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeform.py
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData3DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData3DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData3DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData3DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData1DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData1DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData1DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData1DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData2DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData2DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData2DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData2DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData3DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData3DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData3DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData3DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorElasticityLgDeform.py
short/3D/PyLith/trunk/unittests/pytests/faults/TestTimeHistorySlipFn.py
short/3D/PyLith/trunk/unittests/pytests/faults/data/slipfn.timedb
short/3D/PyLith/trunk/unittests/pytests/feassemble/TestElasticityExplicitLgDeform.py
short/3D/PyLith/trunk/unittests/pytests/feassemble/TestElasticityImplicitLgDeform.py
Removed:
short/3D/PyLith/trunk/tests/3d/bar_hex8/
short/3D/PyLith/trunk/tests/3d/bar_tet4/
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGrav.py
Modified:
short/3D/PyLith/trunk/
short/3D/PyLith/trunk/TODO
short/3D/PyLith/trunk/applications/
short/3D/PyLith/trunk/applications/utilities/
short/3D/PyLith/trunk/configure.ac
short/3D/PyLith/trunk/doc/
short/3D/PyLith/trunk/doc/developer/
short/3D/PyLith/trunk/doc/install/
short/3D/PyLith/trunk/doc/presentations/
short/3D/PyLith/trunk/doc/refguide/
short/3D/PyLith/trunk/doc/refguide/doxyconfig
short/3D/PyLith/trunk/doc/releasenotes/
short/3D/PyLith/trunk/doc/userguide/
short/3D/PyLith/trunk/doc/userguide/materials/materials.lyx
short/3D/PyLith/trunk/examples/
short/3D/PyLith/trunk/examples/3d/
short/3D/PyLith/trunk/examples/3d/hex8/
short/3D/PyLith/trunk/examples/3d/tet4/
short/3D/PyLith/trunk/examples/bar_shearwave/
short/3D/PyLith/trunk/examples/bar_shearwave/hex8/
short/3D/PyLith/trunk/examples/bar_shearwave/hex8/output/
short/3D/PyLith/trunk/examples/bar_shearwave/quad4/
short/3D/PyLith/trunk/examples/bar_shearwave/quad4/output/
short/3D/PyLith/trunk/examples/bar_shearwave/tet4/
short/3D/PyLith/trunk/examples/bar_shearwave/tet4/output/
short/3D/PyLith/trunk/examples/bar_shearwave/tri3/
short/3D/PyLith/trunk/examples/bar_shearwave/tri3/output/
short/3D/PyLith/trunk/examples/greensfns/
short/3D/PyLith/trunk/examples/greensfns/hex8/
short/3D/PyLith/trunk/examples/greensfns/hex8/gfimpulses/
short/3D/PyLith/trunk/examples/greensfns/hex8/gfresponses/
short/3D/PyLith/trunk/examples/twocells/
short/3D/PyLith/trunk/examples/twocells/twohex8/
short/3D/PyLith/trunk/examples/twocells/twoquad4/
short/3D/PyLith/trunk/examples/twocells/twotet4-geoproj/
short/3D/PyLith/trunk/examples/twocells/twotet4/
short/3D/PyLith/trunk/examples/twocells/twotri3/
short/3D/PyLith/trunk/libsrc/
short/3D/PyLith/trunk/libsrc/Makefile.am
short/3D/PyLith/trunk/libsrc/bc/
short/3D/PyLith/trunk/libsrc/bc/AbsorbingDampers.cc
short/3D/PyLith/trunk/libsrc/bc/AbsorbingDampers.hh
short/3D/PyLith/trunk/libsrc/bc/BCIntegratorSubMesh.hh
short/3D/PyLith/trunk/libsrc/bc/BoundaryCondition.hh
short/3D/PyLith/trunk/libsrc/bc/BoundaryConditionPoints.cc
short/3D/PyLith/trunk/libsrc/bc/BoundaryConditionPoints.hh
short/3D/PyLith/trunk/libsrc/bc/DirichletBC.hh
short/3D/PyLith/trunk/libsrc/bc/DirichletBoundary.hh
short/3D/PyLith/trunk/libsrc/bc/Neumann.cc
short/3D/PyLith/trunk/libsrc/bc/Neumann.hh
short/3D/PyLith/trunk/libsrc/bc/PointForce.hh
short/3D/PyLith/trunk/libsrc/bc/TimeDependent.hh
short/3D/PyLith/trunk/libsrc/bc/TimeDependentPoints.hh
short/3D/PyLith/trunk/libsrc/faults/
short/3D/PyLith/trunk/libsrc/faults/BruneSlipFn.hh
short/3D/PyLith/trunk/libsrc/faults/CohesiveTopology.hh
short/3D/PyLith/trunk/libsrc/faults/ConstRateSlipFn.hh
short/3D/PyLith/trunk/libsrc/faults/EqKinSrc.hh
short/3D/PyLith/trunk/libsrc/faults/Fault.hh
short/3D/PyLith/trunk/libsrc/faults/FaultCohesive.cc
short/3D/PyLith/trunk/libsrc/faults/FaultCohesive.hh
short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveDyn.cc
short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveDyn.hh
short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveKin.cc
short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveKin.hh
short/3D/PyLith/trunk/libsrc/faults/LiuCosSlipFn.hh
short/3D/PyLith/trunk/libsrc/faults/Makefile.am
short/3D/PyLith/trunk/libsrc/faults/SlipTimeFn.hh
short/3D/PyLith/trunk/libsrc/faults/StepSlipFn.hh
short/3D/PyLith/trunk/libsrc/faults/TopologyOps.hh
short/3D/PyLith/trunk/libsrc/faults/TopologyVisitors.hh
short/3D/PyLith/trunk/libsrc/faults/faultsfwd.hh
short/3D/PyLith/trunk/libsrc/feassemble/
short/3D/PyLith/trunk/libsrc/feassemble/CellGeometry.hh
short/3D/PyLith/trunk/libsrc/feassemble/Constraint.hh
short/3D/PyLith/trunk/libsrc/feassemble/ElasticityExplicit.cc
short/3D/PyLith/trunk/libsrc/feassemble/ElasticityExplicit.hh
short/3D/PyLith/trunk/libsrc/feassemble/ElasticityImplicit.cc
short/3D/PyLith/trunk/libsrc/feassemble/ElasticityImplicit.hh
short/3D/PyLith/trunk/libsrc/feassemble/GeometryHex3D.hh
short/3D/PyLith/trunk/libsrc/feassemble/GeometryLine1D.hh
short/3D/PyLith/trunk/libsrc/feassemble/GeometryLine2D.hh
short/3D/PyLith/trunk/libsrc/feassemble/GeometryLine3D.hh
short/3D/PyLith/trunk/libsrc/feassemble/GeometryPoint1D.hh
short/3D/PyLith/trunk/libsrc/feassemble/GeometryPoint2D.hh
short/3D/PyLith/trunk/libsrc/feassemble/GeometryPoint3D.hh
short/3D/PyLith/trunk/libsrc/feassemble/GeometryQuad2D.hh
short/3D/PyLith/trunk/libsrc/feassemble/GeometryQuad3D.hh
short/3D/PyLith/trunk/libsrc/feassemble/GeometryTet3D.hh
short/3D/PyLith/trunk/libsrc/feassemble/GeometryTri2D.hh
short/3D/PyLith/trunk/libsrc/feassemble/GeometryTri3D.hh
short/3D/PyLith/trunk/libsrc/feassemble/Integrator.cc
short/3D/PyLith/trunk/libsrc/feassemble/Integrator.hh
short/3D/PyLith/trunk/libsrc/feassemble/Integrator.icc
short/3D/PyLith/trunk/libsrc/feassemble/IntegratorElasticity.cc
short/3D/PyLith/trunk/libsrc/feassemble/IntegratorElasticity.hh
short/3D/PyLith/trunk/libsrc/feassemble/Makefile.am
short/3D/PyLith/trunk/libsrc/feassemble/Quadrature.hh
short/3D/PyLith/trunk/libsrc/feassemble/Quadrature0D.hh
short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1D.hh
short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1Din2D.hh
short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1Din3D.hh
short/3D/PyLith/trunk/libsrc/feassemble/Quadrature2D.hh
short/3D/PyLith/trunk/libsrc/feassemble/Quadrature2Din3D.hh
short/3D/PyLith/trunk/libsrc/feassemble/Quadrature3D.hh
short/3D/PyLith/trunk/libsrc/feassemble/QuadratureEngine.hh
short/3D/PyLith/trunk/libsrc/feassemble/QuadratureRefCell.hh
short/3D/PyLith/trunk/libsrc/feassemble/feassemblefwd.hh
short/3D/PyLith/trunk/libsrc/materials/
short/3D/PyLith/trunk/libsrc/materials/EffectiveStress.hh
short/3D/PyLith/trunk/libsrc/materials/ElasticIsotropic3D.hh
short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial.hh
short/3D/PyLith/trunk/libsrc/materials/ElasticPlaneStrain.hh
short/3D/PyLith/trunk/libsrc/materials/ElasticPlaneStress.hh
short/3D/PyLith/trunk/libsrc/materials/ElasticStrain1D.hh
short/3D/PyLith/trunk/libsrc/materials/ElasticStress1D.hh
short/3D/PyLith/trunk/libsrc/materials/GenMaxwellIsotropic3D.hh
short/3D/PyLith/trunk/libsrc/materials/Material.hh
short/3D/PyLith/trunk/libsrc/materials/MaxwellIsotropic3D.hh
short/3D/PyLith/trunk/libsrc/materials/MaxwellPlaneStrain.hh
short/3D/PyLith/trunk/libsrc/materials/Metadata.hh
short/3D/PyLith/trunk/libsrc/materials/PowerLaw3D.hh
short/3D/PyLith/trunk/libsrc/materials/ViscoelasticMaxwell.hh
short/3D/PyLith/trunk/libsrc/materials/materialsfwd.hh
short/3D/PyLith/trunk/libsrc/meshio/
short/3D/PyLith/trunk/libsrc/meshio/BinaryIO.hh
short/3D/PyLith/trunk/libsrc/meshio/CellFilter.hh
short/3D/PyLith/trunk/libsrc/meshio/CellFilterAvg.hh
short/3D/PyLith/trunk/libsrc/meshio/DataWriter.hh
short/3D/PyLith/trunk/libsrc/meshio/DataWriterVTK.cc
short/3D/PyLith/trunk/libsrc/meshio/DataWriterVTK.hh
short/3D/PyLith/trunk/libsrc/meshio/GMVFile.hh
short/3D/PyLith/trunk/libsrc/meshio/GMVFileAscii.hh
short/3D/PyLith/trunk/libsrc/meshio/GMVFileBinary.hh
short/3D/PyLith/trunk/libsrc/meshio/MeshBuilder.hh
short/3D/PyLith/trunk/libsrc/meshio/MeshIO.cc
short/3D/PyLith/trunk/libsrc/meshio/MeshIO.hh
short/3D/PyLith/trunk/libsrc/meshio/MeshIOAscii.hh
short/3D/PyLith/trunk/libsrc/meshio/MeshIOCubit.hh
short/3D/PyLith/trunk/libsrc/meshio/MeshIOLagrit.hh
short/3D/PyLith/trunk/libsrc/meshio/OutputManager.hh
short/3D/PyLith/trunk/libsrc/meshio/OutputSolnSubset.hh
short/3D/PyLith/trunk/libsrc/meshio/PsetFile.hh
short/3D/PyLith/trunk/libsrc/meshio/PsetFileAscii.hh
short/3D/PyLith/trunk/libsrc/meshio/PsetFileBinary.hh
short/3D/PyLith/trunk/libsrc/meshio/UCDFaultFile.hh
short/3D/PyLith/trunk/libsrc/meshio/VertexFilter.hh
short/3D/PyLith/trunk/libsrc/meshio/VertexFilterVecNorm.hh
short/3D/PyLith/trunk/libsrc/problems/
short/3D/PyLith/trunk/libsrc/problems/Formulation.cc
short/3D/PyLith/trunk/libsrc/problems/Formulation.hh
short/3D/PyLith/trunk/libsrc/problems/Makefile.am
short/3D/PyLith/trunk/libsrc/problems/Solver.hh
short/3D/PyLith/trunk/libsrc/problems/SolverLinear.hh
short/3D/PyLith/trunk/libsrc/problems/SolverNonlinear.cc
short/3D/PyLith/trunk/libsrc/problems/SolverNonlinear.hh
short/3D/PyLith/trunk/libsrc/problems/problemsfwd.hh
short/3D/PyLith/trunk/libsrc/topology/
short/3D/PyLith/trunk/libsrc/topology/Distributor.hh
short/3D/PyLith/trunk/libsrc/topology/Field.hh
short/3D/PyLith/trunk/libsrc/topology/FieldBase.hh
short/3D/PyLith/trunk/libsrc/topology/Fields.hh
short/3D/PyLith/trunk/libsrc/topology/Jacobian.hh
short/3D/PyLith/trunk/libsrc/topology/Mesh.cc
short/3D/PyLith/trunk/libsrc/topology/Mesh.hh
short/3D/PyLith/trunk/libsrc/topology/MeshOps.hh
short/3D/PyLith/trunk/libsrc/topology/RefineUniform.hh
short/3D/PyLith/trunk/libsrc/topology/SolutionFields.hh
short/3D/PyLith/trunk/libsrc/topology/SubMesh.cc
short/3D/PyLith/trunk/libsrc/topology/SubMesh.hh
short/3D/PyLith/trunk/libsrc/utils/
short/3D/PyLith/trunk/libsrc/utils/EventLogger.hh
short/3D/PyLith/trunk/libsrc/utils/TestArray.hh
short/3D/PyLith/trunk/libsrc/utils/array.hh
short/3D/PyLith/trunk/libsrc/utils/arrayfwd.hh
short/3D/PyLith/trunk/libsrc/utils/constdefs.h
short/3D/PyLith/trunk/libsrc/utils/lapack.h
short/3D/PyLith/trunk/libsrc/utils/macrodefs.h
short/3D/PyLith/trunk/libsrc/utils/petscerror.h
short/3D/PyLith/trunk/libsrc/utils/petscfwd.h
short/3D/PyLith/trunk/libsrc/utils/sievefwd.hh
short/3D/PyLith/trunk/libsrc/utils/sievetypes.hh
short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveDyn.i
short/3D/PyLith/trunk/modulesrc/faults/Makefile.am
short/3D/PyLith/trunk/modulesrc/faults/faults.i
short/3D/PyLith/trunk/modulesrc/feassemble/
short/3D/PyLith/trunk/modulesrc/feassemble/IntegratorElasticity.i
short/3D/PyLith/trunk/modulesrc/feassemble/Makefile.am
short/3D/PyLith/trunk/modulesrc/feassemble/feassemble.i
short/3D/PyLith/trunk/modulesrc/include/
short/3D/PyLith/trunk/modulesrc/meshio/DataWriterVTK.i
short/3D/PyLith/trunk/pylith/
short/3D/PyLith/trunk/pylith/Makefile.am
short/3D/PyLith/trunk/pylith/faults/LiuCosSlipFn.py
short/3D/PyLith/trunk/pylith/feassemble/__init__.py
short/3D/PyLith/trunk/pylith/meshio/DataWriterVTK.py
short/3D/PyLith/trunk/pylith/meshio/DataWriterVTKMesh.py
short/3D/PyLith/trunk/pylith/meshio/DataWriterVTKSubMesh.py
short/3D/PyLith/trunk/pylith/meshio/DataWriterVTKSubSubMesh.py
short/3D/PyLith/trunk/pylith/tests/PhysicalProperties.py
short/3D/PyLith/trunk/pylith/tests/Solution.py
short/3D/PyLith/trunk/pylith/tests/StateVariables.py
short/3D/PyLith/trunk/pylith/utils/VTKDataReader.py
short/3D/PyLith/trunk/share/
short/3D/PyLith/trunk/templates/
short/3D/PyLith/trunk/tests/
short/3D/PyLith/trunk/tests/1d/
short/3D/PyLith/trunk/tests/1d/line2/
short/3D/PyLith/trunk/tests/1d/line2/TestDislocation.py
short/3D/PyLith/trunk/tests/1d/line3/
short/3D/PyLith/trunk/tests/1d/line3/TestDislocation.py
short/3D/PyLith/trunk/tests/2d/
short/3D/PyLith/trunk/tests/2d/quad4/
short/3D/PyLith/trunk/tests/2d/quad4/Makefile.am
short/3D/PyLith/trunk/tests/2d/quad4/TestDislocation.py
short/3D/PyLith/trunk/tests/2d/quad4/testpylith.py
short/3D/PyLith/trunk/tests/2d/tri3/
short/3D/PyLith/trunk/tests/3dnew/hex8/
short/3D/PyLith/trunk/tests/Makefile.am
short/3D/PyLith/trunk/tests/README
short/3D/PyLith/trunk/tests/petsc/
short/3D/PyLith/trunk/tests/petsc/Makefile.am
short/3D/PyLith/trunk/unittests/
short/3D/PyLith/trunk/unittests/libtests/
short/3D/PyLith/trunk/unittests/libtests/bc/
short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampers.cc
short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampers.hh
short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampersHex8.hh
short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampersLine2.hh
short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampersQuad4.hh
short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampersTet4.hh
short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampersTri3.hh
short/3D/PyLith/trunk/unittests/libtests/bc/data/
short/3D/PyLith/trunk/unittests/libtests/bc/test_bc.cc
short/3D/PyLith/trunk/unittests/libtests/faults/
short/3D/PyLith/trunk/unittests/libtests/faults/Makefile.am
short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKin.cc
short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKin.hh
short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinHex8.hh
short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinLine2.hh
short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinQuad4.hh
short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinQuad4e.hh
short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinSrcsHex8.hh
short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinSrcsLine2.hh
short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinSrcsQuad4.hh
short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinSrcsTet4.hh
short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinSrcsTri3.hh
short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTet4e.hh
short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTet4f.hh
short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTri3.hh
short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTri3d.hh
short/3D/PyLith/trunk/unittests/libtests/faults/TestLiuCosSlipFn.cc
short/3D/PyLith/trunk/unittests/libtests/faults/data/
short/3D/PyLith/trunk/unittests/libtests/faults/data/Makefile.am
short/3D/PyLith/trunk/unittests/libtests/feassemble/
short/3D/PyLith/trunk/unittests/libtests/feassemble/Makefile.am
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit1DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit1DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit1DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit1DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit2DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit2DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit2DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit2DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit3DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit3DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit3DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit3DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegrator.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegrator.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicit.py
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicit.py
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData1DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData1DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData1DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData1DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData2DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData2DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData2DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData2DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData3DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData3DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData3DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData3DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorElasticity.py
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh1DLinear.py
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2DLinear.py
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2DQuadratic.py
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature3DLinear.py
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/generate.sh
short/3D/PyLith/trunk/unittests/libtests/materials/
short/3D/PyLith/trunk/unittests/libtests/materials/data/
short/3D/PyLith/trunk/unittests/libtests/meshio/
short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKMesh.cc
short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKMesh.hh
short/3D/PyLith/trunk/unittests/libtests/meshio/data/
short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_bc_cell_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_bc_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_bc_vertex_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_cell_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_fault_cell_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_fault_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_fault_vertex_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_mat_cell_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_mat_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_mat_vertex_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_surf_cell_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_surf_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_surf_vertex_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_vertex_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/line2_cell_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/line2_mat_cell_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/line2_mat_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/line2_mat_vertex_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/line2_surf_cell_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/line2_surf_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/line2_surf_vertex_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/line2_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/line2_vertex_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/output_cell_filter_t12.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/output_cell_t12.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/output_t12.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/output_vertex_filter_t12.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/output_vertex_t12.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_bc_cell_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_bc_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_bc_vertex_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_cell_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_fault_cell_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_fault_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_fault_vertex_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_mat_cell_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_mat_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_mat_vertex_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_surf_cell_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_surf_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_surf_vertex_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_vertex_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_bc_cell_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_bc_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_bc_vertex_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_cell_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_fault_cell_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_fault_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_fault_vertex_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_mat_cell_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_mat_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_mat_vertex_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_surf_cell_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_surf_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_surf_vertex_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_vertex_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_bc_cell_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_bc_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_bc_vertex_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_cell_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_fault_cell_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_fault_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_fault_vertex_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_mat_cell_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_mat_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_mat_vertex_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_surf_cell_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_surf_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_surf_vertex_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_vertex_t10.vtk
short/3D/PyLith/trunk/unittests/libtests/topology/
short/3D/PyLith/trunk/unittests/libtests/topology/data/
short/3D/PyLith/trunk/unittests/libtests/utils/
short/3D/PyLith/trunk/unittests/pytests/
short/3D/PyLith/trunk/unittests/pytests/bc/
short/3D/PyLith/trunk/unittests/pytests/bc/data/
short/3D/PyLith/trunk/unittests/pytests/faults/
short/3D/PyLith/trunk/unittests/pytests/faults/Makefile.am
short/3D/PyLith/trunk/unittests/pytests/faults/data/
short/3D/PyLith/trunk/unittests/pytests/faults/testfaults.py
short/3D/PyLith/trunk/unittests/pytests/feassemble/
short/3D/PyLith/trunk/unittests/pytests/feassemble/data/
short/3D/PyLith/trunk/unittests/pytests/feassemble/testfeassemble.py
short/3D/PyLith/trunk/unittests/pytests/materials/
short/3D/PyLith/trunk/unittests/pytests/materials/data/
short/3D/PyLith/trunk/unittests/pytests/meshio/
short/3D/PyLith/trunk/unittests/pytests/meshio/data/
short/3D/PyLith/trunk/unittests/pytests/mpi/
short/3D/PyLith/trunk/unittests/pytests/problems/
short/3D/PyLith/trunk/unittests/pytests/problems/data/
short/3D/PyLith/trunk/unittests/pytests/topology/
short/3D/PyLith/trunk/unittests/pytests/topology/data/
short/3D/PyLith/trunk/unittests/pytests/utils/
Log:
Merged pylith-friction branch with trunk.
Property changes on: short/3D/PyLith/trunk
___________________________________________________________________
Name: svn:ignore
- Makefile.in
configure
aux-config
portinfo.in
PyLith.egg-info
autom4te.cache
aclocal.m4
+ Makefile.in
configure
aux-config
portinfo.in
PyLith.egg-info
autom4te.cache
aclocal.m4
.cproject
.pydevproject
.project
Modified: short/3D/PyLith/trunk/TODO
===================================================================
--- short/3D/PyLith/trunk/TODO 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/TODO 2009-12-10 01:52:12 UTC (rev 16094)
@@ -2,6 +2,7 @@
CURRENT ISSUES/PRIORITIES
======================================================================
+<<<<<<< .working
Status?
Field split
@@ -9,7 +10,16 @@
customized SNES line search
Laplacian based preconditioner
+=======
+Data structure to hold label of fault Lagrange vertices and
+conventional vertices
+ array of structure (lagrange, positive, negative, fault)
+
+ no mesh queries? Just loops?
+
+>>>>>>> .merge-right.r16093
----------------------------------------------------------------------
+<<<<<<< .working
VISIT TO GNS SCIENCE
----------------------------------------------------------------------
@@ -53,6 +63,53 @@
Rewrite bulk constitutive models
----------------------------------------------------------------------
+=======
+FRICTION
+----------------------------------------------------------------------
+
+Initial tractions
+ Integrate over fault surface (should be current implementation)
+Constitutive model parameters
+ Integrate over faces to get weighted averages
+
+3. pylith::friction::FrictionModel
+ (base class for fault constitutive models) [Brad]
+ similar to Material + ElasticMaterial
+
+4. Constant friction [Surendra]
+ Simplest friction model with constant coefficient of friction
+
+5. SlipWeakening [Surendra]
+ Slip-weakening friction model
+
+6. Other fault constitutive models [Surendra]
+ Rate- and state-friction with aging law
+ Rate- and state-friction with slip law
+
+----------------------------------------------------------------------
+LUMPED SOLVER
+----------------------------------------------------------------------
+
+S (sensitivity matrix) - assume diagonal (check with assert)
+
+Unit tests
+
+ FaultCohesiveKin
+ adjustSolnLumped
+
+ FaultCohesiveDynL
+ integrateJacobian (lumped)
+ adjustSolnLumped
+
+FaultCohesiveDynL (C++)
+ integrateJacobian (lumped)
+ adjustSolnLumped()
+ compute Lagrange multipliers (zero increment of slip)
+ calls constrainSolnSpace()
+ adjust displacements
+
+----------------------------------------------------------------------
+>>>>>>> .merge-right.r16093
POST RELEASE 1.4
----------------------------------------------------------------------
@@ -73,7 +130,6 @@
CellFilterAvg (_fieldAvg)
VertexFilterVecNorm (_fieldVecNorm)
- TimeHistorySlipFn (final slip, start time)
full-scale testing
2d/quad4
axialtract
@@ -98,9 +154,6 @@
problems C++, SWIG
topology C++, SWIG
-Student
- Create a spatial database for the PREM model
-
1. Savage-Presscott benchmark
Tet mesh
@@ -295,18 +348,6 @@
======================================================================
----------------------------------------------------------------------
-Release 1.4
-----------------------------------------------------------------------
-
- 1. Nonlinear bulk rheologies
-
- Power-law viscoelastic material
-
- 2. Time dependent BCs
-
- 3. Improved PC for kinematic faults
-
-----------------------------------------------------------------------
Release 1.5
----------------------------------------------------------------------
@@ -326,14 +367,6 @@
3. Finite strain
- 4. Higher order cells
-
- Nonisoparametric cells
-
- C++ unit tests for CellGeometry refPtsToGlobal() and jacobian()
- Update quadrature to use CellGeometry refPtsToGlobal() and
- jacobian() Remove CellGeometry jacobian(double_array)
-
5. Uniform global refinement
6. Improved support for spherical geometry in user-interface
@@ -344,6 +377,14 @@
1. Green's functions
+ 2. Higher order cells
+
+ Nonisoparametric cells
+
+ C++ unit tests for CellGeometry refPtsToGlobal() and jacobian()
+ Update quadrature to use CellGeometry refPtsToGlobal() and
+ jacobian() Remove CellGeometry jacobian(double_array)
+
----------------------------------------------------------------------
Release 1.7
----------------------------------------------------------------------
@@ -358,6 +399,9 @@
LONG TERM WISH LIST
----------------------------------------------------------------------
+Student
+ Create a spatial database for the PREM model
+
4. HDF5 output
HDF5 files
Property changes on: short/3D/PyLith/trunk/applications
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/applications/utilities
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Modified: short/3D/PyLith/trunk/configure.ac
===================================================================
--- short/3D/PyLith/trunk/configure.ac 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/configure.ac 2009-12-10 01:52:12 UTC (rev 16094)
@@ -284,6 +284,8 @@
tests/2d/Makefile
tests/2d/tri3/Makefile
tests/2d/quad4/Makefile
+ tests/3dnew/hex8/Makefile
+ tests/petsc/Makefile
doc/Makefile
doc/developer/Makefile
doc/install/Makefile
Property changes on: short/3D/PyLith/trunk/doc
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/doc/developer
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/doc/install
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/doc/presentations
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/doc/refguide
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Modified: short/3D/PyLith/trunk/doc/refguide/doxyconfig
===================================================================
--- short/3D/PyLith/trunk/doc/refguide/doxyconfig 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/doc/refguide/doxyconfig 2009-12-10 01:52:12 UTC (rev 16094)
@@ -23,7 +23,7 @@
# This could be handy for archiving the generated documentation or
# if some version control system is used.
-PROJECT_NUMBER = 1.1
+PROJECT_NUMBER = 1.4.2
# The OUTPUT_DIRECTORY tag is used to specify the (relative or absolute)
# base path where the generated documentation will be put.
@@ -53,16 +53,6 @@
OUTPUT_LANGUAGE = English
-# This tag can be used to specify the encoding used in the generated output.
-# The encoding is not always determined by the language that is chosen,
-# but also whether or not the output is meant for Windows or non-Windows users.
-# In case there is a difference, setting the USE_WINDOWS_ENCODING tag to YES
-# forces the Windows encoding (this is the default for the Windows binary),
-# whereas setting the tag to NO uses a Unix-style encoding (the default for
-# all platforms other than Windows).
-
-USE_WINDOWS_ENCODING = NO
-
# If the BRIEF_MEMBER_DESC tag is set to YES (the default) Doxygen will
# include brief member descriptions after the members that are listed in
# the file and class documentation (similar to JavaDoc).
@@ -70,10 +60,11 @@
BRIEF_MEMBER_DESC = YES
-# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will prepend
-# the brief description of a member or function before the detailed description.
-# Note: if both HIDE_UNDOC_MEMBERS and BRIEF_MEMBER_DESC are set to NO, the
-# brief descriptions will be completely suppressed.
+# If the REPEAT_BRIEF tag is set to YES (the default) Doxygen will
+# prepend the brief description of a member or function before the
+# detailed description. Note: if both HIDE_UNDOC_MEMBERS and
+# BRIEF_MEMBER_DESC are set to NO, the brief descriptions will be
+# completely suppressed.
REPEAT_BRIEF = YES
@@ -115,7 +106,7 @@
# If left blank the directory from which doxygen is run is used as the
# path to strip.
-STRIP_FROM_PATH = ../
+STRIP_FROM_PATH = ../../
# The STRIP_FROM_INC_PATH tag can be used to strip a user-defined part of
# the path mentioned in the documentation of a class, which tells
@@ -148,13 +139,6 @@
MULTILINE_CPP_IS_BRIEF = NO
-# If the DETAILS_AT_TOP tag is set to YES then Doxygen
-# will output the detailed description near the top, like JavaDoc.
-# If set to NO, the detailed description appears after the member
-# documentation.
-
-DETAILS_AT_TOP = NO
-
# If the INHERIT_DOCS tag is set to YES (the default) then an undocumented
# member inherits the documentation from any documented member that it
# re-implements.
@@ -188,19 +172,20 @@
OPTIMIZE_OUTPUT_FOR_C = NO
-# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of Java
-# sources only. Doxygen will then generate output that is more tailored for Java.
-# For instance, namespaces will be presented as packages, qualified scopes
-# will look different, etc.
+# Set the OPTIMIZE_OUTPUT_JAVA tag to YES if your project consists of
+# Java sources only. Doxygen will then generate output that is more
+# tailored for Java. For instance, namespaces will be presented as
+# packages, qualified scopes will look different, etc.
OPTIMIZE_OUTPUT_JAVA = NO
-# If you use STL classes (i.e. std::string, std::vector, etc.) but do not want to
-# include (a tag file for) the STL sources as input, then you should
-# set this tag to YES in order to let doxygen match functions declarations and
-# definitions whose arguments contain STL classes (e.g. func(std::string); v.s.
-# func(std::string) {}). This also make the inheritance and collaboration
-# diagrams that involve STL classes more complete and accurate.
+# If you use STL classes (i.e. std::string, std::vector, etc.) but do
+# not want to include (a tag file for) the STL sources as input, then
+# you should set this tag to YES in order to let doxygen match
+# functions declarations and definitions whose arguments contain STL
+# classes (e.g. func(std::string); v.s. func(std::string) {}). This
+# also make the inheritance and collaboration diagrams that involve
+# STL classes more complete and accurate.
BUILTIN_STL_SUPPORT = NO
@@ -360,12 +345,12 @@
# disable (NO) the deprecated list. This list is created by putting
# \deprecated commands in the documentation.
-GENERATE_DEPRECATEDLIST= YES
+GENERATE_DEPRECATEDLIST = YES
# The ENABLED_SECTIONS tag can be used to enable conditional
# documentation sections, marked by \if sectionname ... \endif.
-ENABLED_SECTIONS =
+ENABLED_SECTIONS = YES
# The MAX_INITIALIZER_LINES tag determines the maximum number of lines
# the initial value of a variable or define consists of for it to appear in
@@ -383,19 +368,20 @@
SHOW_USED_FILES = YES
-# If the sources in your project are distributed over multiple directories
-# then setting the SHOW_DIRECTORIES tag to YES will show the directory hierarchy
-# in the documentation. The default is NO.
+# If the sources in your project are distributed over multiple
+# directories then setting the SHOW_DIRECTORIES tag to YES will show
+# the directory hierarchy in the documentation. The default is NO.
-SHOW_DIRECTORIES = NO
+SHOW_DIRECTORIES = YES
-# The FILE_VERSION_FILTER tag can be used to specify a program or script that
-# doxygen should invoke to get the current version for each file (typically from the
-# version control system). Doxygen will invoke the program by executing (via
-# popen()) the command <command> <input-file>, where <command> is the value of
-# the FILE_VERSION_FILTER tag, and <input-file> is the name of an input file
-# provided by doxygen. Whatever the program writes to standard output
-# is used as the file version. See the manual for examples.
+# The FILE_VERSION_FILTER tag can be used to specify a program or
+# script that doxygen should invoke to get the current version for
+# each file (typically from the version control system). Doxygen will
+# invoke the program by executing (via popen()) the command <command>
+# <input-file>, where <command> is the value of the
+# FILE_VERSION_FILTER tag, and <input-file> is the name of an input
+# file provided by doxygen. Whatever the program writes to standard
+# output is used as the file version. See the manual for examples.
FILE_VERSION_FILTER =
@@ -433,7 +419,7 @@
# wrong or incomplete parameter documentation, but not about the absence of
# documentation.
-WARN_NO_PARAMDOC = NO
+WARN_NO_PARAMDOC = YES
# The WARN_FORMAT tag determines the format of the warning messages that
# doxygen can produce. The string should contain the $file, $line, and $text
@@ -454,12 +440,12 @@
# configuration options related to the input files
#---------------------------------------------------------------------------
-# The INPUT tag can be used to specify the files and/or directories that contain
-# documented source files. You may enter file names like "myfile.cpp" or
-# directories like "/usr/src/myproject". Separate the files or directories
-# with spaces.
+# The INPUT tag can be used to specify the files and/or directories
+# that contain documented source files. You may enter file names like
+# "myfile.cpp" or directories like "/usr/src/myproject". Separate the
+# files or directories with spaces.
-INPUT = ../../
+INPUT = ../../libsrc ../../modulesrc ../../pylith
# If the value of the INPUT tag contains directories, you can use the
# FILE_PATTERNS tag to specify one or more wildcard pattern (like *.cpp
@@ -514,7 +500,7 @@
# commands irrespective of the value of the RECURSIVE tag.
# Possible values are YES and NO. If left blank NO is used.
-EXAMPLE_RECURSIVE = NO
+EXAMPLE_RECURSIVE = YES
# The IMAGE_PATH tag can be used to specify one or more files or
# directories that contain image that are included in the documentation (see
@@ -729,7 +715,7 @@
# Netscape 6.0+, Internet explorer 5.0+, or Konqueror). Windows users are
# probably better off using the HTML help feature.
-GENERATE_TREEVIEW = NO
+GENERATE_TREEVIEW = YES
# If the treeview is enabled (see GENERATE_TREEVIEW) then this tag can be
# used to set the initial width (in pixels) of the frame in which the tree
@@ -1126,7 +1112,7 @@
# If set to YES, the inheritance and collaboration graphs will show the
# relations between templates and their instances.
-TEMPLATE_RELATIONS = NO
+TEMPLATE_RELATIONS = YES
# If the ENABLE_PREPROCESSING, SEARCH_INCLUDES, INCLUDE_GRAPH, and HAVE_DOT
# tags are set to YES then doxygen will generate a graph for each documented
@@ -1187,22 +1173,6 @@
DOTFILE_DIRS =
-# The MAX_DOT_GRAPH_WIDTH tag can be used to set the maximum allowed width
-# (in pixels) of the graphs generated by dot. If a graph becomes larger than
-# this value, doxygen will try to truncate the graph, so that it fits within
-# the specified constraint. Beware that most browsers cannot cope with very
-# large images.
-
-MAX_DOT_GRAPH_WIDTH = 1024
-
-# The MAX_DOT_GRAPH_HEIGHT tag can be used to set the maximum allows height
-# (in pixels) of the graphs generated by dot. If a graph becomes larger than
-# this value, doxygen will try to truncate the graph, so that it fits within
-# the specified constraint. Beware that most browsers cannot cope with very
-# large images.
-
-MAX_DOT_GRAPH_HEIGHT = 1024
-
# The MAX_DOT_GRAPH_DEPTH tag can be used to set the maximum depth of the
# graphs generated by dot. A depth value of 3 means that only nodes reachable
# from the root by following a path via at most 3 edges will be shown. Nodes
Property changes on: short/3D/PyLith/trunk/doc/releasenotes
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Copied: short/3D/PyLith/trunk/doc/releasenotes/announce_v1.5.0.txt (from rev 16093, short/3D/PyLith/branches/pylith-friction/doc/releasenotes/announce_v1.5.0.txt)
===================================================================
--- short/3D/PyLith/trunk/doc/releasenotes/announce_v1.5.0.txt (rev 0)
+++ short/3D/PyLith/trunk/doc/releasenotes/announce_v1.5.0.txt 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,37 @@
+Greetings,
+
+I am pleased to announce the release of PyLith 1.5.0, a finite-element
+code designed to solve dynamic elastic problems and quasi-static
+viscoelastic problems in tectonic deformation.
+
+This release adds several new features to PyLith, including (1) fault
+friction with several widely-used fault constitutive models, (2) an
+optimized solver for explicit time-stepping with a lumped Jacobian
+sparse matrix, (3) Total Langrangian formulation for large
+deformations, (4) use of scientific notation in VTK output files with
+user-specified precision, (5) ??, (6) ??, and (7) ??. We encourage all
+users of previous PyLith releases to switch to this latest release.
+
+We strongly recommend all users of previous PyLith releases to switch
+to this latest release. Switching from v1.4.0 or v1.4.1 to v1.4.2 only
+requires changes to parameter files when using adaptive time stepping
+with a non-default stability factor (see the release notes below for
+details). See the README file for changes required to switch to the
+v1.4.x release series from previous versions.
+
+You can download the source code and binaries from
+
+ http://geodynamics.org/cig/software/packages/short/pylith
+
+Detailed installation instructions are in the User Manual with example
+installation procedures for a few platforms in the bundled doc/install
+directory.
+
+
+RELEASE NOTES
+
+ *
+
+ * Bug fixes
+
+ -
Property changes on: short/3D/PyLith/trunk/doc/userguide
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Modified: short/3D/PyLith/trunk/doc/userguide/materials/materials.lyx
===================================================================
--- short/3D/PyLith/trunk/doc/userguide/materials/materials.lyx 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/doc/userguide/materials/materials.lyx 2009-12-10 01:52:12 UTC (rev 16094)
@@ -1008,7 +1008,7 @@
C_{1133} & C_{2233} & C_{3333} & C_{3312} & C_{3323} & C_{3313}\\
C_{1112} & C_{2212} & C_{3312} & C_{1212} & C_{1223} & C_{1213}\\
C_{1123} & C_{2223} & C_{3323} & C_{1223} & C_{2323} & C_{2313}\\
-C_{1113} & C_{2213} & C_{3313} & C_{1213} & C_{1223} & C_{1313}\end{array}\right]\:.\label{eq:3}\end{gather}
+C_{1113} & C_{2213} & C_{3313} & C_{1213} & C_{2313} & C_{1313}\end{array}\right]\:.\label{eq:3}\end{gather}
\end_inset
Property changes on: short/3D/PyLith/trunk/examples
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/examples/3d
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/examples/3d/hex8
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/examples/3d/tet4
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/examples/bar_shearwave
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/examples/bar_shearwave/hex8
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/examples/bar_shearwave/hex8/output
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/examples/bar_shearwave/quad4
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/examples/bar_shearwave/quad4/output
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/examples/bar_shearwave/tet4
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/examples/bar_shearwave/tet4/output
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/examples/bar_shearwave/tri3
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/examples/bar_shearwave/tri3/output
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/examples/greensfns
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/examples/greensfns/hex8
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/examples/greensfns/hex8/gfimpulses
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/examples/greensfns/hex8/gfresponses
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/examples/twocells
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/examples/twocells/twohex8
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/examples/twocells/twoquad4
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/examples/twocells/twotet4
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/examples/twocells/twotet4-geoproj
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/examples/twocells/twotri3
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/libsrc
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Modified: short/3D/PyLith/trunk/libsrc/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/libsrc/Makefile.am 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/Makefile.am 2009-12-10 01:52:12 UTC (rev 16094)
@@ -38,12 +38,14 @@
faults/StepSlipFn.cc \
faults/ConstRateSlipFn.cc \
faults/BruneSlipFn.cc \
+ faults/TimeHistorySlipFn.cc \
faults/LiuCosSlipFn.cc \
faults/EqKinSrc.cc \
faults/TopologyOps.cc \
faults/CohesiveTopology.cc \
faults/FaultCohesive.cc \
faults/FaultCohesiveDyn.cc \
+ faults/FaultCohesiveDynL.cc \
faults/FaultCohesiveKin.cc \
feassemble/CellGeometry.cc \
feassemble/Constraint.cc \
@@ -71,6 +73,9 @@
feassemble/IntegratorElasticity.cc \
feassemble/ElasticityImplicit.cc \
feassemble/ElasticityExplicit.cc \
+ feassemble/IntegratorElasticityLgDeform.cc \
+ feassemble/ElasticityImplicitLgDeform.cc \
+ feassemble/ElasticityExplicitLgDeform.cc \
materials/Metadata.cc \
materials/Material.cc \
materials/ElasticMaterial.cc \
@@ -101,6 +106,7 @@
problems/Solver.cc \
problems/SolverLinear.cc \
problems/SolverNonlinear.cc \
+ problems/SolverLumped.cc \
topology/FieldBase.cc \
topology/Jacobian.cc \
topology/Mesh.cc \
Property changes on: short/3D/PyLith/trunk/libsrc/bc
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Modified: short/3D/PyLith/trunk/libsrc/bc/AbsorbingDampers.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/bc/AbsorbingDampers.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/bc/AbsorbingDampers.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -480,6 +480,116 @@
} // integrateJacobian
// ----------------------------------------------------------------------
+// Integrate contributions to Jacobian matrix (A) associated with
+void
+pylith::bc::AbsorbingDampers::integrateJacobian(
+ const topology::Field<topology::Mesh>& jacobian,
+ const double t,
+ topology::SolutionFields* const fields)
+{ // integrateJacobian
+ assert(0 != _quadrature);
+ assert(0 != _boundaryMesh);
+ assert(0 != fields);
+
+ // Get cell geometry information that doesn't depend on cell
+ const int numQuadPts = _quadrature->numQuadPts();
+ const double_array& quadWts = _quadrature->quadWts();
+ assert(quadWts.size() == numQuadPts);
+ const int numBasis = _quadrature->numBasis();
+ const int spaceDim = _quadrature->spaceDim();
+
+ // Get cell information
+ const ALE::Obj<SieveSubMesh>& sieveSubMesh = _boundaryMesh->sieveMesh();
+ assert(!sieveSubMesh.isNull());
+ const ALE::Obj<SieveSubMesh::label_sequence>& cells =
+ sieveSubMesh->heightStratum(1);
+ assert(!cells.isNull());
+ const SieveSubMesh::label_sequence::iterator cellsBegin = cells->begin();
+ const SieveSubMesh::label_sequence::iterator cellsEnd = cells->end();
+
+ // Get parameters used in integration.
+ const double dt = _dt;
+ assert(dt > 0);
+
+ // Allocate matrix for cell values.
+ _initCellMatrix();
+ _initCellVector();
+
+ // Get sections
+ const ALE::Obj<SubRealSection>& dampersSection =
+ _parameters->get("damping constants").section();
+ assert(!dampersSection.isNull());
+
+ const topology::Field<topology::Mesh>& solution = fields->solution();
+ const ALE::Obj<SieveMesh>& sieveMesh = solution.mesh().sieveMesh();
+ assert(!sieveMesh.isNull());
+ const ALE::Obj<RealSection>& solutionSection = solution.section();
+ assert(!solutionSection.isNull());
+
+ const ALE::Obj<RealSection>& jacobianSection = jacobian.section();
+ assert(!jacobianSection.isNull());
+ topology::Mesh::UpdateAddVisitor jacobianVisitor(*jacobianSection,
+ &_cellVector[0]);
+
+#if !defined(PRECOMPUTE_GEOMETRY)
+ double_array coordinatesCell(numBasis*spaceDim);
+ const ALE::Obj<RealSection>& coordinates =
+ sieveSubMesh->getRealSection("coordinates");
+ RestrictVisitor coordsVisitor(*coordinates,
+ coordinatesCell.size(), &coordinatesCell[0]);
+#endif
+
+ for (SieveSubMesh::label_sequence::iterator c_iter=cellsBegin;
+ c_iter != cellsEnd;
+ ++c_iter) {
+ // Compute geometry information for current cell
+#if defined(PRECOMPUTE_GEOMETRY)
+ _quadrature->retrieveGeometry(*c_iter);
+#else
+ coordsVisitor.clear();
+ sieveSubMesh->restrictClosure(*c_iter, coordsVisitor);
+ _quadrature->computeGeometry(coordinatesCell, *c_iter);
+#endif
+
+ // Reset element vector to zero
+ _resetCellMatrix();
+
+ // Get cell geometry information that depends on cell
+ const double_array& basis = _quadrature->basis();
+ const double_array& jacobianDet = _quadrature->jacobianDet();
+
+ assert(numQuadPts*spaceDim == dampersSection->getFiberDimension(*c_iter));
+ const double* dampingConstsCell = dampersSection->restrictPoint(*c_iter);
+
+ // Compute Jacobian for absorbing bc terms
+ for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
+ const double wt =
+ quadWts[iQuad] * jacobianDet[iQuad] / (2.0 * dt);
+ for (int iBasis=0, iQ=iQuad*numBasis; iBasis < numBasis; ++iBasis) {
+ const double valI = wt*basis[iQ+iBasis];
+ for (int jBasis=0; jBasis < numBasis; ++jBasis) {
+ const double valIJ = valI * basis[iQ+jBasis];
+ for (int iDim=0; iDim < spaceDim; ++iDim) {
+ const int iBlock = (iBasis*spaceDim + iDim) * (numBasis*spaceDim);
+ const int jBlock = (jBasis*spaceDim + iDim);
+ _cellMatrix[iBlock+jBlock] +=
+ valIJ * dampingConstsCell[iQuad*spaceDim+iDim];
+ } // for
+ } // for
+ } // for
+ } // for
+ PetscLogFlops(numQuadPts*(3+numBasis*(1+numBasis*(1+2*spaceDim))));
+ _lumpCellMatrix();
+
+ // Assemble cell contribution into lumped matrix.
+ jacobianVisitor.clear();
+ sieveSubMesh->updateClosure(*c_iter, jacobianVisitor);
+ } // for
+
+ _needNewJacobian = false;
+} // integrateJacobian
+
+// ----------------------------------------------------------------------
// Verify configuration is acceptable.
void
pylith::bc::AbsorbingDampers::verifyConfiguration(const topology::Mesh& mesh) const
Modified: short/3D/PyLith/trunk/libsrc/bc/AbsorbingDampers.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/bc/AbsorbingDampers.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/bc/AbsorbingDampers.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -54,6 +54,7 @@
#include "BCIntegratorSubMesh.hh" // ISA BCIntegratorSubMesh
// AbsorbingDampers ------------------------------------------------------
+/// Absorbing boundary with simple dampers.
class pylith::bc::AbsorbingDampers : public BCIntegratorSubMesh
{ // class AbsorbingDampers
friend class TestAbsorbingDampers; // unit testing
@@ -106,6 +107,17 @@
const double t,
topology::SolutionFields* const fields);
+ /** Integrate contributions to Jacobian matrix (A) associated with
+ * operator.
+ *
+ * @param jacobian Jacobian of system.
+ * @param t Current time
+ * @param fields Solution fields
+ */
+ void integrateJacobian(const topology::Field<topology::Mesh>& jacobian,
+ const double t,
+ topology::SolutionFields* const fields);
+
/** Verify configuration is acceptable.
*
* @param mesh Finite-element mesh
Modified: short/3D/PyLith/trunk/libsrc/bc/BCIntegratorSubMesh.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/bc/BCIntegratorSubMesh.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/bc/BCIntegratorSubMesh.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -32,6 +32,8 @@
#include "pylith/feassemble/Integrator.hh" // ISA Integrator
// BCIntegratorSubMesh ----------------------------------------------
+/// @brief Abstract base classs for BoundaryCondition object with
+/// boundary condition applied at a simple-connect surface (submesh).
class pylith::bc::BCIntegratorSubMesh : public BoundaryCondition,
public feassemble::Integrator<feassemble::Quadrature<topology::SubMesh> >
{ // class BCIntegratorSubMesh
Modified: short/3D/PyLith/trunk/libsrc/bc/BoundaryCondition.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/bc/BoundaryCondition.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/bc/BoundaryCondition.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -32,6 +32,7 @@
#include <string> // HASA std::string
// BoundaryCondition ----------------------------------------------------
+/// Abstract base class for boundary conditions.
class pylith::bc::BoundaryCondition
{ // class BoundaryCondition
friend class TestBoundaryCondition; // unit testing
Modified: short/3D/PyLith/trunk/libsrc/bc/BoundaryConditionPoints.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/bc/BoundaryConditionPoints.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/bc/BoundaryConditionPoints.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -67,13 +67,14 @@
const ALE::Obj<SieveMesh>& sieveMesh = mesh.sieveMesh();
assert(!sieveMesh.isNull());
- const ALE::Obj<SieveMesh::int_section_type>& groupField =
- sieveMesh->getIntSection(_label);
- if (groupField.isNull()) {
+ if (!sieveMesh->hasIntSection(_label)) {
std::ostringstream msg;
msg << "Could not find group of points '" << _label << "' in mesh.";
throw std::runtime_error(msg.str());
} // if
+
+ const ALE::Obj<SieveMesh::int_section_type>& groupField =
+ sieveMesh->getIntSection(_label);
assert(!groupField.isNull());
const chart_type& chart = groupField->getChart();
const chart_type::const_iterator& chartEnd = chart.end();
Modified: short/3D/PyLith/trunk/libsrc/bc/BoundaryConditionPoints.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/bc/BoundaryConditionPoints.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/bc/BoundaryConditionPoints.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -27,6 +27,9 @@
#include "pylith/utils/array.hh" // HASA int_array
// BoundaryConditionPoints ----------------------------------------------
+/** @brief C++ abstract base class for BoundaryCondition object with
+ * boundary condition applied at a set of points.
+ */
class pylith::bc::BoundaryConditionPoints : public BoundaryCondition
{ // class BoundaryCondition
friend class TestBoundaryConditionPoints; // unit testing
Modified: short/3D/PyLith/trunk/libsrc/bc/DirichletBC.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/bc/DirichletBC.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/bc/DirichletBC.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -26,6 +26,8 @@
#include "pylith/utils/array.hh" // HASA int_array
// DirichletBC ------------------------------------------------------
+/// @brief Dirichlet (prescribed values at degrees of freedom) boundary
+/// conditions with a set of points.
class pylith::bc::DirichletBC : public TimeDependentPoints,
public feassemble::Constraint
{ // class DirichletBC
Modified: short/3D/PyLith/trunk/libsrc/bc/DirichletBoundary.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/bc/DirichletBoundary.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/bc/DirichletBoundary.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -23,6 +23,8 @@
#include "DirichletBC.hh" // ISA DirichletBC
// DirichletBoundary ----------------------------------------------------
+/// @brief Dirichlet (prescribed values at degrees of freedom) boundary
+/// conditions with points on a boundary.
class pylith::bc::DirichletBoundary : public DirichletBC
{ // class DirichletBoundary
friend class TestDirichletBoundary; // unit testing
Modified: short/3D/PyLith/trunk/libsrc/bc/Neumann.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/bc/Neumann.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/bc/Neumann.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -165,16 +165,6 @@
} // integrateResidual
// ----------------------------------------------------------------------
-// Integrate contributions to Jacobian matrix (A) associated with
-void
-pylith::bc::Neumann::integrateJacobian(topology::Jacobian* jacobian,
- const double t,
- topology::SolutionFields* const fields)
-{ // integrateJacobian
- _needNewJacobian = false;
-} // integrateJacobian
-
-// ----------------------------------------------------------------------
// Verify configuration is acceptable.
void
pylith::bc::Neumann::verifyConfiguration(const topology::Mesh& mesh) const
Modified: short/3D/PyLith/trunk/libsrc/bc/Neumann.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/bc/Neumann.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/bc/Neumann.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -24,8 +24,10 @@
#include "TimeDependent.hh" // ISA TimeDependent
// Neumann ------------------------------------------------------
+/// @brief Time dependent Neumann (traction) boundary conditions
+/// applied to a simply-connected boundary.
class pylith::bc::Neumann : public BCIntegratorSubMesh,
- public TimeDependent
+ public TimeDependent
{ // class Neumann
friend class TestNeumann; // unit testing
@@ -60,17 +62,6 @@
const double t,
topology::SolutionFields* const fields);
- /** Integrate contributions to Jacobian matrix (A) associated with
- * operator.
- *
- * @param jacobian Sparse matrix for Jacobian of system.
- * @param t Current time
- * @param fields Solution fields
- */
- void integrateJacobian(topology::Jacobian* jacobian,
- const double t,
- topology::SolutionFields* const fields);
-
/** Verify configuration is acceptable.
*
* @param mesh Finite-element mesh
Modified: short/3D/PyLith/trunk/libsrc/bc/PointForce.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/bc/PointForce.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/bc/PointForce.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -25,6 +25,7 @@
#include "pylith/feassemble/Integrator.hh" // ISA Integrator
// PointForce ------------------------------------------------------
+/// Point forces applied at vertices.
class pylith::bc::PointForce : public TimeDependentPoints,
public feassemble::Integrator<feassemble::Quadrature<topology::Mesh> >
{ // class PointForce
Modified: short/3D/PyLith/trunk/libsrc/bc/TimeDependent.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/bc/TimeDependent.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/bc/TimeDependent.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -12,7 +12,8 @@
/** @file libsrc/bc/TimeDependent.hh
*
- * @brief C++ implementation of point force on vertices.
+ * @brief C++ Abstract base class for time-dependent boundary
+ * conditions.
*/
#if !defined(pylith_bc_timedependent_hh)
@@ -27,6 +28,7 @@
#include "spatialdata/units/unitsfwd.hh" // USES Nondimensional
// TimeDependent ------------------------------------------------------
+/// Abstract base class for time-dependent boundary conditions.
class pylith::bc::TimeDependent
{ // class TimeDependent
friend class TestTimeDependent; // unit testing
Modified: short/3D/PyLith/trunk/libsrc/bc/TimeDependentPoints.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/bc/TimeDependentPoints.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/bc/TimeDependentPoints.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -26,6 +26,7 @@
#include "pylith/utils/array.hh" // HASA int_array
// TimeDependentPoints ------------------------------------------------------
+/// Time dependent boundary conditions applied to a set of vertices.
class pylith::bc::TimeDependentPoints : public BoundaryConditionPoints,
public TimeDependent
{ // class TimeDependentPoints
Property changes on: short/3D/PyLith/trunk/libsrc/faults
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Modified: short/3D/PyLith/trunk/libsrc/faults/BruneSlipFn.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/BruneSlipFn.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/faults/BruneSlipFn.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -13,12 +13,6 @@
/** @file libsrc/faults/BruneSlipFn.hh
*
* @brief C++ implementation of Brune slip time function.
- *
- * Slip time function follows the integral of Brune's (1970) far-field
- * time function.
- *
- * Normalize slip = 1 - exp(-t/tau)(1 + t/tau),
- * where tau = finalSlip / (exp(1.0) * peakRate)
*/
#if !defined(pylith_faults_bruneslipfn_hh)
@@ -32,6 +26,14 @@
#include "pylith/utils/array.hh" // HASA double_array
// BruneSlipFn ----------------------------------------------------------
+/** @brief Brune slip-time function.
+ *
+ * Slip time function follows the integral of Brune's (1970) far-field
+ * time function.
+ *
+ * Normalize slip = 1 - exp(-t/tau)(1 + t/tau),
+ * where tau = finalSlip / (exp(1.0) * peakRate)
+ */
class pylith::faults::BruneSlipFn : public SlipTimeFn
{ // class BruneSlipFn
friend class TestBruneSlipFn; // unit testing
Modified: short/3D/PyLith/trunk/libsrc/faults/CohesiveTopology.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/CohesiveTopology.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/faults/CohesiveTopology.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -25,6 +25,7 @@
#include "pylith/utils/sievetypes.hh" // USE ALE::Obj
// CohesiveTopology -----------------------------------------------------
+/// Creation of cohesive cells.
class pylith::faults::CohesiveTopology
{ // class CohesiveTopology
@@ -39,8 +40,10 @@
* @param faultMesh Finite-element mesh of fault (output).
* @param faultBoundary Finite-element mesh of fault boundary (output).
* @param mesh Finite-element mesh of domain.
- * @param faultVertices Vertices assocated with faces of cells defining
- * fault surface
+ * @param groupdField Group of vertices assocated with faces of
+ * cells defining fault surface
+ * @param flipFault Flag indicating to flip positive/negative sides
+ * of the fault.
*/
static
void createFault(topology::SubMesh* faultMesh,
Modified: short/3D/PyLith/trunk/libsrc/faults/ConstRateSlipFn.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/ConstRateSlipFn.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/faults/ConstRateSlipFn.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -13,11 +13,6 @@
/** @file libsrc/faults/ConstRateSlipFn.hh
*
* @brief C++ implementation of a constant slip rate slip time function.
- *
- * Slip time function follows the integral of constant slip rate slip
- * time function.
- *
- * Normalized slip = sliprate * (t - t0)
*/
#if !defined(pylith_faults_constrateslipfn_hh)
@@ -31,6 +26,13 @@
#include "pylith/utils/array.hh" // HASA double_array
// ConstRateTimeFn ------------------------------------------------------
+/** @brief Constant slip rate slip-time function.
+ *
+ * Slip time function follows the integral of constant slip rate slip
+ * time function.
+ *
+ * Normalized slip = sliprate * (t - t0)
+ */
class pylith::faults::ConstRateSlipFn : public SlipTimeFn
{ // class ConstRateSlipFn
friend class TestConstRateSlipFn; // unit testing
@@ -63,7 +65,6 @@
/** Initialize slip time function.
*
* @param faultMesh Finite-element mesh of fault.
- * @param cs Coordinate system for mesh
* @param normalizer Nondimensionalization of scales.
* @param originTime Origin time for earthquake source.
*/
Modified: short/3D/PyLith/trunk/libsrc/faults/EqKinSrc.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/EqKinSrc.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/faults/EqKinSrc.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -14,9 +14,6 @@
*
* @brief C++ object for managing parameters for a kinematic
* earthquake source.
- *
- * EqKinSrc is responsible for providing the value of slip at time t
- * over a fault surface.
*/
#if !defined(pylith_faults_eqkinsrc_hh)
@@ -30,6 +27,11 @@
#include "spatialdata/units/unitsfwd.hh" // USES Nondimensional
// EqKinSrc -------------------------------------------------------------
+/** @brief Kinematic earthquake source.
+ *
+ * EqKinSrc is responsible for providing the value of slip at time t
+ * over a fault surface.
+ */
class pylith::faults::EqKinSrc
{ // class EqKinSrc
friend class TestEqKinSrc; // unit testing
Modified: short/3D/PyLith/trunk/libsrc/faults/Fault.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/Fault.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/faults/Fault.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -12,13 +12,6 @@
/** @file libsrc/faults/Fault.hh
*
- * @brief C++ abstract base class for Fault object.
- *
- * Interface definition for fault.
- *
- * The fault id is associated with the material-id for the fault and
- * the label is associated with the group of vertices that define the
- * fault surface.
*/
#if !defined(pylith_faults_fault_hh)
@@ -35,6 +28,15 @@
#include <string> // HASA std::string
// Fault ----------------------------------------------------------------
+/**
+ * @brief C++ abstract base class for Fault object.
+ *
+ * Interface definition for fault.
+ *
+ * The fault id is associated with the material-id for the fault and
+ * the label is associated with the group of vertices that define the
+ * fault surface.
+ */
class pylith::faults::Fault
{ // class Fault
friend class TestFault; // unit testing
Modified: short/3D/PyLith/trunk/libsrc/faults/FaultCohesive.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/FaultCohesive.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/faults/FaultCohesive.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -162,289 +162,5 @@
} // if/else
} // adjustTopology
-// ----------------------------------------------------------------------
-// Calculate orientation at fault vertices.
-void
-pylith::faults::FaultCohesive::_calcOrientation(const double upDir[3],
- const double normalDir[3])
-{ // _calcOrientation
- assert(0 != upDir);
- assert(0 != normalDir);
- assert(0 != _faultMesh);
- assert(0 != _fields);
- double_array upDirArray(upDir, 3);
-
- // Get vertices in fault mesh.
- const ALE::Obj<SieveSubMesh>& faultSieveMesh = _faultMesh->sieveMesh();
- assert(!faultSieveMesh.isNull());
- const ALE::Obj<SieveSubMesh::label_sequence>& vertices =
- faultSieveMesh->depthStratum(0);
- const SieveSubMesh::label_sequence::iterator verticesBegin = vertices->begin();
- const SieveSubMesh::label_sequence::iterator verticesEnd = vertices->end();
-
- // Containers for orientation information.
- const int cohesiveDim = _faultMesh->dimension();
- const int numBasis = _quadrature->numBasis();
- const int spaceDim = _quadrature->spaceDim();
- const int orientationSize = spaceDim*spaceDim;
- const feassemble::CellGeometry& cellGeometry = _quadrature->refGeometry();
- const double_array& verticesRef = cellGeometry.vertices();
- const int jacobianSize = (cohesiveDim > 0) ? spaceDim * cohesiveDim : 1;
- const double_array& quadWts = _quadrature->quadWts();
- double_array jacobian(jacobianSize);
- double jacobianDet = 0;
- double_array orientationVertex(orientationSize);
- double_array coordinatesCell(numBasis*spaceDim);
- double_array refCoordsVertex(cohesiveDim);
-
- // Allocate orientation field.
- _fields->add("orientation", "orientation");
- topology::Field<topology::SubMesh>& orientation = _fields->get("orientation");
- const topology::Field<topology::SubMesh>& slip = _fields->get("slip");
- orientation.newSection(slip, orientationSize);
- const ALE::Obj<RealSection>& orientationSection = orientation.section();
- assert(!orientationSection.isNull());
- // Create subspaces for along-strike, up-dip, and normal directions
- for (int iDim=0; iDim <= cohesiveDim; ++iDim)
- orientationSection->addSpace();
- for (int iDim=0; iDim <= cohesiveDim; ++iDim)
- orientationSection->setFiberDimension(vertices, spaceDim, iDim);
- orientation.allocate();
- orientation.zero();
-
- // Get fault cells.
- const ALE::Obj<SieveSubMesh::label_sequence>& cells =
- faultSieveMesh->heightStratum(0);
- assert(!cells.isNull());
- const SieveSubMesh::label_sequence::iterator cellsBegin = cells->begin();
- const SieveSubMesh::label_sequence::iterator cellsEnd = cells->end();
-
- // Compute orientation of fault at constraint vertices
-
- // Get section containing coordinates of vertices
- const ALE::Obj<RealSection>& coordinatesSection =
- faultSieveMesh->getRealSection("coordinates");
- assert(!coordinatesSection.isNull());
- topology::Mesh::RestrictVisitor coordinatesVisitor(*coordinatesSection,
- coordinatesCell.size(),
- &coordinatesCell[0]);
-
- // Set orientation function
- assert(cohesiveDim == _quadrature->cellDim());
- assert(spaceDim == _quadrature->spaceDim());
-
- // Loop over cohesive cells, computing orientation weighted by
- // jacobian at constraint vertices
-
- const ALE::Obj<SieveSubMesh::sieve_type>& sieve = faultSieveMesh->getSieve();
- assert(!sieve.isNull());
- typedef ALE::SieveAlg<SieveSubMesh> SieveAlg;
-
- ALE::ISieveVisitor::NConeRetriever<SieveMesh::sieve_type> ncV(*sieve, (size_t) pow(sieve->getMaxConeSize(), std::max(0, faultSieveMesh->depth())));
-
- for (SieveSubMesh::label_sequence::iterator c_iter=cellsBegin;
- c_iter != cellsEnd;
- ++c_iter) {
- // Get orientations at fault cell's vertices.
- coordinatesVisitor.clear();
- faultSieveMesh->restrictClosure(*c_iter, coordinatesVisitor);
-
- ncV.clear();
- ALE::ISieveTraversal<SieveSubMesh::sieve_type>::orientedClosure(*sieve, *c_iter, ncV);
- const int coneSize = ncV.getSize();
- const Mesh::point_type *cone = ncV.getPoints();
-
- for (int v=0; v < coneSize; ++v) {
- // Compute Jacobian and determinant of Jacobian at vertex
- memcpy(&refCoordsVertex[0], &verticesRef[v*cohesiveDim],
- cohesiveDim*sizeof(double));
- cellGeometry.jacobian(&jacobian, &jacobianDet, coordinatesCell,
- refCoordsVertex);
-
- // Compute orientation
- cellGeometry.orientation(&orientationVertex, jacobian, jacobianDet,
- upDirArray);
-
- // Update orientation
- orientationSection->updateAddPoint(cone[v], &orientationVertex[0]);
- } // for
- } // for
-
- //orientation.view("ORIENTATION BEFORE COMPLETE");
-
- // Assemble orientation information
- orientation.complete();
-
- // Loop over vertices, make orientation information unit magnitude
- double_array vertexDir(orientationSize);
- int count = 0;
- for (SieveSubMesh::label_sequence::iterator v_iter=verticesBegin;
- v_iter != verticesEnd;
- ++v_iter, ++count) {
- orientationVertex = 0.0;
- orientationSection->restrictPoint(*v_iter, &orientationVertex[0],
- orientationVertex.size());
- for (int iDim=0; iDim < spaceDim; ++iDim) {
- double mag = 0;
- for (int jDim=0, index=iDim*spaceDim; jDim < spaceDim; ++jDim)
- mag += pow(orientationVertex[index+jDim],2);
- mag = sqrt(mag);
- assert(mag > 0.0);
- for (int jDim=0, index=iDim*spaceDim; jDim < spaceDim; ++jDim)
- orientationVertex[index+jDim] /= mag;
- } // for
-
- orientationSection->updatePoint(*v_iter, &orientationVertex[0]);
- } // for
- PetscLogFlops(count * orientationSize * 4);
-
- if (2 == cohesiveDim && vertices->size() > 0) {
- // Check orientation of first vertex, if dot product of fault
- // normal with preferred normal is negative, flip up/down dip
- // direction.
- //
- // If the user gives the correct normal direction (points from
- // footwall to ahanging wall), we should end up with
- // left-lateral-slip, reverse-slip, and fault-opening for positive
- // slip values.
- //
- // When we flip the up/down dip direction, we create a left-handed
- // strike/dip/normal coordinate system, but it gives the correct
- // sense of slip. In reality the strike/dip/normal directions that
- // are used are the opposite of what we would want, but we cannot
- // flip the fault normal direction because it is tied to how the
- // cohesive cells are created.
-
- assert(vertices->size() > 0);
- orientationSection->restrictPoint(*vertices->begin(), &orientationVertex[0],
- orientationVertex.size());
-
- assert(3 == spaceDim);
- double_array normalDirVertex(&orientationVertex[6], 3);
- const double normalDot =
- normalDir[0]*normalDirVertex[0] +
- normalDir[1]*normalDirVertex[1] +
- normalDir[2]*normalDirVertex[2];
-
- const int istrike = 0;
- const int idip = 3;
- const int inormal = 6;
- if (normalDot < 0.0) {
- // Flip dip direction
- for (SieveSubMesh::label_sequence::iterator v_iter=verticesBegin;
- v_iter != verticesEnd;
- ++v_iter) {
- orientationSection->restrictPoint(*v_iter, &orientationVertex[0],
- orientationVertex.size());
- assert(9 == orientationSection->getFiberDimension(*v_iter));
- for (int iDim=0; iDim < 3; ++iDim) // flip dip
- orientationVertex[idip+iDim] *= -1.0;
-
- // Update direction
- orientationSection->updatePoint(*v_iter, &orientationVertex[0]);
- } // for
- PetscLogFlops(5 + count * 3);
- } // if
- } // if
-
- //orientation.view("ORIENTATION");
-} // _calcOrientation
-
-// ----------------------------------------------------------------------
-void
-pylith::faults::FaultCohesive::_calcArea(void)
-{ // _calcArea
- assert(0 != _faultMesh);
- assert(0 != _fields);
-
- // Containers for area information
- const int cellDim = _quadrature->cellDim();
- const int numBasis = _quadrature->numBasis();
- const int numQuadPts = _quadrature->numQuadPts();
- const int spaceDim = _quadrature->spaceDim();
- const feassemble::CellGeometry& cellGeometry = _quadrature->refGeometry();
- const double_array& quadWts = _quadrature->quadWts();
- assert(quadWts.size() == numQuadPts);
- double jacobianDet = 0;
- double_array areaCell(numBasis);
-
- // Get vertices in fault mesh.
- const ALE::Obj<SieveSubMesh>& faultSieveMesh = _faultMesh->sieveMesh();
- assert(!faultSieveMesh.isNull());
- const ALE::Obj<SieveSubMesh::label_sequence>& vertices =
- faultSieveMesh->depthStratum(0);
- const SieveSubMesh::label_sequence::iterator verticesBegin = vertices->begin();
- const SieveSubMesh::label_sequence::iterator verticesEnd = vertices->end();
-
- // Allocate area field.
- _fields->add("area", "area");
-
- topology::Field<topology::SubMesh>& area = _fields->get("area");
- const topology::Field<topology::SubMesh>& slip = _fields->get("slip");
- area.newSection(slip, 1);
- area.allocate();
- area.zero();
- const ALE::Obj<RealSection>& areaSection = area.section();
- assert(!areaSection.isNull());
- topology::Mesh::UpdateAddVisitor areaVisitor(*areaSection, &areaCell[0]);
-
- double_array coordinatesCell(numBasis*spaceDim);
- const ALE::Obj<RealSection>& coordinates =
- faultSieveMesh->getRealSection("coordinates");
- assert(!coordinates.isNull());
- topology::Mesh::RestrictVisitor coordsVisitor(*coordinates,
- coordinatesCell.size(),
- &coordinatesCell[0]);
-
- const ALE::Obj<SieveSubMesh::label_sequence>& cells =
- faultSieveMesh->heightStratum(0);
- assert(!cells.isNull());
- const SieveSubMesh::label_sequence::iterator cellsBegin = cells->begin();
- const SieveSubMesh::label_sequence::iterator cellsEnd = cells->end();
-
- // Loop over cells in fault mesh, compute area
- for (SieveSubMesh::label_sequence::iterator c_iter = cellsBegin;
- c_iter != cellsEnd;
- ++c_iter) {
- areaCell = 0.0;
-
- // Compute geometry information for current cell
-#if defined(PRECOMPUTE_GEOMETRY)
- _quadrature->retrieveGeometry(*c_iter);
-#else
- coordsVisitor.clear();
- faultSieveMesh->restrictClosure(*c_iter, coordsVisitor);
- _quadrature->computeGeometry(coordinatesCell, *c_iter);
-#endif
-
- // Get cell geometry information that depends on cell
- const double_array& basis = _quadrature->basis();
- const double_array& jacobianDet = _quadrature->jacobianDet();
-
- // Compute area
- for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
- const double wt = quadWts[iQuad] * jacobianDet[iQuad];
- for (int iBasis=0; iBasis < numBasis; ++iBasis) {
- const double dArea = wt*basis[iQuad*numBasis+iBasis];
- areaCell[iBasis] += dArea;
- } // for
- } // for
- areaVisitor.clear();
- faultSieveMesh->updateClosure(*c_iter, areaVisitor);
-
- PetscLogFlops( numQuadPts*(1+numBasis*2) );
- } // for
-
- // Assemble area information
- area.complete();
-
-#if 0 // DEBUGGING
- area.view("AREA");
- //_faultMesh->getSendOverlap()->view("Send fault overlap");
- //_faultMesh->getRecvOverlap()->view("Receive fault overlap");
-#endif
-} // _calcArea
-
-
// End of file
Modified: short/3D/PyLith/trunk/libsrc/faults/FaultCohesive.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/FaultCohesive.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/faults/FaultCohesive.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -28,6 +28,7 @@
#include "pylith/feassemble/Integrator.hh" // ISA Integrator
// FaultCohesive --------------------------------------------------------
+/// Absract base class for fault surface implemented with cohesive cells.
class pylith::faults::FaultCohesive : public Fault,
public feassemble::Integrator<feassemble::Quadrature<topology::SubMesh> >
{ // class FaultCohesive
@@ -95,24 +96,6 @@
virtual
bool useLagrangeConstraints(void) const = 0;
- // PROTECTED METHODS //////////////////////////////////////////////////
-protected :
-
- /** Calculate orientation at fault vertices.
- *
- * @param upDir Direction perpendicular to along-strike direction that is
- * not collinear with fault normal (usually "up" direction but could
- * be up-dip direction; only applies to fault surfaces in a 3-D domain).
- * @param normalDir General preferred direction for fault normal
- * (used to pick which of two possible normal directions for
- * interface; only applies to fault surfaces in a 3-D domain).
- */
- void _calcOrientation(const double upDir[3],
- const double normalDir[3]);
-
- /// Calculate fault area field.
- void _calcArea(void);
-
// PROTECTED MEMBERS //////////////////////////////////////////////////
protected :
Modified: short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveDyn.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveDyn.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveDyn.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -13,17 +13,22 @@
#include <portinfo>
#include "FaultCohesiveDyn.hh" // implementation of object methods
-
+#include "CohesiveTopology.hh" // USES CohesiveTopology
+#include "pylith/topology/SolutionFields.hh" // USES SolutionFields
#include <cassert> // USES assert()
#include <sstream> // USES std::ostringstream
#include <stdexcept> // USES std::runtime_error
-
// ----------------------------------------------------------------------
+typedef pylith::topology::SubMesh::SieveMesh SieveSubMesh;
+typedef pylith::topology::SubMesh::RealSection SubRealSection;
+typedef pylith::topology::Mesh::RealSection RealSection;
+typedef pylith::topology::Mesh::RestrictVisitor RestrictVisitor;
typedef pylith::topology::Mesh::SieveMesh SieveMesh;
// ----------------------------------------------------------------------
// Default constructor.
-pylith::faults::FaultCohesiveDyn::FaultCohesiveDyn(void)
+pylith::faults::FaultCohesiveDyn::FaultCohesiveDyn(void) :
+ _dbInitial(0)
{ // constructor
} // constructor
@@ -40,16 +45,48 @@
pylith::faults::FaultCohesiveDyn::deallocate(void)
{ // deallocate
FaultCohesive::deallocate();
+
+ _dbInitial = 0; // :TODO: Use shared pointer
} // deallocate
-
+
// ----------------------------------------------------------------------
+// Sets the spatial database for the inital tractions
+void pylith::faults::FaultCohesiveDyn::dbInitial(spatialdata::spatialdb::SpatialDB* dbs)
+{ // dbInitial
+ _dbInitial = dbs;
+} // dbInitial
+
+// ----------------------------------------------------------------------
// Initialize fault. Determine orientation and setup boundary
void
pylith::faults::FaultCohesiveDyn::initialize(const topology::Mesh& mesh,
const double upDir[3],
const double normalDir[3])
{ // initialize
- throw std::logic_error("FaultCohesiveDyn::initialize() not implemented.");
+ assert(0 != upDir);
+ assert(0 != normalDir);
+ assert(0 != _quadrature);
+
+ delete _faultMesh; _faultMesh = new topology::SubMesh();
+ CohesiveTopology::createFaultParallel(_faultMesh, &_cohesiveToFault,
+ mesh, id(), useLagrangeConstraints());
+
+ // Reset fields.
+ delete _fields;
+ _fields =
+ new topology::Fields<topology::Field<topology::SubMesh> >(*_faultMesh);
+
+ // Initialize quadrature geometry.
+ _quadrature->initializeGeometry();
+
+ // Compute orientation at quadrature points in fault mesh.
+ _calcOrientation(upDir, normalDir);
+
+ // Get initial tractions using a spatial database.
+ _getInitialTractions();
+
+ // Setup fault constitutive model.
+ _initConstitutiveModel();
} // initialize
// ----------------------------------------------------------------------
@@ -60,7 +97,330 @@
const double t,
topology::SolutionFields* const fields)
{ // integrateResidual
- throw std::logic_error("FaultCohesiveDyn::integrateResidual() not implemented.");
+ assert(0 != _quadrature);
+ assert(0 != _faultMesh);
+ assert(0 != _fields);
+
+ // debugging
+ residual.view("RESIDUAL BEFORE FRICTION");
+
+ // Get cell geometry information that doesn't depend on cell
+ const int numQuadPts = _quadrature->numQuadPts();
+ const double_array& quadWts = _quadrature->quadWts();
+ assert(quadWts.size() == numQuadPts);
+ const int numBasis = _quadrature->numBasis();
+ const int spaceDim = _quadrature->spaceDim();
+ const int numCornersCohesive = 2*numBasis;
+ const int orientationSize = spaceDim*spaceDim;
+
+ // Get cohesive cells.
+ const ALE::Obj<SieveMesh>& sieveMesh = residual.mesh().sieveMesh();
+ assert(!sieveMesh.isNull());
+ const ALE::Obj<SieveMesh::label_sequence>& cellsCohesive =
+ sieveMesh->getLabelStratum("material-id", id());
+ assert(!cellsCohesive.isNull());
+ const SieveSubMesh::label_sequence::iterator cellsBegin = cellsCohesive->begin();
+ const SieveSubMesh::label_sequence::iterator cellsEnd = cellsCohesive->end();
+
+ // Get fault mesh.
+ const ALE::Obj<SieveSubMesh>& faultSieveMesh = _faultMesh->sieveMesh();
+ assert(!faultSieveMesh.isNull());
+
+ // Get sections.
+
+ // Get residual.
+ const ALE::Obj<RealSection>& residualSection = residual.section();
+ assert(!residualSection.isNull());
+ double_array residualCell(numCornersCohesive*spaceDim);
+ topology::Mesh::UpdateAddVisitor residualVisitor(*residualSection,
+ &residualCell[0]);
+ double_array forcesCurrentCell(numCornersCohesive*spaceDim);
+ RestrictVisitor forcesCurrentVisitor(*residualSection,
+ forcesCurrentCell.size(), &forcesCurrentCell[0]);
+
+ // Get displacements.
+ double_array dispCell(numCornersCohesive*spaceDim);
+ const ALE::Obj<RealSection>& dispSection = fields->get("disp(t)").section();
+ assert(!dispSection.isNull());
+ RestrictVisitor dispVisitor(*dispSection,
+ dispCell.size(), &dispCell[0]);
+ double_array dispIncrCell(numCornersCohesive*spaceDim);
+ const ALE::Obj<RealSection>& dispIncrSection = fields->get("dispIncr(t->t+dt)").section();
+ assert(!dispIncrSection.isNull());
+ RestrictVisitor dispIncrVisitor(*dispIncrSection,
+ dispIncrCell.size(), &dispIncrCell[0]);
+ double_array dispTpdtCell(numCornersCohesive*spaceDim);
+
+ // Get initial tractions (if exist).
+ double_array tractionInitialFault(numQuadPts*spaceDim);
+ const ALE::Obj<RealSection>& tractionInitialSection = (0 != _dbInitial) ?
+ _fields->get("initial traction").section() : 0;
+
+ // Get orientation.
+ double_array orientationCell(numQuadPts*orientationSize);
+ const ALE::Obj<RealSection>& orientationSection = _fields->get("orientation").section();
+ assert(!orientationSection.isNull());
+
+ // Values defined at quadrature points.
+ double_array tractionsCurrentCell(numQuadPts*spaceDim);
+ double_array tractionCell(numQuadPts*spaceDim); // friction
+ double_array slip(spaceDim); // slip at quad pt
+ double_array tractionsCurrentFault(spaceDim); // current tractions at quad pt
+ double_array tractionFault(spaceDim); // friction at quad pt
+
+#if !defined(PRECOMPUTE_GEOMETRY)
+ double_array coordinatesCell(numBasis*spaceDim);
+ const ALE::Obj<RealSection>& coordinates =
+ faultSieveMesh->getRealSection("coordinates");
+ RestrictVisitor coordsVisitor(*coordinates,
+ coordinatesCell.size(), &coordinatesCell[0]);
+#endif
+
+ // Loop over faces and integrate contribution from each face
+ for (SieveSubMesh::label_sequence::iterator c_iter=cellsBegin;
+ c_iter != cellsEnd;
+ ++c_iter) {
+ const SieveMesh::point_type c_fault = _cohesiveToFault[*c_iter];
+ residualCell = 0.0;
+
+#if defined(PRECOMPUTE_GEOMETRY)
+ _quadrature->retrieveGeometry(*c_iter);
+#else
+ coordsVisitor.clear();
+ faultSieveMesh->restrictClosure(c_fault, coordsVisitor);
+ _quadrature->computeGeometry(coordinatesCell, c_fault);
+#endif
+
+ // Get cell geometry information that depends on cell
+ const double_array& basis = _quadrature->basis();
+ const double_array& jacobianDet = _quadrature->jacobianDet();
+
+ // Get displacements at vertices of cohesive cell.
+ dispVisitor.clear();
+ sieveMesh->restrictClosure(*c_iter, dispVisitor);
+ dispIncrVisitor.clear();
+ sieveMesh->restrictClosure(*c_iter, dispIncrVisitor);
+
+ // Compute current estimate of displacement at time t+dt using
+ // solution increment.
+ dispTpdtCell = dispCell + dispIncrCell;
+
+ // Get current forces at vertices of cohesive cell (current residual).
+ forcesCurrentVisitor.clear();
+ sieveMesh->restrictClosure(*c_iter, forcesCurrentVisitor);
+
+ // Get initial tractions for fault cell.
+ if (0 != _dbInitial) {
+ assert(!tractionInitialSection.isNull());
+ tractionInitialSection->restrictPoint(c_fault, &tractionInitialFault[0],
+ tractionInitialFault.size());
+ } // if
+
+ // Get fault orientation at quadrature points.
+ orientationSection->restrictPoint(c_fault, &orientationCell[0],
+ orientationCell.size());
+
+ tractionCell = 0.0;
+ for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
+ // wt is also area associated with quadrature point
+ const double wt = quadWts[iQuad] * jacobianDet[iQuad];
+
+ // Compute slip at current quad pt in global coordinate system.
+ // In: dispTpdtCell [2*numBasis*spaceDim] (negative side then positive side??)
+ // basis [numQuadpts*numBasis]
+ // Out: slipGlobal [spaceDim]
+ // Use basis functions to compute displacement at quadrature point and
+ // then difference displacements to get slip.
+ // ADD STUFF HERE
+ double_array dispQuadPt(spaceDim*2);
+ double_array slipGlobal(spaceDim);
+ for (int iBasis=0; iBasis < numBasis; ++iBasis) {
+ for (int iSpace=0; iSpace < spaceDim; ++iSpace) {
+ dispQuadPt[iSpace] += basis[iQuad*numBasis+iBasis]
+ *dispTpdtCell[iBasis*spaceDim+iSpace];
+ dispQuadPt[spaceDim+iSpace] += basis[iQuad*numBasis+iBasis]
+ *dispTpdtCell[(iBasis+numBasis)*spaceDim+iSpace];
+ }
+ }
+ for (int iSpace=0; iSpace < spaceDim; ++iSpace) {
+ slipGlobal[iSpace] = dispQuadPt[spaceDim+iSpace]
+ -dispQuadPt[iSpace];
+ }
+
+ // Compute slip in fault orientation.
+ // In: slipGlobal [spaceDim]
+ // orientationCell [numQuadPts*spaceDim*spaceDim, iQuadPt*spaceDim*spaceDim+iDim*spaceDim+jDim]
+ // Out: slipFault [spaceDim]
+ // Use orientation to rotate from global to fault orientation.
+ // ADD STUFF HERE
+ double_array slipFault(spaceDim);
+ for (int iSpace=0; iSpace < spaceDim; ++iSpace) {
+ for (int jSpace=0; jSpace < spaceDim; ++jSpace) {
+ slipFault[iSpace] += slipGlobal[jSpace]
+ *orientationCell[iQuad*spaceDim*spaceDim+iSpace*spaceDim+jSpace];
+ }
+ }
+
+
+ // Compute traction from current deformation in global coordinate system. (tractionCurrentGlobal)
+ // In: forcesCurrentCell [2*numBasis*spaceDim] (negative side then positive side)
+ // Out: tractionCurrentGlobal [spaceDim]
+ // Use basis functions to compute forces at quadrature point, then difference to get relative forces,
+ // and divide by area to get traction vector.
+ // ADD STUFF HERE
+ double_array forcesQuadPt(2*spaceDim);
+ double_array tractionCurrentGlobal(spaceDim);
+ for (int iBasis=0; iBasis < numBasis; ++iBasis) {
+ for (int iSpace=0; iSpace < spaceDim; ++iSpace) {
+ forcesQuadPt[iSpace] += basis[iQuad*numBasis+iBasis]
+ *forcesCurrentCell[iBasis*spaceDim+iSpace];
+ forcesQuadPt[spaceDim+iSpace] += basis[iQuad*numBasis+iBasis]
+ *forcesCurrentCell[(iBasis+numBasis)*spaceDim+iSpace];
+ }
+ }
+ for (int iSpace=0; iSpace < spaceDim; ++iSpace) {
+ tractionCurrentGlobal[iSpace] = forcesQuadPt[spaceDim+iSpace]
+ -forcesQuadPt[iSpace];
+ tractionCurrentGlobal[iSpace] /= wt;
+ }
+
+
+ // Compute traction in fault orientation.
+ // In: tractionCurrentGlobal [spaceDim]
+ // Out: tractionCurrentFault [spaceDim]
+ // Use orientation to rotate from global to fault orientation.
+ // ADD STUFF HERE
+ double_array tractionCurrentFault(spaceDim);
+ for (int iSpace=0; iSpace < spaceDim; ++iSpace) {
+ for (int jSpace=0; jSpace < spaceDim; ++jSpace) {
+ tractionCurrentFault[iSpace] += tractionCurrentGlobal[jSpace]
+ *orientationCell[iQuad*spaceDim*spaceDim+iSpace*spaceDim+jSpace];
+ }
+ }
+
+ // Compute total traction (initial + current).
+ // In: tractionCurrentFault [spaceDim]
+ // tractionInitialFault [numQuadPts*spaceDim]
+ // Out: tractionTotalFault [spaceDim]
+ // ADD STUFF HERE
+ double_array tractionTotalFault(spaceDim);
+ for (int iSpace=0; iSpace < spaceDim; ++iSpace) {
+ tractionTotalFault[iSpace] += tractionCurrentFault[iSpace]
+ +tractionInitialFault[iQuad*spaceDim+iSpace];
+ }
+
+ // Compute traction ("friction") using fault constitutive model in fault orientation.
+ // In: slipFault [spaceDim]
+ // tractionCurrentFault [spaceDim]
+ // tractionTotalFault [spaceDim]
+ // Out: frictionFault [spaceDim]
+ // BEGIN TEMPORARY
+ // Simple fault constitutive model with static friction.
+ const double mu = 0.7;
+ // ADD STUFF HERE
+ double_array frictionFault(spaceDim);
+ frictionFault = 0.0;
+ switch (spaceDim)
+ { // switch
+ case 1 : {
+ if (tractionTotalFault[0] < 0) {
+ frictionFault[0] = tractionCurrentFault[0];
+ }
+ break;
+ } // case 1
+ case 2 : {
+ if (tractionTotalFault[1] < 0) {
+ frictionFault[1] = tractionCurrentFault[1];
+ frictionFault[0] = -mu * tractionTotalFault[1];
+ if (frictionFault[0] > tractionCurrentFault[0])
+ frictionFault[0] = tractionCurrentFault[0];
+ }
+ break;
+ } // case 2
+ case 3 : {
+ if (tractionTotalFault[2] < 0) {
+ frictionFault[2] = tractionCurrentFault[2];
+ frictionFault[1] = -mu * tractionTotalFault[2] * tractionTotalFault[1] / sqrt(pow(tractionTotalFault[1],2) +pow(tractionTotalFault[0],2));
+ frictionFault[0] = -mu * tractionTotalFault[2] * tractionTotalFault[0] / sqrt(pow(tractionTotalFault[1],2) +pow(tractionTotalFault[0],2));
+
+ if (frictionFault[0] > tractionCurrentFault[0])
+ frictionFault[0] = tractionCurrentFault[0];
+
+ if (frictionFault[1] > tractionCurrentFault[1])
+ frictionFault[1] = tractionCurrentFault[1];
+ }
+ break;
+ } // case 3
+ default :
+ std::cerr << "Bad spatial dimension '" << spaceDim << "'." << std::endl;
+ assert(0);
+ throw std::logic_error("Bad spatial dimension in Friction.");
+ } // switch
+
+
+ // END TEMPORARY
+
+ // If normal traction is negative (compression), prevent
+ // interpenetration by setting traction to exactly counteract
+ // current forces acting normal to fault.
+
+ // Compute traction associated with "friction" in global coordinate system. (tractionCell)
+ // In: frictionFault [spaceDim]
+ // Out: tractionCell [numQuadPts*spaceDim]
+ // Use orientation to rotate from global to fault orientation.
+ // ADD STUFF HERE
+ for (int iSpace=0; iSpace < spaceDim; ++iSpace) {
+ for (int jSpace=0; jSpace < spaceDim; ++jSpace) {
+ tractionCell[iQuad*spaceDim+iSpace] += frictionFault[jSpace]
+ *orientationCell[iQuad*spaceDim*spaceDim+iSpace*spaceDim+jSpace];
+ }
+ }
+ tractionCell /= 2.0;
+
+ std::cout << " wt: " << wt
+ << " dispTpdtCell (-): (" << dispTpdtCell[0*spaceDim+0] << "," << dispTpdtCell[0*spaceDim+1] << ")\n"
+ << " (" << dispTpdtCell[1*spaceDim+0] << "," << dispTpdtCell[1*spaceDim+1] << ")\n"
+ << " dispTpdtCell (+): (" << dispTpdtCell[2*spaceDim+0] << "," << dispTpdtCell[2*spaceDim+1] << ")\n"
+ << " (" << dispTpdtCell[3*spaceDim+0] << "," << dispTpdtCell[3*spaceDim+1] << ")\n"
+ << " dispQuadPt (-): (" << dispQuadPt[0] << "," << dispQuadPt[1] << ")\n"
+ << " dispQuadPt (+): (" << dispQuadPt[spaceDim+0] << "," << dispQuadPt[spaceDim+1] << ")\n"
+ << " slipGlobal: (" << slipGlobal[0] << "," << slipGlobal[1] << ")\n"
+ << " slipFault: (" << slipFault[0] << "," << slipFault[1] << ")\n"
+ << " forcesQuadPt (-): (" << forcesQuadPt[0] << "," << forcesQuadPt[1] << ")\n"
+ << " forcesQuadPt (+): (" << forcesQuadPt[spaceDim+0] << "," << forcesQuadPt[spaceDim+1] << ")\n"
+ << " tractionCurrentGlobal: (" << tractionCurrentGlobal[0] << "," << tractionCurrentGlobal[1] << ")\n"
+ << " tractionCurrentFault: (" << tractionCurrentFault[0] << "," << tractionCurrentFault[1] << ")\n"
+ << " tractionTotalFault: (" << tractionTotalFault[0] << "," << tractionTotalFault[1] << ")\n"
+ << " frictionFault: (" << frictionFault[0] << "," << frictionFault[1] << ")\n"
+ << " tractionCell: (" << tractionCell[iQuad*spaceDim+0] << "," << tractionCell[iQuad*spaceDim+1] << ")\n"
+ << std::endl;
+
+
+ // Compute action for dynamic fault term
+ for (int iBasis=0; iBasis < numBasis; ++iBasis) {
+ const double valI = wt*basis[iQuad*numBasis+iBasis];
+ for (int jBasis=0; jBasis < numBasis; ++jBasis) {
+ const double valIJ = valI * basis[iQuad*numBasis+jBasis];
+ for (int iDim=0; iDim < spaceDim; ++iDim) {
+ // :TODO: action for each side of the fault
+ residualCell[iBasis*spaceDim+iDim] +=
+ tractionCell[iQuad*spaceDim+iDim] * valIJ;
+ residualCell[(iBasis+numBasis)*spaceDim+iDim] +=
+ -tractionCell[iQuad*spaceDim+iDim] * valIJ;
+ } // for
+ } // for
+ } // for
+ } // for
+
+ // Assemble cell contribution into field
+ residualVisitor.clear();
+ sieveMesh->updateClosure(*c_iter, residualVisitor);
+
+ PetscLogFlops(numQuadPts*(0)); // :TODO: Count number of operations
+ } // for
+
+ // debugging
+ residual.view("RESIDUAL AFTER FRICTION");
} // integrateResidual
// ----------------------------------------------------------------------
@@ -71,7 +431,7 @@
const double t,
topology::SolutionFields* const fields)
{ // integrateJacobian
- throw std::logic_error("FaultCohesiveDyn::integrateJacobian() not implemented.");
+ _needNewJacobian = false;
} // integrateJacobian
// ----------------------------------------------------------------------
@@ -103,7 +463,8 @@
<< "'.";
throw std::runtime_error(msg.str());
} // if
- const int numCorners = _quadrature->numBasis();
+
+ const int numCorners = _quadrature->refGeometry().numCorners();
const ALE::Obj<SieveMesh::label_sequence>& cells =
sieveMesh->getLabelStratum("material-id", id());
assert(!cells.isNull());
@@ -113,7 +474,7 @@
c_iter != cellsEnd;
++c_iter) {
const int cellNumCorners = sieveMesh->getNumCellCorners(*c_iter);
- if (3*numCorners != cellNumCorners) {
+ if (2*numCorners != cellNumCorners) {
std::ostringstream msg;
msg << "Number of vertices in reference cell (" << numCorners
<< ") is not compatible with number of vertices (" << cellNumCorners
@@ -141,8 +502,237 @@
const char* name,
const topology::SolutionFields* fields)
{ // cellField
- throw std::logic_error("FaultCohesiveDyn::vertexField() not implemented.");
+ throw std::logic_error("FaultCohesiveDyn::cellField() not implemented.");
} // cellField
+// ----------------------------------------------------------------------
+// Calculate orientation at fault vertices.
+void
+pylith::faults::FaultCohesiveDyn::_calcOrientation(const double upDir[3],
+ const double normalDir[3])
+{ // _calcOrientation
+ assert(0 != _fields);
+ assert(0 != _quadrature);
+ double_array up(upDir, 3);
+
+ // Get 'fault' cells.
+ const ALE::Obj<SieveSubMesh>& faultSieveMesh = _faultMesh->sieveMesh();
+ assert(!faultSieveMesh.isNull());
+ const ALE::Obj<SieveSubMesh::label_sequence>& cells =
+ faultSieveMesh->heightStratum(0);
+ assert(!cells.isNull());
+ const SieveSubMesh::label_sequence::iterator cellsBegin = cells->begin();
+ const SieveSubMesh::label_sequence::iterator cellsEnd = cells->end();
+
+ // Quadrature related values.
+ const feassemble::CellGeometry& cellGeometry = _quadrature->refGeometry();
+ const int cellDim = _quadrature->cellDim() > 0 ? _quadrature->cellDim() : 1;
+ const int numBasis = _quadrature->numBasis();
+ const int numQuadPts = _quadrature->numQuadPts();
+ const int spaceDim = cellGeometry.spaceDim();
+ double_array quadPtRef(cellDim);
+ const double_array& quadPtsRef = _quadrature->quadPtsRef();
+
+ // Containers for orientation information
+ const int orientationSize = spaceDim * spaceDim;
+ const int fiberDim = numQuadPts * orientationSize;
+ const int jacobianSize = spaceDim * cellDim;
+ double_array jacobian(jacobianSize);
+ double jacobianDet = 0;
+ double_array orientationQuadPt(orientationSize);
+ double_array orientationCell(fiberDim);
+
+ // Get sections.
+ double_array coordinatesCell(numBasis*spaceDim);
+ const ALE::Obj<RealSection>& coordinates =
+ faultSieveMesh->getRealSection("coordinates");
+ assert(!coordinates.isNull());
+ topology::Mesh::RestrictVisitor coordsVisitor(*coordinates,
+ coordinatesCell.size(),
+ &coordinatesCell[0]);
+
+ // :TODO: Use spaces to create subsections like in FaultCohesiveKin.
+ _fields->add("orientation", "orientation",
+ topology::FieldBase::CELLS_FIELD, fiberDim);
+ topology::Field<topology::SubMesh>& orientation = _fields->get("orientation");
+ orientation.allocate();
+ const ALE::Obj<RealSection>& orientationSection = orientation.section();
+ assert(!orientationSection.isNull());
+
+ // Loop over cells in fault mesh and compute orientations.
+ for(SieveSubMesh::label_sequence::iterator c_iter = cellsBegin;
+ c_iter != cellsEnd;
+ ++c_iter) {
+ // Compute geometry information for current cell
+ coordsVisitor.clear();
+ faultSieveMesh->restrictClosure(*c_iter, coordsVisitor);
+ _quadrature->computeGeometry(coordinatesCell, *c_iter);
+
+ // Reset orientation to zero.
+ orientationCell = 0.0;
+
+ // Compute orientation at each quadrature point of current cell.
+ for (int iQuad=0, iRef=0, iSpace=0;
+ iQuad < numQuadPts;
+ ++iQuad, iRef+=cellDim, iSpace+=spaceDim) {
+ // Reset orientation at quad pt to zero.
+ orientationQuadPt = 0.0;
+
+ // Compute Jacobian and determinant at quadrature point, then get
+ // orientation.
+ memcpy(&quadPtRef[0], &quadPtsRef[iRef], cellDim*sizeof(double));
+ cellGeometry.jacobian(&jacobian, &jacobianDet,
+ coordinatesCell, quadPtRef);
+ cellGeometry.orientation(&orientationQuadPt, jacobian, jacobianDet, up);
+ assert(jacobianDet > 0.0);
+ orientationQuadPt /= jacobianDet;
+
+ memcpy(&orientationCell[iQuad*orientationSize],
+ &orientationQuadPt[0], orientationSize*sizeof(double));
+ } // for
+
+ orientationSection->updatePoint(*c_iter, &orientationCell[0]);
+ } // for
+
+ // debugging
+ orientation.view("FAULT ORIENTATION");
+} // _calcOrientation
+
+// ----------------------------------------------------------------------
+void
+pylith::faults::FaultCohesiveDyn::_getInitialTractions(void)
+{ // _getInitialTractions
+ assert(0 != _normalizer);
+ assert(0 != _quadrature);
+
+ const double pressureScale = _normalizer->pressureScale();
+ const double lengthScale = _normalizer->lengthScale();
+
+ const int spaceDim = _quadrature->spaceDim();
+ const int numQuadPts = _quadrature->numQuadPts();
+
+ if (0 != _dbInitial) { // Setup initial values, if provided.
+ // Create section to hold initial tractions.
+ _fields->add("initial traction", "initial_traction");
+ topology::Field<topology::SubMesh>& traction = _fields->get("initial traction");
+ traction.scale(pressureScale);
+ traction.vectorFieldType(topology::FieldBase::MULTI_VECTOR);
+ traction.newSection(topology::FieldBase::CELLS_FIELD, numQuadPts*spaceDim);
+ traction.allocate();
+ const ALE::Obj<RealSection>& tractionSection = traction.section();
+ assert(!tractionSection.isNull());
+
+ _dbInitial->open();
+ switch (spaceDim)
+ { // switch
+ case 1 : {
+ const char* valueNames[] = {"traction-normal"};
+ _dbInitial->queryVals(valueNames, 1);
+ break;
+ } // case 1
+ case 2 : {
+ const char* valueNames[] = {"traction-shear", "traction-normal"};
+ _dbInitial->queryVals(valueNames, 2);
+ break;
+ } // case 2
+ case 3 : {
+ const char* valueNames[] = {"traction-shear-leftlateral",
+ "traction-shear-updip",
+ "traction-normal"};
+ _dbInitial->queryVals(valueNames, 3);
+ break;
+ } // case 3
+ default :
+ std::cerr << "Bad spatial dimension '" << spaceDim << "'." << std::endl;
+ assert(0);
+ throw std::logic_error("Bad spatial dimension in Neumann.");
+ } // switch
+
+ // Get 'fault' cells.
+ const ALE::Obj<SieveSubMesh>& faultSieveMesh = _faultMesh->sieveMesh();
+ assert(!faultSieveMesh.isNull());
+ const ALE::Obj<SieveSubMesh::label_sequence>& cells =
+ faultSieveMesh->heightStratum(0);
+ assert(!cells.isNull());
+ const SieveSubMesh::label_sequence::iterator cellsBegin = cells->begin();
+ const SieveSubMesh::label_sequence::iterator cellsEnd = cells->end();
+
+ const int cellDim = _quadrature->cellDim() > 0 ? _quadrature->cellDim() : 1;
+ const int numBasis = _quadrature->numBasis();
+ const int numQuadPts = _quadrature->numQuadPts();
+ const int spaceDim = _quadrature->spaceDim();
+
+ // Containers for database query results and quadrature coordinates in
+ // reference geometry.
+ double_array tractionCell(numQuadPts*spaceDim);
+ double_array quadPtsGlobal(numQuadPts*spaceDim);
+
+ // Get sections.
+ double_array coordinatesCell(numBasis*spaceDim);
+ const ALE::Obj<RealSection>& coordinates =
+ faultSieveMesh->getRealSection("coordinates");
+ assert(!coordinates.isNull());
+ topology::Mesh::RestrictVisitor coordsVisitor(*coordinates,
+ coordinatesCell.size(),
+ &coordinatesCell[0]);
+
+ const spatialdata::geocoords::CoordSys* cs = _faultMesh->coordsys();
+
+ // Compute quadrature information
+
+ // Loop over cells in boundary mesh and perform queries.
+ for (SieveSubMesh::label_sequence::iterator c_iter = cellsBegin;
+ c_iter != cellsEnd;
+ ++c_iter) {
+ // Compute geometry information for current cell
+ coordsVisitor.clear();
+ faultSieveMesh->restrictClosure(*c_iter, coordsVisitor);
+ _quadrature->computeGeometry(coordinatesCell, *c_iter);
+
+ const double_array& quadPtsNondim = _quadrature->quadPts();
+ quadPtsGlobal = quadPtsNondim;
+ _normalizer->dimensionalize(&quadPtsGlobal[0], quadPtsGlobal.size(),
+ lengthScale);
+
+ tractionCell = 0.0;
+ for (int iQuad=0, iSpace=0;
+ iQuad < numQuadPts;
+ ++iQuad, iSpace+=spaceDim) {
+ const int err = _dbInitial->query(&tractionCell[iQuad*spaceDim], spaceDim,
+ &quadPtsGlobal[iSpace], spaceDim, cs);
+ if (err) {
+ std::ostringstream msg;
+ msg << "Could not find initial tractions at (";
+ for (int i=0; i < spaceDim; ++i)
+ msg << " " << quadPtsGlobal[i+iSpace];
+ msg << ") for dynamic fault interface " << label() << "\n"
+ << "using spatial database " << _dbInitial->label() << ".";
+ throw std::runtime_error(msg.str());
+ } // if
+
+ } // for
+ _normalizer->nondimensionalize(&tractionCell[0], tractionCell.size(),
+ pressureScale);
+
+ // Update section
+ assert(tractionCell.size() == tractionSection->getFiberDimension(*c_iter));
+ tractionSection->updatePoint(*c_iter, &tractionCell[0]);
+ } // for
+
+ _dbInitial->close();
+
+ // debugging
+ traction.view("INITIAL TRACTIONS");
+ } // if
+} // _getInitialTractions
+
+// ----------------------------------------------------------------------
+void
+pylith::faults::FaultCohesiveDyn::_initConstitutiveModel(void)
+{ // _initConstitutiveModel
+ // :TODO: ADD STUFF HERE
+} // _initConstitutiveModel
+
+
// End of file
Modified: short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveDyn.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveDyn.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveDyn.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -14,10 +14,6 @@
*
* @brief C++ implementation for a fault surface with spontaneous
* (dynamic) slip implemented with cohesive elements.
- *
- * The ordering of vertices in a cohesive cell is the vertices on the
- * POSITIVE/NEGATIVE (CHECK WHICH IT IS) side of the fault and then the
- * corresponding entries on the other side of the fault.
*/
#if !defined(pylith_faults_faultcohesivedyn_hh)
@@ -27,6 +23,14 @@
#include "FaultCohesive.hh" // ISA FaultCohesive
// FaultCohesiveDyn -----------------------------------------------------
+/**
+ * @brief C++ implementation for a fault surface with spontaneous
+ * (dynamic) slip implemented with cohesive elements.
+ *
+ * The ordering of vertices in a cohesive cell is the vertices on the
+ * negative side of the fault and then the corresponding entries on
+ * the positive side of the fault.
+ */
class pylith::faults::FaultCohesiveDyn : public FaultCohesive
{ // class FaultCohesiveDyn
friend class TestFaultCohesiveDyn; // unit testing
@@ -44,6 +48,11 @@
/// Deallocate PETSc and local data structures.
virtual
void deallocate(void);
+
+ /** Sets the spatial database for the inital tractions
+ * @param dbs spatial database for initial tractions
+ */
+ void dbInitial(spatialdata::spatialdb::SpatialDB* dbs);
/** Initialize fault. Determine orientation and setup boundary
* condition parameters.
@@ -116,6 +125,36 @@
*/
bool useLagrangeConstraints(void) const;
+ // PRIVATE METHODS ////////////////////////////////////////////////////
+private :
+
+ /** Calculate orientation at quadrature points.
+ *
+ * @param upDir Direction perpendicular to along-strike direction that is
+ * not collinear with fault normal (usually "up" direction but could
+ * be up-dip direction; only applies to fault surfaces in a 3-D domain).
+ * @param normalDir General preferred direction for fault normal
+ * (used to pick which of two possible normal directions for
+ * interface; only applies to fault surfaces in a 3-D domain).
+ */
+ void _calcOrientation(const double upDir[3],
+ const double normalDir[3]);
+
+ /** Get initial tractions using a spatial database.
+ */
+ void _getInitialTractions(void);
+
+ /** Setup fault constitutive model.
+ */
+ void _initConstitutiveModel(void);
+
+ // PRIVATE MEMBERS ////////////////////////////////////////////////////
+private :
+
+ /// Database for initial tractions.
+ spatialdata::spatialdb::SpatialDB* _dbInitial;
+
+
// NOT IMPLEMENTED ////////////////////////////////////////////////////
private :
@@ -125,9 +164,6 @@
/// Not implemented
const FaultCohesiveDyn& operator=(const FaultCohesiveDyn&);
- // PRIVATE MEMBERS ////////////////////////////////////////////////////
-private :
-
}; // class FaultCohesiveDyn
#include "FaultCohesiveDyn.icc" // inline methods
Copied: short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveDynL.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/libsrc/faults/FaultCohesiveDynL.cc)
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveDynL.cc (rev 0)
+++ short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveDynL.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,1832 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "FaultCohesiveDynL.hh" // implementation of object methods
+
+#include "CohesiveTopology.hh" // USES CohesiveTopology
+
+#include "pylith/feassemble/Quadrature.hh" // USES Quadrature
+#include "pylith/feassemble/CellGeometry.hh" // USES CellGeometry
+
+#include "pylith/topology/Mesh.hh" // USES Mesh
+#include "pylith/topology/SubMesh.hh" // USES SubMesh
+#include "pylith/topology/Field.hh" // USES Field
+#include "pylith/topology/Fields.hh" // USES Fields
+#include "pylith/topology/Jacobian.hh" // USES Jacobian
+#include "pylith/topology/SolutionFields.hh" // USES SolutionFields
+
+#include "spatialdata/geocoords/CoordSys.hh" // USES CoordSys
+#include "spatialdata/spatialdb/SpatialDB.hh" // USES SpatialDB
+#include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
+
+#include <cmath> // USES pow(), sqrt()
+#include <strings.h> // USES strcasecmp()
+#include <cstring> // USES strlen()
+#include <cstdlib> // USES atoi()
+#include <cassert> // USES assert()
+#include <sstream> // USES std::ostringstream
+#include <stdexcept> // USES std::runtime_error
+
+// Precomputing geometry significantly increases storage but gives a
+// slight speed improvement.
+//#define PRECOMPUTE_GEOMETRY
+
+// ----------------------------------------------------------------------
+typedef pylith::topology::Mesh::SieveMesh SieveMesh;
+typedef pylith::topology::Mesh::RealSection RealSection;
+typedef pylith::topology::SubMesh::SieveMesh SieveSubMesh;
+
+// ----------------------------------------------------------------------
+// Default constructor.
+pylith::faults::FaultCohesiveDynL::FaultCohesiveDynL(void)
+{ // constructor
+} // constructor
+
+// ----------------------------------------------------------------------
+// Destructor.
+pylith::faults::FaultCohesiveDynL::~FaultCohesiveDynL(void)
+{ // destructor
+ deallocate();
+} // destructor
+
+// ----------------------------------------------------------------------
+// Deallocate PETSc and local data structures.
+void
+pylith::faults::FaultCohesiveDynL::deallocate(void)
+{ // deallocate
+ FaultCohesive::deallocate();
+
+ // :TODO: Use shared pointers for initial database
+} // deallocate
+
+// ----------------------------------------------------------------------
+// Sets the spatial database for the inital tractions
+void
+pylith::faults::FaultCohesiveDynL::dbInitial(spatialdata::spatialdb::SpatialDB* db)
+{ // dbInitial
+ _dbInitial = db;
+} // dbInitial
+
+// ----------------------------------------------------------------------
+// Initialize fault. Determine orientation and setup boundary
+void
+pylith::faults::FaultCohesiveDynL::initialize(const topology::Mesh& mesh,
+ const double upDir[3],
+ const double normalDir[3])
+{ // initialize
+ assert(0 != upDir);
+ assert(0 != normalDir);
+ assert(0 != _quadrature);
+ assert(0 != _normalizer);
+
+ const spatialdata::geocoords::CoordSys* cs = mesh.coordsys();
+ assert(0 != cs);
+
+ delete _faultMesh; _faultMesh = new topology::SubMesh();
+ CohesiveTopology::createFaultParallel(_faultMesh, &_cohesiveToFault,
+ mesh, id(), useLagrangeConstraints());
+
+ delete _fields;
+ _fields = new topology::Fields<topology::Field<topology::SubMesh> >(*_faultMesh);
+
+ ALE::MemoryLogger& logger = ALE::MemoryLogger::singleton();
+ //logger.stagePush("Fault");
+
+ // Allocate slip field
+ const ALE::Obj<SieveSubMesh>& faultSieveMesh = _faultMesh->sieveMesh();
+ assert(!faultSieveMesh.isNull());
+ const ALE::Obj<SieveSubMesh::label_sequence>& vertices =
+ faultSieveMesh->depthStratum(0);
+ assert(!vertices.isNull());
+ _fields->add("slip", "slip");
+ topology::Field<topology::SubMesh>& slip = _fields->get("slip");
+ slip.newSection(vertices, cs->spaceDim());
+ slip.allocate();
+ slip.vectorFieldType(topology::FieldBase::VECTOR);
+ slip.scale(_normalizer->lengthScale());
+
+ const ALE::Obj<SieveSubMesh::label_sequence>& cells =
+ faultSieveMesh->heightStratum(0);
+ assert(!cells.isNull());
+ const SieveSubMesh::label_sequence::iterator cellsBegin = cells->begin();
+ const SieveSubMesh::label_sequence::iterator cellsEnd = cells->end();
+ _quadrature->initializeGeometry();
+#if defined(PRECOMPUTE_GEOMETRY)
+ _quadrature->computeGeometry(*_faultMesh, cells);
+#endif
+
+ // Compute orientation at vertices in fault mesh.
+ _calcOrientation(upDir, normalDir);
+
+ // Compute tributary area for each vertex in fault mesh.
+ _calcArea();
+
+ // Get initial tractions using a spatial database.
+ _getInitialTractions();
+
+ // Setup fault constitutive model.
+ _initConstitutiveModel();
+
+ // Create field for diagonal entries of Jacobian at conventional
+ // vertices i and j associated with Lagrange vertex k
+ _fields->add("Jacobian diagonal", "jacobian_diagonal");
+ topology::Field<topology::SubMesh>& jacobianDiag =
+ _fields->get("Jacobian diagonal");
+ jacobianDiag.newSection(slip, 2*cs->spaceDim());
+ jacobianDiag.allocate();
+ jacobianDiag.vectorFieldType(topology::FieldBase::OTHER);
+
+ //logger.stagePop();
+} // initialize
+
+// ----------------------------------------------------------------------
+void
+pylith::faults::FaultCohesiveDynL::splitField(topology::Field<topology::Mesh>* field)
+{ // splitFields
+ assert(0 != field);
+
+ const ALE::Obj<RealSection>& section = field->section();
+ assert(!section.isNull());
+ if (0 == section->getNumSpaces())
+ return; // Return if there are no fibrations
+
+ const int fibrationDisp = 0;
+ const int fibrationLagrange = 1;
+
+ // Get domain Sieve mesh
+ const ALE::Obj<SieveMesh>& sieveMesh = field->mesh().sieveMesh();
+ assert(!sieveMesh.isNull());
+
+ // Get fault Sieve mesh
+ const ALE::Obj<SieveSubMesh>& faultSieveMesh = _faultMesh->sieveMesh();
+ assert(!faultSieveMesh.isNull());
+
+ const ALE::Obj<SieveMesh::label_sequence>& vertices =
+ sieveMesh->depthStratum(0);
+ assert(!vertices.isNull());
+ const SieveSubMesh::label_sequence::iterator verticesBegin =
+ vertices->begin();
+ const SieveSubMesh::label_sequence::iterator verticesEnd = vertices->end();
+ SieveSubMesh::renumbering_type& renumbering =
+ faultSieveMesh->getRenumbering();
+ const SieveSubMesh::renumbering_type::const_iterator renumberingEnd =
+ renumbering.end();
+ for (SieveSubMesh::label_sequence::iterator v_iter=verticesBegin;
+ v_iter != verticesEnd;
+ ++v_iter)
+ if (renumbering.find(*v_iter) != renumberingEnd) {
+ const int vertexFault = renumbering[*v_iter];
+ const int vertexMesh = *v_iter;
+ const int fiberDim = section->getFiberDimension(vertexMesh);
+ assert(fiberDim > 0);
+ // Reset displacement fibration fiber dimension to zero.
+ section->setFiberDimension(vertexMesh, 0, fibrationDisp);
+ // Set Langrange fibration fiber dimension.
+ section->setFiberDimension(vertexMesh, fiberDim, fibrationLagrange);
+ } // if
+} // splitFields
+
+// ----------------------------------------------------------------------
+// Integrate contribution of cohesive cells to residual term that
+// require assembly across processors.
+void
+pylith::faults::FaultCohesiveDynL::integrateResidual(
+ const topology::Field<topology::Mesh>& residual,
+ const double t,
+ topology::SolutionFields* const fields)
+{ // integrateResidual
+ assert(0 != fields);
+ assert(0 != _quadrature);
+ assert(0 != _fields);
+
+ // Cohesive cells with normal vertices i and j, and constraint
+ // vertex k make 2 contributions to the residual:
+ //
+ // * DOF i and j: internal forces in soln field associated with
+ // slip -[C]^T{L(t)+dL(t)}
+ // * DOF k: slip values -[C]{u(t)+dt(t)}
+
+ // Get cell information and setup storage for cell data
+ const int spaceDim = _quadrature->spaceDim();
+ const int orientationSize = spaceDim*spaceDim;
+ const int numBasis = _quadrature->numBasis();
+ const int numConstraintVert = numBasis;
+ const int numCorners = 3*numConstraintVert; // cohesive cell
+ const int numQuadPts = _quadrature->numQuadPts();
+ const double_array& quadWts = _quadrature->quadWts();
+ assert(quadWts.size() == numQuadPts);
+
+ // Allocate vectors for cell values
+ double_array dispTpdtCell(numCorners*spaceDim);
+
+ // Tributary area for the current for each vertex.
+ double_array areaVertexCell(numConstraintVert);
+
+ // Get cohesive cells
+ const ALE::Obj<SieveMesh>& sieveMesh = residual.mesh().sieveMesh();
+ assert(!sieveMesh.isNull());
+ const ALE::Obj<SieveMesh::label_sequence>& cellsCohesive =
+ sieveMesh->getLabelStratum("material-id", id());
+ assert(!cellsCohesive.isNull());
+ const SieveMesh::label_sequence::iterator cellsCohesiveBegin =
+ cellsCohesive->begin();
+ const SieveMesh::label_sequence::iterator cellsCohesiveEnd =
+ cellsCohesive->end();
+ const int cellsCohesiveSize = cellsCohesive->size();
+
+ // Get fault Sieve mesh
+ const ALE::Obj<SieveSubMesh>& faultSieveMesh = _faultMesh->sieveMesh();
+ assert(!faultSieveMesh.isNull());
+
+ // Get section information
+ double_array orientationCell(numConstraintVert*orientationSize);
+ const ALE::Obj<RealSection>& orientationSection =
+ _fields->get("orientation").section();
+ assert(!orientationSection.isNull());
+ topology::Mesh::RestrictVisitor orientationVisitor(*orientationSection,
+ orientationCell.size(),
+ &orientationCell[0]);
+
+ // Total fault area associated with each vertex (assembled over all cells).
+ double_array areaCell(numConstraintVert);
+ const ALE::Obj<RealSection>& areaSection =
+ _fields->get("area").section();
+ assert(!areaSection.isNull());
+ topology::Mesh::RestrictVisitor areaVisitor(*areaSection,
+ areaCell.size(), &areaCell[0]);
+
+ double_array dispTCell(numCorners*spaceDim);
+ topology::Field<topology::Mesh>& dispT = fields->get("disp(t)");
+ const ALE::Obj<RealSection>& dispTSection = dispT.section();
+ assert(!dispTSection.isNull());
+ topology::Mesh::RestrictVisitor dispTVisitor(*dispTSection,
+ dispTCell.size(),
+ &dispTCell[0]);
+
+ double_array dispTIncrCell(numCorners*spaceDim);
+ topology::Field<topology::Mesh>& dispTIncr = fields->get("dispIncr(t->t+dt)");
+ const ALE::Obj<RealSection>& dispTIncrSection = dispTIncr.section();
+ assert(!dispTIncrSection.isNull());
+ topology::Mesh::RestrictVisitor dispTIncrVisitor(*dispTIncrSection,
+ dispTIncrCell.size(),
+ &dispTIncrCell[0]);
+
+ double_array residualCell(numCorners*spaceDim);
+ const ALE::Obj<RealSection>& residualSection = residual.section();
+ topology::Mesh::UpdateAddVisitor residualVisitor(*residualSection,
+ &residualCell[0]);
+
+ double_array coordinatesCell(numBasis*spaceDim);
+ const ALE::Obj<RealSection>& coordinates =
+ faultSieveMesh->getRealSection("coordinates");
+ assert(!coordinates.isNull());
+ topology::Mesh::RestrictVisitor coordsVisitor(*coordinates,
+ coordinatesCell.size(),
+ &coordinatesCell[0]);
+
+ for (SieveMesh::label_sequence::iterator c_iter=cellsCohesiveBegin;
+ c_iter != cellsCohesiveEnd;
+ ++c_iter) {
+ const SieveMesh::point_type c_fault = _cohesiveToFault[*c_iter];
+ areaVertexCell = 0.0;
+ residualCell = 0.0;
+
+ // Compute geometry information for current cell
+#if defined(PRECOMPUTE_GEOMETRY)
+ _quadrature->retrieveGeometry(c_fault);
+#else
+ coordsVisitor.clear();
+ faultSieveMesh->restrictClosure(c_fault, coordsVisitor);
+ _quadrature->computeGeometry(coordinatesCell, c_fault);
+#endif
+ // Get cell geometry information that depends on cell
+ const double_array& basis = _quadrature->basis();
+ const double_array& jacobianDet = _quadrature->jacobianDet();
+
+ // Compute contributory area for cell (to weight contributions)
+ for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
+ const double wt = quadWts[iQuad] * jacobianDet[iQuad];
+ for (int iBasis=0; iBasis < numBasis; ++iBasis) {
+ const double dArea = wt*basis[iQuad*numBasis+iBasis];
+ areaVertexCell[iBasis] += dArea;
+ } // for
+ } // for
+
+ // Get orientations at fault cell's vertices.
+ orientationVisitor.clear();
+ faultSieveMesh->restrictClosure(c_fault, orientationVisitor);
+
+ // Get area at fault cell's vertices.
+ areaVisitor.clear();
+ faultSieveMesh->restrictClosure(c_fault, areaVisitor);
+
+ // Get disp(t) at cohesive cell's vertices.
+ dispTVisitor.clear();
+ sieveMesh->restrictClosure(*c_iter, dispTVisitor);
+
+ // Get dispIncr(t) at cohesive cell's vertices.
+ dispTIncrVisitor.clear();
+ sieveMesh->restrictClosure(*c_iter, dispTIncrVisitor);
+
+ // Compute current estimate of displacement at time t+dt using
+ // solution increment.
+ dispTpdtCell = dispTCell + dispTIncrCell;
+
+ for (int iConstraint=0; iConstraint < numConstraintVert; ++iConstraint) {
+ // Blocks in cell matrix associated with normal cohesive
+ // vertices i and j and constraint vertex k
+ const int indexI = iConstraint;
+ const int indexJ = iConstraint + numConstraintVert;
+ const int indexK = iConstraint + 2*numConstraintVert;
+
+ assert(areaCell[iConstraint] > 0);
+ const double wt = areaVertexCell[iConstraint] / areaCell[iConstraint];
+
+ // Get orientation at constraint vertex
+ const double* orientationVertex =
+ &orientationCell[iConstraint*orientationSize];
+ assert(0 != orientationVertex);
+
+ // Entries associated with constraint forces applied at node i
+ for (int iDim=0; iDim < spaceDim; ++iDim) {
+ for (int kDim=0; kDim < spaceDim; ++kDim)
+ residualCell[indexI*spaceDim+iDim] -=
+ dispTpdtCell[indexK*spaceDim+kDim] *
+ -orientationVertex[kDim*spaceDim+iDim] * wt;
+ } // for
+
+ // Entries associated with constraint forces applied at node j
+ for (int jDim=0; jDim < spaceDim; ++jDim) {
+ for (int kDim=0; kDim < spaceDim; ++kDim)
+ residualCell[indexJ*spaceDim+jDim] -=
+ dispTpdtCell[indexK*spaceDim+kDim] *
+ orientationVertex[kDim*spaceDim+jDim] * wt;
+ } // for
+
+ // Entries associated with relative displacements between node i
+ // and node j for constraint node k
+ for (int kDim=0; kDim < spaceDim; ++kDim) {
+ for (int iDim=0; iDim < spaceDim; ++iDim)
+ residualCell[indexK*spaceDim+kDim] -=
+ (dispTpdtCell[indexJ*spaceDim+iDim] -
+ dispTpdtCell[indexI*spaceDim+iDim]) *
+ orientationVertex[kDim*spaceDim+iDim] * wt;
+ } // for
+ } // for
+
+#if 0 // DEBUGGING
+ std::cout << "Updating fault residual for cell " << *c_iter << std::endl;
+ for(int i = 0; i < numCorners*spaceDim; ++i) {
+ std::cout << " dispTpdt["<<i<<"]: " << dispTpdtCell[i] << std::endl;
+ }
+ for(int i = 0; i < numCorners*spaceDim; ++i) {
+ std::cout << " dispT["<<i<<"]: " << dispTCell[i] << std::endl;
+ }
+ for(int i = 0; i < numCorners*spaceDim; ++i) {
+ std::cout << " dispIncr["<<i<<"]: " << dispTIncrCell[i] << std::endl;
+ }
+ for(int i = 0; i < numCorners*spaceDim; ++i) {
+ std::cout << " v["<<i<<"]: " << residualCell[i] << std::endl;
+ }
+#endif
+
+ residualVisitor.clear();
+ sieveMesh->updateClosure(*c_iter, residualVisitor);
+ } // for
+
+ // FIX THIS
+ PetscLogFlops(cellsCohesiveSize*numConstraintVert*spaceDim*spaceDim*7);
+} // integrateResidual
+
+// ----------------------------------------------------------------------
+// Integrate contribution of cohesive cells to residual term that do
+// not require assembly across cells, vertices, or processors.
+void
+pylith::faults::FaultCohesiveDynL::integrateResidualAssembled(
+ const topology::Field<topology::Mesh>& residual,
+ const double t,
+ topology::SolutionFields* const fields)
+{ // integrateResidualAssembled
+ assert(0 != fields);
+ assert(0 != _fields);
+
+ // Cohesive cells with normal vertices i and j, and constraint
+ // vertex k make contributions to the assembled residual:
+ //
+ // * DOF k: slip values {D(t+dt)}
+
+ topology::Field<topology::SubMesh>& slip = _fields->get("slip");
+
+ const int spaceDim = _quadrature->spaceDim();
+
+ // Get sections
+ const ALE::Obj<SieveMesh>& sieveMesh = residual.mesh().sieveMesh();
+ assert(!sieveMesh.isNull());
+ const ALE::Obj<SieveSubMesh>& faultSieveMesh = _faultMesh->sieveMesh();
+ assert(!faultSieveMesh.isNull());
+ const ALE::Obj<RealSection>& slipSection = slip.section();
+ assert(!slipSection.isNull());
+ const ALE::Obj<RealSection>& residualSection = residual.section();
+ assert(!residualSection.isNull());
+
+ const ALE::Obj<SieveMesh::label_sequence>& vertices =
+ sieveMesh->depthStratum(0);
+ assert(!vertices.isNull());
+ const SieveSubMesh::label_sequence::iterator verticesBegin =
+ vertices->begin();
+ const SieveSubMesh::label_sequence::iterator verticesEnd = vertices->end();
+ SieveSubMesh::renumbering_type& renumbering =
+ faultSieveMesh->getRenumbering();
+ const SieveSubMesh::renumbering_type::const_iterator renumberingEnd =
+ renumbering.end();
+
+ for (SieveSubMesh::label_sequence::iterator v_iter=verticesBegin;
+ v_iter != verticesEnd;
+ ++v_iter)
+ if (renumbering.find(*v_iter) != renumberingEnd) {
+ const int vertexFault = renumbering[*v_iter];
+ const int vertexMesh = *v_iter;
+ const double* slipVertex = slipSection->restrictPoint(vertexFault);
+ assert(spaceDim == slipSection->getFiberDimension(vertexFault));
+ assert(spaceDim == residualSection->getFiberDimension(vertexMesh));
+ assert(0 != slipVertex);
+ residualSection->updateAddPoint(vertexMesh, slipVertex);
+ } // if
+} // integrateResidualAssembled
+
+// ----------------------------------------------------------------------
+// Compute Jacobian matrix (A) associated with operator that do not
+// require assembly across cells, vertices, or processors.
+void
+pylith::faults::FaultCohesiveDynL::integrateJacobianAssembled(
+ topology::Jacobian* jacobian,
+ const double t,
+ topology::SolutionFields* const fields)
+{ // integrateJacobianAssembled
+ assert(0 != jacobian);
+ assert(0 != fields);
+ assert(0 != _fields);
+
+ // Add constraint information to Jacobian matrix; these are the
+ // direction cosines. Entries are associated with vertices ik, jk,
+ // ki, and kj.
+
+ // Get cohesive cells
+ const ALE::Obj<SieveMesh>& sieveMesh = fields->mesh().sieveMesh();
+ assert(!sieveMesh.isNull());
+ const ALE::Obj<SieveMesh::label_sequence>& cellsCohesive =
+ sieveMesh->getLabelStratum("material-id", id());
+ assert(!cellsCohesive.isNull());
+ const SieveMesh::label_sequence::iterator cellsCohesiveBegin =
+ cellsCohesive->begin();
+ const SieveMesh::label_sequence::iterator cellsCohesiveEnd =
+ cellsCohesive->end();
+ const int cellsCohesiveSize = cellsCohesive->size();
+
+ const int spaceDim = _quadrature->spaceDim();
+ const int orientationSize = spaceDim*spaceDim;
+
+ const int numConstraintVert = _quadrature->numBasis();
+ const int numCorners = 3*numConstraintVert; // cohesive cell
+ double_array matrixCell(numCorners*spaceDim * numCorners*spaceDim);
+ double_array orientationCell(numConstraintVert*orientationSize);
+
+ // Get section information
+ const ALE::Obj<SieveSubMesh>& faultSieveMesh = _faultMesh->sieveMesh();
+ assert(!faultSieveMesh.isNull());
+ const ALE::Obj<RealSection>& solutionSection = fields->solution().section();
+ assert(!solutionSection.isNull());
+ const ALE::Obj<RealSection>& orientationSection =
+ _fields->get("orientation").section();
+ assert(!orientationSection.isNull());
+ topology::Mesh::RestrictVisitor orientationVisitor(*orientationSection,
+ orientationCell.size(),
+ &orientationCell[0]);
+
+#if 0 // DEBUGGING
+ // Check that fault cells match cohesive cells
+ ALE::ISieveVisitor::PointRetriever<sieve_type> cV(std::max(1, mesh->getSieve()->getMaxConeSize()));
+ ALE::ISieveVisitor::PointRetriever<sieve_type> cV2(std::max(1, _faultMesh->getSieve()->getMaxConeSize()));
+ Mesh::renumbering_type& fRenumbering = _faultMesh->getRenumbering();
+ const int rank = mesh->commRank();
+
+ for (Mesh::label_sequence::iterator c_iter = cellsCohesiveBegin;
+ c_iter != cellsCohesiveEnd;
+ ++c_iter) {
+ mesh->getSieve()->cone(*c_iter, cV);
+ const int coneSize = cV.getSize();
+ const Mesh::point_type *cone = cV.getPoints();
+ const int faceSize = coneSize / 3;
+ const Mesh::point_type face = _cohesiveToFault[*c_iter];
+ _faultMesh->getSieve()->cone(face, cV2);
+ const int fConeSize = cV2.getSize();
+ const Mesh::point_type *fCone = cV2.getPoints();
+
+ assert(0 == coneSize % faceSize);
+ assert(faceSize == fConeSize);
+ // Use last vertices (contraints) for fault mesh
+ for(int i = 2*faceSize, j = 0; i < 3*faceSize; ++i, ++j) {
+ assert(fRenumbering[cone[i]] == fCone[j]);
+ }
+ cV.clear();
+ cV2.clear();
+ }
+#endif
+
+ const PetscMat jacobianMatrix = jacobian->matrix();
+ assert(0 != jacobianMatrix);
+ const ALE::Obj<SieveMesh::order_type>& globalOrder =
+ sieveMesh->getFactory()->getGlobalOrder(sieveMesh, "default", solutionSection);
+ assert(!globalOrder.isNull());
+ // We would need to request unique points here if we had an interpolated mesh
+ topology::Mesh::IndicesVisitor jacobianVisitor(*solutionSection,
+ *globalOrder,
+ (int) pow(sieveMesh->getSieve()->getMaxConeSize(),
+ sieveMesh->depth())*spaceDim);
+
+ for (SieveMesh::label_sequence::iterator c_iter=cellsCohesiveBegin;
+ c_iter != cellsCohesiveEnd;
+ ++c_iter) {
+ const SieveMesh::point_type c_fault = _cohesiveToFault[*c_iter];
+
+ matrixCell = 0.0;
+ // Get orientations at fault cell's vertices.
+ orientationVisitor.clear();
+ faultSieveMesh->restrictClosure(c_fault, orientationVisitor);
+
+ for (int iConstraint=0; iConstraint < numConstraintVert; ++iConstraint) {
+ // Blocks in cell matrix associated with normal cohesive
+ // vertices i and j and constraint vertex k
+ const int indexI = iConstraint;
+ const int indexJ = iConstraint + numConstraintVert;
+ const int indexK = iConstraint + 2*numConstraintVert;
+
+ // Get orientation at constraint vertex
+ const double* orientationVertex =
+ &orientationCell[iConstraint*orientationSize];
+ assert(0 != orientationVertex);
+
+ // Entries associated with constraint forces applied at node i
+ for (int iDim=0; iDim < spaceDim; ++iDim)
+ for (int kDim=0; kDim < spaceDim; ++kDim) {
+ const int row = indexI*spaceDim+iDim;
+ const int col = indexK*spaceDim+kDim;
+ matrixCell[row*numCorners*spaceDim+col] =
+ -orientationVertex[kDim*spaceDim+iDim];
+ matrixCell[col*numCorners*spaceDim+row] =
+ -orientationVertex[kDim*spaceDim+iDim];
+ } // for
+
+ // Entries associated with constraint forces applied at node j
+ for (int jDim=0; jDim < spaceDim; ++jDim)
+ for (int kDim=0; kDim < spaceDim; ++kDim) {
+ const int row = indexJ*spaceDim+jDim;
+ const int col = indexK*spaceDim+kDim;
+ matrixCell[row*numCorners*spaceDim+col] =
+ orientationVertex[kDim*spaceDim+jDim];
+ matrixCell[col*numCorners*spaceDim+row] =
+ orientationVertex[kDim*spaceDim+jDim];
+ } // for
+ } // for
+
+ // Insert cell contribution into PETSc Matrix
+ jacobianVisitor.clear();
+ PetscErrorCode err = updateOperator(jacobianMatrix, *sieveMesh->getSieve(),
+ jacobianVisitor, *c_iter,
+ &matrixCell[0], INSERT_VALUES);
+ CHECK_PETSC_ERROR_MSG(err, "Update to PETSc Mat failed.");
+ } // for
+ PetscLogFlops(cellsCohesiveSize*numConstraintVert*spaceDim*spaceDim*4);
+ _needNewJacobian = false;
+} // integrateJacobianAssembled
+
+// ----------------------------------------------------------------------
+// Update state variables as needed.
+void
+pylith::faults::FaultCohesiveDynL::updateStateVars(const double t,
+ topology::SolutionFields* const fields)
+{ // updateStateVars
+ assert(0 != fields);
+ assert(0 != _fields);
+
+} // updateStateVars
+
+// ----------------------------------------------------------------------
+// Constrain solution based on friction.
+void
+pylith::faults::FaultCohesiveDynL::constrainSolnSpace(
+ topology::SolutionFields* const fields,
+ const double t,
+ const topology::Jacobian& jacobian)
+{ // constrainSolnSpace
+ assert(0 != fields);
+ assert(0 != _quadrature);
+ assert(0 != _fields);
+
+ const int spaceDim = _quadrature->spaceDim();
+
+ // Allocate arrays for vertex values
+ double_array tractionTVertex(spaceDim);
+ double_array tractionTpdtVertex(spaceDim);
+ double_array slipTpdtVertex(spaceDim);
+ double_array lagrangeTpdtVertex(spaceDim);
+ double_array dLagrangeTpdtVertex(spaceDim);
+
+ // Get domain mesh and fault mesh
+ const ALE::Obj<SieveMesh>& sieveMesh = fields->mesh().sieveMesh();
+ assert(!sieveMesh.isNull());
+ const ALE::Obj<SieveSubMesh>& faultSieveMesh = _faultMesh->sieveMesh();
+ assert(!faultSieveMesh.isNull());
+
+ // Get sections
+ double_array slipVertex(spaceDim);
+ const ALE::Obj<RealSection>& slipSection = _fields->get("slip").section();
+ assert(!slipSection.isNull());
+
+ const ALE::Obj<RealSection>& areaSection = _fields->get("area").section();
+ assert(!areaSection.isNull());
+
+ double_array orientationVertex(spaceDim*spaceDim);
+ const ALE::Obj<RealSection>& orientationSection =
+ _fields->get("orientation").section();
+ assert(!orientationSection.isNull());
+
+ double_array tractionInitialVertex(spaceDim);
+ const ALE::Obj<RealSection>& tractionInitialSection = (0 != _dbInitial) ?
+ _fields->get("initial traction").section() : 0;
+
+ double_array lagrangeTVertex(spaceDim);
+ const ALE::Obj<RealSection>& dispTSection = fields->get("disp(t)").section();
+ assert(!dispTSection.isNull());
+
+ double_array lagrangeTIncrVertex(spaceDim);
+ const ALE::Obj<RealSection>& dispTIncrSection =
+ fields->get("dispIncr(t->t+dt)").section();
+ assert(!dispTIncrSection.isNull());
+
+ double_array jacobianVertex(2*spaceDim);
+ const ALE::Obj<RealSection>& jacobianSection =
+ _fields->get("Jacobian diagonal").section();
+ assert(!jacobianSection.isNull());
+ _updateJacobianDiagonal(*fields);
+
+ slipSection->view("SLIP");
+ areaSection->view("AREA");
+ tractionInitialSection->view("INITIAL TRACTION");
+ dispTSection->view("DISP (t)");
+ dispTIncrSection->view("DISP INCR (t->t+dt)");
+
+ // Get mesh and fault vertices and renumbering
+ const ALE::Obj<SieveMesh::label_sequence>& vertices =
+ sieveMesh->depthStratum(0);
+ assert(!vertices.isNull());
+ const SieveSubMesh::label_sequence::iterator verticesBegin =
+ vertices->begin();
+ const SieveSubMesh::label_sequence::iterator verticesEnd = vertices->end();
+ SieveSubMesh::renumbering_type& renumbering =
+ faultSieveMesh->getRenumbering();
+ const SieveSubMesh::renumbering_type::const_iterator renumberingEnd =
+ renumbering.end();
+
+ for (SieveSubMesh::label_sequence::iterator v_iter=verticesBegin;
+ v_iter != verticesEnd;
+ ++v_iter)
+ if (renumbering.find(*v_iter) != renumberingEnd) {
+ const int vertexFault = renumbering[*v_iter];
+ const int vertexMesh = *v_iter;
+
+ // Get slip
+ slipSection->restrictPoint(vertexFault,
+ &slipVertex[0], slipVertex.size());
+
+ // Get total fault area asssociated with vertex (assembled over all cells)
+ const double* areaVertex = areaSection->restrictPoint(vertexFault);
+ assert(0 != areaVertex);
+ assert(1 == areaSection->getFiberDimension(vertexFault));
+
+ // Get fault orientation
+ orientationSection->restrictPoint(vertexFault, &orientationVertex[0],
+ orientationVertex.size());
+
+ // Get diagonal of Jacobian at conventional vertices i and j
+ // associated with Lagrange vertex k
+ jacobianSection->restrictPoint(vertexFault, &jacobianVertex[0],
+ jacobianVertex.size());
+
+ // Get initial fault tractions
+ if (0 != _dbInitial) {
+ assert(!tractionInitialSection.isNull());
+ tractionInitialSection->restrictPoint(vertexFault,
+ &tractionInitialVertex[0],
+ tractionInitialVertex.size());
+ } // if
+
+ // Get Lagrange multiplier values from disp(t), and dispIncr(t->t+dt)
+ dispTSection->restrictPoint(vertexMesh, &lagrangeTVertex[0],
+ lagrangeTVertex.size());
+ dispTIncrSection->restrictPoint(vertexMesh, &lagrangeTIncrVertex[0],
+ lagrangeTIncrVertex.size());
+
+ // Compute Lagrange multiplier at time t+dt
+ lagrangeTpdtVertex = lagrangeTVertex + lagrangeTIncrVertex;
+ dLagrangeTpdtVertex = 0.0;
+
+ // :KLUDGE: Solution at Lagrange constraint vertices is the
+ // Lagrange multiplier value, which is currently the force.
+ // Compute traction by dividing force by area
+ assert(*areaVertex > 0);
+ tractionTVertex = lagrangeTVertex / (*areaVertex);
+ tractionTpdtVertex = lagrangeTpdtVertex / (*areaVertex);
+
+ // Use fault constitutive model to compute traction associated with
+ // friction.
+ // :KLUDGE: TEMPORARY BEGIN CONSTANT COEFFICIENT OF FRICTION
+ const double muf = 0.6;
+ switch (spaceDim)
+ { // switch
+ case 1 :
+ { // case 1
+ // Sensitivity of slip to changes in the Lagrange multipliers
+ // Aixjx = 1.0/Aix + 1.0/Ajx
+ const double Aixjx =
+ 1.0/jacobianVertex[0] + 1.0/jacobianVertex[spaceDim+0];
+ const double Spp = 1.0;
+
+ if (tractionTpdtVertex[0]+tractionInitialVertex[0] < 0) {
+ // if compression, then no changes to solution
+ } else {
+ // if tension, then traction is zero.
+
+ // Update slip based on value required to stick versus
+ // zero traction
+ dLagrangeTpdtVertex[0] = tractionTpdtVertex[0] * (*areaVertex);
+ slipVertex[0] += Spp * dLagrangeTpdtVertex[0];
+
+ // Set traction to zero.
+ tractionTpdtVertex[0] = 0.0;
+ } // else
+ break;
+ } // case 1
+ case 2 :
+ { // case 2
+ std::cout << "Normal traction:"
+ << tractionTpdtVertex[1]+tractionInitialVertex[1]
+ << std::endl;
+
+ // Sensitivity of slip to changes in the Lagrange multipliers
+ // Aixjx = 1.0/Aix + 1.0/Ajx
+ assert(jacobianVertex[0] > 0.0);
+ assert(jacobianVertex[spaceDim+0] > 0.0);
+ const double Aixjx =
+ 1.0 / jacobianVertex[0] + 1.0 / jacobianVertex[spaceDim+0];
+ // Aiyjy = 1.0/Aiy + 1.0/Ajy
+ assert(jacobianVertex[1] > 0.0);
+ assert(jacobianVertex[spaceDim+1] > 0.0);
+ const double Aiyjy =
+ 1.0 / jacobianVertex[1] + 1.0 / jacobianVertex[spaceDim+1];
+ const double Cpx = orientationVertex[0];
+ const double Cpy = orientationVertex[1];
+ const double Cqx = orientationVertex[2];
+ const double Cqy = orientationVertex[3];
+ const double Spp = Cpx*Cpx*Aixjx + Cpy*Cpy*Aiyjy;
+ const double Spq = Cpx*Cqx*Aixjx + Cpy*Cqy*Aiyjy;
+ const double Sqq = Cqx*Cqx*Aixjx + Cqy*Cqy*Aiyjy;
+
+ if (tractionTpdtVertex[1]+tractionInitialVertex[1] < 0 &&
+ 0 == slipVertex[1]) {
+ // if in compression and no opening
+ std::cout << "FAULT IN COMPRESSION" << std::endl;
+ const double friction =
+ -muf * (tractionInitialVertex[1] + tractionTpdtVertex[1]);
+ std::cout << "friction: " << friction << std::endl;
+ if (tractionTpdtVertex[0] > friction ||
+ (tractionTpdtVertex[0] < friction && slipVertex[0] > 0.0)) {
+ // traction is limited by friction, so have sliding
+ std::cout << "LIMIT TRACTION, HAVE SLIDING" << std::endl;
+
+ // Update slip based on value required to stick versus friction
+ dLagrangeTpdtVertex[0] =
+ (tractionTpdtVertex[0] - friction) * (*areaVertex);
+ slipVertex[0] += Spp * dLagrangeTpdtVertex[0];
+ std::cout << "Estimated slip: " << slipVertex[0] << std::endl;
+ // Limit traction
+ tractionTpdtVertex[0] = friction;
+ } else {
+ // else friction exceeds value necessary, so stick
+ std::cout << "STICK" << std::endl;
+ // no changes to solution
+ } // if/else
+ } else {
+ // if in tension, then traction is zero.
+ std::cout << "FAULT IN TENSION" << std::endl;
+
+ // Update slip based on value required to stick versus
+ // zero traction
+ dLagrangeTpdtVertex[0] = tractionTpdtVertex[0] * (*areaVertex);
+ dLagrangeTpdtVertex[1] = tractionTpdtVertex[1] * (*areaVertex);
+ slipVertex[0] +=
+ Spp * dLagrangeTpdtVertex[0] +
+ Spq * dLagrangeTpdtVertex[1];
+ slipVertex[1] +=
+ Spq * dLagrangeTpdtVertex[0] +
+ Sqq * dLagrangeTpdtVertex[1];
+
+ // Set traction to zero
+ tractionTpdtVertex = 0.0;
+ } // else
+ break;
+ } // case 2
+ case 3 :
+ { // case 3
+ std::cout << "Normal traction:"
+ << tractionTpdtVertex[2]+tractionInitialVertex[2]
+ << std::endl;
+
+ // Sensitivity of slip to changes in the Lagrange multipliers
+ // Aixjx = 1.0/Aix + 1.0/Ajx
+ assert(jacobianVertex[0] > 0.0);
+ assert(jacobianVertex[spaceDim+0] > 0.0);
+ const double Aixjx =
+ 1.0/jacobianVertex[0] + 1.0/jacobianVertex[spaceDim+0];
+ // Aiyjy = 1.0/Aiy + 1.0/Ajy
+ assert(jacobianVertex[1] > 0.0);
+ assert(jacobianVertex[spaceDim+1] > 0.0);
+ const double Aiyjy =
+ 1.0/jacobianVertex[1] + 1.0/jacobianVertex[spaceDim+1];
+ // Aizjz = 1.0/Aiz + 1.0/Ajz
+ assert(jacobianVertex[2] > 0.0);
+ assert(jacobianVertex[spaceDim+2] > 0.0);
+ const double Aizjz =
+ 1.0/jacobianVertex[2] + 1.0/jacobianVertex[spaceDim+2];
+ const double Cpx = orientationVertex[0];
+ const double Cpy = orientationVertex[1];
+ const double Cpz = orientationVertex[2];
+ const double Cqx = orientationVertex[3];
+ const double Cqy = orientationVertex[4];
+ const double Cqz = orientationVertex[5];
+ const double Crx = orientationVertex[6];
+ const double Cry = orientationVertex[7];
+ const double Crz = orientationVertex[8];
+ const double Spp = Cpx*Cpx*Aixjx + Cpy*Cpy*Aiyjy + Cpz*Cpz*Aizjz;
+ const double Spq = Cpx*Cqx*Aixjx + Cpy*Cqy*Aiyjy + Cpz*Cqz*Aizjz;
+ const double Spr = Cpx*Crx*Aixjx + Cpy*Cry*Aiyjy + Cpz*Crz*Aizjz;
+ const double Sqq = Cqx*Cqx*Aixjx + Cqy*Cqy*Aiyjy + Cqz*Cqz*Aizjz;
+ const double Sqr = Cqx*Crx*Aixjx + Cqy*Cry*Aiyjy + Cqz*Crz*Aizjz;
+ const double Srr = Crx*Crx*Aixjx + Cry*Cry*Aiyjy + Crz*Crz*Aizjz;
+
+ double tractionTotalVertex;
+ double tractionShearVertex;
+ double slipShearVertex;
+
+ tractionTotalVertex = tractionTpdtVertex[2]+tractionInitialVertex[2];
+ tractionShearVertex = sqrt(pow(tractionTpdtVertex[1],2) +pow(tractionTpdtVertex[0],2));
+ slipShearVertex = sqrt(pow(slipVertex[1],2)+pow(slipVertex[0],2));
+
+ if (tractionTotalVertex < 0 && 0 == slipVertex[2]) {
+ // if in compression and no opening
+ std::cout << "FAULT IN COMPRESSION" << std::endl;
+ const double friction =
+ -muf * (tractionTotalVertex);
+ std::cout << "friction: " << friction << std::endl;
+ if (tractionShearVertex > friction ||
+ (tractionShearVertex < friction && slipShearVertex > 0.0)) {
+ // traction is limited by friction, so have sliding
+ std::cout << "LIMIT TRACTION, HAVE SLIDING" << std::endl;
+
+ // Update slip based on value required to stick versus friction
+ dLagrangeTpdtVertex[0] = (tractionShearVertex-friction) *
+ tractionTpdtVertex[0] / tractionShearVertex * (*areaVertex);
+ dLagrangeTpdtVertex[1] = (tractionShearVertex-friction) *
+ tractionTpdtVertex[1] / tractionShearVertex * (*areaVertex);
+ slipVertex[0] +=
+ Spp * dLagrangeTpdtVertex[0] +
+ Spq * dLagrangeTpdtVertex[1];
+
+ slipVertex[1] +=
+ Spq * dLagrangeTpdtVertex[0] +
+ Sqq * dLagrangeTpdtVertex[1];
+
+ std::cout << "Estimated slip: "
+ << " " << slipVertex[0]
+ << " " << slipVertex[1]
+ << " " << slipVertex[2]
+ << std::endl;
+
+ // Limit traction
+ tractionTpdtVertex[0] =
+ friction * tractionTpdtVertex[0] / tractionShearVertex;
+ tractionTpdtVertex[1] =
+ friction * tractionTpdtVertex[1] / tractionShearVertex;
+ } else {
+ // else friction exceeds value necessary, so stick
+ std::cout << "STICK" << std::endl;
+ // no changes to solution
+ } // if/else
+ } else {
+ // if in tension, then traction is zero.
+ std::cout << "FAULT IN TENSION" << std::endl;
+
+ // Update slip based on value required to stick versus
+ // zero traction
+ dLagrangeTpdtVertex[0] = tractionTpdtVertex[0] * (*areaVertex);
+ dLagrangeTpdtVertex[1] = tractionTpdtVertex[1] * (*areaVertex);
+ dLagrangeTpdtVertex[2] = tractionTpdtVertex[2] * (*areaVertex);
+ slipVertex[0] +=
+ Spp * dLagrangeTpdtVertex[0] +
+ Spq * dLagrangeTpdtVertex[1] +
+ Spr * dLagrangeTpdtVertex[2];
+ slipVertex[1] +=
+ Spq * dLagrangeTpdtVertex[0] +
+ Sqq * dLagrangeTpdtVertex[1] +
+ Sqr * dLagrangeTpdtVertex[2];
+ slipVertex[2] +=
+ Spr * dLagrangeTpdtVertex[0] +
+ Sqr * dLagrangeTpdtVertex[1] +
+ Srr * dLagrangeTpdtVertex[2];
+
+ std::cout << "Estimated slip: "
+ << " " << slipVertex[0]
+ << " " << slipVertex[1]
+ << " " << slipVertex[2]
+ << std::endl;
+
+ // Set traction to zero
+ tractionTpdtVertex = 0.0;
+ } // else
+ break;
+ } // case 3
+ default :
+ assert(0);
+ } // switch
+ // TEMPORARY END
+
+ // Update Lagrange multiplier values.
+ // :KLUDGE: (TEMPORARY) Solution at Lagrange constraint vertices
+ // is the Lagrange multiplier value, which is currently the
+ // force. Compute force by multipling traction by area
+ lagrangeTIncrVertex =
+ (tractionTpdtVertex - tractionTVertex) * (*areaVertex);
+ assert(lagrangeTIncrVertex.size() ==
+ dispTIncrSection->getFiberDimension(vertexMesh));
+ dispTIncrSection->updatePoint(vertexMesh, &lagrangeTIncrVertex[0]);
+
+ // Update the slip estimate based on adjustment to the Lagrange
+ // multiplier values.
+ assert(slipVertex.size() ==
+ slipSection->getFiberDimension(vertexFault));
+ slipSection->updatePoint(vertexFault, &slipVertex[0]);
+ } // if
+
+ dispTIncrSection->view("AFTER DISP INCR (t->t+dt)");
+ slipSection->view("AFTER SLIP");
+
+ // FIX THIS
+ PetscLogFlops(0);
+} // constrainSolnSpace
+
+// ----------------------------------------------------------------------
+// Verify configuration is acceptable.
+void
+pylith::faults::FaultCohesiveDynL::verifyConfiguration(
+ const topology::Mesh& mesh) const
+{ // verifyConfiguration
+ assert(0 != _quadrature);
+
+ const ALE::Obj<SieveMesh>& sieveMesh = mesh.sieveMesh();
+ assert(!sieveMesh.isNull());
+
+ if (!sieveMesh->hasIntSection(label())) {
+ std::ostringstream msg;
+ msg << "Mesh missing group of vertices '" << label()
+ << " for boundary condition.";
+ throw std::runtime_error(msg.str());
+ } // if
+
+ // check compatibility of mesh and quadrature scheme
+ const int dimension = mesh.dimension()-1;
+ if (_quadrature->cellDim() != dimension) {
+ std::ostringstream msg;
+ msg << "Dimension of reference cell in quadrature scheme ("
+ << _quadrature->cellDim()
+ << ") does not match dimension of cells in mesh ("
+ << dimension << ") for fault '" << label()
+ << "'.";
+ throw std::runtime_error(msg.str());
+ } // if
+
+ const int numCorners = _quadrature->refGeometry().numCorners();
+ const ALE::Obj<SieveMesh::label_sequence>& cells =
+ sieveMesh->getLabelStratum("material-id", id());
+ assert(!cells.isNull());
+ const SieveMesh::label_sequence::iterator cellsBegin = cells->begin();
+ const SieveMesh::label_sequence::iterator cellsEnd = cells->end();
+ for (SieveMesh::label_sequence::iterator c_iter=cellsBegin;
+ c_iter != cellsEnd;
+ ++c_iter) {
+ const int cellNumCorners = sieveMesh->getNumCellCorners(*c_iter);
+ if (3*numCorners != cellNumCorners) {
+ std::ostringstream msg;
+ msg << "Number of vertices in reference cell (" << numCorners
+ << ") is not compatible with number of vertices (" << cellNumCorners
+ << ") in cohesive cell " << *c_iter << " for fault '"
+ << label() << "'.";
+ throw std::runtime_error(msg.str());
+ } // if
+ } // for
+} // verifyConfiguration
+
+// ----------------------------------------------------------------------
+// Get vertex field associated with integrator.
+const pylith::topology::Field<pylith::topology::SubMesh>&
+pylith::faults::FaultCohesiveDynL::vertexField(
+ const char* name,
+ const topology::SolutionFields* fields)
+{ // vertexField
+ assert(0 != _faultMesh);
+ assert(0 != _quadrature);
+ assert(0 != _normalizer);
+ assert(0 != _fields);
+
+ const int cohesiveDim = _faultMesh->dimension();
+ const int spaceDim = _quadrature->spaceDim();
+
+ const int slipStrLen = strlen("final_slip");
+ const int timeStrLen = strlen("slip_time");
+
+ double scale = 0.0;
+ int fiberDim = 0;
+ if (0 == strcasecmp("slip", name)) {
+ const topology::Field<topology::SubMesh>& slip = _fields->get("slip");
+ return slip;
+
+ } else if (cohesiveDim > 0 && 0 == strcasecmp("strike_dir", name)) {
+ const ALE::Obj<RealSection>& orientationSection =
+ _fields->get("orientation").section();
+ assert(!orientationSection.isNull());
+ const ALE::Obj<RealSection>& dirSection =
+ orientationSection->getFibration(0);
+ assert(!dirSection.isNull());
+ _allocateBufferVertexVectorField();
+ topology::Field<topology::SubMesh>& buffer =
+ _fields->get("buffer (vector)");
+ buffer.copy(dirSection);
+ buffer.label("strike_dir");
+ buffer.scale(1.0);
+ return buffer;
+
+ } else if (2 == cohesiveDim && 0 == strcasecmp("dip_dir", name)) {
+ const ALE::Obj<RealSection>& orientationSection =
+ _fields->get("orientation").section();
+ assert(!orientationSection.isNull());
+ const ALE::Obj<RealSection>& dirSection =
+ orientationSection->getFibration(1);
+ _allocateBufferVertexVectorField();
+ topology::Field<topology::SubMesh>& buffer =
+ _fields->get("buffer (vector)");
+ buffer.copy(dirSection);
+ buffer.label("dip_dir");
+ buffer.scale(1.0);
+ return buffer;
+
+ } else if (0 == strcasecmp("normal_dir", name)) {
+ const ALE::Obj<RealSection>& orientationSection =
+ _fields->get("orientation").section();
+ assert(!orientationSection.isNull());
+ const int space =
+ (0 == cohesiveDim) ? 0 : (1 == cohesiveDim) ? 1 : 2;
+ const ALE::Obj<RealSection>& dirSection =
+ orientationSection->getFibration(space);
+ assert(!dirSection.isNull());
+ _allocateBufferVertexVectorField();
+ topology::Field<topology::SubMesh>& buffer =
+ _fields->get("buffer (vector)");
+ buffer.copy(dirSection);
+ buffer.label("normal_dir");
+ buffer.scale(1.0);
+ return buffer;
+
+ } else if (0 == strncasecmp("initial_traction", name, slipStrLen)) {
+ assert(0 != _dbInitial);
+ const topology::Field<topology::SubMesh>& initialTraction =
+ _fields->get("initial traction");
+ return initialTraction;
+
+ } else if (0 == strcasecmp("traction", name)) {
+ assert(0 != fields);
+ const topology::Field<topology::Mesh>& dispT = fields->get("disp(t)");
+ _allocateBufferVertexVectorField();
+ topology::Field<topology::SubMesh>& buffer =
+ _fields->get("buffer (vector)");
+ _calcTractions(&buffer, dispT);
+ return buffer;
+
+ } else {
+ std::ostringstream msg;
+ msg << "Request for unknown vertex field '" << name
+ << "' for fault '" << label() << "'.";
+ throw std::runtime_error(msg.str());
+ } // else
+
+
+ // Satisfy return values
+ assert(0 != _fields);
+ const topology::Field<topology::SubMesh>& buffer =
+ _fields->get("buffer (vector)");
+ return buffer;
+} // vertexField
+
+// ----------------------------------------------------------------------
+// Get cell field associated with integrator.
+const pylith::topology::Field<pylith::topology::SubMesh>&
+pylith::faults::FaultCohesiveDynL::cellField(
+ const char* name,
+ const topology::SolutionFields* fields)
+{ // cellField
+ // Should not reach this point if requested field was found
+ std::ostringstream msg;
+ msg << "Request for unknown cell field '" << name
+ << "' for fault '" << label() << ".";
+ throw std::runtime_error(msg.str());
+
+ // Satisfy return values
+ assert(0 != _fields);
+ const topology::Field<topology::SubMesh>& buffer =
+ _fields->get("buffer (vector)");
+ return buffer;
+} // cellField
+
+// ----------------------------------------------------------------------
+// Calculate orientation at fault vertices.
+void
+pylith::faults::FaultCohesiveDynL::_calcOrientation(const double upDir[3],
+ const double normalDir[3])
+{ // _calcOrientation
+ assert(0 != upDir);
+ assert(0 != normalDir);
+ assert(0 != _faultMesh);
+ assert(0 != _fields);
+
+ double_array upDirArray(upDir, 3);
+
+ // Get vertices in fault mesh.
+ const ALE::Obj<SieveSubMesh>& faultSieveMesh = _faultMesh->sieveMesh();
+ assert(!faultSieveMesh.isNull());
+ const ALE::Obj<SieveSubMesh::label_sequence>& vertices =
+ faultSieveMesh->depthStratum(0);
+ const SieveSubMesh::label_sequence::iterator verticesBegin = vertices->begin();
+ const SieveSubMesh::label_sequence::iterator verticesEnd = vertices->end();
+
+ // Containers for orientation information.
+ const int cohesiveDim = _faultMesh->dimension();
+ const int numBasis = _quadrature->numBasis();
+ const int spaceDim = _quadrature->spaceDim();
+ const int orientationSize = spaceDim*spaceDim;
+ const feassemble::CellGeometry& cellGeometry = _quadrature->refGeometry();
+ const double_array& verticesRef = cellGeometry.vertices();
+ const int jacobianSize = (cohesiveDim > 0) ? spaceDim * cohesiveDim : 1;
+ const double_array& quadWts = _quadrature->quadWts();
+ double_array jacobian(jacobianSize);
+ double jacobianDet = 0;
+ double_array orientationVertex(orientationSize);
+ double_array coordinatesCell(numBasis*spaceDim);
+ double_array refCoordsVertex(cohesiveDim);
+
+ // Allocate orientation field.
+ _fields->add("orientation", "orientation");
+ topology::Field<topology::SubMesh>& orientation = _fields->get("orientation");
+ const topology::Field<topology::SubMesh>& slip = _fields->get("slip");
+ orientation.newSection(slip, orientationSize);
+ const ALE::Obj<RealSection>& orientationSection = orientation.section();
+ assert(!orientationSection.isNull());
+ // Create subspaces for along-strike, up-dip, and normal directions
+ for (int iDim=0; iDim <= cohesiveDim; ++iDim)
+ orientationSection->addSpace();
+ for (int iDim=0; iDim <= cohesiveDim; ++iDim)
+ orientationSection->setFiberDimension(vertices, spaceDim, iDim);
+ orientation.allocate();
+ orientation.zero();
+
+ // Get fault cells.
+ const ALE::Obj<SieveSubMesh::label_sequence>& cells =
+ faultSieveMesh->heightStratum(0);
+ assert(!cells.isNull());
+ const SieveSubMesh::label_sequence::iterator cellsBegin = cells->begin();
+ const SieveSubMesh::label_sequence::iterator cellsEnd = cells->end();
+
+ // Compute orientation of fault at constraint vertices
+
+ // Get section containing coordinates of vertices
+ const ALE::Obj<RealSection>& coordinatesSection =
+ faultSieveMesh->getRealSection("coordinates");
+ assert(!coordinatesSection.isNull());
+ topology::Mesh::RestrictVisitor coordinatesVisitor(*coordinatesSection,
+ coordinatesCell.size(),
+ &coordinatesCell[0]);
+
+ // Set orientation function
+ assert(cohesiveDim == _quadrature->cellDim());
+ assert(spaceDim == _quadrature->spaceDim());
+
+ // Loop over cohesive cells, computing orientation weighted by
+ // jacobian at constraint vertices
+
+ const ALE::Obj<SieveSubMesh::sieve_type>& sieve = faultSieveMesh->getSieve();
+ assert(!sieve.isNull());
+ typedef ALE::SieveAlg<SieveSubMesh> SieveAlg;
+
+ ALE::ISieveVisitor::NConeRetriever<SieveMesh::sieve_type> ncV(*sieve, (size_t) pow(sieve->getMaxConeSize(), std::max(0, faultSieveMesh->depth())));
+
+ for (SieveSubMesh::label_sequence::iterator c_iter=cellsBegin;
+ c_iter != cellsEnd;
+ ++c_iter) {
+ // Get orientations at fault cell's vertices.
+ coordinatesVisitor.clear();
+ faultSieveMesh->restrictClosure(*c_iter, coordinatesVisitor);
+
+ ncV.clear();
+ ALE::ISieveTraversal<SieveSubMesh::sieve_type>::orientedClosure(*sieve, *c_iter, ncV);
+ const int coneSize = ncV.getSize();
+ const Mesh::point_type *cone = ncV.getPoints();
+
+ for (int v=0; v < coneSize; ++v) {
+ // Compute Jacobian and determinant of Jacobian at vertex
+ memcpy(&refCoordsVertex[0], &verticesRef[v*cohesiveDim],
+ cohesiveDim*sizeof(double));
+ cellGeometry.jacobian(&jacobian, &jacobianDet, coordinatesCell,
+ refCoordsVertex);
+
+ // Compute orientation
+ cellGeometry.orientation(&orientationVertex, jacobian, jacobianDet,
+ upDirArray);
+
+ // Update orientation
+ orientationSection->updateAddPoint(cone[v], &orientationVertex[0]);
+ } // for
+ } // for
+
+ //orientation.view("ORIENTATION BEFORE COMPLETE");
+
+ // Assemble orientation information
+ orientation.complete();
+
+ // Loop over vertices, make orientation information unit magnitude
+ double_array vertexDir(orientationSize);
+ int count = 0;
+ for (SieveSubMesh::label_sequence::iterator v_iter=verticesBegin;
+ v_iter != verticesEnd;
+ ++v_iter, ++count) {
+ orientationVertex = 0.0;
+ orientationSection->restrictPoint(*v_iter, &orientationVertex[0],
+ orientationVertex.size());
+ for (int iDim=0; iDim < spaceDim; ++iDim) {
+ double mag = 0;
+ for (int jDim=0, index=iDim*spaceDim; jDim < spaceDim; ++jDim)
+ mag += pow(orientationVertex[index+jDim],2);
+ mag = sqrt(mag);
+ assert(mag > 0.0);
+ for (int jDim=0, index=iDim*spaceDim; jDim < spaceDim; ++jDim)
+ orientationVertex[index+jDim] /= mag;
+ } // for
+
+ orientationSection->updatePoint(*v_iter, &orientationVertex[0]);
+ } // for
+ PetscLogFlops(count * orientationSize * 4);
+
+ if (2 == cohesiveDim && vertices->size() > 0) {
+ // Check orientation of first vertex, if dot product of fault
+ // normal with preferred normal is negative, flip up/down dip
+ // direction.
+ //
+ // If the user gives the correct normal direction (points from
+ // footwall to ahanging wall), we should end up with
+ // left-lateral-slip, reverse-slip, and fault-opening for positive
+ // slip values.
+ //
+ // When we flip the up/down dip direction, we create a left-handed
+ // strike/dip/normal coordinate system, but it gives the correct
+ // sense of slip. In reality the strike/dip/normal directions that
+ // are used are the opposite of what we would want, but we cannot
+ // flip the fault normal direction because it is tied to how the
+ // cohesive cells are created.
+
+ assert(vertices->size() > 0);
+ orientationSection->restrictPoint(*vertices->begin(), &orientationVertex[0],
+ orientationVertex.size());
+
+ assert(3 == spaceDim);
+ double_array normalDirVertex(&orientationVertex[6], 3);
+ const double normalDot =
+ normalDir[0]*normalDirVertex[0] +
+ normalDir[1]*normalDirVertex[1] +
+ normalDir[2]*normalDirVertex[2];
+
+ const int istrike = 0;
+ const int idip = 3;
+ const int inormal = 6;
+ if (normalDot < 0.0) {
+ // Flip dip direction
+ for (SieveSubMesh::label_sequence::iterator v_iter=verticesBegin;
+ v_iter != verticesEnd;
+ ++v_iter) {
+ orientationSection->restrictPoint(*v_iter, &orientationVertex[0],
+ orientationVertex.size());
+ assert(9 == orientationSection->getFiberDimension(*v_iter));
+ for (int iDim=0; iDim < 3; ++iDim) // flip dip
+ orientationVertex[idip+iDim] *= -1.0;
+
+ // Update direction
+ orientationSection->updatePoint(*v_iter, &orientationVertex[0]);
+ } // for
+ PetscLogFlops(5 + count * 3);
+ } // if
+ } // if
+
+ //orientation.view("ORIENTATION");
+} // _calcOrientation
+
+// ----------------------------------------------------------------------
+void
+pylith::faults::FaultCohesiveDynL::_calcArea(void)
+{ // _calcArea
+ assert(0 != _faultMesh);
+ assert(0 != _fields);
+
+ // Containers for area information
+ const int cellDim = _quadrature->cellDim();
+ const int numBasis = _quadrature->numBasis();
+ const int numQuadPts = _quadrature->numQuadPts();
+ const int spaceDim = _quadrature->spaceDim();
+ const feassemble::CellGeometry& cellGeometry = _quadrature->refGeometry();
+ const double_array& quadWts = _quadrature->quadWts();
+ assert(quadWts.size() == numQuadPts);
+ double jacobianDet = 0;
+ double_array areaCell(numBasis);
+
+ // Get vertices in fault mesh.
+ const ALE::Obj<SieveSubMesh>& faultSieveMesh = _faultMesh->sieveMesh();
+ assert(!faultSieveMesh.isNull());
+ const ALE::Obj<SieveSubMesh::label_sequence>& vertices =
+ faultSieveMesh->depthStratum(0);
+ const SieveSubMesh::label_sequence::iterator verticesBegin = vertices->begin();
+ const SieveSubMesh::label_sequence::iterator verticesEnd = vertices->end();
+
+ // Allocate area field.
+ _fields->add("area", "area");
+
+ topology::Field<topology::SubMesh>& area = _fields->get("area");
+ const topology::Field<topology::SubMesh>& slip = _fields->get("slip");
+ area.newSection(slip, 1);
+ area.allocate();
+ area.zero();
+ const ALE::Obj<RealSection>& areaSection = area.section();
+ assert(!areaSection.isNull());
+ topology::Mesh::UpdateAddVisitor areaVisitor(*areaSection, &areaCell[0]);
+
+ double_array coordinatesCell(numBasis*spaceDim);
+ const ALE::Obj<RealSection>& coordinates =
+ faultSieveMesh->getRealSection("coordinates");
+ assert(!coordinates.isNull());
+ topology::Mesh::RestrictVisitor coordsVisitor(*coordinates,
+ coordinatesCell.size(),
+ &coordinatesCell[0]);
+
+ const ALE::Obj<SieveSubMesh::label_sequence>& cells =
+ faultSieveMesh->heightStratum(0);
+ assert(!cells.isNull());
+ const SieveSubMesh::label_sequence::iterator cellsBegin = cells->begin();
+ const SieveSubMesh::label_sequence::iterator cellsEnd = cells->end();
+
+ // Loop over cells in fault mesh, compute area
+ for (SieveSubMesh::label_sequence::iterator c_iter = cellsBegin;
+ c_iter != cellsEnd;
+ ++c_iter) {
+ areaCell = 0.0;
+
+ // Compute geometry information for current cell
+#if defined(PRECOMPUTE_GEOMETRY)
+ _quadrature->retrieveGeometry(*c_iter);
+#else
+ coordsVisitor.clear();
+ faultSieveMesh->restrictClosure(*c_iter, coordsVisitor);
+ _quadrature->computeGeometry(coordinatesCell, *c_iter);
+#endif
+
+ // Get cell geometry information that depends on cell
+ const double_array& basis = _quadrature->basis();
+ const double_array& jacobianDet = _quadrature->jacobianDet();
+
+ // Compute area
+ for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
+ const double wt = quadWts[iQuad] * jacobianDet[iQuad];
+ for (int iBasis=0; iBasis < numBasis; ++iBasis) {
+ const double dArea = wt*basis[iQuad*numBasis+iBasis];
+ areaCell[iBasis] += dArea;
+ } // for
+ } // for
+ areaVisitor.clear();
+ faultSieveMesh->updateClosure(*c_iter, areaVisitor);
+
+ PetscLogFlops( numQuadPts*(1+numBasis*2) );
+ } // for
+
+ // Assemble area information
+ area.complete();
+
+#if 0 // DEBUGGING
+ area.view("AREA");
+ //_faultMesh->getSendOverlap()->view("Send fault overlap");
+ //_faultMesh->getRecvOverlap()->view("Receive fault overlap");
+#endif
+} // _calcArea
+
+// ----------------------------------------------------------------------
+// Compute change in tractions on fault surface using solution.
+// NOTE: We must convert vertex labels to fault vertex labels
+void
+pylith::faults::FaultCohesiveDynL::_calcTractions(
+ topology::Field<topology::SubMesh>* tractions,
+ const topology::Field<topology::Mesh>& dispT)
+{ // _calcTractionsChange
+ assert(0 != tractions);
+ assert(0 != _faultMesh);
+ assert(0 != _fields);
+ assert(0 != _normalizer);
+
+ // Get vertices from mesh of domain.
+ const ALE::Obj<SieveMesh>& sieveMesh = dispT.mesh().sieveMesh();
+ assert(!sieveMesh.isNull());
+ const ALE::Obj<SieveMesh::label_sequence>& vertices =
+ sieveMesh->depthStratum(0);
+ assert(!vertices.isNull());
+ const SieveMesh::label_sequence::iterator verticesBegin = vertices->begin();
+ const SieveMesh::label_sequence::iterator verticesEnd = vertices->end();
+
+ // Get fault vertices
+ const ALE::Obj<SieveMesh>& faultSieveMesh = _faultMesh->sieveMesh();
+ assert(!faultSieveMesh.isNull());
+ const ALE::Obj<SieveSubMesh::label_sequence>& fvertices =
+ faultSieveMesh->depthStratum(0);
+ const SieveSubMesh::label_sequence::iterator fverticesBegin = fvertices->begin();
+ const SieveSubMesh::label_sequence::iterator fverticesEnd = fvertices->end();
+
+ // Get sections.
+ const ALE::Obj<RealSection>& areaSection =
+ _fields->get("area").section();
+ assert(!areaSection.isNull());
+ const ALE::Obj<RealSection>& dispTSection = dispT.section();
+ assert(!dispTSection.isNull());
+
+ // Fiber dimension of tractions matches spatial dimension.
+ const int fiberDim = _quadrature->spaceDim();
+ double_array tractionsVertex(fiberDim);
+
+ // Allocate buffer for tractions field (if nec.).
+ const ALE::Obj<RealSection>& tractionsSection = tractions->section();
+ if (tractionsSection.isNull()) {
+ ALE::MemoryLogger& logger = ALE::MemoryLogger::singleton();
+ //logger.stagePush("Fault");
+
+ const topology::Field<topology::SubMesh>& slip =_fields->get("slip");
+ tractions->newSection(slip, fiberDim);
+ tractions->allocate();
+
+ //logger.stagePop();
+ } // if
+ assert(!tractionsSection.isNull());
+ const double pressureScale = _normalizer->pressureScale();
+ tractions->label("traction");
+ tractions->scale(pressureScale);
+ tractions->zero();
+
+ // Set tractions to initial tractions if they exist
+ if (0 != _dbInitial) {
+ const ALE::Obj<RealSection>& initialTractionSection =
+ _fields->get("initial traction").section();
+ assert(!initialTractionSection.isNull());
+ for (SubMesh::label_sequence::iterator v_iter = fverticesBegin;
+ v_iter != fverticesEnd;
+ ++v_iter) {
+ initialTractionSection->restrictPoint(*v_iter, &tractionsVertex[0],
+ tractionsVertex.size());
+ assert(fiberDim == tractionsSection->getFiberDimension(*v_iter));
+ tractionsSection->updatePoint(*v_iter, &tractionsVertex[0]);
+ } // for
+ } // if
+
+ const int numFaultVertices = fvertices->size();
+ Mesh::renumbering_type& renumbering = faultSieveMesh->getRenumbering();
+ const SieveSubMesh::renumbering_type::const_iterator renumberingEnd =
+ renumbering.end();
+
+#if 0 // DEBUGGING, MOVE TO SEPARATE CHECK METHOD
+ // Check fault mesh and volume mesh coordinates
+ const ALE::Obj<RealSection>& coordinates = mesh->getRealSection("coordinates");
+ const ALE::Obj<RealSection>& fCoordinates = _faultMesh->getRealSection("coordinates");
+
+ for (Mesh::label_sequence::iterator v_iter = verticesBegin;
+ v_iter != verticesEnd;
+ ++v_iter) {
+ if (renumbering.find(*v_iter) != renumberingEnd) {
+ const int v = *v_iter;
+ const int dim = coordinates->getFiberDimension(*v_iter);
+ const double *a = coordinates->restrictPoint(*v_iter);
+ const int fv = renumbering[*v_iter];
+ const int fDim = fCoordinates->getFiberDimension(fv);
+ const double *fa = fCoordinates->restrictPoint(fv);
+
+ if (dim != fDim) throw ALE::Exception("Coordinate fiber dimensions do not match");
+ for(int d = 0; d < dim; ++d) {
+ if (a[d] != fa[d]) throw ALE::Exception("Coordinate values do not match");
+ }
+ }
+ }
+#endif
+
+ for (SieveMesh::label_sequence::iterator v_iter = verticesBegin;
+ v_iter != verticesEnd;
+ ++v_iter)
+ if (renumbering.find(*v_iter) != renumberingEnd) {
+ const int vertexMesh = *v_iter;
+ const int vertexFault = renumbering[*v_iter];
+ assert(fiberDim == dispTSection->getFiberDimension(vertexMesh));
+ assert(fiberDim == tractionsSection->getFiberDimension(vertexFault));
+ assert(1 == areaSection->getFiberDimension(vertexFault));
+
+ const double* dispTVertex = dispTSection->restrictPoint(vertexMesh);
+ assert(0 != dispTVertex);
+ const double* areaVertex = areaSection->restrictPoint(vertexFault);
+ assert(0 != areaVertex);
+
+ for (int i=0; i < fiberDim; ++i)
+ tractionsVertex[i] = dispTVertex[i] / areaVertex[0];
+
+ tractionsSection->updatePointAllAdd(vertexFault, &tractionsVertex[0]);
+ } // if
+
+ PetscLogFlops(numFaultVertices * (1 + fiberDim) );
+
+#if 0 // DEBUGGING
+ tractions->view("TRACTIONS");
+#endif
+} // _calcTractions
+
+// ----------------------------------------------------------------------
+void
+pylith::faults::FaultCohesiveDynL::_getInitialTractions(void)
+{ // _getInitialTractions
+ assert(0 != _normalizer);
+ assert(0 != _quadrature);
+
+ const double pressureScale = _normalizer->pressureScale();
+ const double lengthScale = _normalizer->lengthScale();
+
+ const int spaceDim = _quadrature->spaceDim();
+ const int numQuadPts = _quadrature->numQuadPts();
+
+ if (0 != _dbInitial) { // Setup initial values, if provided.
+ // Create section to hold initial tractions.
+ _fields->add("initial traction", "initial_traction");
+ topology::Field<topology::SubMesh>& traction = _fields->get("initial traction");
+ topology::Field<topology::SubMesh>& slip = _fields->get("slip");
+ traction.cloneSection(slip);
+ traction.scale(pressureScale);
+ const ALE::Obj<RealSection>& tractionSection = traction.section();
+ assert(!tractionSection.isNull());
+
+ _dbInitial->open();
+ switch (spaceDim)
+ { // switch
+ case 1 : {
+ const char* valueNames[] = {"traction-normal"};
+ _dbInitial->queryVals(valueNames, 1);
+ break;
+ } // case 1
+ case 2 : {
+ const char* valueNames[] = {"traction-shear", "traction-normal"};
+ _dbInitial->queryVals(valueNames, 2);
+ break;
+ } // case 2
+ case 3 : {
+ const char* valueNames[] = {"traction-shear-leftlateral",
+ "traction-shear-updip",
+ "traction-normal"};
+ _dbInitial->queryVals(valueNames, 3);
+ break;
+ } // case 3
+ default :
+ std::cerr << "Bad spatial dimension '" << spaceDim << "'." << std::endl;
+ assert(0);
+ throw std::logic_error("Bad spatial dimension in Neumann.");
+ } // switch
+
+ // Get 'fault' vertices.
+ const ALE::Obj<SieveSubMesh>& faultSieveMesh = _faultMesh->sieveMesh();
+ assert(!faultSieveMesh.isNull());
+ const ALE::Obj<SieveSubMesh::label_sequence>& vertices =
+ faultSieveMesh->depthStratum(0);
+ assert(!vertices.isNull());
+ const SieveSubMesh::label_sequence::iterator verticesBegin =
+ vertices->begin();
+ const SieveSubMesh::label_sequence::iterator verticesEnd = vertices->end();
+
+ const int numBasis = _quadrature->numBasis();
+ const int spaceDim = _quadrature->spaceDim();
+
+ // Containers for database query results and quadrature coordinates in
+ // reference geometry.
+ double_array tractionVertex(spaceDim);
+ double_array coordsVertex(spaceDim);
+
+ // Get sections.
+ const ALE::Obj<RealSection>& coordinates =
+ faultSieveMesh->getRealSection("coordinates_dimensioned");
+ assert(!coordinates.isNull());
+ const spatialdata::geocoords::CoordSys* cs = _faultMesh->coordsys();
+
+ // Loop over vertices in fault mesh and perform queries.
+ for (SieveSubMesh::label_sequence::iterator v_iter = verticesBegin;
+ v_iter != verticesEnd;
+ ++v_iter) {
+ coordinates->restrictPoint(*v_iter,
+ &coordsVertex[0], coordsVertex.size());
+
+ tractionVertex = 0.0;
+ const int err = _dbInitial->query(&tractionVertex[0], spaceDim,
+ &coordsVertex[0], spaceDim, cs);
+ if (err) {
+ std::ostringstream msg;
+ msg << "Could not find initial tractions at (";
+ for (int i=0; i < spaceDim; ++i)
+ msg << " " << coordsVertex[i];
+ msg << ") for dynamic fault interface " << label() << "\n"
+ << "using spatial database " << _dbInitial->label() << ".";
+ throw std::runtime_error(msg.str());
+ } // if
+
+ _normalizer->nondimensionalize(&tractionVertex[0], tractionVertex.size(),
+ pressureScale);
+
+ // Update section
+ assert(tractionVertex.size() == tractionSection->getFiberDimension(*v_iter));
+ tractionSection->updatePoint(*v_iter, &tractionVertex[0]);
+ } // for
+
+ _dbInitial->close();
+
+ // debugging
+ traction.view("INITIAL TRACTIONS");
+ } // if
+} // _getInitialTractions
+
+// ----------------------------------------------------------------------
+void
+pylith::faults::FaultCohesiveDynL::_initConstitutiveModel(void)
+{ // _initConstitutiveModel
+ // :TODO: ADD STUFF HERE
+} // _initConstitutiveModel
+
+// ----------------------------------------------------------------------
+// Update diagonal of Jacobian at conventional vertices i and j
+// associated with Lagrange vertex k.
+void
+pylith::faults::FaultCohesiveDynL::_updateJacobianDiagonal(
+ const topology::SolutionFields& fields)
+{ // _updateJacobianDiagonal
+ assert(0 != _fields);
+
+ // Get cohesive cells
+ const ALE::Obj<SieveMesh>& sieveMesh = fields.mesh().sieveMesh();
+ assert(!sieveMesh.isNull());
+ const ALE::Obj<SieveMesh::label_sequence>& cellsCohesive =
+ sieveMesh->getLabelStratum("material-id", id());
+ assert(!cellsCohesive.isNull());
+ const SieveMesh::label_sequence::iterator cellsCohesiveBegin =
+ cellsCohesive->begin();
+ const SieveMesh::label_sequence::iterator cellsCohesiveEnd =
+ cellsCohesive->end();
+ const int cellsCohesiveSize = cellsCohesive->size();
+
+ const ALE::Obj<SieveSubMesh>& faultSieveMesh = _faultMesh->sieveMesh();
+ assert(!faultSieveMesh.isNull());
+
+ const int spaceDim = _quadrature->spaceDim();
+ const int numConstraintVert = _quadrature->numBasis();
+ const int numCorners = 3*numConstraintVert; // cohesive cell
+
+ // Get section information
+ double_array jacobianDiagCell(numCorners*spaceDim);
+ const ALE::Obj<RealSection>& jacobianDiagSection =
+ fields.get("Jacobian diagonal").section();
+ assert(!jacobianDiagSection.isNull());
+ topology::Mesh::RestrictVisitor jacobianDiagVisitor(*jacobianDiagSection,
+ jacobianDiagCell.size(),
+ &jacobianDiagCell[0]);
+
+ double_array jacobianDiagFaultCell(numConstraintVert*2*spaceDim);
+ const ALE::Obj<RealSection>& jacobianDiagFaultSection =
+ _fields->get("Jacobian diagonal").section();
+ topology::Mesh::UpdateAllVisitor jacobianDiagFaultVisitor(*jacobianDiagFaultSection,
+ &jacobianDiagFaultCell[0]);
+
+ for (SieveMesh::label_sequence::iterator c_iter=cellsCohesiveBegin;
+ c_iter != cellsCohesiveEnd;
+ ++c_iter) {
+ const SieveMesh::point_type c_fault = _cohesiveToFault[*c_iter];
+
+ jacobianDiagVisitor.clear();
+ sieveMesh->restrictClosure(*c_iter, jacobianDiagVisitor);
+
+ for (int iConstraint=0, indexF=0;
+ iConstraint < numConstraintVert;
+ ++iConstraint) {
+ // Blocks in cell matrix associated with normal cohesive
+ // vertices i and j and constraint vertex k
+ const int indexI = iConstraint;
+ const int indexJ = iConstraint + numConstraintVert;
+ const int indexK = iConstraint + 2*numConstraintVert;
+
+ // Diagonal for vertex i
+ for (int iDim=0; iDim < spaceDim; ++iDim) {
+ jacobianDiagFaultCell[indexF+iDim] =
+ jacobianDiagCell[indexI*spaceDim+iDim];
+ assert(jacobianDiagFaultCell[indexF+iDim] > 0.0);
+ } // for
+ indexF += spaceDim;
+
+ // Diagonal for vertex j
+ for (int iDim=0; iDim < spaceDim; ++iDim) {
+ jacobianDiagFaultCell[indexF+iDim] =
+ jacobianDiagCell[indexJ*spaceDim+iDim];
+ assert(jacobianDiagFaultCell[indexF+iDim] > 0.0);
+ } // for
+ indexF += spaceDim;
+ } // for
+
+ // Insert cell contribution into
+ jacobianDiagFaultVisitor.clear();
+ faultSieveMesh->updateClosure(c_fault, jacobianDiagFaultVisitor);
+ } // for
+} // _updateJacobianDiagonal
+
+// ----------------------------------------------------------------------
+// Allocate buffer for vector field.
+void
+pylith::faults::FaultCohesiveDynL::_allocateBufferVertexVectorField(void)
+{ // _allocateBufferVertexVectorField
+ assert(0 != _fields);
+ if (_fields->hasField("buffer (vector)"))
+ return;
+
+ ALE::MemoryLogger& logger = ALE::MemoryLogger::singleton();
+ logger.stagePush("Output");
+
+ // Create vector field; use same shape/chart as slip field.
+ assert(0 != _faultMesh);
+ _fields->add("buffer (vector)", "buffer");
+ topology::Field<topology::SubMesh>& buffer =
+ _fields->get("buffer (vector)");
+ const topology::Field<topology::SubMesh>& slip =
+ _fields->get("slip");
+ buffer.cloneSection(slip);
+ buffer.zero();
+
+ logger.stagePop();
+} // _allocateBufferVertexVectorField
+
+// ----------------------------------------------------------------------
+// Allocate buffer for scalar field.
+void
+pylith::faults::FaultCohesiveDynL::_allocateBufferVertexScalarField(void)
+{ // _allocateBufferVertexScalarField
+ assert(0 != _fields);
+ if (_fields->hasField("buffer (scalar)"))
+ return;
+
+ ALE::MemoryLogger& logger = ALE::MemoryLogger::singleton();
+ logger.stagePush("Output");
+
+ // Create vector field; use same shape/chart as area field.
+ assert(0 != _faultMesh);
+ _fields->add("buffer (scalar)", "buffer");
+ topology::Field<topology::SubMesh>& buffer =
+ _fields->get("buffer (scalar)");
+ const topology::Field<topology::SubMesh>& area = _fields->get("area");
+ buffer.cloneSection(area);
+ buffer.zero();
+
+ logger.stagePop();
+} // _allocateBufferVertexScalarField
+
+
+// End of file
Copied: short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveDynL.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/libsrc/faults/FaultCohesiveDynL.hh)
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveDynL.hh (rev 0)
+++ short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveDynL.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,299 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/** @file libsrc/faults/FaultCohesiveDynL.hh
+ *
+ * @brief C++ implementation for a fault surface with spontaneous
+ * (dynamic) slip implemented with cohesive elements.
+ */
+
+#if !defined(pylith_faults_faultcohesivedynl_hh)
+#define pylith_faults_faultcohesivedynl_hh
+
+// Include directives ---------------------------------------------------
+#include "FaultCohesive.hh" // ISA FaultCohesive
+
+#include "pylith/topology/SubMesh.hh" // ISA Integrator<Quadrature<SubMesh> >
+#include "pylith/feassemble/Quadrature.hh" // ISA Integrator<Quadrature>
+#include "pylith/feassemble/Integrator.hh" // ISA Integrator
+
+#include <string> // HASA std::string
+
+// FaultCohesiveDynL -----------------------------------------------------
+/**
+ * @brief C++ implementation for a fault surface with spontaneous
+ * (dynamic) slip implemented with cohesive elements.
+ *
+ * The fault constitutive model is implemented using Lagrange
+ * multipliers. The constraints associated with stick/slip behavior
+ * are associated with "constraint" vertices which sit between the
+ * pair of vertices on each side of the fault.
+ *
+ * The ordering of vertices in a cohesive cell is the vertices on the
+ * "negative" side of the fault, the corresponding entries on the
+ * "positive" side of the fault, and then the corresponding constraint
+ * vertices.
+ *
+ * The system without Lagrange multipliers is
+ *
+ * [A(t+dt)]{u(t+dt)} = {b(t+dt)}
+ *
+ * With Lagrange multipliers this system becomes
+ *
+ * [A(t+dt) C^T ]{ u(t+dt) } = {b(t+dt)}
+ * [ C 0 ]{ L(t+dt) } {D(t+dt)}
+ *
+ * where C is the matrix of Lagrange constraints, L is the vector of
+ * Lagrange multiplies (internal forces in this case), and D is the
+ * fault slip.
+ *
+ * We solve for the increment in the displacement field, so we rewrite
+ * the system as
+ *
+ * [A(t+dt) C^T ]{ du(t) } = {b(t+dt)} - [A(t+dt) C^T ]{ u(t) }
+ * [ C 0 ]{ dL(t) } {D(t+dt)} [ C 0 ]{ L(t) }
+ *
+ * We form the residual as
+ *
+ * {r(t+dt)} = {b(t+dt)} - [A(t+dt) C^T ]{ u(t)+du(t) }
+ * {D(t+dt)} [ C 0 ]{ L(t)+dL(t) }
+ *
+ * The terms in the residual contributing to the DOF at the Lagrange
+ * vertices are
+ *
+ * {r(t+dt)} = {D(t+dt)} - [C]{u(t)+dt(t)}
+ *
+ * The first term, {D(t+dt)}, does not involve integration over the
+ * cohesive cells, so it does not require assembling over cohesive
+ * cells or processors. We compute the term in
+ * integrateResidualAssembled().
+ *
+ * The term in the residual contributing to the DOF at the
+ * non-Lagrange vertices of the cohesive cells is
+ *
+ * {r(t+dt)} = -[C]^T{L(t)+dL(t)}
+ *
+ * We integrate the Lagrange multiplier term and the relative
+ * displacement term over the cohesive cells, because this introduces
+ * weighting of the orientation of the fault for the direction of slip
+ * at the vertices of the cohesive cells.
+ */
+class pylith::faults::FaultCohesiveDynL : public FaultCohesive
+{ // class FaultCohesiveDynL
+ friend class TestFaultCohesiveDynL; // unit testing
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Default constructor.
+ FaultCohesiveDynL(void);
+
+ /// Destructor.
+ virtual
+ ~FaultCohesiveDynL(void);
+
+ /// Deallocate PETSc and local data structures.
+ virtual
+ void deallocate(void);
+
+ /** Sets the spatial database for the inital tractions.
+ *
+ * @param db spatial database for initial tractions
+ */
+ void dbInitial(spatialdata::spatialdb::SpatialDB* db);
+
+ /** Initialize fault. Determine orientation and setup boundary
+ * condition parameters.
+ *
+ * @param mesh Finite-element mesh.
+ * @param upDir Direction perpendicular to along-strike direction that is
+ * not collinear with fault normal (usually "up" direction but could
+ * be up-dip direction; only applies to fault surfaces in a 3-D domain).
+ * @param normalDir General preferred direction for fault normal
+ * (used to pick which of two possible normal directions for
+ * interface; only applies to fault surfaces in a 3-D domain).
+ */
+ void initialize(const topology::Mesh& mesh,
+ const double upDir[3],
+ const double normalDir[3]);
+
+ /** Split solution field for separate preconditioning of normal DOF
+ * from DOF associated with Lagrange multipliers.
+ *
+ * @param field Solution field.
+ */
+ void splitField(topology::Field<topology::Mesh>* field);
+
+ /** Integrate contributions to residual term (r) for operator that
+ * require assembly across processors.
+ *
+ * @param residual Field containing values for residual
+ * @param t Current time
+ * @param fields Solution fields
+ */
+ void integrateResidual(const topology::Field<topology::Mesh>& residual,
+ const double t,
+ topology::SolutionFields* const fields);
+
+ /** Integrate contributions to residual term (r) for operator that
+ * do not require assembly across cells, vertices, or processors.
+ *
+ * @param residual Field containing values for residual
+ * @param t Current time
+ * @param fields Solution fields
+ */
+ void integrateResidualAssembled(const topology::Field<topology::Mesh>& residual,
+ const double t,
+ topology::SolutionFields* const fields);
+
+ /** Integrate contributions to Jacobian matrix (A) associated with
+ * operator that do not require assembly across cells, vertices, or
+ * processors.
+ *
+ * @param jacobian Sparse matrix
+ * @param t Current time
+ * @param fields Solution fields
+ * @param mesh Finite-element mesh
+ */
+ void integrateJacobianAssembled(topology::Jacobian* jacobian,
+ const double t,
+ topology::SolutionFields* const fields);
+
+ /** Update state variables as needed.
+ *
+ * @param t Current time
+ * @param fields Solution fields
+ * @param mesh Finite-element mesh
+ */
+ void updateStateVars(const double t,
+ topology::SolutionFields* const fields);
+
+ /** Constrain solution space based on friction.
+ *
+ * @param fields Solution fields.
+ * @param t Current time.
+ * @param jacobian Sparse matrix for system Jacobian.
+ */
+ void constrainSolnSpace(topology::SolutionFields* const fields,
+ const double t,
+ const topology::Jacobian& jacobian);
+
+ /** Verify configuration is acceptable.
+ *
+ * @param mesh Finite-element mesh
+ */
+ void verifyConfiguration(const topology::Mesh& mesh) const;
+
+ /** Get vertex field associated with integrator.
+ *
+ * @param name Name of cell field.
+ * @param fields Solution fields.
+ * @returns Vertex field.
+ */
+ const topology::Field<topology::SubMesh>&
+ vertexField(const char* name,
+ const topology::SolutionFields* fields =0);
+
+ /** Get cell field associated with integrator.
+ *
+ * @param name Name of cell field.
+ * @param fields Solution fields.
+ * @returns Cell field.
+ */
+ const topology::Field<topology::SubMesh>&
+ cellField(const char* name,
+ const topology::SolutionFields* fields =0);
+
+ /** Cohesive cells use Lagrange multiplier constraints?
+ *
+ * @returns True if implementation using Lagrange multiplier
+ * constraints, false otherwise.
+ */
+ bool useLagrangeConstraints(void) const;
+
+ /** Get fields associated with fault.
+ *
+ * @returns Fields associated with fault.
+ */
+ const topology::Fields<topology::Field<topology::SubMesh> >*
+ fields(void) const;
+
+ // PRIVATE METHODS ////////////////////////////////////////////////////
+private :
+
+ /** Calculate orientation at fault vertices.
+ *
+ * @param upDir Direction perpendicular to along-strike direction that is
+ * not collinear with fault normal (usually "up" direction but could
+ * be up-dip direction; only applies to fault surfaces in a 3-D domain).
+ * @param normalDir General preferred direction for fault normal
+ * (used to pick which of two possible normal directions for
+ * interface; only applies to fault surfaces in a 3-D domain).
+ */
+ void _calcOrientation(const double upDir[3],
+ const double normalDir[3]);
+
+ /// Calculate fault area field.
+ void _calcArea(void);
+
+ /** Get initial tractions using a spatial database.
+ */
+ void _getInitialTractions(void);
+
+ /** Setup fault constitutive model.
+ */
+ void _initConstitutiveModel(void);
+
+ /** Update diagonal of Jacobian at conventional vertices i and j
+ * associated with Lagrange vertex k.
+ *
+ * @param fields Solution fields.
+ */
+ void _updateJacobianDiagonal(const topology::SolutionFields& fields);
+
+ /** Compute change in tractions on fault surface using solution.
+ *
+ * @param tractions Field for tractions.
+ * @param solution Solution over domain
+ */
+ void _calcTractions(topology::Field<topology::SubMesh>* tractions,
+ const topology::Field<topology::Mesh>& solution);
+
+ /// Allocate buffer for vector field.
+ void _allocateBufferVertexVectorField(void);
+
+ /// Allocate buffer for scalar field.
+ void _allocateBufferVertexScalarField(void);
+
+ // PRIVATE MEMBERS ////////////////////////////////////////////////////
+private :
+
+ /// Database for initial tractions.
+ spatialdata::spatialdb::SpatialDB* _dbInitial;
+
+ // NOT IMPLEMENTED ////////////////////////////////////////////////////
+private :
+
+ /// Not implemented
+ FaultCohesiveDynL(const FaultCohesiveDynL&);
+
+ /// Not implemented
+ const FaultCohesiveDynL& operator=(const FaultCohesiveDynL&);
+
+}; // class FaultCohesiveDynL
+
+#include "FaultCohesiveDynL.icc" // inline methods
+
+#endif // pylith_faults_faultcohesivedynl_hh
+
+
+// End of file
Copied: short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveDynL.icc (from rev 16093, short/3D/PyLith/branches/pylith-friction/libsrc/faults/FaultCohesiveDynL.icc)
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveDynL.icc (rev 0)
+++ short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveDynL.icc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,32 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#if !defined(pylith_faults_faultcohesivedynl_hh)
+#error "FaultCohesiveDynL.icc can only be included from FaultCohesiveDynL.hh"
+#endif
+
+// Cohesive cells use Lagrange multiplier constraints?
+inline
+bool
+pylith::faults::FaultCohesiveDynL::useLagrangeConstraints(void) const {
+ return true;
+} // useLagrangeConstraints
+
+// Get fields associated with fault.
+inline
+const pylith::topology::Fields<pylith::topology::Field<pylith::topology::SubMesh> >*
+pylith::faults::FaultCohesiveDynL::fields(void) const {
+ return _fields;
+} // fields
+
+
+// End of file
Modified: short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveKin.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveKin.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveKin.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -135,13 +135,6 @@
slip.vectorFieldType(topology::FieldBase::VECTOR);
slip.scale(_normalizer->lengthScale());
- // Allocate cumulative slip field
- _fields->add("cumulative slip", "cumulative_slip");
- topology::Field<topology::SubMesh>& cumSlip = _fields->get("cumulative slip");
- cumSlip.cloneSection(slip);
- cumSlip.vectorFieldType(topology::FieldBase::VECTOR);
- cumSlip.scale(_normalizer->lengthScale());
-
const ALE::Obj<SieveSubMesh::label_sequence>& cells =
faultSieveMesh->heightStratum(0);
assert(!cells.isNull());
@@ -225,8 +218,8 @@
// vertex k make 2 contributions to the residual:
//
// * DOF i and j: internal forces in soln field associated with
- // slip
- // * DOF k: slip values
+ // slip -[C]^T{L(t)+dL(t)}
+ // * DOF k: slip values -[C]{u(t)+dt(t)}
// Get cell information and setup storage for cell data
const int spaceDim = _quadrature->spaceDim();
@@ -434,11 +427,9 @@
assert(0 != _fields);
// Cohesive cells with normal vertices i and j, and constraint
- // vertex k make 2 contributions to the residual:
+ // vertex k make contributions to the assembled residual:
//
- // * DOF i and j: internal forces in soln field associated with
- // slip
- // * DOF k: slip values
+ // * DOF k: slip values {D(t+dt)}
topology::Field<topology::SubMesh>& slip = _fields->get("slip");
slip.zero();
@@ -503,8 +494,6 @@
assert(0 != fields);
assert(0 != _fields);
- typedef ALE::ISieveVisitor::IndicesVisitor<RealSection,SieveMesh::order_type,PetscInt> visitor_type;
-
// Add constraint information to Jacobian matrix; these are the
// direction cosines. Entries are associated with vertices ik, jk,
// ki, and kj.
@@ -639,22 +628,465 @@
} // integrateJacobianAssembled
// ----------------------------------------------------------------------
+// Compute Jacobian matrix (A) associated with operator that do not
+// require assembly across cells, vertices, or processors.
+void
+pylith::faults::FaultCohesiveKin::integrateJacobianAssembled(
+ topology::Field<topology::Mesh>& jacobian,
+ const double t,
+ topology::SolutionFields* const fields)
+{ // integrateJacobianAssembled
+ assert(0 != fields);
+ assert(0 != _fields);
+
+ // Add ones to diagonal Jacobian matrix (as field) for
+ // convenience. Instead of including the constraints in the Jacobian
+ // matrix, we adjust the solution to account for the Lagrange
+ // multipliers as part of the solve.
+
+ // Get domain Sieve mesh
+ const ALE::Obj<SieveMesh>& sieveMesh = fields->mesh().sieveMesh();
+ assert(!sieveMesh.isNull());
+
+ // Get fault Sieve mesh
+ const ALE::Obj<SieveSubMesh>& faultSieveMesh = _faultMesh->sieveMesh();
+ assert(!faultSieveMesh.isNull());
+
+ const ALE::Obj<SieveMesh::label_sequence>& vertices =
+ sieveMesh->depthStratum(0);
+ assert(!vertices.isNull());
+ const SieveSubMesh::label_sequence::iterator verticesBegin =
+ vertices->begin();
+ const SieveSubMesh::label_sequence::iterator verticesEnd = vertices->end();
+ SieveSubMesh::renumbering_type& renumbering =
+ faultSieveMesh->getRenumbering();
+ const SieveSubMesh::renumbering_type::const_iterator renumberingEnd =
+ renumbering.end();
+
+ // Get section information
+ const int spaceDim = _quadrature->spaceDim();
+ double_array jacobianVertex(spaceDim);
+ jacobianVertex = 1.0;
+ const ALE::Obj<RealSection>& jacobianSection = jacobian.section();
+ assert(!jacobianSection.isNull());
+ for (SieveSubMesh::label_sequence::iterator v_iter=verticesBegin;
+ v_iter != verticesEnd;
+ ++v_iter)
+ if (renumbering.find(*v_iter) != renumberingEnd) {
+ assert(jacobianSection->getFiberDimension(*v_iter) == spaceDim);
+ jacobianSection->updatePoint(*v_iter, &jacobianVertex[0]);
+ } // if
+
+ PetscLogFlops(0);
+
+ _needNewJacobian = false;
+} // integrateJacobianAssembled
+
+// ----------------------------------------------------------------------
// Update state variables as needed.
void
-pylith::faults::FaultCohesiveKin::updateStateVars(const double t,
- topology::SolutionFields* const fields)
+pylith::faults::FaultCohesiveKin::updateStateVars(
+ const double t,
+ topology::SolutionFields* const fields)
{ // updateStateVars
assert(0 != fields);
assert(0 != _fields);
- // Update cumulative slip
- topology::Field<topology::SubMesh>& cumSlip = _fields->get("cumulative slip");
- topology::Field<topology::SubMesh>& slip = _fields->get("slip");
- cumSlip.zero();
- cumSlip += slip;
} // updateStateVars
// ----------------------------------------------------------------------
+// Adjust solution from solver with lumped Jacobian to match Lagrange
+// multiplier constraints.
+void
+pylith::faults::FaultCohesiveKin::adjustSolnLumped(topology::SolutionFields* const fields,
+ const topology::Field<topology::Mesh>& jacobian)
+{ // adjustSolnLumped
+ assert(0 != fields);
+ assert(0 != _quadrature);
+
+ // Cohesive cells with conventional vertices i and j, and constraint
+ // vertex k require 2 adjustments to the solution:
+ //
+ // * DOF k: Compute increment in Lagrange multipliers
+ // dl_k = 1/(A_i+A_j) (C_ki A_j r_i - C_kj A_i r_j)
+ // - A_i A_j / (A_i+A_j) d_k
+ // * DOF i and j: Adjust displacement increment (solution) to account
+ // for Lagrange multiplier constraints
+ // du_i = -A_i^-1 C_ki^T dlk
+ // du_j = +A_j^-1 C_kj^T dlk
+
+ // Get cell information and setup storage for cell data
+ const int spaceDim = _quadrature->spaceDim();
+ const int orientationSize = spaceDim*spaceDim;
+ const int numBasis = _quadrature->numBasis();
+ const int numConstraintVert = numBasis;
+ const int numCorners = 3*numConstraintVert; // cohesive cell
+ const int numQuadPts = _quadrature->numQuadPts();
+ const double_array& quadWts = _quadrature->quadWts();
+ assert(quadWts.size() == numQuadPts);
+
+ // Get cohesive cells
+ const ALE::Obj<SieveMesh>& sieveMesh =
+ fields->get("dispIncr(t->t+dt)").mesh().sieveMesh();
+ assert(!sieveMesh.isNull());
+ const ALE::Obj<SieveMesh::label_sequence>& cellsCohesive =
+ sieveMesh->getLabelStratum("material-id", id());
+ assert(!cellsCohesive.isNull());
+ const SieveMesh::label_sequence::iterator cellsCohesiveBegin =
+ cellsCohesive->begin();
+ const SieveMesh::label_sequence::iterator cellsCohesiveEnd =
+ cellsCohesive->end();
+ const int cellsCohesiveSize = cellsCohesive->size();
+
+ // Get fault Sieve mesh
+ const ALE::Obj<SieveSubMesh>& faultSieveMesh = _faultMesh->sieveMesh();
+ assert(!faultSieveMesh.isNull());
+
+ // Get section information
+ double_array orientationCell(numConstraintVert*orientationSize);
+ const ALE::Obj<RealSection>& orientationSection =
+ _fields->get("orientation").section();
+ assert(!orientationSection.isNull());
+ topology::Mesh::RestrictVisitor orientationVisitor(*orientationSection,
+ orientationCell.size(),
+ &orientationCell[0]);
+
+ double_array slipCell(numConstraintVert*spaceDim);
+ const ALE::Obj<RealSection>& slipSection = _fields->get("slip").section();
+ assert(!slipSection.isNull());
+ topology::Mesh::RestrictVisitor slipVisitor(*slipSection,
+ slipCell.size(),
+ &slipCell[0]);
+
+ // Tributary area for the current for each vertex.
+ double_array areaVertexCell(numConstraintVert);
+ // Total fault area associated with each vertex (assembled over all cells).
+ double_array areaCell(numConstraintVert);
+ const ALE::Obj<RealSection>& areaSection =
+ _fields->get("area").section();
+ assert(!areaSection.isNull());
+ topology::Mesh::RestrictVisitor areaVisitor(*areaSection,
+ areaCell.size(), &areaCell[0]);
+
+ double_array jacobianCell(numCorners*spaceDim);
+ const ALE::Obj<RealSection>& jacobianSection = jacobian.section();
+ assert(!jacobianSection.isNull());
+ topology::Mesh::RestrictVisitor jacobianVisitor(*jacobianSection,
+ jacobianCell.size(),
+ &jacobianCell[0]);
+
+ double_array residualCell(numCorners*spaceDim);
+ const ALE::Obj<RealSection>& residualSection =
+ fields->get("residual").section();
+ topology::Mesh::RestrictVisitor residualVisitor(*residualSection,
+ residualCell.size(),
+ &residualCell[0]);
+
+ double_array dispTCell(numCorners*spaceDim);
+ const ALE::Obj<RealSection>& dispTSection =
+ fields->get("disp(t)").section();
+ topology::Mesh::RestrictVisitor dispTVisitor(*dispTSection,
+ dispTCell.size(),
+ &dispTCell[0]);
+
+ double_array solutionCell(numCorners*spaceDim);
+ const ALE::Obj<RealSection>& solutionSection =
+ fields->get("dispIncr(t->t+dt)").section();
+ topology::Mesh::UpdateAddVisitor solutionVisitor(*solutionSection,
+ &solutionCell[0]);
+
+ double_array coordinatesCell(numBasis*spaceDim);
+ const ALE::Obj<RealSection>& coordinates =
+ faultSieveMesh->getRealSection("coordinates");
+ assert(!coordinates.isNull());
+ topology::Mesh::RestrictVisitor coordsVisitor(*coordinates,
+ coordinatesCell.size(),
+ &coordinatesCell[0]);
+
+ for (SieveMesh::label_sequence::iterator c_iter=cellsCohesiveBegin;
+ c_iter != cellsCohesiveEnd;
+ ++c_iter) {
+ const SieveMesh::point_type c_fault = _cohesiveToFault[*c_iter];
+ areaVertexCell = 0.0;
+ solutionCell = 0.0;
+
+ // Compute geometry information for current cell
+#if defined(PRECOMPUTE_GEOMETRY)
+ _quadrature->retrieveGeometry(c_fault);
+#else
+ coordsVisitor.clear();
+ faultSieveMesh->restrictClosure(c_fault, coordsVisitor);
+ _quadrature->computeGeometry(coordinatesCell, c_fault);
+#endif
+ // Get cell geometry information that depends on cell
+ const double_array& basis = _quadrature->basis();
+ const double_array& jacobianDet = _quadrature->jacobianDet();
+
+ // Compute contributory area for cell (to weight contributions)
+ for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
+ const double wt = quadWts[iQuad] * jacobianDet[iQuad];
+ for (int iBasis=0; iBasis < numBasis; ++iBasis) {
+ const double dArea = wt*basis[iQuad*numBasis+iBasis];
+ areaVertexCell[iBasis] += dArea;
+ } // for
+ } // for
+
+ // Get orientations at fault cell's vertices.
+ orientationVisitor.clear();
+ faultSieveMesh->restrictClosure(c_fault, orientationVisitor);
+
+ // Get area at fault cell's vertices.
+ areaVisitor.clear();
+ faultSieveMesh->restrictClosure(c_fault, areaVisitor);
+
+ // Get slip at fault cell's vertices.
+ slipVisitor.clear();
+ faultSieveMesh->restrictClosure(c_fault, slipVisitor);
+
+ // Get residual at cohesive cell's vertices.
+ residualVisitor.clear();
+ sieveMesh->restrictClosure(*c_iter, residualVisitor);
+
+ // Get jacobian at cohesive cell's vertices.
+ jacobianVisitor.clear();
+ sieveMesh->restrictClosure(*c_iter, jacobianVisitor);
+
+ // Get disp(t) at cohesive cell's vertices.
+ dispTVisitor.clear();
+ sieveMesh->restrictClosure(*c_iter, dispTVisitor);
+
+ for (int iConstraint=0; iConstraint < numConstraintVert; ++iConstraint) {
+ // Blocks in cell matrix associated with normal cohesive
+ // vertices i and j and constraint vertex k
+ const int indexI = iConstraint;
+ const int indexJ = iConstraint + numConstraintVert;
+ const int indexK = iConstraint + 2*numConstraintVert;
+
+ assert(areaCell[iConstraint] > 0);
+ const double wt = areaVertexCell[iConstraint] / areaCell[iConstraint];
+
+ // Get orientation at constraint vertex
+ const double* orientationVertex =
+ &orientationCell[iConstraint*orientationSize];
+ assert(0 != orientationVertex);
+
+ // Get slip at constraint vertex
+ const double* slipVertex = &slipCell[iConstraint*spaceDim];
+ assert(0 != slipVertex);
+
+ // Get Jacobian at conventional vertices i and j
+ const double* Ai = &jacobianCell[indexI*spaceDim];
+ assert(0 != Ai);
+ const double* Aj = &jacobianCell[indexJ*spaceDim];
+ assert(0 != Aj);
+
+ // Get residual at conventional vertices i and j
+ const double* ri = &residualCell[indexI*spaceDim];
+ assert(0 != ri);
+ const double* rj = &residualCell[indexJ*spaceDim];
+ assert(0 != rj);
+
+ // Get disp(t) at conventional vertices i and j
+ const double* ui = &dispTCell[indexI*spaceDim];
+ assert(0 != ui);
+ const double* uj = &dispTCell[indexJ*spaceDim];
+ assert(0 != uj);
+
+ switch(spaceDim)
+ { // switch
+ case 1 : {
+ const double d00 = 1.0/Ai[0] + 1.0/Aj[0];
+ const double dinv00 = 1.0 / d00;
+
+ // Aru = A_i^{-1} r_i - A_j^{-1} r_j + u_i - u_j
+ const double Aru = ri[0]/Ai[0] - rj[0]/Aj[0] + ui[0] - uj[0];
+
+ // dl_k = D^{-1}( C_{ki} Aru - d_k)
+ const double Aruslip = Aru - slipVertex[0];
+ const double dlp = dinv00*Aruslip;
+
+ // Update displacements at node I
+ solutionCell[indexI*spaceDim+0] = wt * -1.0/Ai[0] * dlp;
+
+ // Update displacements at node J
+ solutionCell[indexJ*spaceDim+0] = wt * +1.0/Aj[0] * dlp;
+
+ // Update Lagrange multipliers
+ solutionCell[indexK*spaceDim+0] = wt * dlp;
+
+ break;
+ } // case 1
+ case 2 : {
+ const double Cpx = orientationVertex[0];
+ const double Cpy = orientationVertex[1];
+ const double Cqx = orientationVertex[2];
+ const double Cqy = orientationVertex[3];
+ const double Crx = orientationVertex[4];
+ const double Cry = orientationVertex[5];
+
+ const double Spp =
+ Cpx*Cpx*(1.0/Ai[0] + 1.0/Aj[0]) +
+ Cpy*Cpy*(1.0/Ai[1] + 1.0/Aj[1]);
+ const double Spq =
+ Cpx*Cqx*(1.0/Ai[0] + 1.0/Aj[0]) +
+ Cpy*Cqy*(1.0/Ai[1] + 1.0/Aj[1]);
+ const double Sqq =
+ Cqx*Cqx*(1.0/Ai[0] + 1.0/Aj[0]) +
+ Cqy*Cqy*(1.0/Ai[1] + 1.0/Aj[1]);
+ const double detS = Spp*Sqq - Spq*Spq;
+ const double Sinvpp = Sqq / detS;
+ const double Sinvpq = -Spq / detS;
+ const double Sinvqq = Spp / detS;
+
+ // Aru = A_i^{-1} r_i - A_j^{-1} r_j + u_i - u_j
+ const double Arux = ri[0]/Ai[0] - rj[0]/Aj[0] + ui[0] - uj[0];
+ const double Aruy = ri[1]/Ai[1] - rj[1]/Aj[1] + ui[1] - uj[1];
+
+ // dl_k = D^{-1}( C_{ki} Aru - d_k)
+ const double Arup = Cpx*Arux + Cpy*Aruy;
+ const double Aruq = Cqx*Arux + Cqy*Aruy;
+ const double Arupslip = Arup - slipVertex[0];
+ const double Aruqslip = Aruq - slipVertex[1];
+ const double dlp = Sinvpp*Arupslip + Sinvpq*Aruqslip;
+ const double dlq = Sinvpq*Arupslip + Sinvqq*Aruqslip;
+
+ // Update displacements at node I
+ solutionCell[indexI*spaceDim+0] =
+ wt * -1.0/Ai[0] * (Cpx*dlp + Cqx*dlq);
+ solutionCell[indexI*spaceDim+1] =
+ wt * -1.0/Ai[1] * (Cpy*dlp + Cqy*dlq);
+
+ // Update displacements at node J
+ solutionCell[indexJ*spaceDim+0] =
+ wt * +1.0/Aj[0] * (Cpx*dlp + Cqx*dlq);
+ solutionCell[indexJ*spaceDim+1] =
+ wt * +1.0/Aj[1] * (Cpy*dlp + Cqy*dlq);
+
+ // Update Lagrange multipliers
+ solutionCell[indexK*spaceDim+0] = wt * dlp;
+ solutionCell[indexK*spaceDim+1] = wt * dlq;
+
+ break;
+ } // case 2
+ case 3 : {
+ const double Cpx = orientationVertex[0];
+ const double Cpy = orientationVertex[1];
+ const double Cpz = orientationVertex[2];
+ const double Cqx = orientationVertex[3];
+ const double Cqy = orientationVertex[4];
+ const double Cqz = orientationVertex[5];
+ const double Crx = orientationVertex[6];
+ const double Cry = orientationVertex[7];
+ const double Crz = orientationVertex[8];
+
+ const double Spp =
+ Cpx*Cpx*(1.0/Ai[0] + 1.0/Aj[0]) +
+ Cpy*Cpy*(1.0/Ai[1] + 1.0/Aj[1]) +
+ Cpz*Cpz*(1.0/Ai[2] + 1.0/Aj[2]);
+ const double Spq =
+ Cpx*Cqx*(1.0/Ai[0] + 1.0/Aj[0]) +
+ Cpy*Cqy*(1.0/Ai[1] + 1.0/Aj[1]) +
+ Cpz*Cqz*(1.0/Ai[2] + 1.0/Aj[2]);
+ const double Spr =
+ Cpx*Crx*(1.0/Ai[0] + 1.0/Aj[0]) +
+ Cpy*Cry*(1.0/Ai[1] + 1.0/Aj[1]) +
+ Cpz*Crz*(1.0/Ai[2] + 1.0/Aj[2]);
+ const double Sqq =
+ Cqx*Cqx*(1.0/Ai[0] + 1.0/Aj[0]) +
+ Cqy*Cqy*(1.0/Ai[1] + 1.0/Aj[1]) +
+ Cqz*Cqz*(1.0/Ai[2] + 1.0/Aj[2]);
+ const double Sqr =
+ Cqx*Crx*(1.0/Ai[0] + 1.0/Aj[0]) +
+ Cqy*Cry*(1.0/Ai[1] + 1.0/Aj[1]) +
+ Cqz*Crz*(1.0/Ai[2] + 1.0/Aj[2]);
+ const double Srr =
+ Crx*Crx*(1.0/Ai[0] + 1.0/Aj[0]) +
+ Cry*Cry*(1.0/Ai[1] + 1.0/Aj[1]) +
+ Crz*Crz*(1.0/Ai[2] + 1.0/Aj[2]);
+ const double detS =
+ Spp * (Sqq*Srr - Sqr*Sqr) +
+ Spq * (Spr*Sqr - Spq*Srr) +
+ Spr * (Spq*Sqr - Spr*Sqq);
+ const double Sinvpp = (Sqq*Srr - Sqr*Sqr) / detS;
+ const double Sinvpq = (Spr*Sqr - Spq*Srr) / detS;
+ const double Sinvpr = (Spq*Sqr - Spr*Sqq) / detS;
+ const double Sinvqq = (Spp*Srr - Spr*Spr) / detS;
+ const double Sinvqr = (Spq*Spr - Spp*Sqr) / detS;
+ const double Sinvrr = (Spp*Sqq - Spq*Spq) / detS;
+
+ // Aru = A_i^{-1} r_i - A_j^{-1} r_j + u_i - u_j
+ const double Arux = ri[0]/Ai[0] - rj[0]/Aj[0] + ui[0] - uj[0];
+ const double Aruy = ri[1]/Ai[1] - rj[1]/Aj[1] + ui[1] - uj[1];
+ const double Aruz = ri[2]/Ai[2] - rj[2]/Aj[2] + ui[2] - uj[2];
+
+ // dl_k = D^{-1}( C_{ki} Aru - d_k)
+ const double Arup = Cpx*Arux + Cpy*Aruy + Cpz*Aruz;
+ const double Aruq = Cqx*Arux + Cqy*Aruy + Cqz*Aruz;
+ const double Arur = Crx*Arux + Cry*Aruy + Crz*Aruz;
+ const double Arupslip = Arup - slipVertex[0];
+ const double Aruqslip = Aruq - slipVertex[1];
+ const double Arurslip = Arur - slipVertex[2];
+ const double dlp =
+ Sinvpp*Arupslip + Sinvpq*Aruqslip + Sinvpr*Arurslip;
+ const double dlq =
+ Sinvpq*Arupslip + Sinvqq*Aruqslip + Sinvqr*Arurslip;
+ const double dlr =
+ Sinvpr*Arupslip + Sinvqr*Aruqslip + Sinvrr*Arurslip;
+
+ // Update displacements at node I
+ solutionCell[indexI*spaceDim+0] =
+ wt * -1.0/Ai[0] * (Cpx*dlp + Cqx*dlq + Crx*dlr);
+ solutionCell[indexI*spaceDim+1] =
+ wt * -1.0/Ai[1] * (Cpy*dlp + Cqy*dlq + Cry*dlr);
+ solutionCell[indexI*spaceDim+2] =
+ wt * -1.0/Ai[2] * (Cpz*dlp + Cqz*dlq + Crz*dlr);
+
+ // Update displacements at node J
+ solutionCell[indexJ*spaceDim+0] =
+ wt * +1.0/Aj[0] * (Cpx*dlp + Cqx*dlq + Crx*dlr);
+ solutionCell[indexJ*spaceDim+1] =
+ wt * +1.0/Aj[1] * (Cpy*dlp + Cqy*dlq + Cry*dlr);
+ solutionCell[indexJ*spaceDim+2] =
+ wt * +1.0/Aj[2] * (Cpz*dlp + Cqz*dlq + Crz*dlr);
+
+ // Update Lagrange multipliers
+ solutionCell[indexK*spaceDim+0] = wt * dlp;
+ solutionCell[indexK*spaceDim+1] = wt * dlq;
+ solutionCell[indexK*spaceDim+2] = wt * dlr;
+
+ break;
+ } // case 3
+ default :
+ assert(0);
+ throw std::logic_error("Unknown spatial dimension.");
+ } // switch
+ } // for
+
+#if 0 // DEBUGGING
+ std::cout << "Adjusting lumped solution for cell " << *c_iter << std::endl;
+ for(int i = 0; i < numCorners*spaceDim; ++i) {
+ std::cout << " dispTpdt["<<i<<"]: " << dispTpdtCell[i] << std::endl;
+ }
+ for(int i = 0; i < numCorners*spaceDim; ++i) {
+ std::cout << " dispT["<<i<<"]: " << dispTCell[i] << std::endl;
+ }
+ for(int i = 0; i < numCorners*spaceDim; ++i) {
+ std::cout << " dispIncr["<<i<<"]: " << dispTIncrCell[i] << std::endl;
+ }
+ for(int i = 0; i < numCorners*spaceDim; ++i) {
+ std::cout << " v["<<i<<"]: " << residualCell[i] << std::endl;
+ }
+#endif
+
+ solutionVisitor.clear();
+ sieveMesh->updateClosure(*c_iter, solutionVisitor);
+ } // for
+
+ // FIX THIS
+ PetscLogFlops(0);
+} // adjustSolnLumped
+
+// ----------------------------------------------------------------------
// Verify configuration is acceptable.
void
pylith::faults::FaultCohesiveKin::verifyConfiguration(
@@ -726,9 +1158,9 @@
double scale = 0.0;
int fiberDim = 0;
if (0 == strcasecmp("slip", name)) {
- const topology::Field<topology::SubMesh>& cumSlip =
- _fields->get("cumulative slip");
- return cumSlip;
+ const topology::Field<topology::SubMesh>& slip =
+ _fields->get("slip");
+ return slip;
} else if (cohesiveDim > 0 && 0 == strcasecmp("strike_dir", name)) {
const ALE::Obj<RealSection>& orientationSection =
@@ -834,6 +1266,290 @@
} // cellField
// ----------------------------------------------------------------------
+// Calculate orientation at fault vertices.
+void
+pylith::faults::FaultCohesiveKin::_calcOrientation(const double upDir[3],
+ const double normalDir[3])
+{ // _calcOrientation
+ assert(0 != upDir);
+ assert(0 != normalDir);
+ assert(0 != _faultMesh);
+ assert(0 != _fields);
+
+ double_array upDirArray(upDir, 3);
+
+ // Get vertices in fault mesh.
+ const ALE::Obj<SieveSubMesh>& faultSieveMesh = _faultMesh->sieveMesh();
+ assert(!faultSieveMesh.isNull());
+ const ALE::Obj<SieveSubMesh::label_sequence>& vertices =
+ faultSieveMesh->depthStratum(0);
+ const SieveSubMesh::label_sequence::iterator verticesBegin = vertices->begin();
+ const SieveSubMesh::label_sequence::iterator verticesEnd = vertices->end();
+
+ // Containers for orientation information.
+ const int cohesiveDim = _faultMesh->dimension();
+ const int numBasis = _quadrature->numBasis();
+ const int spaceDim = _quadrature->spaceDim();
+ const int orientationSize = spaceDim*spaceDim;
+ const feassemble::CellGeometry& cellGeometry = _quadrature->refGeometry();
+ const double_array& verticesRef = cellGeometry.vertices();
+ const int jacobianSize = (cohesiveDim > 0) ? spaceDim * cohesiveDim : 1;
+ const double_array& quadWts = _quadrature->quadWts();
+ double_array jacobian(jacobianSize);
+ double jacobianDet = 0;
+ double_array orientationVertex(orientationSize);
+ double_array coordinatesCell(numBasis*spaceDim);
+ double_array refCoordsVertex(cohesiveDim);
+
+ // Allocate orientation field.
+ _fields->add("orientation", "orientation");
+ topology::Field<topology::SubMesh>& orientation = _fields->get("orientation");
+ const topology::Field<topology::SubMesh>& slip = _fields->get("slip");
+ orientation.newSection(slip, orientationSize);
+ const ALE::Obj<RealSection>& orientationSection = orientation.section();
+ assert(!orientationSection.isNull());
+ // Create subspaces for along-strike, up-dip, and normal directions
+ for (int iDim=0; iDim <= cohesiveDim; ++iDim)
+ orientationSection->addSpace();
+ for (int iDim=0; iDim <= cohesiveDim; ++iDim)
+ orientationSection->setFiberDimension(vertices, spaceDim, iDim);
+ orientation.allocate();
+ orientation.zero();
+
+ // Get fault cells.
+ const ALE::Obj<SieveSubMesh::label_sequence>& cells =
+ faultSieveMesh->heightStratum(0);
+ assert(!cells.isNull());
+ const SieveSubMesh::label_sequence::iterator cellsBegin = cells->begin();
+ const SieveSubMesh::label_sequence::iterator cellsEnd = cells->end();
+
+ // Compute orientation of fault at constraint vertices
+
+ // Get section containing coordinates of vertices
+ const ALE::Obj<RealSection>& coordinatesSection =
+ faultSieveMesh->getRealSection("coordinates");
+ assert(!coordinatesSection.isNull());
+ topology::Mesh::RestrictVisitor coordinatesVisitor(*coordinatesSection,
+ coordinatesCell.size(),
+ &coordinatesCell[0]);
+
+ // Set orientation function
+ assert(cohesiveDim == _quadrature->cellDim());
+ assert(spaceDim == _quadrature->spaceDim());
+
+ // Loop over cohesive cells, computing orientation weighted by
+ // jacobian at constraint vertices
+
+ const ALE::Obj<SieveSubMesh::sieve_type>& sieve = faultSieveMesh->getSieve();
+ assert(!sieve.isNull());
+ typedef ALE::SieveAlg<SieveSubMesh> SieveAlg;
+
+ ALE::ISieveVisitor::NConeRetriever<SieveMesh::sieve_type> ncV(*sieve, (size_t) pow(sieve->getMaxConeSize(), std::max(0, faultSieveMesh->depth())));
+
+ for (SieveSubMesh::label_sequence::iterator c_iter=cellsBegin;
+ c_iter != cellsEnd;
+ ++c_iter) {
+ // Get orientations at fault cell's vertices.
+ coordinatesVisitor.clear();
+ faultSieveMesh->restrictClosure(*c_iter, coordinatesVisitor);
+
+ ncV.clear();
+ ALE::ISieveTraversal<SieveSubMesh::sieve_type>::orientedClosure(*sieve, *c_iter, ncV);
+ const int coneSize = ncV.getSize();
+ const Mesh::point_type *cone = ncV.getPoints();
+
+ for (int v=0; v < coneSize; ++v) {
+ // Compute Jacobian and determinant of Jacobian at vertex
+ memcpy(&refCoordsVertex[0], &verticesRef[v*cohesiveDim],
+ cohesiveDim*sizeof(double));
+ cellGeometry.jacobian(&jacobian, &jacobianDet, coordinatesCell,
+ refCoordsVertex);
+
+ // Compute orientation
+ cellGeometry.orientation(&orientationVertex, jacobian, jacobianDet,
+ upDirArray);
+
+ // Update orientation
+ orientationSection->updateAddPoint(cone[v], &orientationVertex[0]);
+ } // for
+ } // for
+
+ //orientation.view("ORIENTATION BEFORE COMPLETE");
+
+ // Assemble orientation information
+ orientation.complete();
+
+ // Loop over vertices, make orientation information unit magnitude
+ double_array vertexDir(orientationSize);
+ int count = 0;
+ for (SieveSubMesh::label_sequence::iterator v_iter=verticesBegin;
+ v_iter != verticesEnd;
+ ++v_iter, ++count) {
+ orientationVertex = 0.0;
+ orientationSection->restrictPoint(*v_iter, &orientationVertex[0],
+ orientationVertex.size());
+ for (int iDim=0; iDim < spaceDim; ++iDim) {
+ double mag = 0;
+ for (int jDim=0, index=iDim*spaceDim; jDim < spaceDim; ++jDim)
+ mag += pow(orientationVertex[index+jDim],2);
+ mag = sqrt(mag);
+ assert(mag > 0.0);
+ for (int jDim=0, index=iDim*spaceDim; jDim < spaceDim; ++jDim)
+ orientationVertex[index+jDim] /= mag;
+ } // for
+
+ orientationSection->updatePoint(*v_iter, &orientationVertex[0]);
+ } // for
+ PetscLogFlops(count * orientationSize * 4);
+
+ if (2 == cohesiveDim && vertices->size() > 0) {
+ // Check orientation of first vertex, if dot product of fault
+ // normal with preferred normal is negative, flip up/down dip
+ // direction.
+ //
+ // If the user gives the correct normal direction (points from
+ // footwall to ahanging wall), we should end up with
+ // left-lateral-slip, reverse-slip, and fault-opening for positive
+ // slip values.
+ //
+ // When we flip the up/down dip direction, we create a left-handed
+ // strike/dip/normal coordinate system, but it gives the correct
+ // sense of slip. In reality the strike/dip/normal directions that
+ // are used are the opposite of what we would want, but we cannot
+ // flip the fault normal direction because it is tied to how the
+ // cohesive cells are created.
+
+ assert(vertices->size() > 0);
+ orientationSection->restrictPoint(*vertices->begin(), &orientationVertex[0],
+ orientationVertex.size());
+
+ assert(3 == spaceDim);
+ double_array normalDirVertex(&orientationVertex[6], 3);
+ const double normalDot =
+ normalDir[0]*normalDirVertex[0] +
+ normalDir[1]*normalDirVertex[1] +
+ normalDir[2]*normalDirVertex[2];
+
+ const int istrike = 0;
+ const int idip = 3;
+ const int inormal = 6;
+ if (normalDot < 0.0) {
+ // Flip dip direction
+ for (SieveSubMesh::label_sequence::iterator v_iter=verticesBegin;
+ v_iter != verticesEnd;
+ ++v_iter) {
+ orientationSection->restrictPoint(*v_iter, &orientationVertex[0],
+ orientationVertex.size());
+ assert(9 == orientationSection->getFiberDimension(*v_iter));
+ for (int iDim=0; iDim < 3; ++iDim) // flip dip
+ orientationVertex[idip+iDim] *= -1.0;
+
+ // Update direction
+ orientationSection->updatePoint(*v_iter, &orientationVertex[0]);
+ } // for
+ PetscLogFlops(5 + count * 3);
+ } // if
+ } // if
+
+ //orientation.view("ORIENTATION");
+} // _calcOrientation
+
+// ----------------------------------------------------------------------
+void
+pylith::faults::FaultCohesiveKin::_calcArea(void)
+{ // _calcArea
+ assert(0 != _faultMesh);
+ assert(0 != _fields);
+
+ // Containers for area information
+ const int cellDim = _quadrature->cellDim();
+ const int numBasis = _quadrature->numBasis();
+ const int numQuadPts = _quadrature->numQuadPts();
+ const int spaceDim = _quadrature->spaceDim();
+ const feassemble::CellGeometry& cellGeometry = _quadrature->refGeometry();
+ const double_array& quadWts = _quadrature->quadWts();
+ assert(quadWts.size() == numQuadPts);
+ double jacobianDet = 0;
+ double_array areaCell(numBasis);
+
+ // Get vertices in fault mesh.
+ const ALE::Obj<SieveSubMesh>& faultSieveMesh = _faultMesh->sieveMesh();
+ assert(!faultSieveMesh.isNull());
+ const ALE::Obj<SieveSubMesh::label_sequence>& vertices =
+ faultSieveMesh->depthStratum(0);
+ const SieveSubMesh::label_sequence::iterator verticesBegin = vertices->begin();
+ const SieveSubMesh::label_sequence::iterator verticesEnd = vertices->end();
+
+ // Allocate area field.
+ _fields->add("area", "area");
+
+ topology::Field<topology::SubMesh>& area = _fields->get("area");
+ const topology::Field<topology::SubMesh>& slip = _fields->get("slip");
+ area.newSection(slip, 1);
+ area.allocate();
+ area.zero();
+ const ALE::Obj<RealSection>& areaSection = area.section();
+ assert(!areaSection.isNull());
+ topology::Mesh::UpdateAddVisitor areaVisitor(*areaSection, &areaCell[0]);
+
+ double_array coordinatesCell(numBasis*spaceDim);
+ const ALE::Obj<RealSection>& coordinates =
+ faultSieveMesh->getRealSection("coordinates");
+ assert(!coordinates.isNull());
+ topology::Mesh::RestrictVisitor coordsVisitor(*coordinates,
+ coordinatesCell.size(),
+ &coordinatesCell[0]);
+
+ const ALE::Obj<SieveSubMesh::label_sequence>& cells =
+ faultSieveMesh->heightStratum(0);
+ assert(!cells.isNull());
+ const SieveSubMesh::label_sequence::iterator cellsBegin = cells->begin();
+ const SieveSubMesh::label_sequence::iterator cellsEnd = cells->end();
+
+ // Loop over cells in fault mesh, compute area
+ for (SieveSubMesh::label_sequence::iterator c_iter = cellsBegin;
+ c_iter != cellsEnd;
+ ++c_iter) {
+ areaCell = 0.0;
+
+ // Compute geometry information for current cell
+#if defined(PRECOMPUTE_GEOMETRY)
+ _quadrature->retrieveGeometry(*c_iter);
+#else
+ coordsVisitor.clear();
+ faultSieveMesh->restrictClosure(*c_iter, coordsVisitor);
+ _quadrature->computeGeometry(coordinatesCell, *c_iter);
+#endif
+
+ // Get cell geometry information that depends on cell
+ const double_array& basis = _quadrature->basis();
+ const double_array& jacobianDet = _quadrature->jacobianDet();
+
+ // Compute area
+ for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
+ const double wt = quadWts[iQuad] * jacobianDet[iQuad];
+ for (int iBasis=0; iBasis < numBasis; ++iBasis) {
+ const double dArea = wt*basis[iQuad*numBasis+iBasis];
+ areaCell[iBasis] += dArea;
+ } // for
+ } // for
+ areaVisitor.clear();
+ faultSieveMesh->updateClosure(*c_iter, areaVisitor);
+
+ PetscLogFlops( numQuadPts*(1+numBasis*2) );
+ } // for
+
+ // Assemble area information
+ area.complete();
+
+#if 0 // DEBUGGING
+ area.view("AREA");
+ //_faultMesh->getSendOverlap()->view("Send fault overlap");
+ //_faultMesh->getRecvOverlap()->view("Receive fault overlap");
+#endif
+} // _calcArea
+
+// ----------------------------------------------------------------------
// Compute change in tractions on fault surface using solution.
// NOTE: We must convert vertex labels to fault vertex labels
void
@@ -962,13 +1678,13 @@
ALE::MemoryLogger& logger = ALE::MemoryLogger::singleton();
logger.stagePush("Output");
- // Create vector field; use same shape/chart as cumulative slip field.
+ // Create vector field; use same shape/chart as slip field.
assert(0 != _faultMesh);
_fields->add("buffer (vector)", "buffer");
topology::Field<topology::SubMesh>& buffer =
_fields->get("buffer (vector)");
const topology::Field<topology::SubMesh>& slip =
- _fields->get("cumulative slip");
+ _fields->get("slip");
buffer.cloneSection(slip);
buffer.zero();
Modified: short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveKin.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveKin.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveKin.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -14,6 +14,24 @@
*
* @brief C++ implementation for a fault surface with kinematic
* (prescribed) slip implemented with cohesive elements.
+ */
+
+#if !defined(pylith_faults_faultcohesivekin_hh)
+#define pylith_faults_faultcohesivekin_hh
+
+// Include directives ---------------------------------------------------
+#include "FaultCohesive.hh" // ISA FaultCohesive
+
+#include "pylith/topology/SubMesh.hh" // ISA Integrator<Quadrature<SubMesh> >
+#include "pylith/feassemble/Quadrature.hh" // ISA Integrator<Quadrature>
+#include "pylith/feassemble/Integrator.hh" // ISA Integrator
+
+#include <string> // HASA std::string
+
+// FaultCohesiveKin -----------------------------------------------------
+/**
+ * @brief C++ implementation for a fault surface with kinematic
+ * (prescribed) slip implemented with cohesive elements.
*
* Fault boundary condition is specified using Lagrange
* multipliers. The constraints are associated with "constraint"
@@ -49,25 +67,26 @@
* {r(t+dt)} = {b(t+dt)} - [A(t+dt) C^T ]{ u(t)+du(t) }
* {D(t+dt)} [ C 0 ]{ L(t)+dL(t) }
*
- * The term D does not involve integration over cohesive cells. We
- * integrate the Lagrange multiplier terms over the cohesive cells
- * because this introduces weighting of the orientation of the fault
- * for the direction of slip at the vertices of the cohesive cells.
+ * The terms in the residual contributing to the DOF at the Lagrange
+ * vertices are
+ *
+ * {r(t+dt)} = {D(t+dt)} - [C]{u(t)+dt(t)}
+ *
+ * The first term, {D(t+dt)}, does not involve integration over the
+ * cohesive cells, so it does not require assembling over cohesive
+ * cells or processors. We compute the term in
+ * integrateResidualAssembled().
+ *
+ * The term in the residual contributing to the DOF at the
+ * non-Lagrange vertices of the cohesive cells is
+ *
+ * {r(t+dt)} = -[C]^T{L(t)+dL(t)}
+ *
+ * We integrate the Lagrange multiplier term and the relative
+ * displacement term over the cohesive cells, because this introduces
+ * weighting of the orientation of the fault for the direction of slip
+ * at the vertices of the cohesive cells.
*/
-
-#if !defined(pylith_faults_faultcohesivekin_hh)
-#define pylith_faults_faultcohesivekin_hh
-
-// Include directives ---------------------------------------------------
-#include "FaultCohesive.hh" // ISA FaultCohesive
-
-#include "pylith/topology/SubMesh.hh" // ISA Integrator<Quadrature<SubMesh> >
-#include "pylith/feassemble/Quadrature.hh" // ISA Integrator<Quadrature>
-#include "pylith/feassemble/Integrator.hh" // ISA Integrator
-
-#include <string> // HASA std::string
-
-// FaultCohesiveKin -----------------------------------------------------
class pylith::faults::FaultCohesiveKin : public FaultCohesive
{ // class FaultCohesiveKin
friend class TestFaultCohesiveKin; // unit testing
@@ -145,15 +164,26 @@
* operator that do not require assembly across cells, vertices, or
* processors.
*
- * @param mat Sparse matrix
+ * @param jacobian Sparse matrix
* @param t Current time
* @param fields Solution fields
- * @param mesh Finite-element mesh
*/
void integrateJacobianAssembled(topology::Jacobian* jacobian,
const double t,
topology::SolutionFields* const fields);
+ /** Integrate contributions to Jacobian matrix (A) associated with
+ * operator that do not require assembly across cells, vertices, or
+ * processors.
+ *
+ * @param jacobian Diagonal Jacobian matrix as a field.
+ * @param t Current time
+ * @param fields Solution fields
+ */
+ void integrateJacobianAssembled(topology::Field<topology::Mesh>& jacobian,
+ const double t,
+ topology::SolutionFields* const fields);
+
/** Update state variables as needed.
*
* @param t Current time
@@ -163,6 +193,16 @@
void updateStateVars(const double t,
topology::SolutionFields* const fields);
+ /** Adjust solution from solver with lumped Jacobian to match Lagrange
+ * multiplier constraints.
+ *
+ * @param solution Solution field.
+ * @param jacobian Jacobian of the system.
+ * @param residual Residual field.
+ */
+ void adjustSolnLumped(topology::SolutionFields* fields,
+ const topology::Field<topology::Mesh>& jacobian);
+
/** Verify configuration is acceptable.
*
* @param mesh Finite-element mesh
@@ -206,6 +246,21 @@
// PRIVATE METHODS ////////////////////////////////////////////////////
private :
+ /** Calculate orientation at fault vertices.
+ *
+ * @param upDir Direction perpendicular to along-strike direction that is
+ * not collinear with fault normal (usually "up" direction but could
+ * be up-dip direction; only applies to fault surfaces in a 3-D domain).
+ * @param normalDir General preferred direction for fault normal
+ * (used to pick which of two possible normal directions for
+ * interface; only applies to fault surfaces in a 3-D domain).
+ */
+ void _calcOrientation(const double upDir[3],
+ const double normalDir[3]);
+
+ /// Calculate fault area field.
+ void _calcArea(void);
+
/** Compute change in tractions on fault surface using solution.
*
* @param tractions Field for tractions.
Modified: short/3D/PyLith/trunk/libsrc/faults/LiuCosSlipFn.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/LiuCosSlipFn.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/faults/LiuCosSlipFn.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -12,11 +12,7 @@
/** @file libsrc/faults/LiuCosSlipFn.hh
*
- * @brief C++ implementation of LiuCos slip time function.
- *
- * Sine/cosine slip time function from Liu, Archuleta, and Hartzell,
- * BSSA, 2006 (doi:10.1785/0120060036) which has a rapid rise and then
- * a gradual falloff with a finite duration.
+ * @brief C++ implementation of Liu cosine-sine slip time function.
*/
#if !defined(pylith_faults_liucosslipfn_hh)
@@ -30,6 +26,13 @@
#include "pylith/utils/array.hh" // HASA double_array
// LiuCosSlipFn ---------------------------------------------------------
+/**
+ * @brief C++ implementation of Liu cosine-sine slip time function.
+ *
+ * Sine/cosine slip time function from Liu, Archuleta, and Hartzell,
+ * BSSA, 2006 (doi:10.1785/0120060036) which has a rapid rise and then
+ * a gradual falloff with a finite duration.
+ */
class pylith::faults::LiuCosSlipFn : public SlipTimeFn
{ // class LiuCosSlipFn
friend class TestLiuCosSlipFn; // unit testing
Modified: short/3D/PyLith/trunk/libsrc/faults/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/Makefile.am 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/faults/Makefile.am 2009-12-10 01:52:12 UTC (rev 16094)
@@ -25,6 +25,8 @@
FaultCohesive.hh \
FaultCohesiveDyn.hh \
FaultCohesiveDyn.icc \
+ FaultCohesiveDynL.hh \
+ FaultCohesiveDynL.icc \
FaultCohesiveKin.hh \
FaultCohesiveKin.icc \
LiuCosSlipFn.hh \
@@ -32,6 +34,8 @@
SlipTimeFn.hh \
StepSlipFn.hh \
StepSlipFn.icc \
+ TimeHistorySlipFn.hh \
+ TimeHistorySlipFn.icc \
faultsfwd.hh
noinst_HEADERS = \
Modified: short/3D/PyLith/trunk/libsrc/faults/SlipTimeFn.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/SlipTimeFn.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/faults/SlipTimeFn.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -13,8 +13,6 @@
/** @file libsrc/faults/SlipTimeFn.hh
*
* @brief C++ abstract base class for kinematic slip time function.
- *
- * Interface definition for slip time function.
*/
#if !defined(pylith_faults_sliptimefn_hh)
@@ -29,6 +27,11 @@
#include "spatialdata/spatialdb/spatialdbfwd.hh" // USES SpatialDB
// SlipTimeFn -----------------------------------------------------------
+/**
+ * @brief Abstract base class for kinematic slip time function.
+ *
+ * Interface definition for slip time function.
+ */
class pylith::faults::SlipTimeFn
{ // class SlipTimeFn
friend class TestSlipTimeFn; // unit testing
Modified: short/3D/PyLith/trunk/libsrc/faults/StepSlipFn.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/StepSlipFn.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/faults/StepSlipFn.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -13,10 +13,6 @@
/** @file libsrc/faults/StepSlipFn.hh
*
* @brief C++ implementation of a step-function slip time function.
- *
- * Slip time function is a step function with slip beginning at time t0.
- *
- * Normalized slip = 1 if t >= t0, 0 otherwise
*/
#if !defined(pylith_faults_stepslipfn_hh)
@@ -28,6 +24,13 @@
#include "pylith/utils/array.hh" // HASA double_array
// StepSlipFn -----------------------------------------------------------
+/**
+ * @brief C++ implementation of a step-function slip time function.
+ *
+ * Slip time function is a step function with slip beginning at time t0.
+ *
+ * Normalized slip = 1 if t >= t0, 0 otherwise
+*/
class pylith::faults::StepSlipFn : public SlipTimeFn
{ // class StepSlipFn
friend class TestStepSlipFn; // unit testing
Copied: short/3D/PyLith/trunk/libsrc/faults/TimeHistorySlipFn.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/libsrc/faults/TimeHistorySlipFn.cc)
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/TimeHistorySlipFn.cc (rev 0)
+++ short/3D/PyLith/trunk/libsrc/faults/TimeHistorySlipFn.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,356 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TimeHistorySlipFn.hh" // implementation of object methods
+
+#include "pylith/topology/SubMesh.hh" // USES SubMesh
+#include "pylith/topology/Fields.hh" // USES Fields
+#include "pylith/topology/Field.hh" // USES Field
+
+#include "spatialdata/spatialdb/SpatialDB.hh" // USES SpatialDB
+#include "spatialdata/spatialdb/TimeHistory.hh" // USES TimeHistory
+#include "spatialdata/geocoords/CoordSys.hh" // USES CoordSys
+#include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
+
+#include <cassert> // USES assert()
+#include <sstream> // USES std::ostringstream
+#include <stdexcept> // USES std::runtime_error
+
+// ----------------------------------------------------------------------
+typedef pylith::topology::SubMesh::SieveMesh SieveMesh;
+typedef pylith::topology::SubMesh::SieveMesh::label_sequence label_sequence;
+typedef pylith::topology::SubMesh::RealSection RealSection;
+
+// ----------------------------------------------------------------------
+// Default constructor.
+pylith::faults::TimeHistorySlipFn::TimeHistorySlipFn(void) :
+ _slipTimeVertex(0),
+ _timeScale(1.0),
+ _dbAmplitude(0),
+ _dbSlipTime(0),
+ _dbTimeHistory(0)
+{ // constructor
+} // constructor
+
+// ----------------------------------------------------------------------
+// Destructor.
+pylith::faults::TimeHistorySlipFn::~TimeHistorySlipFn(void)
+{ // destructor
+ deallocate();
+} // destructor
+
+// ----------------------------------------------------------------------
+// Deallocate PETSc and local data structures.
+void
+pylith::faults::TimeHistorySlipFn::deallocate(void)
+{ // deallocate
+ SlipTimeFn::deallocate();
+
+ _dbAmplitude = 0; // :TODO: Use shared pointer
+ _dbSlipTime = 0; // :TODO: Use shared pointer
+ if (0 != _dbTimeHistory)
+ _dbTimeHistory->close();
+ _dbTimeHistory = 0; // :TODO: Use shared pointer
+} // deallocate
+
+// ----------------------------------------------------------------------
+// Initialize slip time function.
+void
+pylith::faults::TimeHistorySlipFn::initialize(
+ const topology::SubMesh& faultMesh,
+ const spatialdata::units::Nondimensional& normalizer,
+ const double originTime)
+{ // initialize
+ assert(0 != _dbAmplitude);
+ assert(0 != _dbSlipTime);
+
+ const spatialdata::geocoords::CoordSys* cs = faultMesh.coordsys();
+ assert(0 != cs);
+ const int spaceDim = cs->spaceDim();
+
+ const double lengthScale = normalizer.lengthScale();
+ const double timeScale = normalizer.timeScale();
+
+ // Memory logging
+ ALE::MemoryLogger& logger = ALE::MemoryLogger::singleton();
+ logger.stagePush("Fault");
+
+ // Get vertices in fault mesh
+ const ALE::Obj<SieveMesh>& sieveMesh = faultMesh.sieveMesh();
+ assert(!sieveMesh.isNull());
+ const ALE::Obj<label_sequence>& vertices = sieveMesh->depthStratum(0);
+ assert(!vertices.isNull());
+ const label_sequence::iterator verticesBegin = vertices->begin();
+ const label_sequence::iterator verticesEnd = vertices->end();
+
+ delete _parameters; _parameters = new topology::Fields<topology::Field<topology::SubMesh> >(faultMesh);
+ assert(0 != _parameters);
+ _parameters->add("slip amplitude", "slip_amplitude");
+
+ topology::Field<topology::SubMesh>& slipAmplitude =
+ _parameters->get("slip amplitude");
+ slipAmplitude.newSection(vertices, spaceDim);
+ slipAmplitude.allocate();
+ slipAmplitude.scale(lengthScale);
+ slipAmplitude.vectorFieldType(topology::FieldBase::VECTOR);
+ const ALE::Obj<RealSection>& slipAmplitudeSection = slipAmplitude.section();
+ assert(!slipAmplitudeSection.isNull());
+
+ _parameters->add("slip time", "slip_time");
+ topology::Field<topology::SubMesh>& slipTime = _parameters->get("slip time");
+ slipTime.newSection(slipAmplitude, 1);
+ slipTime.allocate();
+ slipTime.scale(timeScale);
+ slipTime.vectorFieldType(topology::FieldBase::SCALAR);
+ const ALE::Obj<RealSection>& slipTimeSection = slipTime.section();
+ assert(!slipTimeSection.isNull());
+
+ logger.stagePop();
+
+ // Open databases and set query values
+ _dbAmplitude->open();
+ switch (spaceDim)
+ { // switch
+ case 1 : {
+ const char* slipValues[] = {"fault-opening"};
+ _dbAmplitude->queryVals(slipValues, 1);
+ break;
+ } // case 1
+ case 2 : {
+ const char* slipValues[] = {"left-lateral-slip", "fault-opening"};
+ _dbAmplitude->queryVals(slipValues, 2);
+ break;
+ } // case 2
+ case 3 : {
+ const char* slipValues[] = {"left-lateral-slip", "reverse-slip",
+ "fault-opening"};
+ _dbAmplitude->queryVals(slipValues, 3);
+ break;
+ } // case 3
+ default :
+ std::cerr << "Bad spatial dimension '" << spaceDim << "'." << std::endl;
+ assert(0);
+ throw std::logic_error("Bad spatial dimension in TimeHistorySlipFn.");
+ } // switch
+
+ _dbSlipTime->open();
+ const char* slipTimeValues[] = {"slip-time"};
+ _dbSlipTime->queryVals(slipTimeValues, 1);
+
+ // Get coordinates of vertices
+ const ALE::Obj<RealSection>& coordinates =
+ sieveMesh->getRealSection("coordinates");
+ assert(!coordinates.isNull());
+
+ _slipVertex.resize(spaceDim);
+ double_array vCoordsGlobal(spaceDim);
+ for (label_sequence::iterator v_iter=verticesBegin;
+ v_iter != verticesEnd;
+ ++v_iter) {
+ coordinates->restrictPoint(*v_iter,
+ &vCoordsGlobal[0], vCoordsGlobal.size());
+ normalizer.dimensionalize(&vCoordsGlobal[0], vCoordsGlobal.size(),
+ lengthScale);
+
+ int err = _dbAmplitude->query(&_slipVertex[0], _slipVertex.size(),
+ &vCoordsGlobal[0], vCoordsGlobal.size(), cs);
+ if (err) {
+ std::ostringstream msg;
+ msg << "Could not find slip amplitude at (";
+ for (int i=0; i < spaceDim; ++i)
+ msg << " " << vCoordsGlobal[i];
+ msg << ") using spatial database " << _dbAmplitude->label() << ".";
+ throw std::runtime_error(msg.str());
+ } // if
+ normalizer.nondimensionalize(&_slipVertex[0], _slipVertex.size(),
+ lengthScale);
+
+ err = _dbSlipTime->query(&_slipTimeVertex, 1,
+ &vCoordsGlobal[0], vCoordsGlobal.size(), cs);
+ if (err) {
+ std::ostringstream msg;
+ msg << "Could not find slip initiation time at (";
+ for (int i=0; i < spaceDim; ++i)
+ msg << " " << vCoordsGlobal[i];
+ msg << ") using spatial database " << _dbSlipTime->label() << ".";
+ throw std::runtime_error(msg.str());
+ } // if
+ normalizer.nondimensionalize(&_slipTimeVertex, 1, timeScale);
+ // add origin time to rupture time
+ _slipTimeVertex += originTime;
+
+ slipAmplitudeSection->updatePoint(*v_iter, &_slipVertex[0]);
+ slipTimeSection->updatePoint(*v_iter, &_slipTimeVertex);
+ } // for
+
+ // Close databases.
+ _dbAmplitude->close();
+ _dbSlipTime->close();
+
+ // Open time history database.
+ _dbTimeHistory->open();
+ _timeScale = timeScale;
+} // initialize
+
+// ----------------------------------------------------------------------
+// Get slip on fault surface at time t.
+void
+pylith::faults::TimeHistorySlipFn::slip(topology::Field<topology::SubMesh>* slip,
+ const double t)
+{ // slip
+ assert(0 != slip);
+ assert(0 != _parameters);
+ assert(0 != _dbTimeHistory);
+
+ // Get vertices in fault mesh
+ const ALE::Obj<SieveMesh>& sieveMesh = slip->mesh().sieveMesh();
+ assert(!sieveMesh.isNull());
+ const ALE::Obj<label_sequence>& vertices = sieveMesh->depthStratum(0);
+ assert(!vertices.isNull());
+ const label_sequence::iterator verticesBegin = vertices->begin();
+ const label_sequence::iterator verticesEnd = vertices->end();
+
+ // Get sections
+ const topology::Field<topology::SubMesh>& slipAmplitude =
+ _parameters->get("slip amplitude");
+ const ALE::Obj<RealSection>& slipAmplitudeSection = slipAmplitude.section();
+ assert(!slipAmplitudeSection.isNull());
+ const topology::Field<topology::SubMesh>& slipTime =
+ _parameters->get("slip time");
+ const ALE::Obj<RealSection>& slipTimeSection = slipTime.section();
+ assert(!slipTimeSection.isNull());
+ const ALE::Obj<RealSection>& slipSection = slip->section();
+ assert(!slipSection.isNull());
+
+ double amplitude = 0.0;
+ for (label_sequence::iterator v_iter=verticesBegin;
+ v_iter != verticesEnd;
+ ++v_iter) {
+ slipAmplitudeSection->restrictPoint(*v_iter,
+ &_slipVertex[0], _slipVertex.size());
+ slipTimeSection->restrictPoint(*v_iter, &_slipTimeVertex, 1);
+
+ double relTime = t - _slipTimeVertex;
+ if (relTime < 0.0)
+ _slipVertex = 0.0;
+ else {
+ relTime *= _timeScale;
+ const int err = _dbTimeHistory->query(&litude, relTime);
+ if (0 != err) {
+ std::ostringstream msg;
+ msg << "Error querying for time '" << relTime
+ << "' in time history database "
+ << _dbTimeHistory->label() << ".";
+ throw std::runtime_error(msg.str());
+ } // if
+ _slipVertex *= amplitude;
+ } // else
+
+ // Update field
+ slipSection->updateAddPoint(*v_iter, &_slipVertex[0]);
+ } // for
+
+ PetscLogFlops(vertices->size() * 3);
+} // slip
+
+// ----------------------------------------------------------------------
+// Get increment of slip on fault surface between time t0 and t1.
+void
+pylith::faults::TimeHistorySlipFn::slipIncr(topology::Field<topology::SubMesh>* slip,
+ const double t0,
+ const double t1)
+{ // slipIncr
+ assert(0 != slip);
+ assert(0 != _parameters);
+ assert(0 != _dbTimeHistory);
+
+ // Get vertices in fault mesh
+ const ALE::Obj<SieveMesh>& sieveMesh = slip->mesh().sieveMesh();
+ assert(!sieveMesh.isNull());
+ const ALE::Obj<label_sequence>& vertices = sieveMesh->depthStratum(0);
+ assert(!vertices.isNull());
+ const label_sequence::iterator verticesBegin = vertices->begin();
+ const label_sequence::iterator verticesEnd = vertices->end();
+
+ // Get sections
+ const topology::Field<topology::SubMesh>& slipAmplitude =
+ _parameters->get("slip amplitude");
+ const ALE::Obj<RealSection>& slipAmplitudeSection = slipAmplitude.section();
+ assert(!slipAmplitudeSection.isNull());
+ const topology::Field<topology::SubMesh>& slipTime =
+ _parameters->get("slip time");
+ const ALE::Obj<RealSection>& slipTimeSection = slipTime.section();
+ assert(!slipTimeSection.isNull());
+ const ALE::Obj<RealSection>& slipSection = slip->section();
+ assert(!slipSection.isNull());
+
+ double amplitude0 = 0.0;
+ double amplitude1 = 0.0;
+ for (label_sequence::iterator v_iter=verticesBegin;
+ v_iter != verticesEnd;
+ ++v_iter) {
+ slipAmplitudeSection->restrictPoint(*v_iter, &_slipVertex[0], _slipVertex.size());
+ slipTimeSection->restrictPoint(*v_iter, &_slipTimeVertex, 1);
+
+ double relTime0 = t0 - _slipTimeVertex;
+ double relTime1 = t1 - _slipTimeVertex;
+ if (relTime1 < 0.0)
+ _slipVertex = 0.0;
+ else {
+ relTime0 *= _timeScale;
+ relTime1 *= _timeScale;
+ int err = _dbTimeHistory->query(&litude0, relTime0);
+ if (0 != err) {
+ std::ostringstream msg;
+ msg << "Error querying for time '" << relTime0
+ << "' in time history database "
+ << _dbTimeHistory->label() << ".";
+ throw std::runtime_error(msg.str());
+ } // if
+ err = _dbTimeHistory->query(&litude1, relTime1);
+ if (0 != err) {
+ std::ostringstream msg;
+ msg << "Error querying for time '" << relTime1
+ << "' in time history database "
+ << _dbTimeHistory->label() << ".";
+ throw std::runtime_error(msg.str());
+ } // if
+ _slipVertex *= amplitude1 - amplitude0;
+ } // else
+
+ // Update field
+ slipSection->updateAddPoint(*v_iter, &_slipVertex[0]);
+ } // for
+
+ PetscLogFlops(vertices->size() * 6);
+} // slipIncr
+
+// ----------------------------------------------------------------------
+// Get final slip.
+const pylith::topology::Field<pylith::topology::SubMesh>&
+pylith::faults::TimeHistorySlipFn::finalSlip(void)
+{ // finalSlip
+ return _parameters->get("slip amplitude");
+} // finalSlip
+
+// ----------------------------------------------------------------------
+// Get time when slip begins at each point.
+const pylith::topology::Field<pylith::topology::SubMesh>&
+pylith::faults::TimeHistorySlipFn::slipTime(void)
+{ // slipTime
+ return _parameters->get("slip time");
+} // slipTime
+
+
+// End of file
Copied: short/3D/PyLith/trunk/libsrc/faults/TimeHistorySlipFn.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/libsrc/faults/TimeHistorySlipFn.hh)
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/TimeHistorySlipFn.hh (rev 0)
+++ short/3D/PyLith/trunk/libsrc/faults/TimeHistorySlipFn.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,144 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/** @file libsrc/faults/TimeHistorySlipFn.hh
+ *
+ * @brief C++ implementation of a slip time function with a
+ * user-specified time history.
+ */
+
+#if !defined(pylith_faults_timehistoryslipfn_hh)
+#define pylith_faults_timehistoryslipfn_hh
+
+// Include directives ---------------------------------------------------
+#include "SlipTimeFn.hh"
+
+#include "pylith/utils/array.hh" // HASA double_array
+
+// TimeHistorySlipFn -----------------------------------------------------------
+/**
+ * @brief C++ implementation of a slip time function with a
+ * user-specified time history.
+ *
+ * User-specified slip time function with spatial variable amplitude
+ * and starting time t0.
+*/
+class pylith::faults::TimeHistorySlipFn : public SlipTimeFn
+{ // class TimeHistorySlipFn
+ friend class TestTimeHistorySlipFn; // unit testing
+
+// PUBLIC METHODS ///////////////////////////////////////////////////////
+public :
+
+ /// Default constructor.
+ TimeHistorySlipFn(void);
+
+ /// Destructor.
+ ~TimeHistorySlipFn(void);
+
+ /// Deallocate PETSc and local data structures.
+ virtual
+ void deallocate(void);
+
+ /** Set spatial database for amplitude of slip time history.
+ *
+ * @param db Spatial database
+ */
+ void dbAmplitude(spatialdata::spatialdb::SpatialDB* const db);
+
+ /** Set spatial database for slip initiation time.
+ *
+ * @param db Spatial database
+ */
+ void dbSlipTime(spatialdata::spatialdb::SpatialDB* const db);
+
+ /** Set time history.
+ *
+ * @param th Time history.
+ */
+ void dbTimeHistory(spatialdata::spatialdb::TimeHistory* const th);
+
+ /** Initialize slip time function.
+ *
+ * @param faultMesh Finite-element mesh of fault.
+ * @param cs Coordinate system for mesh
+ * @param normalizer Nondimensionalization of scales.
+ * @param originTime Origin time for earthquake source.
+ */
+ void initialize(const topology::SubMesh& faultMesh,
+ const spatialdata::units::Nondimensional& normalizer,
+ const double originTime =0.0);
+
+ /** Get slip on fault surface at time t.
+ *
+ * @param slipField Slip field over fault surface.
+ * @param t Time t.
+ *
+ * @returns Slip vector as left-lateral/reverse/normal.
+ */
+ void slip(topology::Field<topology::SubMesh>* const slipField,
+ const double t);
+
+ /** Get slip increment on fault surface between time t0 and t1.
+ *
+ * @param slipField Slip field over fault surface.
+ * @param t0 Time t.
+ * @param t1 Time t+dt.
+ *
+ * @returns Increment in slip vector as left-lateral/reverse/normal.
+ */
+ void slipIncr(topology::Field<topology::SubMesh>* slipField,
+ const double t0,
+ const double t1);
+
+ /** Get final slip.
+ *
+ * @returns Final slip.
+ */
+ const topology::Field<topology::SubMesh>& finalSlip(void);
+
+ /** Get time when slip begins at each point.
+ *
+ * @returns Time when slip begins.
+ */
+ const topology::Field<topology::SubMesh>& slipTime(void);
+
+// NOT IMPLEMENTED //////////////////////////////////////////////////////
+private :
+
+ TimeHistorySlipFn(const TimeHistorySlipFn&); ///< Not implemented.
+ const TimeHistorySlipFn& operator=(const TimeHistorySlipFn&); ///< Not implemented
+
+// PRIVATE MEMBERS //////////////////////////////////////////////////////
+private :
+
+ double _slipTimeVertex; ///< Slip time at a vertex.
+ double _timeScale; ///< Time scale.
+ double_array _slipVertex; ///< Final slip at a vertex.
+
+ /// Spatial database for amplitude of slip time history.
+ spatialdata::spatialdb::SpatialDB* _dbAmplitude;
+
+ /// Spatial database for slip time.
+ spatialdata::spatialdb::SpatialDB* _dbSlipTime;
+
+ /// Time history database.
+ spatialdata::spatialdb::TimeHistory* _dbTimeHistory;
+
+}; // class TimeHistorySlipFn
+
+#include "TimeHistorySlipFn.icc" // inline methods
+
+#endif // pylith_faults_timehistoryslipfn_hh
+
+
+// End of file
Copied: short/3D/PyLith/trunk/libsrc/faults/TimeHistorySlipFn.icc (from rev 16093, short/3D/PyLith/branches/pylith-friction/libsrc/faults/TimeHistorySlipFn.icc)
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/TimeHistorySlipFn.icc (rev 0)
+++ short/3D/PyLith/trunk/libsrc/faults/TimeHistorySlipFn.icc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,39 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#if !defined(pylith_faults_timehistoryslipfn_hh)
+#error "TimeHistorySlipFn.icc can only be included from TimeHistorySlipFn.hh"
+#endif
+
+// Set spatial database for final slip.
+inline
+void
+pylith::faults::TimeHistorySlipFn::dbAmplitude(spatialdata::spatialdb::SpatialDB* const db) {
+ _dbAmplitude = db;
+} // dbFinalSlip
+
+// Set spatial database for slip initiation time.
+inline
+void
+pylith::faults::TimeHistorySlipFn::dbSlipTime(spatialdata::spatialdb::SpatialDB* const db) {
+ _dbSlipTime = db;
+} // dbSlipTime
+
+// Set time history.
+inline
+void
+pylith::faults::TimeHistorySlipFn::dbTimeHistory(spatialdata::spatialdb::TimeHistory* const th) {
+ _dbTimeHistory = th;
+} // dbTimeHistory
+
+
+// End of file
Modified: short/3D/PyLith/trunk/libsrc/faults/TopologyOps.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/TopologyOps.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/faults/TopologyOps.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -12,7 +12,7 @@
/** @file libsrc/faults/TopologyOps.hh
*
- * @brief C++ object to manage creation of cohesive cells.
+ * @brief C++ helper object for creation of cohesive cells.
*/
#if !defined(pylith_faults_topologyops_hh)
@@ -24,6 +24,7 @@
#include "pylith/topology/Mesh.hh" // USES Mesh
// TopologyOps ----------------------------------------------------------
+/// Helper object for creation of cohesive cells.
class pylith::faults::TopologyOps
{ // class TopologyOps
Modified: short/3D/PyLith/trunk/libsrc/faults/TopologyVisitors.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/TopologyVisitors.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/faults/TopologyVisitors.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -22,6 +22,7 @@
#include "faultsfwd.hh" // forward declarations
// ReplaceVisitor -------------------------------------------------------
+/// Visitor for replacement.
template<typename Sieve, typename Renumbering>
class pylith::faults::ReplaceVisitor {
private:
@@ -46,6 +47,7 @@
};
// ClassifyVisitor ------------------------------------------------------
+/// Visitor for classification.
template<typename Sieve>
class pylith::faults::ClassifyVisitor {
public:
Modified: short/3D/PyLith/trunk/libsrc/faults/faultsfwd.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/faultsfwd.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/faults/faultsfwd.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -29,6 +29,7 @@
class Fault;
class FaultCohesive;
class FaultCohesiveDyn;
+ class FaultCohesiveDynL;
class FaultCohesiveKin;
class EqKinSrc;
@@ -37,6 +38,7 @@
class ConstRateSlipFn;
class LiuCosSlipFn;
class StepSlipFn;
+ class TimeHistorySlipFn;
class TopologyOps;
template<typename Sieve, typename Renumbering> class ReplaceVisitor;
Property changes on: short/3D/PyLith/trunk/libsrc/feassemble
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Modified: short/3D/PyLith/trunk/libsrc/feassemble/CellGeometry.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/CellGeometry.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/feassemble/CellGeometry.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
/**
- * @file pylith/feassemble/CellGeometry.hh
+ * @file libsrc/feassemble/CellGeometry.hh
*
* @brief C++ abstract base class for cell geometry calculations.
*/
@@ -25,6 +25,7 @@
#include "pylith/utils/array.hh" // HASA double_array
// CellGeometry ---------------------------------------------------------
+/// Abstract base class for cell geometry calculations.
class pylith::feassemble::CellGeometry
{ // CellGeometry
friend class TestCellGeometry; // unit testing
Modified: short/3D/PyLith/trunk/libsrc/feassemble/Constraint.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Constraint.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Constraint.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -26,6 +26,9 @@
#include "spatialdata/units/unitsfwd.hh" // USES Nondimensional
// Constraint -----------------------------------------------------------
+/** @brief Abstract base class for defining constraints applied to
+ * vertices of finite-elements.
+ */
class pylith::feassemble::Constraint
{ // class Constraint
friend class TestConstraint; // unit testing
Modified: short/3D/PyLith/trunk/libsrc/feassemble/ElasticityExplicit.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/ElasticityExplicit.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/feassemble/ElasticityExplicit.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -247,7 +247,41 @@
const double_array& basis = _quadrature->basis();
const double_array& basisDeriv = _quadrature->basisDeriv();
const double_array& jacobianDet = _quadrature->jacobianDet();
+ const double_array& quadPtsNondim = _quadrature->quadPts();
+ // Compute body force vector if gravity is being used.
+ if (0 != _gravityField) {
+ _logger->eventBegin(computeEvent);
+ const spatialdata::geocoords::CoordSys* cs = fields->mesh().coordsys();
+ assert(0 != cs);
+
+ // Get density at quadrature points for this cell
+ const double_array& density = _material->calcDensity();
+
+ quadPtsGlobal = quadPtsNondim;
+ _normalizer->dimensionalize(&quadPtsGlobal[0], quadPtsGlobal.size(),
+ lengthScale);
+
+ // Compute action for element body forces
+ for (int iQuad = 0; iQuad < numQuadPts; ++iQuad) {
+ const int err = _gravityField->query(&gravVec[0], gravVec.size(),
+ &quadPtsGlobal[0], spaceDim, cs);
+ if (err)
+ throw std::runtime_error("Unable to get gravity vector for point.");
+ _normalizer->nondimensionalize(&gravVec[0], gravVec.size(),
+ gravityScale);
+ const double wt = quadWts[iQuad] * jacobianDet[iQuad] * density[iQuad];
+ for (int iBasis = 0, iQ = iQuad * numBasis; iBasis < numBasis; ++iBasis) {
+ const double valI = wt * basis[iQ + iBasis];
+ for (int iDim = 0; iDim < spaceDim; ++iDim) {
+ _cellVector[iBasis * spaceDim + iDim] += valI * gravVec[iDim];
+ } // for
+ } // for
+ } // for
+ PetscLogFlops(numQuadPts * (2 + numBasis * (1 + 2 * spaceDim)));
+ _logger->eventEnd(computeEvent);
+ } // if
+
// Compute action for inertial terms
_logger->eventBegin(computeEvent);
const double_array& density = _material->calcDensity();
@@ -431,5 +465,137 @@
_material->resetNeedNewJacobian();
} // integrateJacobian
+// ----------------------------------------------------------------------
+// Compute matrix associated with operator.
+void
+pylith::feassemble::ElasticityExplicit::integrateJacobian(
+ const topology::Field<topology::Mesh>& jacobian,
+ const double t,
+ topology::SolutionFields* fields)
+{ // integrateJacobian
+ assert(0 != _quadrature);
+ assert(0 != _material);
+ assert(0 != fields);
+ const int setupEvent = _logger->eventId("ElIJ setup");
+ const int geometryEvent = _logger->eventId("ElIJ geometry");
+ const int computeEvent = _logger->eventId("ElIJ compute");
+ const int restrictEvent = _logger->eventId("ElIJ restrict");
+ const int stateVarsEvent = _logger->eventId("ElIJ stateVars");
+ const int updateEvent = _logger->eventId("ElIJ update");
+
+ _logger->eventBegin(setupEvent);
+
+ // Get cell geometry information that doesn't depend on cell
+ const int numQuadPts = _quadrature->numQuadPts();
+ const double_array& quadWts = _quadrature->quadWts();
+ assert(quadWts.size() == numQuadPts);
+ const int numBasis = _quadrature->numBasis();
+ const int spaceDim = _quadrature->spaceDim();
+ const int cellDim = _quadrature->cellDim();
+ const int tensorSize = _material->tensorSize();
+ if (cellDim != spaceDim)
+ throw std::logic_error("Don't know how to integrate elasticity " \
+ "contribution to Jacobian matrix for cells with " \
+ "different dimensions than the spatial dimension.");
+
+ // Get cell information
+ const ALE::Obj<SieveMesh>& sieveMesh = fields->mesh().sieveMesh();
+ assert(!sieveMesh.isNull());
+ const int materialId = _material->id();
+ const ALE::Obj<SieveMesh::label_sequence>& cells =
+ sieveMesh->getLabelStratum("material-id", materialId);
+ assert(!cells.isNull());
+ const SieveMesh::label_sequence::iterator cellsBegin = cells->begin();
+ const SieveMesh::label_sequence::iterator cellsEnd = cells->end();
+
+ // Get parameters used in integration.
+ const double dt = _dt;
+ const double dt2 = dt*dt;
+ assert(dt > 0);
+
+ // Get sections
+ double_array dispTCell(numBasis*spaceDim);
+ const ALE::Obj<RealSection>& dispTSection =
+ fields->get("disp(t)").section();
+ assert(!dispTSection.isNull());
+
+ const ALE::Obj<RealSection>& jacobianSection = jacobian.section();
+ assert(!jacobianSection.isNull());
+ topology::Mesh::UpdateAddVisitor jacobianVisitor(*jacobianSection,
+ &_cellVector[0]);
+
+ double_array coordinatesCell(numBasis*spaceDim);
+ const ALE::Obj<RealSection>& coordinates =
+ sieveMesh->getRealSection("coordinates");
+ assert(!coordinates.isNull());
+ topology::Mesh::RestrictVisitor coordsVisitor(*coordinates,
+ coordinatesCell.size(),
+ &coordinatesCell[0]);
+
+ _logger->eventEnd(setupEvent);
+
+ // Loop over cells
+ for (SieveMesh::label_sequence::iterator c_iter=cellsBegin;
+ c_iter != cellsEnd;
+ ++c_iter) {
+ // Compute geometry information for current cell
+ _logger->eventBegin(geometryEvent);
+#if defined(PRECOMPUTE_GEOMETRY)
+ _quadrature->retrieveGeometry(*c_iter);
+#else
+ coordsVisitor.clear();
+ sieveMesh->restrictClosure(*c_iter, coordsVisitor);
+ _quadrature->computeGeometry(coordinatesCell, *c_iter);
+#endif
+ _logger->eventEnd(geometryEvent);
+
+ // Get state variables for cell.
+ _logger->eventBegin(stateVarsEvent);
+ _material->retrievePropsAndVars(*c_iter);
+ _logger->eventEnd(stateVarsEvent);
+
+ // Reset element matrix to zero
+ _resetCellMatrix();
+
+ // Get cell geometry information that depends on cell
+ const double_array& basis = _quadrature->basis();
+ const double_array& jacobianDet = _quadrature->jacobianDet();
+
+ // Get material physical properties at quadrature points for this cell
+ const double_array& density = _material->calcDensity();
+
+ // Compute Jacobian for inertial terms
+ _logger->eventBegin(computeEvent);
+ for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
+ const double wt =
+ quadWts[iQuad] * jacobianDet[iQuad] * density[iQuad] / dt2;
+ for (int iBasis=0, iQ=iQuad*numBasis; iBasis < numBasis; ++iBasis) {
+ const double valI = wt*basis[iQ+iBasis];
+ for (int jBasis=0; jBasis < numBasis; ++jBasis) {
+ const double valIJ = valI * basis[iQ+jBasis];
+ for (int iDim=0; iDim < spaceDim; ++iDim) {
+ const int iBlock = (iBasis*spaceDim + iDim) * (numBasis*spaceDim);
+ const int jBlock = (jBasis*spaceDim + iDim);
+ _cellMatrix[iBlock+jBlock] += valIJ;
+ } // for
+ } // for
+ } // for
+ } // for
+ PetscLogFlops(numQuadPts*(3+numBasis*(1+numBasis*(1+spaceDim))));
+ _lumpCellMatrix();
+ _logger->eventEnd(computeEvent);
+
+ // Assemble cell contribution into lumped matrix.
+ _logger->eventBegin(updateEvent);
+ jacobianVisitor.clear();
+ sieveMesh->updateClosure(*c_iter, jacobianVisitor);
+ _logger->eventEnd(updateEvent);
+ } // for
+
+ _needNewJacobian = false;
+ _material->resetNeedNewJacobian();
+} // integrateJacobian
+
+
// End of file
Modified: short/3D/PyLith/trunk/libsrc/feassemble/ElasticityExplicit.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/ElasticityExplicit.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/feassemble/ElasticityExplicit.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,10 +11,21 @@
//
/**
- * @file pylith/feassemble/ElasticityExplicit.hh
+ * @file libsrc/feassemble/ElasticityExplicit.hh
*
* @brief Explicit time integration of dynamic elasticity equation
* using finite-elements.
+ */
+
+#if !defined(pylith_feassemble_elasticityexplicit_hh)
+#define pylith_feassemble_elasticityexplicit_hh
+
+// Include directives ---------------------------------------------------
+#include "IntegratorElasticity.hh" // ISA IntegratorElasticity
+
+// ElasticityExplicit ---------------------------------------------------
+/**@brief Explicit time integration of the dynamic elasticity equation
+ * using finite-elements.
*
* Note: This object operates on a single finite-element family, which
* is defined by the quadrature and a database of material property
@@ -22,9 +33,9 @@
*
* Computes contributions to terms A and r in
*
- * A(t) u(t+dt) = b(u(t), u(t-dt)),
+ * A(t+dt) du(t) = b(t+dt, u(t), u(t-dt)) - A(t+dt) u(t),
*
- * r = b - A u0(t+dt)
+ * r(t+dt) = b(t+dt) - A(t+dt) (u(t) + du(t))
*
* where A(t) is a sparse matrix or vector, u(t+dt) is the field we
* want to compute at time t+dt, b is a vector that depends on the
@@ -50,15 +61,7 @@
*
* See governing equations section of user manual for more
* information.
- */
-
-#if !defined(pylith_feassemble_elasticityexplicit_hh)
-#define pylith_feassemble_elasticityexplicit_hh
-
-// Include directives ---------------------------------------------------
-#include "IntegratorElasticity.hh" // ISA IntegratorElasticity
-
-// ElasticityExplicit ---------------------------------------------------
+*/
class pylith::feassemble::ElasticityExplicit : public IntegratorElasticity
{ // ElasticityExplicit
friend class TestElasticityExplicit; // unit testing
@@ -109,6 +112,17 @@
const double t,
topology::SolutionFields* const fields);
+ /** Integrate contributions to Jacobian matrix (A) associated with
+ * operator.
+ *
+ * @param jacobian Diagonal matrix (as field) for Jacobian of system.
+ * @param t Current time
+ * @param fields Solution fields
+ */
+ void integrateJacobian(const topology::Field<topology::Mesh>& jacobian,
+ const double t,
+ topology::SolutionFields* const fields);
+
// NOT IMPLEMENTED //////////////////////////////////////////////////////
private :
Copied: short/3D/PyLith/trunk/libsrc/feassemble/ElasticityExplicitLgDeform.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/libsrc/feassemble/ElasticityExplicitLgDeform.cc)
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/ElasticityExplicitLgDeform.cc (rev 0)
+++ short/3D/PyLith/trunk/libsrc/feassemble/ElasticityExplicitLgDeform.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,603 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#include <portinfo>
+
+#include "ElasticityExplicitLgDeform.hh" // implementation of class methods
+
+#include "Quadrature.hh" // USES Quadrature
+#include "CellGeometry.hh" // USES CellGeometry
+
+#include "pylith/materials/ElasticMaterial.hh" // USES ElasticMaterial
+#include "pylith/topology/Field.hh" // USES Field
+#include "pylith/topology/SolutionFields.hh" // USES SolutionFields
+#include "pylith/topology/Jacobian.hh" // USES Jacobian
+
+#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/macrodefs.h" // USES CALL_MEMBER_FN
+#include "pylith/utils/lapack.h" // USES LAPACKdgesvd
+
+#include "petscmat.h" // USES PetscMat
+#include "spatialdata/geocoords/CoordSys.hh" // USES CoordSys
+#include "spatialdata/units/Nondimensional.hh" // USES Nondimendional
+
+#include "pylith/utils/petscerror.h" // USES CHECK_PETSC_ERROR
+#include <cassert> // USES assert()
+#include <stdexcept> // USES std::runtime_error
+
+//#define PRECOMPUTE_GEOMETRY
+
+// ----------------------------------------------------------------------
+typedef pylith::topology::Mesh::SieveMesh SieveMesh;
+typedef pylith::topology::Mesh::RealSection RealSection;
+
+// ----------------------------------------------------------------------
+// Constructor
+pylith::feassemble::ElasticityExplicitLgDeform::ElasticityExplicitLgDeform(void) :
+ _dtm1(-1.0)
+{ // constructor
+} // constructor
+
+// ----------------------------------------------------------------------
+// Destructor
+pylith::feassemble::ElasticityExplicitLgDeform::~ElasticityExplicitLgDeform(void)
+{ // destructor
+ deallocate();
+} // destructor
+
+// ----------------------------------------------------------------------
+// Deallocate PETSc and local data structures.
+void
+pylith::feassemble::ElasticityExplicitLgDeform::deallocate(void)
+{ // deallocate
+ IntegratorElasticityLgDeform::deallocate();
+} // deallocate
+
+// ----------------------------------------------------------------------
+// Set time step for advancing from time t to time t+dt.
+void
+pylith::feassemble::ElasticityExplicitLgDeform::timeStep(const double dt)
+{ // timeStep
+ if (_dt != -1.0)
+ _dtm1 = _dt;
+ else
+ _dtm1 = dt;
+ _dt = dt;
+ assert(_dt == _dtm1); // For now, don't allow variable time step
+ if (0 != _material)
+ _material->timeStep(_dt);
+} // timeStep
+
+// ----------------------------------------------------------------------
+// Set flag for setting constraints for total field solution or
+// incremental field solution.
+void
+pylith::feassemble::ElasticityExplicitLgDeform::useSolnIncr(const bool flag)
+{ // useSolnIncr
+ if (!flag)
+ throw std::logic_error("Non-incremental solution not supported for "
+ "explicit time integration of elasticity "
+ "equation.");
+} // useSolnIncr
+
+// ----------------------------------------------------------------------
+// Integrate constributions to residual term (r) for operator.
+void
+pylith::feassemble::ElasticityExplicitLgDeform::integrateResidual(
+ const topology::Field<topology::Mesh>& residual,
+ const double t,
+ topology::SolutionFields* const fields)
+{ // integrateResidual
+ /// Member prototype for _elasticityResidualXD()
+ typedef void (pylith::feassemble::ElasticityExplicitLgDeform::*elasticityResidual_fn_type)
+ (const double_array&, const double_array&);
+
+ assert(0 != _quadrature);
+ assert(0 != _material);
+ assert(0 != _logger);
+ assert(0 != fields);
+
+ const int setupEvent = _logger->eventId("ElIR setup");
+ const int geometryEvent = _logger->eventId("ElIR geometry");
+ const int computeEvent = _logger->eventId("ElIR compute");
+ const int restrictEvent = _logger->eventId("ElIR restrict");
+ const int stateVarsEvent = _logger->eventId("ElIR stateVars");
+ const int stressEvent = _logger->eventId("ElIR stress");
+ const int updateEvent = _logger->eventId("ElIR update");
+
+ _logger->eventBegin(setupEvent);
+
+ // Get cell geometry information that doesn't depend on cell
+ const int numQuadPts = _quadrature->numQuadPts();
+ const double_array& quadWts = _quadrature->quadWts();
+ assert(quadWts.size() == numQuadPts);
+ const int numBasis = _quadrature->numBasis();
+ const int spaceDim = _quadrature->spaceDim();
+ const int cellDim = _quadrature->cellDim();
+ const int tensorSize = _material->tensorSize();
+ /** :TODO:
+ *
+ * If cellDim and spaceDim are different, we need to transform
+ * displacements into cellDim, compute action, and transform result
+ * back into spaceDim. We get this information from the Jacobian and
+ * inverse of the Jacobian.
+ */
+ if (cellDim != spaceDim)
+ throw std::logic_error("Integration for cells with spatial dimensions "
+ "different than the spatial dimension of the "
+ "domain not implemented yet.");
+
+ // Set variables dependent on dimension of cell
+ totalStrain_fn_type calcTotalStrainFn;
+ elasticityResidual_fn_type elasticityResidualFn;
+ if (1 == cellDim) {
+ elasticityResidualFn =
+ &pylith::feassemble::ElasticityExplicitLgDeform::_elasticityResidual1D;
+ calcTotalStrainFn =
+ &pylith::feassemble::IntegratorElasticityLgDeform::_calcTotalStrain1D;
+ } else if (2 == cellDim) {
+ elasticityResidualFn =
+ &pylith::feassemble::ElasticityExplicitLgDeform::_elasticityResidual2D;
+ calcTotalStrainFn =
+ &pylith::feassemble::IntegratorElasticityLgDeform::_calcTotalStrain2D;
+ } else if (3 == cellDim) {
+ elasticityResidualFn =
+ &pylith::feassemble::ElasticityExplicitLgDeform::_elasticityResidual3D;
+ calcTotalStrainFn =
+ &pylith::feassemble::IntegratorElasticityLgDeform::_calcTotalStrain3D;
+ } else
+ assert(0);
+
+ // Allocate vectors for cell values.
+ double_array dispTCell(numBasis*spaceDim);
+ double_array dispTmdtCell(numBasis*spaceDim);
+ double_array deformCell(numQuadPts*spaceDim*spaceDim);
+ double_array strainCell(numQuadPts*tensorSize);
+ double_array gravVec(spaceDim);
+ double_array quadPtsGlobal(numQuadPts*spaceDim);
+
+ // Get cell information
+ const ALE::Obj<SieveMesh>& sieveMesh = fields->mesh().sieveMesh();
+ assert(!sieveMesh.isNull());
+ const int materialId = _material->id();
+ const ALE::Obj<SieveMesh::label_sequence>& cells =
+ sieveMesh->getLabelStratum("material-id", materialId);
+ assert(!cells.isNull());
+ const SieveMesh::label_sequence::iterator cellsBegin = cells->begin();
+ const SieveMesh::label_sequence::iterator cellsEnd = cells->end();
+
+ // Get sections
+ const ALE::Obj<RealSection>& dispTSection = fields->get("disp(t)").section();
+ assert(!dispTSection.isNull());
+ topology::Mesh::RestrictVisitor dispTVisitor(*dispTSection,
+ numBasis*spaceDim,
+ &dispTCell[0]);
+ const ALE::Obj<RealSection>& dispTmdtSection =
+ fields->get("disp(t-dt)").section();
+ assert(!dispTmdtSection.isNull());
+ topology::Mesh::RestrictVisitor dispTmdtVisitor(*dispTmdtSection,
+ numBasis*spaceDim,
+ &dispTmdtCell[0]);
+ const ALE::Obj<RealSection>& residualSection = residual.section();
+ topology::Mesh::UpdateAddVisitor residualVisitor(*residualSection,
+ &_cellVector[0]);
+
+ double_array coordinatesCell(numBasis*spaceDim);
+ const ALE::Obj<RealSection>& coordinates =
+ sieveMesh->getRealSection("coordinates");
+ assert(!coordinates.isNull());
+ topology::Mesh::RestrictVisitor coordsVisitor(*coordinates,
+ coordinatesCell.size(),
+ &coordinatesCell[0]);
+
+ assert(0 != _normalizer);
+ const double lengthScale = _normalizer->lengthScale();
+ const double gravityScale =
+ _normalizer->pressureScale() / (_normalizer->lengthScale() *
+ _normalizer->densityScale());
+
+ // Get parameters used in integration.
+ const double dt = _dt;
+ const double dt2 = dt*dt;
+ assert(dt > 0);
+
+ _logger->eventEnd(setupEvent);
+
+ // Loop over cells
+ for (SieveMesh::label_sequence::iterator c_iter=cellsBegin;
+ c_iter != cellsEnd;
+ ++c_iter) {
+ // Compute geometry information for current cell
+ _logger->eventBegin(geometryEvent);
+#if defined(PRECOMPUTE_GEOMETRY)
+ _quadrature->retrieveGeometry(*c_iter);
+#else
+ coordsVisitor.clear();
+ sieveMesh->restrictClosure(*c_iter, coordsVisitor);
+ _quadrature->computeGeometry(coordinatesCell, *c_iter);
+#endif
+ _logger->eventEnd(geometryEvent);
+
+ // Get state variables for cell.
+ _logger->eventBegin(stateVarsEvent);
+ _material->retrievePropsAndVars(*c_iter);
+ _logger->eventEnd(stateVarsEvent);
+
+ // Reset element vector to zero
+ _resetCellVector();
+
+ // Get cell geometry information that depends on cell
+ const double_array& basis = _quadrature->basis();
+ const double_array& basisDeriv = _quadrature->basisDeriv();
+ const double_array& jacobianDet = _quadrature->jacobianDet();
+ const double_array& quadPtsNondim = _quadrature->quadPts();
+
+ // Restrict input fields to cell
+ _logger->eventBegin(restrictEvent);
+ dispTVisitor.clear();
+ sieveMesh->restrictClosure(*c_iter, dispTVisitor);
+ dispTmdtVisitor.clear();
+ sieveMesh->restrictClosure(*c_iter, dispTmdtVisitor);
+ _logger->eventEnd(restrictEvent);
+
+ // Compute body force vector if gravity is being used.
+ if (0 != _gravityField) {
+ _logger->eventBegin(computeEvent);
+ const spatialdata::geocoords::CoordSys* cs = fields->mesh().coordsys();
+ assert(0 != cs);
+
+ // Get density at quadrature points for this cell
+ const double_array& density = _material->calcDensity();
+
+ quadPtsGlobal = quadPtsNondim;
+ _normalizer->dimensionalize(&quadPtsGlobal[0], quadPtsGlobal.size(),
+ lengthScale);
+
+ // Compute action for element body forces
+ for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
+ const int err = _gravityField->query(&gravVec[0], gravVec.size(),
+ &quadPtsGlobal[0], spaceDim, cs);
+ if (err)
+ throw std::runtime_error("Unable to get gravity vector for point.");
+ _normalizer->nondimensionalize(&gravVec[0], gravVec.size(),
+ gravityScale);
+ const double wt = quadWts[iQuad] * jacobianDet[iQuad] * density[iQuad];
+ for (int iBasis=0, iQ=iQuad*numBasis;
+ iBasis < numBasis; ++iBasis) {
+ const double valI = wt*basis[iQ+iBasis];
+ for (int iDim=0; iDim < spaceDim; ++iDim) {
+ _cellVector[iBasis*spaceDim+iDim] += valI*gravVec[iDim];
+ } // for
+ } // for
+ } // for
+ PetscLogFlops(numQuadPts*(2+numBasis*(1+2*spaceDim)));
+ _logger->eventEnd(computeEvent);
+ } // if
+
+ // Compute action for inertial terms
+ _logger->eventBegin(computeEvent);
+ const double_array& density = _material->calcDensity();
+ for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
+ const double wt =
+ quadWts[iQuad] * jacobianDet[iQuad] * density[iQuad] / dt2;
+ for (int iBasis=0; iBasis < numBasis; ++iBasis) {
+ const double valI = wt*basis[iQuad*numBasis+iBasis];
+ for (int jBasis=0; jBasis < numBasis; ++jBasis) {
+ const double valIJ = valI * basis[iQuad*numBasis+jBasis];
+ for (int iDim=0; iDim < spaceDim; ++iDim)
+ _cellVector[iBasis*spaceDim+iDim] +=
+ valIJ * (dispTCell[jBasis*spaceDim+iDim]
+ - dispTmdtCell[jBasis*spaceDim+iDim]);
+ } // for
+ } // for
+ } // for
+ PetscLogFlops(numQuadPts*(3+numBasis*(1+numBasis*(6*spaceDim))));
+ _logger->eventEnd(computeEvent);
+
+ // Compute B(transpose) * sigma, first computing strains
+ _logger->eventBegin(stressEvent);
+ _calcDeformation(&deformCell, basisDeriv, coordinatesCell, dispTCell,
+ numBasis, numQuadPts, spaceDim);
+ calcTotalStrainFn(&strainCell, deformCell, numQuadPts);
+ const double_array& stressCell = _material->calcStress(strainCell, true);
+ _logger->eventEnd(stressEvent);
+
+ _logger->eventBegin(computeEvent);
+ CALL_MEMBER_FN(*this, elasticityResidualFn)(stressCell, dispTCell);
+ _logger->eventEnd(computeEvent);
+
+ // Assemble cell contribution into field
+ _logger->eventBegin(updateEvent);
+ residualVisitor.clear();
+ sieveMesh->updateClosure(*c_iter, residualVisitor);
+ _logger->eventEnd(updateEvent);
+ } // for
+} // integrateResidual
+
+// ----------------------------------------------------------------------
+// Compute matrix associated with operator.
+void
+pylith::feassemble::ElasticityExplicitLgDeform::integrateJacobian(
+ topology::Jacobian* jacobian,
+ const double t,
+ topology::SolutionFields* fields)
+{ // integrateJacobian
+ assert(0 != _quadrature);
+ assert(0 != _material);
+ assert(0 != jacobian);
+ assert(0 != fields);
+
+ const int setupEvent = _logger->eventId("ElIJ setup");
+ const int geometryEvent = _logger->eventId("ElIJ geometry");
+ const int computeEvent = _logger->eventId("ElIJ compute");
+ const int restrictEvent = _logger->eventId("ElIJ restrict");
+ const int stateVarsEvent = _logger->eventId("ElIJ stateVars");
+ const int updateEvent = _logger->eventId("ElIJ update");
+
+ _logger->eventBegin(setupEvent);
+
+ // Get cell geometry information that doesn't depend on cell
+ const int numQuadPts = _quadrature->numQuadPts();
+ const double_array& quadWts = _quadrature->quadWts();
+ assert(quadWts.size() == numQuadPts);
+ const int numBasis = _quadrature->numBasis();
+ const int spaceDim = _quadrature->spaceDim();
+ const int cellDim = _quadrature->cellDim();
+ const int tensorSize = _material->tensorSize();
+ if (cellDim != spaceDim)
+ throw std::logic_error("Don't know how to integrate elasticity " \
+ "contribution to Jacobian matrix for cells with " \
+ "different dimensions than the spatial dimension.");
+
+ // Allocate vectors for cell data.
+ double_array dispTCell(numBasis*spaceDim);
+
+ // Get cell information
+ const ALE::Obj<SieveMesh>& sieveMesh = fields->mesh().sieveMesh();
+ assert(!sieveMesh.isNull());
+ const int materialId = _material->id();
+ const ALE::Obj<SieveMesh::label_sequence>& cells =
+ sieveMesh->getLabelStratum("material-id", materialId);
+ assert(!cells.isNull());
+ const SieveMesh::label_sequence::iterator cellsBegin = cells->begin();
+ const SieveMesh::label_sequence::iterator cellsEnd = cells->end();
+
+ // Get sections
+ const ALE::Obj<RealSection>& dispTSection =
+ fields->get("disp(t)").section();
+ assert(!dispTSection.isNull());
+
+ // Get sparse matrix
+ const PetscMat jacobianMat = jacobian->matrix();
+ assert(0 != jacobianMat);
+
+ // Get parameters used in integration.
+ const double dt = _dt;
+ const double dt2 = dt*dt;
+ assert(dt > 0);
+
+ const ALE::Obj<SieveMesh::order_type>& globalOrder =
+ sieveMesh->getFactory()->getGlobalOrder(sieveMesh, "default", dispTSection);
+ assert(!globalOrder.isNull());
+ // We would need to request unique points here if we had an interpolated mesh
+ topology::Mesh::IndicesVisitor jacobianVisitor(*dispTSection, *globalOrder,
+ (int) pow(sieveMesh->getSieve()->getMaxConeSize(),
+ sieveMesh->depth())*spaceDim);
+
+ double_array coordinatesCell(numBasis*spaceDim);
+ const ALE::Obj<RealSection>& coordinates =
+ sieveMesh->getRealSection("coordinates");
+ assert(!coordinates.isNull());
+ topology::Mesh::RestrictVisitor coordsVisitor(*coordinates,
+ coordinatesCell.size(),
+ &coordinatesCell[0]);
+
+ _logger->eventEnd(setupEvent);
+
+ // Loop over cells
+ for (SieveMesh::label_sequence::iterator c_iter=cellsBegin;
+ c_iter != cellsEnd;
+ ++c_iter) {
+ // Compute geometry information for current cell
+ _logger->eventBegin(geometryEvent);
+#if defined(PRECOMPUTE_GEOMETRY)
+ _quadrature->retrieveGeometry(*c_iter);
+#else
+ coordsVisitor.clear();
+ sieveMesh->restrictClosure(*c_iter, coordsVisitor);
+ _quadrature->computeGeometry(coordinatesCell, *c_iter);
+#endif
+ _logger->eventEnd(geometryEvent);
+
+ // Get state variables for cell.
+ _logger->eventBegin(stateVarsEvent);
+ _material->retrievePropsAndVars(*c_iter);
+ _logger->eventEnd(stateVarsEvent);
+
+ // Reset element matrix to zero
+ _resetCellMatrix();
+
+ // Get cell geometry information that depends on cell
+ const double_array& basis = _quadrature->basis();
+ const double_array& jacobianDet = _quadrature->jacobianDet();
+
+ // Get material physical properties at quadrature points for this cell
+ const double_array& density = _material->calcDensity();
+
+ // Compute Jacobian for inertial terms
+ _logger->eventBegin(computeEvent);
+ for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
+ const double wt =
+ quadWts[iQuad] * jacobianDet[iQuad] * density[iQuad] / dt2;
+ for (int iBasis=0, iQ=iQuad*numBasis; iBasis < numBasis; ++iBasis) {
+ const double valI = wt*basis[iQ+iBasis];
+ for (int jBasis=0; jBasis < numBasis; ++jBasis) {
+ const double valIJ = valI * basis[iQ+jBasis];
+ for (int iDim=0; iDim < spaceDim; ++iDim) {
+ const int iBlock = (iBasis*spaceDim + iDim) * (numBasis*spaceDim);
+ const int jBlock = (jBasis*spaceDim + iDim);
+ _cellMatrix[iBlock+jBlock] += valIJ;
+ } // for
+ } // for
+ } // for
+ } // for
+ PetscLogFlops(numQuadPts*(3+numBasis*(1+numBasis*(1+spaceDim))));
+ _logger->eventEnd(computeEvent);
+
+ // Assemble cell contribution into PETSc matrix.
+ _logger->eventBegin(updateEvent);
+ jacobianVisitor.clear();
+ PetscErrorCode err = updateOperator(jacobianMat, *sieveMesh->getSieve(),
+ jacobianVisitor, *c_iter,
+ &_cellMatrix[0], ADD_VALUES);
+ CHECK_PETSC_ERROR_MSG(err, "Update to PETSc Mat failed.");
+ _logger->eventEnd(updateEvent);
+ } // for
+
+ _needNewJacobian = false;
+ _material->resetNeedNewJacobian();
+} // integrateJacobian
+
+// ----------------------------------------------------------------------
+// Compute matrix associated with operator.
+void
+pylith::feassemble::ElasticityExplicitLgDeform::integrateJacobian(
+ const topology::Field<topology::Mesh>& jacobian,
+ const double t,
+ topology::SolutionFields* fields)
+{ // integrateJacobian
+ assert(0 != _quadrature);
+ assert(0 != _material);
+ assert(0 != fields);
+
+ const int setupEvent = _logger->eventId("ElIJ setup");
+ const int geometryEvent = _logger->eventId("ElIJ geometry");
+ const int computeEvent = _logger->eventId("ElIJ compute");
+ const int restrictEvent = _logger->eventId("ElIJ restrict");
+ const int stateVarsEvent = _logger->eventId("ElIJ stateVars");
+ const int updateEvent = _logger->eventId("ElIJ update");
+
+ _logger->eventBegin(setupEvent);
+
+ // Get cell geometry information that doesn't depend on cell
+ const int numQuadPts = _quadrature->numQuadPts();
+ const double_array& quadWts = _quadrature->quadWts();
+ assert(quadWts.size() == numQuadPts);
+ const int numBasis = _quadrature->numBasis();
+ const int spaceDim = _quadrature->spaceDim();
+ const int cellDim = _quadrature->cellDim();
+ const int tensorSize = _material->tensorSize();
+ if (cellDim != spaceDim)
+ throw std::logic_error("Don't know how to integrate elasticity " \
+ "contribution to Jacobian matrix for cells with " \
+ "different dimensions than the spatial dimension.");
+
+ // Get cell information
+ const ALE::Obj<SieveMesh>& sieveMesh = fields->mesh().sieveMesh();
+ assert(!sieveMesh.isNull());
+ const int materialId = _material->id();
+ const ALE::Obj<SieveMesh::label_sequence>& cells =
+ sieveMesh->getLabelStratum("material-id", materialId);
+ assert(!cells.isNull());
+ const SieveMesh::label_sequence::iterator cellsBegin = cells->begin();
+ const SieveMesh::label_sequence::iterator cellsEnd = cells->end();
+
+ // Get parameters used in integration.
+ const double dt = _dt;
+ const double dt2 = dt*dt;
+ assert(dt > 0);
+
+ // Get sections
+ double_array dispTCell(numBasis*spaceDim);
+ const ALE::Obj<RealSection>& dispTSection =
+ fields->get("disp(t)").section();
+ assert(!dispTSection.isNull());
+
+ const ALE::Obj<RealSection>& jacobianSection = jacobian.section();
+ assert(!jacobianSection.isNull());
+ topology::Mesh::UpdateAddVisitor jacobianVisitor(*jacobianSection,
+ &_cellVector[0]);
+
+ double_array coordinatesCell(numBasis*spaceDim);
+ const ALE::Obj<RealSection>& coordinates =
+ sieveMesh->getRealSection("coordinates");
+ assert(!coordinates.isNull());
+ topology::Mesh::RestrictVisitor coordsVisitor(*coordinates,
+ coordinatesCell.size(),
+ &coordinatesCell[0]);
+
+ _logger->eventEnd(setupEvent);
+
+ // Loop over cells
+ for (SieveMesh::label_sequence::iterator c_iter=cellsBegin;
+ c_iter != cellsEnd;
+ ++c_iter) {
+ // Compute geometry information for current cell
+ _logger->eventBegin(geometryEvent);
+#if defined(PRECOMPUTE_GEOMETRY)
+ _quadrature->retrieveGeometry(*c_iter);
+#else
+ coordsVisitor.clear();
+ sieveMesh->restrictClosure(*c_iter, coordsVisitor);
+ _quadrature->computeGeometry(coordinatesCell, *c_iter);
+#endif
+ _logger->eventEnd(geometryEvent);
+
+ // Get state variables for cell.
+ _logger->eventBegin(stateVarsEvent);
+ _material->retrievePropsAndVars(*c_iter);
+ _logger->eventEnd(stateVarsEvent);
+
+ // Reset element matrix to zero
+ _resetCellMatrix();
+
+ // Get cell geometry information that depends on cell
+ const double_array& basis = _quadrature->basis();
+ const double_array& jacobianDet = _quadrature->jacobianDet();
+
+ // Get material physical properties at quadrature points for this cell
+ const double_array& density = _material->calcDensity();
+
+ // Compute Jacobian for inertial terms
+ _logger->eventBegin(computeEvent);
+ for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
+ const double wt =
+ quadWts[iQuad] * jacobianDet[iQuad] * density[iQuad] / dt2;
+ for (int iBasis=0, iQ=iQuad*numBasis; iBasis < numBasis; ++iBasis) {
+ const double valI = wt*basis[iQ+iBasis];
+ for (int jBasis=0; jBasis < numBasis; ++jBasis) {
+ const double valIJ = valI * basis[iQ+jBasis];
+ for (int iDim=0; iDim < spaceDim; ++iDim) {
+ const int iBlock = (iBasis*spaceDim + iDim) * (numBasis*spaceDim);
+ const int jBlock = (jBasis*spaceDim + iDim);
+ _cellMatrix[iBlock+jBlock] += valIJ;
+ } // for
+ } // for
+ } // for
+ } // for
+ PetscLogFlops(numQuadPts*(3+numBasis*(1+numBasis*(1+spaceDim))));
+ _lumpCellMatrix();
+ _logger->eventEnd(computeEvent);
+
+ // Assemble cell contribution into lumped matrix.
+ _logger->eventBegin(updateEvent);
+ jacobianVisitor.clear();
+ sieveMesh->updateClosure(*c_iter, jacobianVisitor);
+ _logger->eventEnd(updateEvent);
+ } // for
+
+ _needNewJacobian = false;
+ _material->resetNeedNewJacobian();
+} // integrateJacobian
+
+
+// End of file
Copied: short/3D/PyLith/trunk/libsrc/feassemble/ElasticityExplicitLgDeform.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/libsrc/feassemble/ElasticityExplicitLgDeform.hh)
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/ElasticityExplicitLgDeform.hh (rev 0)
+++ short/3D/PyLith/trunk/libsrc/feassemble/ElasticityExplicitLgDeform.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,147 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+/**
+ * @file libsrc/feassemble/ElasticityExplicitLgDeform.hh
+ *
+ * @brief Explicit time integration of dynamic elasticity equation
+ * with large rigid body motion and small strains using
+ * finite-elements.
+ */
+
+#if !defined(pylith_feassemble_elasticityexplicitlgdeform_hh)
+#define pylith_feassemble_elasticityexplicitlgdeform_hh
+
+// Include directives ---------------------------------------------------
+#include "IntegratorElasticityLgDeform.hh" // ISA IntegratorElasticityLgDeform
+
+// ElasticityExplicitLgDeform -------------------------------------------
+/**@brief Explicit time integration of the dynamic elasticity equation
+ * with large rigid body motion and small strains using finite-elements.
+ *
+ * Note: This object operates on a single finite-element family, which
+ * is defined by the quadrature and a database of material property
+ * parameters.
+ *
+ * Computes contributions to terms A and r in
+ *
+ * A(t+dt) du(t) = b(t+dt, u(t), u(t-dt)) - A(t+dt) u(t),
+ *
+ * r(t+dt) = b(t+dt) - A(t+dt) (u(t) + du(t))
+ *
+ * where A(t) is a sparse matrix or vector, u(t+dt) is the field we
+ * want to compute at time t+dt, b is a vector that depends on the
+ * field at time t and t-dt, and u0 is zero at unknown DOF and set to
+ * the known values at the constrained DOF.
+ *
+ * Contributions from elasticity include the intertial and stiffness
+ * terms, so this object computes the following portions of A and r:
+ *
+ * A = 1/(dt*dt) [M]
+ *
+ * r = (1/(dt*dt) [M])(- {u(t+dt)} + 2/(dt*dt){u(t)} - {u(t-dt)}) - [K]{u(t)}
+ *
+ * Translational inertia.
+ * - Residual action over cell
+ * \f[
+ * \int_{V^e} \rho N^p \sum_q N^q u_i^q \, dV
+ * \f]
+ * - Jacobian action over cell
+ * \f[
+ * \int_{V^e} (\rho N^q N^q)_i \, dV
+ * \f]
+ *
+ * See governing equations section of user manual for more
+ * information.
+*/
+class pylith::feassemble::ElasticityExplicitLgDeform :
+ public IntegratorElasticityLgDeform
+{ // ElasticityExplicitLgDeform
+ friend class TestElasticityExplicitLgDeform; // unit testing
+
+// PUBLIC MEMBERS ///////////////////////////////////////////////////////
+public :
+
+ /// Constructor
+ ElasticityExplicitLgDeform(void);
+
+ /// Destructor
+ ~ElasticityExplicitLgDeform(void);
+
+ /// Deallocate PETSc and local data structures.
+ void deallocate(void);
+
+ /** Set time step for advancing from time t to time t+dt.
+ *
+ * @param dt Time step
+ */
+ void timeStep(const double dt);
+
+ /** Set flag for setting constraints for total field solution or
+ * incremental field solution.
+ *
+ * @param flag True if using incremental solution, false otherwise.
+ */
+ void useSolnIncr(const bool flag);
+
+ /** Integrate contributions to residual term (r) for operator.
+ *
+ * @param residual Field containing values for residual
+ * @param t Current time
+ * @param fields Solution fields
+ */
+ void integrateResidual(const topology::Field<topology::Mesh>& residual,
+ const double t,
+ topology::SolutionFields* const fields);
+
+ /** Integrate contributions to Jacobian matrix (A) associated with
+ * operator.
+ *
+ * @param jacobian Sparse matrix for Jacobian of system.
+ * @param t Current time
+ * @param fields Solution fields
+ */
+ void integrateJacobian(topology::Jacobian* jacobian,
+ const double t,
+ topology::SolutionFields* const fields);
+
+ /** Integrate contributions to Jacobian matrix (A) associated with
+ * operator.
+ *
+ * @param jacobian Diagonal matrix (as field) for Jacobian of system.
+ * @param t Current time
+ * @param fields Solution fields
+ */
+ void integrateJacobian(const topology::Field<topology::Mesh>& jacobian,
+ const double t,
+ topology::SolutionFields* const fields);
+
+// NOT IMPLEMENTED //////////////////////////////////////////////////////
+private :
+
+ /// Not implemented.
+ ElasticityExplicitLgDeform(const ElasticityExplicitLgDeform&);
+
+ /// Not implemented
+ const ElasticityExplicitLgDeform& operator=(const ElasticityExplicitLgDeform&);
+
+// PRIVATE MEMBERS //////////////////////////////////////////////////////
+private :
+
+ double _dtm1; ///< Time step for t-dt1 -> t
+
+}; // ElasticityExplicitLgDeform
+
+#endif // pylith_feassemble_elasticityexplicitlgdeform_hh
+
+
+// End of file
Modified: short/3D/PyLith/trunk/libsrc/feassemble/ElasticityImplicit.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/ElasticityImplicit.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/feassemble/ElasticityImplicit.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -258,33 +258,32 @@
_logger->eventBegin(computeEvent);
const spatialdata::geocoords::CoordSys* cs = fields->mesh().coordsys();
assert(0 != cs);
-
+
// Get density at quadrature points for this cell
const double_array& density = _material->calcDensity();
quadPtsGlobal = quadPtsNondim;
_normalizer->dimensionalize(&quadPtsGlobal[0], quadPtsGlobal.size(),
- lengthScale);
+ lengthScale);
// Compute action for element body forces
- for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
- const int err = _gravityField->query(&gravVec[0], gravVec.size(),
- &quadPtsGlobal[0], spaceDim, cs);
- if (err)
- throw std::runtime_error("Unable to get gravity vector for point.");
- _normalizer->nondimensionalize(&gravVec[0], gravVec.size(),
- gravityScale);
- const double wt = quadWts[iQuad] * jacobianDet[iQuad] * density[iQuad];
- for (int iBasis=0, iQ=iQuad*numBasis;
- iBasis < numBasis; ++iBasis) {
- const double valI = wt*basis[iQ+iBasis];
- for (int iDim=0; iDim < spaceDim; ++iDim) {
- _cellVector[iBasis*spaceDim+iDim] += valI*gravVec[iDim];
- } // for
- } // for
+ for (int iQuad = 0; iQuad < numQuadPts; ++iQuad) {
+ const int err = _gravityField->query(&gravVec[0], gravVec.size(),
+ &quadPtsGlobal[0], spaceDim, cs);
+ if (err)
+ throw std::runtime_error("Unable to get gravity vector for point.");
+ _normalizer->nondimensionalize(&gravVec[0], gravVec.size(),
+ gravityScale);
+ const double wt = quadWts[iQuad] * jacobianDet[iQuad] * density[iQuad];
+ for (int iBasis = 0, iQ = iQuad * numBasis; iBasis < numBasis; ++iBasis) {
+ const double valI = wt * basis[iQ + iBasis];
+ for (int iDim = 0; iDim < spaceDim; ++iDim) {
+ _cellVector[iBasis * spaceDim + iDim] += valI * gravVec[iDim];
+ } // for
+ } // for
} // for
- PetscLogFlops(numQuadPts*(2+numBasis*(1+2*spaceDim)));
- _logger->eventEnd(computeEvent);
+ PetscLogFlops(numQuadPts * (2 + numBasis * (1 + 2 * spaceDim)));
+ _logger->eventEnd(computeEvent);
} // if
// residualSection->view("After gravity contribution");
@@ -309,7 +308,6 @@
_logger->eventBegin(updateEvent);
residualVisitor.clear();
sieveMesh->updateClosure(*c_iter, residualVisitor);
- // residualSection->view("After stress contribution");
_logger->eventEnd(updateEvent);
} // for
} // integrateResidual
@@ -357,19 +355,26 @@
// Set variables dependent on dimension of cell
totalStrain_fn_type calcTotalStrainFn;
elasticityJacobian_fn_type elasticityJacobianFn;
+ elasticityJacobian_fn_type elasticityPreconFn;
if (1 == cellDim) {
elasticityJacobianFn =
&pylith::feassemble::ElasticityImplicit::_elasticityJacobian1D;
+ elasticityPreconFn =
+ &pylith::feassemble::ElasticityImplicit::_elasticityPrecon1D;
calcTotalStrainFn =
&pylith::feassemble::IntegratorElasticity::_calcTotalStrain1D;
} else if (2 == cellDim) {
elasticityJacobianFn =
&pylith::feassemble::ElasticityImplicit::_elasticityJacobian2D;
+ elasticityPreconFn =
+ &pylith::feassemble::ElasticityImplicit::_elasticityPrecon2D;
calcTotalStrainFn =
&pylith::feassemble::IntegratorElasticity::_calcTotalStrain2D;
} else if (3 == cellDim) {
elasticityJacobianFn =
&pylith::feassemble::ElasticityImplicit::_elasticityJacobian3D;
+ elasticityPreconFn =
+ &pylith::feassemble::ElasticityImplicit::_elasticityPrecon3D;
calcTotalStrainFn =
&pylith::feassemble::IntegratorElasticity::_calcTotalStrain3D;
} else
@@ -525,6 +530,21 @@
&_cellMatrix[0], ADD_VALUES);
CHECK_PETSC_ERROR_MSG(err, "Update to PETSc Mat failed.");
_logger->eventEnd(updateEvent);
+#if 0
+ _logger->eventBegin(computeEvent);
+ // Get laplacian matrix at quadrature points for this cell
+ CALL_MEMBER_FN(*this, elasticityPreconFn)(elasticConsts);
+ _logger->eventEnd(computeEvent);
+
+ // Assemble cell contribution into PETSc preconditioner matrix.
+ _logger->eventBegin(updateEvent);
+ jacobianVisitor.clear();
+ PetscErrorCode err = updateOperator(preconMat, *sieveMesh->getSieve(),
+ jacobianVisitor, *c_iter,
+ &_cellMatrix[0], ADD_VALUES);
+ CHECK_PETSC_ERROR_MSG(err, "Update to PETSc Mat failed.");
+ _logger->eventEnd(updateEvent);
+#endif
} // for
_needNewJacobian = false;
_material->resetNeedNewJacobian();
Modified: short/3D/PyLith/trunk/libsrc/feassemble/ElasticityImplicit.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/ElasticityImplicit.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/feassemble/ElasticityImplicit.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
/**
- * @file pylith/feassemble/ElasticityImplicit.hh
+ * @file libsrc/feassemble/ElasticityImplicit.hh
*
* @brief Implicit time integration of quasi-static elasticity equation
* using finite-elements.
@@ -22,13 +22,13 @@
*
* Computes contributions to terms A and r in
*
- * A(t) u(t+dt) = b(u(t), u(t-dt)),
+ * A(t+dt) du(t) = b(t+dt, u(t), u(t-dt)) - A(t+dt) u(t)
*
- * r = b - A u0(t+dt)
+ * r = b(t+dt) - A(t+dt) (u(t) + du(t))
*
* where A(t) is a sparse matrix or vector, u(t+dt) is the field we
- * want to compute at time t+dt, b is a vector that depends on the
- * field at time t and t-dt, and u0 is zero at unknown DOF and set to
+ * want to compute at time t+dt, b(t+dt) is a vector that depends on the
+ * field at time t+dt and t, and du is zero at unknown DOF and set to
* the constrained values at known DOF.
*
* Contributions to the RHS (b) include body forces, which are either
Copied: short/3D/PyLith/trunk/libsrc/feassemble/ElasticityImplicitLgDeform.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/libsrc/feassemble/ElasticityImplicitLgDeform.cc)
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/ElasticityImplicitLgDeform.cc (rev 0)
+++ short/3D/PyLith/trunk/libsrc/feassemble/ElasticityImplicitLgDeform.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,540 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#include <portinfo>
+
+#include "ElasticityImplicitLgDeform.hh" // implementation of class methods
+
+#include "Quadrature.hh" // USES Quadrature
+#include "CellGeometry.hh" // USES CellGeometry
+
+#include "pylith/materials/ElasticMaterial.hh" // USES ElasticMaterial
+#include "pylith/topology/Field.hh" // USES Field
+#include "pylith/topology/SolutionFields.hh" // USES SolutionFields
+#include "pylith/topology/Jacobian.hh" // USES Jacobian
+
+#include "pylith/utils/EventLogger.hh" // USES EventLogger
+#include "pylith/utils/array.hh" // USES double_array
+#include "pylith/utils/macrodefs.h" // USES CALL_MEMBER_FN
+#include "pylith/utils/lapack.h" // USES LAPACKdgesvd
+
+#include "petscmat.h" // USES PetscMat
+#include "spatialdata/geocoords/CoordSys.hh" // USES CoordSys
+#include "spatialdata/units/Nondimensional.hh" // USES Nondimendional
+#include "spatialdata/spatialdb/GravityField.hh" // USES GravityField
+
+#include "pylith/utils/petscerror.h" // USES CHECK_PETSC_ERROR
+#include <cassert> // USES assert()
+#include <stdexcept> // USES std::runtime_error
+
+//#define PRECOMPUTE_GEOMETRY
+
+// ----------------------------------------------------------------------
+typedef pylith::topology::Mesh::SieveMesh SieveMesh;
+typedef pylith::topology::Mesh::RealSection RealSection;
+
+// ----------------------------------------------------------------------
+// Constructor
+pylith::feassemble::ElasticityImplicitLgDeform::ElasticityImplicitLgDeform(void) :
+ _dtm1(-1.0)
+{ // constructor
+} // constructor
+
+// ----------------------------------------------------------------------
+// Destructor
+pylith::feassemble::ElasticityImplicitLgDeform::~ElasticityImplicitLgDeform(void)
+{ // destructor
+ deallocate();
+} // destructor
+
+// ----------------------------------------------------------------------
+// Deallocate PETSc and local data structures.
+void
+pylith::feassemble::ElasticityImplicitLgDeform::deallocate(void)
+{ // deallocate
+ IntegratorElasticityLgDeform::deallocate();
+} // deallocate
+
+// ----------------------------------------------------------------------
+// Set time step for advancing from time t to time t+dt.
+void
+pylith::feassemble::ElasticityImplicitLgDeform::timeStep(const double dt)
+{ // timeStep
+ if (_dt != -1.0)
+ _dtm1 = _dt;
+ else
+ _dtm1 = dt;
+ _dt = dt;
+ if (0 != _material)
+ _material->timeStep(_dt);
+} // timeStep
+
+// ----------------------------------------------------------------------
+// Get stable time step for advancing from time t to time t+dt.
+double
+pylith::feassemble::ElasticityImplicitLgDeform::stableTimeStep(const topology::Mesh& mesh) const
+{ // stableTimeStep
+ assert(0 != _material);
+ return _material->stableTimeStepImplicit(mesh);
+} // stableTimeStep
+
+// ----------------------------------------------------------------------
+// Set flag for setting constraints for total field solution or
+// incremental field solution.
+void
+pylith::feassemble::ElasticityImplicitLgDeform::useSolnIncr(const bool flag)
+{ // useSolnIncr
+ assert(0 != _material);
+ _useSolnIncr = flag;
+ _material->useElasticBehavior(!_useSolnIncr);
+} // useSolnIncr
+
+// ----------------------------------------------------------------------
+// Integrate constributions to residual term (r) for operator.
+void
+pylith::feassemble::ElasticityImplicitLgDeform::integrateResidual(
+ const topology::Field<topology::Mesh>& residual,
+ const double t,
+ topology::SolutionFields* const fields)
+{ // integrateResidual
+ /// Member prototype for _elasticityResidualXD()
+ typedef void (pylith::feassemble::ElasticityImplicitLgDeform::*elasticityResidual_fn_type)
+ (const double_array&, const double_array&);
+
+ assert(0 != _quadrature);
+ assert(0 != _material);
+ assert(0 != _logger);
+ assert(0 != fields);
+
+ const int setupEvent = _logger->eventId("ElIR setup");
+ const int geometryEvent = _logger->eventId("ElIR geometry");
+ const int computeEvent = _logger->eventId("ElIR compute");
+ const int restrictEvent = _logger->eventId("ElIR restrict");
+ const int stateVarsEvent = _logger->eventId("ElIR stateVars");
+ const int stressEvent = _logger->eventId("ElIR stress");
+ const int updateEvent = _logger->eventId("ElIR update");
+
+ _logger->eventBegin(setupEvent);
+
+ // Get cell geometry information that doesn't depend on cell
+ const int numQuadPts = _quadrature->numQuadPts();
+ const double_array& quadWts = _quadrature->quadWts();
+ assert(quadWts.size() == numQuadPts);
+ const int numBasis = _quadrature->numBasis();
+ const int spaceDim = _quadrature->spaceDim();
+ const int cellDim = _quadrature->cellDim();
+ const int tensorSize = _material->tensorSize();
+ if (cellDim != spaceDim)
+ throw std::logic_error("Integration for cells with spatial dimensions "
+ "different than the spatial dimension of the "
+ "domain not implemented yet.");
+
+ // Set variables dependent on dimension of cell
+ totalStrain_fn_type calcTotalStrainFn;
+ elasticityResidual_fn_type elasticityResidualFn;
+ if (1 == cellDim) {
+ elasticityResidualFn =
+ &pylith::feassemble::ElasticityImplicitLgDeform::_elasticityResidual1D;
+ calcTotalStrainFn =
+ &pylith::feassemble::IntegratorElasticityLgDeform::_calcTotalStrain1D;
+ } else if (2 == cellDim) {
+ elasticityResidualFn =
+ &pylith::feassemble::ElasticityImplicitLgDeform::_elasticityResidual2D;
+ calcTotalStrainFn =
+ &pylith::feassemble::IntegratorElasticityLgDeform::_calcTotalStrain2D;
+ } else if (3 == cellDim) {
+ elasticityResidualFn =
+ &pylith::feassemble::ElasticityImplicitLgDeform::_elasticityResidual3D;
+ calcTotalStrainFn =
+ &pylith::feassemble::IntegratorElasticityLgDeform::_calcTotalStrain3D;
+ } else
+ assert(0);
+
+ // Allocate vectors for cell values.
+ double_array dispTCell(numBasis*spaceDim);
+ double_array dispTIncrCell(numBasis*spaceDim);
+ double_array dispTpdtCell(numBasis*spaceDim);
+ double_array deformCell(numQuadPts*spaceDim*spaceDim);
+ double_array strainCell(numQuadPts*tensorSize);
+ double_array gravVec(spaceDim);
+ double_array quadPtsGlobal(numQuadPts*spaceDim);
+
+ // Get cell information
+ const ALE::Obj<SieveMesh>& sieveMesh = fields->mesh().sieveMesh();
+ assert(!sieveMesh.isNull());
+ const int materialId = _material->id();
+ const ALE::Obj<SieveMesh::label_sequence>& cells =
+ sieveMesh->getLabelStratum("material-id", materialId);
+ assert(!cells.isNull());
+ const SieveMesh::label_sequence::iterator cellsBegin = cells->begin();
+ const SieveMesh::label_sequence::iterator cellsEnd = cells->end();
+
+ // Get sections
+ const ALE::Obj<RealSection>& dispTSection =
+ fields->get("disp(t)").section();
+ assert(!dispTSection.isNull());
+ topology::Mesh::RestrictVisitor dispTVisitor(*dispTSection,
+ numBasis*spaceDim,
+ &dispTCell[0]);
+ const ALE::Obj<RealSection>& dispTIncrSection =
+ fields->get("dispIncr(t->t+dt)").section();
+ assert(!dispTIncrSection.isNull());
+ topology::Mesh::RestrictVisitor dispTIncrVisitor(*dispTIncrSection,
+ numBasis*spaceDim,
+ &dispTIncrCell[0]);
+
+ const ALE::Obj<RealSection>& residualSection = residual.section();
+ topology::Mesh::UpdateAddVisitor residualVisitor(*residualSection,
+ &_cellVector[0]);
+
+ double_array coordinatesCell(numBasis*spaceDim);
+ const ALE::Obj<RealSection>& coordinates =
+ sieveMesh->getRealSection("coordinates");
+ assert(!coordinates.isNull());
+ topology::Mesh::RestrictVisitor coordsVisitor(*coordinates,
+ coordinatesCell.size(),
+ &coordinatesCell[0]);
+
+ assert(0 != _normalizer);
+ const double lengthScale = _normalizer->lengthScale();
+ const double gravityScale =
+ _normalizer->pressureScale() / (_normalizer->lengthScale() *
+ _normalizer->densityScale());
+
+ _logger->eventEnd(setupEvent);
+
+ // Loop over cells
+ for (SieveMesh::label_sequence::iterator c_iter=cellsBegin;
+ c_iter != cellsEnd;
+ ++c_iter) {
+ // Compute geometry information for current cell
+ _logger->eventBegin(geometryEvent);
+#if defined(PRECOMPUTE_GEOMETRY)
+ _quadrature->retrieveGeometry(*c_iter);
+#else
+ coordsVisitor.clear();
+ sieveMesh->restrictClosure(*c_iter, coordsVisitor);
+ _quadrature->computeGeometry(coordinatesCell, *c_iter);
+#endif
+ _logger->eventEnd(geometryEvent);
+
+ // Get state variables for cell.
+ _logger->eventBegin(stateVarsEvent);
+ _material->retrievePropsAndVars(*c_iter);
+ _logger->eventEnd(stateVarsEvent);
+
+ // Reset element vector to zero
+ _resetCellVector();
+
+ // Restrict input fields to cell
+ _logger->eventBegin(restrictEvent);
+ dispTVisitor.clear();
+ sieveMesh->restrictClosure(*c_iter, dispTVisitor);
+ dispTIncrVisitor.clear();
+ sieveMesh->restrictClosure(*c_iter, dispTIncrVisitor);
+ _logger->eventBegin(restrictEvent);
+
+ // Get cell geometry information that depends on cell
+ const double_array& basis = _quadrature->basis();
+ const double_array& basisDeriv = _quadrature->basisDeriv();
+ const double_array& jacobianDet = _quadrature->jacobianDet();
+ const double_array& quadPtsNondim = _quadrature->quadPts();
+
+ // Compute current estimate of displacement at time t+dt using
+ // solution increment.
+ dispTpdtCell = dispTCell + dispTIncrCell;
+
+ // Compute body force vector if gravity is being used.
+ if (0 != _gravityField) {
+ _logger->eventBegin(computeEvent);
+ const spatialdata::geocoords::CoordSys* cs = fields->mesh().coordsys();
+ assert(0 != cs);
+
+ // Get density at quadrature points for this cell
+ const double_array& density = _material->calcDensity();
+
+ quadPtsGlobal = quadPtsNondim;
+ _normalizer->dimensionalize(&quadPtsGlobal[0], quadPtsGlobal.size(),
+ lengthScale);
+
+ // Compute action for element body forces
+ for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
+ const int err = _gravityField->query(&gravVec[0], gravVec.size(),
+ &quadPtsGlobal[0], spaceDim, cs);
+ if (err)
+ throw std::runtime_error("Unable to get gravity vector for point.");
+ _normalizer->nondimensionalize(&gravVec[0], gravVec.size(),
+ gravityScale);
+ const double wt = quadWts[iQuad] * jacobianDet[iQuad] * density[iQuad];
+ for (int iBasis=0, iQ=iQuad*numBasis;
+ iBasis < numBasis; ++iBasis) {
+ const double valI = wt*basis[iQ+iBasis];
+ for (int iDim=0; iDim < spaceDim; ++iDim) {
+ _cellVector[iBasis*spaceDim+iDim] += valI*gravVec[iDim];
+ } // for
+ } // for
+ } // for
+ PetscLogFlops(numQuadPts*(2+numBasis*(1+2*spaceDim)));
+ _logger->eventEnd(computeEvent);
+ } // if
+
+ // Compute B(transpose) * sigma, first computing deformation
+ // tensor and strains
+ _logger->eventBegin(stressEvent);
+ _calcDeformation(&deformCell, basisDeriv, coordinatesCell, dispTpdtCell,
+ numBasis, numQuadPts, spaceDim);
+ calcTotalStrainFn(&strainCell, deformCell, numQuadPts);
+ const double_array& stressCell = _material->calcStress(strainCell, true);
+ _logger->eventEnd(stressEvent);
+
+ _logger->eventBegin(computeEvent);
+ CALL_MEMBER_FN(*this, elasticityResidualFn)(stressCell, dispTpdtCell);
+ _logger->eventEnd(computeEvent);
+
+#if 0 // DEBUGGING
+ std::cout << "Updating residual for cell " << *c_iter << std::endl;
+ for(int i = 0; i < _quadrature->spaceDim() * _quadrature->numBasis(); ++i) {
+ std::cout << " v["<<i<<"]: " << _cellVector[i] << std::endl;
+ }
+#endif
+ // Assemble cell contribution into field
+ _logger->eventBegin(updateEvent);
+ residualVisitor.clear();
+ sieveMesh->updateClosure(*c_iter, residualVisitor);
+ _logger->eventEnd(updateEvent);
+ } // for
+} // integrateResidual
+
+// ----------------------------------------------------------------------
+// Compute stiffness matrix.
+void
+pylith::feassemble::ElasticityImplicitLgDeform::integrateJacobian(
+ topology::Jacobian* jacobian,
+ const double t,
+ topology::SolutionFields* fields)
+{ // integrateJacobian
+ /// Member prototype for _elasticityJacobianXD()
+ typedef void (pylith::feassemble::ElasticityImplicitLgDeform::*elasticityJacobian_fn_type)
+ (const double_array&, const double_array&, const double_array&);
+
+ assert(0 != _quadrature);
+ assert(0 != _material);
+ assert(0 != _logger);
+ assert(0 != jacobian);
+ assert(0 != fields);
+
+ const int setupEvent = _logger->eventId("ElIJ setup");
+ const int geometryEvent = _logger->eventId("ElIJ geometry");
+ const int computeEvent = _logger->eventId("ElIJ compute");
+ const int restrictEvent = _logger->eventId("ElIJ restrict");
+ const int stateVarsEvent = _logger->eventId("ElIJ stateVars");
+ const int updateEvent = _logger->eventId("ElIJ update");
+
+ _logger->eventBegin(setupEvent);
+
+ // Get cell geometry information that doesn't depend on cell
+ const int numQuadPts = _quadrature->numQuadPts();
+ const double_array& quadWts = _quadrature->quadWts();
+ assert(quadWts.size() == numQuadPts);
+ const int numBasis = _quadrature->numBasis();
+ const int spaceDim = _quadrature->spaceDim();
+ const int cellDim = _quadrature->cellDim();
+ const int tensorSize = _material->tensorSize();
+ if (cellDim != spaceDim)
+ throw std::logic_error("Don't know how to integrate elasticity " \
+ "contribution to Jacobian matrix for cells with " \
+ "different dimensions than the spatial dimension.");
+
+ // Set variables dependent on dimension of cell
+ totalStrain_fn_type calcTotalStrainFn;
+ elasticityJacobian_fn_type elasticityJacobianFn;
+ if (1 == cellDim) {
+ elasticityJacobianFn =
+ &pylith::feassemble::ElasticityImplicitLgDeform::_elasticityJacobian1D;
+ calcTotalStrainFn =
+ &pylith::feassemble::IntegratorElasticityLgDeform::_calcTotalStrain1D;
+ } else if (2 == cellDim) {
+ elasticityJacobianFn =
+ &pylith::feassemble::ElasticityImplicitLgDeform::_elasticityJacobian2D;
+ calcTotalStrainFn =
+ &pylith::feassemble::IntegratorElasticityLgDeform::_calcTotalStrain2D;
+ } else if (3 == cellDim) {
+ elasticityJacobianFn =
+ &pylith::feassemble::ElasticityImplicitLgDeform::_elasticityJacobian3D;
+ calcTotalStrainFn =
+ &pylith::feassemble::IntegratorElasticityLgDeform::_calcTotalStrain3D;
+ } else
+ assert(0);
+
+ // Allocate vector for total strain
+ double_array dispTCell(numBasis*spaceDim);
+ double_array dispTIncrCell(numBasis*spaceDim);
+ double_array dispTpdtCell(numBasis*spaceDim);
+ double_array deformCell(numQuadPts*spaceDim*spaceDim);
+ double_array strainCell(numQuadPts*tensorSize);
+ double_array stressCell(numQuadPts*tensorSize);
+
+ // Get cell information
+ const ALE::Obj<SieveMesh>& sieveMesh = fields->mesh().sieveMesh();
+ assert(!sieveMesh.isNull());
+ const int materialId = _material->id();
+ const ALE::Obj<SieveMesh::label_sequence>& cells =
+ sieveMesh->getLabelStratum("material-id", materialId);
+ assert(!cells.isNull());
+ const SieveMesh::label_sequence::iterator cellsBegin = cells->begin();
+ const SieveMesh::label_sequence::iterator cellsEnd = cells->end();
+
+ // Get sections
+ const ALE::Obj<RealSection>& dispTSection =
+ fields->get("disp(t)").section();
+ assert(!dispTSection.isNull());
+ topology::Mesh::RestrictVisitor dispTVisitor(*dispTSection,
+ numBasis*spaceDim,
+ &dispTCell[0]);
+ const ALE::Obj<RealSection>& dispTIncrSection =
+ fields->get("dispIncr(t->t+dt)").section();
+ assert(!dispTIncrSection.isNull());
+ topology::Mesh::RestrictVisitor dispTIncrVisitor(*dispTIncrSection,
+ numBasis*spaceDim,
+ &dispTIncrCell[0]);
+
+ // Get sparse matrix
+ const PetscMat jacobianMat = jacobian->matrix();
+ assert(0 != jacobianMat);
+
+ // Get parameters used in integration.
+ const double dt = _dt;
+ assert(dt > 0);
+
+ const ALE::Obj<SieveMesh::order_type>& globalOrder =
+ sieveMesh->getFactory()->getGlobalOrder(sieveMesh, "default",
+ dispTSection);
+ assert(!globalOrder.isNull());
+ // We would need to request unique points here if we had an interpolated mesh
+ topology::Mesh::IndicesVisitor jacobianVisitor(*dispTSection,
+ *globalOrder,
+ (int) pow(sieveMesh->getSieve()->getMaxConeSize(),
+ sieveMesh->depth())*spaceDim);
+
+ double_array coordinatesCell(numBasis*spaceDim);
+ const ALE::Obj<RealSection>& coordinates =
+ sieveMesh->getRealSection("coordinates");
+ assert(!coordinates.isNull());
+ topology::Mesh::RestrictVisitor coordsVisitor(*coordinates,
+ coordinatesCell.size(),
+ &coordinatesCell[0]);
+
+ _logger->eventEnd(setupEvent);
+
+ // Loop over cells
+ for (SieveMesh::label_sequence::iterator c_iter=cellsBegin;
+ c_iter != cellsEnd;
+ ++c_iter) {
+ // Compute geometry information for current cell
+ _logger->eventBegin(geometryEvent);
+#if defined(PRECOMPUTE_GEOMETRY)
+ _quadrature->retrieveGeometry(*c_iter);
+#else
+ coordsVisitor.clear();
+ sieveMesh->restrictClosure(*c_iter, coordsVisitor);
+ _quadrature->computeGeometry(coordinatesCell, *c_iter);
+#endif
+ _logger->eventEnd(geometryEvent);
+
+ // Get state variables for cell.
+ _logger->eventBegin(stateVarsEvent);
+ _material->retrievePropsAndVars(*c_iter);
+ _logger->eventEnd(stateVarsEvent);
+
+ // Reset element matrix to zero
+ _resetCellMatrix();
+
+ // Restrict input fields to cell
+ _logger->eventBegin(restrictEvent);
+ dispTVisitor.clear();
+ sieveMesh->restrictClosure(*c_iter, dispTVisitor);
+ dispTIncrVisitor.clear();
+ sieveMesh->restrictClosure(*c_iter, dispTIncrVisitor);
+ _logger->eventBegin(restrictEvent);
+
+ // Get cell geometry information that depends on cell
+ const double_array& basis = _quadrature->basis();
+ const double_array& basisDeriv = _quadrature->basisDeriv();
+ const double_array& jacobianDet = _quadrature->jacobianDet();
+
+ // Compute current estimate of displacement at time t+dt using
+ // solution increment.
+ dispTpdtCell = dispTCell + dispTIncrCell;
+
+ _logger->eventBegin(computeEvent);
+ // Compute deformation tensor, strains, and stresses
+ _calcDeformation(&deformCell, basisDeriv, coordinatesCell, dispTpdtCell,
+ numBasis, numQuadPts, spaceDim);
+ calcTotalStrainFn(&strainCell, deformCell, numQuadPts);
+
+ // Get "elasticity" matrix at quadrature points for this cell
+ const double_array& elasticConsts =
+ _material->calcDerivElastic(strainCell);
+
+ // Get Second Priola-Kirchoff stress tensor
+ const double_array& stressCell = _material->calcStress(strainCell, true);
+
+ CALL_MEMBER_FN(*this, elasticityJacobianFn)(elasticConsts, stressCell,
+ dispTpdtCell);
+ _logger->eventEnd(computeEvent);
+
+ if (_quadrature->checkConditioning()) {
+ int n = numBasis*spaceDim;
+ int lwork = 5*n;
+ int idummy = 0;
+ int lierr = 0;
+ double *elemMat = new double[n*n];
+ double *svalues = new double[n];
+ double *work = new double[lwork];
+ double minSV = 0;
+ double maxSV = 0;
+ double sdummy = 0;
+
+ const int n2 = n*n;
+ for (int i = 0; i < n2; ++i)
+ elemMat[i] = _cellMatrix[i];
+ lapack_dgesvd("N", "N", &n, &n, elemMat, &n, svalues,
+ &sdummy, &idummy, &sdummy, &idummy, work,
+ &lwork, &lierr);
+ if (lierr)
+ throw std::runtime_error("Lapack SVD failed");
+ minSV = svalues[n-7];
+ maxSV = svalues[0];
+ std::cout << "Element " << *c_iter << std::endl;
+ for(int i = 0; i < n; ++i)
+ std::cout << " sV["<<i<<"] = " << svalues[i] << std::endl;
+ std::cout << " kappa(elemMat) = " << maxSV/minSV << std::endl;
+ delete [] elemMat;
+ delete [] svalues;
+ delete [] work;
+ } // if
+
+ // Assemble cell contribution into PETSc matrix.
+ _logger->eventBegin(updateEvent);
+ jacobianVisitor.clear();
+ PetscErrorCode err = updateOperator(jacobianMat, *sieveMesh->getSieve(),
+ jacobianVisitor, *c_iter,
+ &_cellMatrix[0], ADD_VALUES);
+ CHECK_PETSC_ERROR_MSG(err, "Update to PETSc Mat failed.");
+ _logger->eventEnd(updateEvent);
+ } // for
+ _needNewJacobian = false;
+ _material->resetNeedNewJacobian();
+} // integrateJacobian
+
+
+// End of file
Copied: short/3D/PyLith/trunk/libsrc/feassemble/ElasticityImplicitLgDeform.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/libsrc/feassemble/ElasticityImplicitLgDeform.hh)
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/ElasticityImplicitLgDeform.hh (rev 0)
+++ short/3D/PyLith/trunk/libsrc/feassemble/ElasticityImplicitLgDeform.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,141 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+/**
+ * @file libsrc/feassemble/ElasticityImplicitLgDeform.hh
+ *
+ * @brief Implicit time integration of quasi-static elasticity equation
+ * with large rigid body motion and small strains using finite-elements.
+ *
+ * Note: This object operates on a single finite-element family, which
+ * is defined by the quadrature and a database of material property
+ * parameters.
+ *
+ * Computes contributions to terms A and r in
+ *
+ * A(t+dt) du(t) = b(t+dt, u(t), u(t-dt)) - A(t+dt) u(t)
+ *
+ * r = b(t+dt) - A(t+dt) (u(t) + du(t))
+ *
+ * where A(t) is a sparse matrix or vector, u(t+dt) is the field we
+ * want to compute at time t+dt, b(t+dt) is a vector that depends on the
+ * field at time t+dt and t, and du is zero at unknown DOF and set to
+ * the constrained values at known DOF.
+ *
+ * Contributions to the RHS (b) include body forces, which are either
+ * independent of u (small strain case) or are computed based on the
+ * displacements at time t. The RHS also includes the internal force
+ * vector, which is either constant for a time step (small strain,
+ * elastic rheology) or changes with each iteration (large strain or
+ * non-elastic rheology). The internal force vector is subtracted from the
+ * existing force vector to get the residual. This object also computes
+ * the entire stiffness matrix (A).
+ *
+ * See governing equations section of user manual for more
+ * information.
+ */
+
+#if !defined(pylith_feassemble_elasticityimplicitlgdeform_hh)
+#define pylith_feassemble_elasticityimplicitlgdeform_hh
+
+// Include directives ---------------------------------------------------
+#include "IntegratorElasticityLgDeform.hh" // ISA IntegratorElasticityLgDeform
+
+// ElasticityImplicitLgDeform -------------------------------------------
+class pylith::feassemble::ElasticityImplicitLgDeform :
+ public IntegratorElasticityLgDeform
+{ // ElasticityImplicitLgDeform
+ friend class TestElasticityImplicitLgDeform; // unit testing
+
+// PUBLIC MEMBERS ///////////////////////////////////////////////////////
+public :
+
+ /// Constructor
+ ElasticityImplicitLgDeform(void);
+
+ /// Destructor
+ ~ElasticityImplicitLgDeform(void);
+
+ /// Deallocate PETSc and local data structures.
+ void deallocate(void);
+
+ /** Set time step for advancing from time t to time t+dt.
+ *
+ * @param dt Time step
+ */
+ void timeStep(const double dt);
+
+ /** Get stable time step for advancing from time t to time t+dt.
+ *
+ * Default is current time step.
+ *
+ * @param mesh Finite-element mesh.
+ * @returns Time step
+ */
+ double stableTimeStep(const topology::Mesh& mesh) const;
+
+ /** Set flag for setting constraints for total field solution or
+ * incremental field solution.
+ *
+ * @param flag True if using incremental solution, false otherwise.
+ */
+ void useSolnIncr(const bool flag);
+
+ /** Integrate residual part of RHS for 3-D finite elements.
+ * Includes gravity and element internal force contribution.
+ *
+ * We assume that the effects of boundary conditions are already
+ * included in the residual (tractions, concentrated nodal forces,
+ * and contributions to internal force vector due to
+ * displacement/velocity BC). This routine computes the additional
+ * external loads due to body forces plus the
+ * element internal forces for the current stress state.
+ *
+ * @param residual Field containing values for residual
+ * @param t Current time
+ * @param fields Solution fields
+ */
+ void integrateResidual(const topology::Field<topology::Mesh>& residual,
+ const double t,
+ topology::SolutionFields* const fields);
+
+ /** Integrate contributions to Jacobian matrix (A) associated with
+ * operator.
+ *
+ * @param jacobian Sparse matrix for Jacobian of system.
+ * @param t Current time
+ * @param fields Solution fields
+ */
+ void integrateJacobian(topology::Jacobian* jacobian,
+ const double t,
+ topology::SolutionFields* const fields);
+
+// NOT IMPLEMENTED //////////////////////////////////////////////////////
+private :
+
+ /// Not implemented.
+ ElasticityImplicitLgDeform(const ElasticityImplicitLgDeform&);
+
+ /// Not implemented
+ const ElasticityImplicitLgDeform& operator=(const ElasticityImplicitLgDeform&);
+
+// PRIVATE MEMBERS //////////////////////////////////////////////////////
+private :
+
+ double _dtm1; ///< Time step for t-dt1 -> t
+
+}; // ElasticityImplicitLgDeform
+
+#endif // pylith_feassemble_elasticityimplicitlgdeform_hh
+
+
+// End of file
Modified: short/3D/PyLith/trunk/libsrc/feassemble/GeometryHex3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/GeometryHex3D.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/feassemble/GeometryHex3D.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,22 +11,10 @@
//
/**
- * @file pylith/feassemble/GeometryHex3D.hh
+ * @file libsrc/feassemble/GeometryHex3D.hh
*
* @brief C++ implementation of cell geometry calculations for 3-D
* hexahedral cell.
- *
- * Reference cell:
- *
- * Vertex x y z
- * 0 -1.0 -1.0 -1.0
- * 1 +1.0 -1.0 -1.0
- * 2 +1.0 +1.0 -1.0
- * 3 -1.0 +1.0 -1.0
- * 4 -1.0 -1.0 +1.0
- * 5 +1.0 -1.0 +1.0
- * 6 +1.0 +1.0 +1.0
- * 7 -1.0 +1.0 +1.0
*/
#if !defined(pylith_feassemble_geometryhex3d_hh)
@@ -36,6 +24,23 @@
#include "CellGeometry.hh" // ISA CellGeometry
// GeometryHex3D --------------------------------------------------------
+/**
+ * @brief C++ implementation of cell geometry calculations for 3-D
+ * hexahedral cell.
+ *
+ * Reference cell:
+ at verbatim
+Vertex x y z
+ 0 -1.0 -1.0 -1.0
+ 1 +1.0 -1.0 -1.0
+ 2 +1.0 +1.0 -1.0
+ 3 -1.0 +1.0 -1.0
+ 4 -1.0 -1.0 +1.0
+ 5 +1.0 -1.0 +1.0
+ 6 +1.0 +1.0 +1.0
+ 7 -1.0 +1.0 +1.0
+ at endverbatim
+ */
class pylith::feassemble::GeometryHex3D : public CellGeometry
{ // GeometryHex3D
Modified: short/3D/PyLith/trunk/libsrc/feassemble/GeometryLine1D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/GeometryLine1D.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/feassemble/GeometryLine1D.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
/**
- * @file pylith/feassemble/GeometryLine1D.hh
+ * @file libsrc/feassemble/GeometryLine1D.hh
*
* @brief C++ implementation of cell geometry calculations for 1-D
* line cell.
@@ -24,6 +24,7 @@
#include "CellGeometry.hh" // ISA CellGeometry
// GeometryLine1D -------------------------------------------------------
+/// Cell geometry calculations for 1-D line cell.
class pylith::feassemble::GeometryLine1D : public CellGeometry
{ // GeometryLine1D
Modified: short/3D/PyLith/trunk/libsrc/feassemble/GeometryLine2D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/GeometryLine2D.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/feassemble/GeometryLine2D.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
/**
- * @file pylith/feassemble/GeometryLine2D.hh
+ * @file libsrc/feassemble/GeometryLine2D.hh
*
* @brief C++ implementation of cell geometry calculations for 1-D
* line cell in 2-D space.
@@ -24,6 +24,7 @@
#include "CellGeometry.hh" // ISA CellGeometry
// GeometryLine2D -------------------------------------------------------
+/// Cell geometry calculations for 1-D line cell in 2-D space.
class pylith::feassemble::GeometryLine2D : public CellGeometry
{ // GeometryLine2D
Modified: short/3D/PyLith/trunk/libsrc/feassemble/GeometryLine3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/GeometryLine3D.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/feassemble/GeometryLine3D.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
/**
- * @file pylith/feassemble/GeometryLine3D.hh
+ * @file libsrc/feassemble/GeometryLine3D.hh
*
* @brief C++ implementation of cell geometry calculations for 1-D
* line cell.
@@ -24,6 +24,7 @@
#include "CellGeometry.hh" // ISA CellGeometry
// GeometryLine3D -------------------------------------------------------
+/// Cell geometry calculations for 1-D line cell in 3-D space.
class pylith::feassemble::GeometryLine3D : public CellGeometry
{ // GeometryLine3D
Modified: short/3D/PyLith/trunk/libsrc/feassemble/GeometryPoint1D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/GeometryPoint1D.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/feassemble/GeometryPoint1D.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
/**
- * @file pylith/feassemble/GeometryPoint1D.hh
+ * @file libsrc/feassemble/GeometryPoint1D.hh
*
* @brief C++ implementation of cell geometry calculations for 0-D
* point cell.
@@ -24,6 +24,7 @@
#include "CellGeometry.hh" // ISA CellGeometry
// GeometryPoint1D ------------------------------------------------------
+/// Cell geometry calculations for 0-D point cell.
class pylith::feassemble::GeometryPoint1D : public CellGeometry
{ // GeometryPoint1D
Modified: short/3D/PyLith/trunk/libsrc/feassemble/GeometryPoint2D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/GeometryPoint2D.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/feassemble/GeometryPoint2D.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,10 +11,10 @@
//
/**
- * @file pylith/feassemble/GeometryPoint2D.hh
+ * @file libsrc/feassemble/GeometryPoint2D.hh
*
* @brief C++ implementation of cell geometry calculations for 0-D
- * point cell.
+ * point cell in 2-D space.
*/
#if !defined(pylith_feassemble_geometrypoint2d_hh)
@@ -24,6 +24,7 @@
#include "CellGeometry.hh" // ISA CellGeometry
// GeometryPoint2D ------------------------------------------------------
+/// Cell geometry calculations for 0-D line cell in 2-D space.
class pylith::feassemble::GeometryPoint2D : public CellGeometry
{ // GeometryPoint2D
Modified: short/3D/PyLith/trunk/libsrc/feassemble/GeometryPoint3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/GeometryPoint3D.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/feassemble/GeometryPoint3D.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,10 +11,10 @@
//
/**
- * @file pylith/feassemble/GeometryPoint3D.hh
+ * @file libsrc/feassemble/GeometryPoint3D.hh
*
* @brief C++ implementation of cell geometry calculations for 0-D
- * point cell.
+ * point cell in 3-D space.
*/
#if !defined(pylith_feassemble_geometrypoint3d_hh)
@@ -24,6 +24,7 @@
#include "CellGeometry.hh" // ISA CellGeometry
// GeometryPoint3D ------------------------------------------------------
+/// Cell geometry calculations for 0-D line cell in 3-D space.
class pylith::feassemble::GeometryPoint3D : public CellGeometry
{ // GeometryPoint3D
Modified: short/3D/PyLith/trunk/libsrc/feassemble/GeometryQuad2D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/GeometryQuad2D.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/feassemble/GeometryQuad2D.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,23 +11,10 @@
//
/**
- * @file pylith/feassemble/GeometryQuad2D.hh
+ * @file libsrc/feassemble/GeometryQuad2D.hh
*
* @brief C++ implementation of cell geometry calculations for 2-D
* quadrilateral cell.
- *
- * Reference cell:
- *
- * 3 -- 2
- * | |
- * | |
- * 0 -- 1
- *
- * Vertex x y
- * 0 -1.0 -1.0
- * 1 +1.0 -1.0
- * 2 +1.0 +1.0
- * 3 -1.0 +1.0
*/
#if !defined(pylith_feassemble_geometryquad2d_hh)
@@ -37,9 +24,28 @@
#include "CellGeometry.hh" // ISA CellGeometry
// GeometryQuad2D -------------------------------------------------------
-class pylith::feassemble::GeometryQuad2D : public CellGeometry
-{ // GeometryQuad2D
+/** @brief Cell geometry calculations for 2-D quadrilateral cell in
+ * 2-D space.
+ *
+ * @brief C++ implementation of cell geometry calculations for 2-D
+ * quadrilateral cell.
+ *
+ * Reference cell:
+ at verbatim
+3 -- 2
+| |
+| |
+0 -- 1
+Vertex x y
+ 0 -1.0 -1.0
+ 1 +1.0 -1.0
+ 2 +1.0 +1.0
+ 3 -1.0 +1.0
+ at endverbatim
+ */
+class pylith::feassemble::GeometryQuad2D : public CellGeometry {
+
// PUBLIC METHODS ///////////////////////////////////////////////////////
public :
Modified: short/3D/PyLith/trunk/libsrc/feassemble/GeometryQuad3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/GeometryQuad3D.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/feassemble/GeometryQuad3D.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,23 +11,10 @@
//
/**
- * @file pylith/feassemble/GeometryQuad3D.hh
+ * @file libsrc/feassemble/GeometryQuad3D.hh
*
* @brief C++ implementation of cell geometry calculations for 2-D
* quadrilateral cell in 3-D.
- *
- * Reference cell:
- *
- * 3 -- 2
- * | |
- * | |
- * 0 -- 1
- *
- * Vertex x y
- * 0 -1.0 -1.0
- * 1 +1.0 -1.0
- * 2 +1.0 +1.0
- * 3 -1.0 +1.0
*/
#if !defined(pylith_feassemble_geometryquad3d_hh)
@@ -37,6 +24,23 @@
#include "CellGeometry.hh" // ISA CellGeometry
// GeometryQuad3D -------------------------------------------------------
+/** @brief C++ implementation of cell geometry calculations for 2-D
+ * quadrilateral cell in 3-D.
+ *
+ * Reference cell:
+ at verbatim
+3 -- 2
+| |
+| |
+0 -- 1
+
+Vertex x y
+ 0 -1.0 -1.0
+ 1 +1.0 -1.0
+ 2 +1.0 +1.0
+ 3 -1.0 +1.0
+ at endverbatim
+ */
class pylith::feassemble::GeometryQuad3D : public CellGeometry
{ // GeometryQuad3D
Modified: short/3D/PyLith/trunk/libsrc/feassemble/GeometryTet3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/GeometryTet3D.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/feassemble/GeometryTet3D.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,18 +11,10 @@
//
/**
- * @file pylith/feassemble/GeometryTet3D.hh
+ * @file libsrc/feassemble/GeometryTet3D.hh
*
* @brief C++ implementation of cell geometry calculations for 3-D
* tetrahedral cell.
- *
- * Reference cell:
- *
- * Vertex x y z
- * 0 -1.0 -1.0 -1.0
- * 1 +1.0 -1.0 -1.0
- * 2 -1.0 +1.0 -1.0
- * 3 -1.0 -1.0 +1.0
*/
#if !defined(pylith_feassemble_geometrytet3d_hh)
@@ -32,6 +24,18 @@
#include "CellGeometry.hh" // ISA CellGeometry
// GeometryTet3D --------------------------------------------------------
+/** @brief C++ implementation of cell geometry calculations for 3-D
+ * tetrahedral cell.
+ *
+ * Reference cell:
+ at verbatim
+Vertex x y z
+ 0 -1.0 -1.0 -1.0
+ 1 +1.0 -1.0 -1.0
+ 2 -1.0 +1.0 -1.0
+ 3 -1.0 -1.0 +1.0
+ at endverbatim
+ */
class pylith::feassemble::GeometryTet3D : public CellGeometry
{ // GeometryTet3D
Modified: short/3D/PyLith/trunk/libsrc/feassemble/GeometryTri2D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/GeometryTri2D.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/feassemble/GeometryTri2D.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
/**
- * @file pylith/feassemble/GeometryTri2D.hh
+ * @file libsrc/feassemble/GeometryTri2D.hh
*
* @brief C++ implementation of cell geometry calculations for 2-D
* triangular cell.
@@ -31,6 +31,17 @@
#include "CellGeometry.hh" // ISA CellGeometry
// GeometryTri2D --------------------------------------------------------
+/** @brief C++ implementation of cell geometry calculations for 2-D
+ * triangular cell.
+ *
+ * Reference cell:
+ at verbatim
+Vertex x y
+ 0 -1.0 -1.0
+ 1 +1.0 -1.0
+ 2 -1.0 +1.0
+ at endverbatim
+ */
class pylith::feassemble::GeometryTri2D : public CellGeometry
{ // GeometryTri2D
Modified: short/3D/PyLith/trunk/libsrc/feassemble/GeometryTri3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/GeometryTri3D.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/feassemble/GeometryTri3D.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
/**
- * @file pylith/feassemble/GeometryTri3D.hh
+ * @file libsrc/feassemble/GeometryTri3D.hh
*
* @brief C++ implementation of cell geometry calculations for 2-D
* triangular cell.
@@ -31,6 +31,17 @@
#include "CellGeometry.hh" // ISA CellGeometry
// GeometryTri3D --------------------------------------------------------
+/** @brief C++ implementation of cell geometry calculations for 2-D
+ * triangular cell.
+ *
+ * Reference cell:
+ at verbatim
+Vertex x y
+ 0 -1.0 -1.0
+ 1 +1.0 -1.0
+ 2 -1.0 +1.0
+ at endverbatim
+ */
class pylith::feassemble::GeometryTri3D : public CellGeometry
{ // GeometryTri3D
Modified: short/3D/PyLith/trunk/libsrc/feassemble/Integrator.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Integrator.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Integrator.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -153,5 +153,34 @@
_cellMatrix = 0.0;
} // _resetCellMatrix
+// ----------------------------------------------------------------------
+// Lump cell matrix, putting the result in the cell vector using
+// equivalent forces for rigid body motion.
+template<typename quadrature_type>
+void
+pylith::feassemble::Integrator<quadrature_type>::_lumpCellMatrix(void)
+{ // _lumpCellMatrix
+ assert(0 != _quadrature);
+ const int numBasis = _quadrature->numBasis();
+ const int spaceDim = _quadrature->spaceDim();
+ _cellVector = 0.0;
+ double value = 0.0;
+ for (int iBasis=0; iBasis < numBasis; ++iBasis)
+ for (int iDim=0; iDim < spaceDim; ++iDim) {
+ value = 0.0;
+ const int indexR = (iBasis*spaceDim+iDim) * numBasis * spaceDim;
+ for (int jBasis=0; jBasis < numBasis; ++jBasis)
+ value += _cellMatrix[indexR+jBasis*spaceDim+iDim];
+ if (value < 0.0) {
+ throw std::runtime_error("Negative diagonal entry computed when "
+ "lumping Jacobian matrix.");
+ } // for
+ _cellVector[iBasis*spaceDim+iDim] = value;
+ } // for
+
+ PetscLogFlops(numBasis*numBasis*spaceDim);
+} // _lumpCellMatrix
+
+
// End of file
Modified: short/3D/PyLith/trunk/libsrc/feassemble/Integrator.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Integrator.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Integrator.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,14 +11,10 @@
//
/**
- * @file pylith/feassemble/Integrator.hh
+ * @file libsrc/feassemble/Integrator.hh
*
* @brief Abstract base class for integration of finite-element
* actions.
- *
- * Note: Each object operates on a single finite-element family, which
- * is defined by the quadrature and a database of material property
- * parameters.
*/
#if !defined(pylith_feassemble_integrator_hh)
@@ -36,6 +32,13 @@
#include "pylith/utils/array.hh" // HASA double_array
// Integrator -----------------------------------------------------------
+/** @brief Abstract base class for integration of finite-element
+ * actions.
+ *
+ * Note: Each object operates on a single finite-element family, which
+ * is defined by the quadrature and a database of material property
+ * parameters.
+ */
template<typename quadrature_type>
class pylith::feassemble::Integrator
{ // Integrator
@@ -138,6 +141,18 @@
const double t,
topology::SolutionFields* const fields);
+ /** Integrate contributions to residual term (r) for operator that
+ * do not require assembly over cells, vertices, or processors.
+ *
+ * @param residual Field containing values for residual
+ * @param t Current time
+ * @param fields Solution fields
+ */
+ virtual
+ void integrateResidualAssembled(const topology::Field<topology::Mesh>& residual,
+ const double t,
+ topology::SolutionFields* const fields);
+
/** Integrate contributions to Jacobian matrix (A) associated with
* operator.
*
@@ -150,28 +165,41 @@
const double t,
topology::SolutionFields* const fields);
- /** Integrate contributions to residual term (r) for operator that
- * do not require assembly over cells, vertices, or processors.
+ /** Integrate contributions to Jacobian matrix (A) associated with
+ * operator that do not require assembly over cells, vertices, or
+ * processors
*
- * @param residual Field containing values for residual
+ * @param jacobian Sparse matrix for Jacobian of system.
* @param t Current time
* @param fields Solution fields
*/
- virtual
- void integrateResidualAssembled(const topology::Field<topology::Mesh>& residual,
+ virtual
+ void integrateJacobianAssembled(topology::Jacobian* jacobian,
const double t,
topology::SolutionFields* const fields);
/** Integrate contributions to Jacobian matrix (A) associated with
+ * operator.
+ *
+ * @param jacobian Diagonal matrix (as field) for Jacobian of system.
+ * @param t Current time
+ * @param fields Solution fields
+ */
+ virtual
+ void integrateJacobian(const topology::Field<topology::Mesh>& jacobian,
+ const double t,
+ topology::SolutionFields* const fields);
+
+ /** Integrate contributions to Jacobian matrix (A) associated with
* operator that do not require assembly over cells, vertices, or
* processors
*
- * @param jacobian Sparse matrix for Jacobian of system.
+ * @param jacobian Diagonal matrix (as field) for Jacobian of system.
* @param t Current time
* @param fields Solution fields
*/
virtual
- void integrateJacobianAssembled(topology::Jacobian* jacobian,
+ void integrateJacobianAssembled(const topology::Field<topology::Mesh>& jacobian,
const double t,
topology::SolutionFields* const fields);
@@ -185,6 +213,27 @@
void updateStateVars(const double t,
topology::SolutionFields* const fields);
+ /** Constrain solution space.
+ *
+ * @param fields Solution fields.
+ * @param t Current time.
+ * @param jacobian Sparse matrix for system Jacobian.
+ */
+ virtual
+ void constrainSolnSpace(topology::SolutionFields* const fields,
+ const double t,
+ const topology::Jacobian& jacobian);
+
+ /** Adjust solution from solver with lumped Jacobian to match Lagrange
+ * multiplier constraints.
+ *
+ * @param fields Solution fields.
+ * @param jacobian Jacobian of the system.
+ */
+ virtual
+ void adjustSolnLumped(topology::SolutionFields* fields,
+ const topology::Field<topology::Mesh>& jacobian);
+
/** Verify configuration is acceptable.
*
* @param mesh Finite-element mesh
@@ -207,6 +256,10 @@
/// Zero out matrix containing result of integration for cell.
void _resetCellMatrix(void);
+ /// Lump cell matrix, putting the result in the cell vector using
+ /// equivalent forces for rigid body motion.
+ void _lumpCellMatrix(void);
+
// PROTECTED MEMBERS ////////////////////////////////////////////////////
protected :
Modified: short/3D/PyLith/trunk/libsrc/feassemble/Integrator.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Integrator.icc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Integrator.icc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -62,6 +62,18 @@
topology::SolutionFields* const fields) {
} // integrateResidual
+// Integrate contributions to residual term (r) for operator that
+// do not require assembly over cells, vertices, or processors.
+template<typename quadrature_type>
+inline
+void
+pylith::feassemble::Integrator<quadrature_type>::integrateResidualAssembled(
+ const topology::Field<topology::Mesh>& residual,
+ const double t,
+ topology::SolutionFields* const fields) {
+ _needNewJacobian = false;
+} // integrateResidualAssembled
+
// Integrate contributions to Jacobian matrix (A) associated with
// operator.
template<typename quadrature_type>
@@ -74,17 +86,29 @@
_needNewJacobian = false;
} // integrateJacobian
-// Integrate contributions to residual term (r) for operator that
-// do not require assembly over cells, vertices, or processors.
+// Integrate contributions to Jacobian matrix (A) associated with
+// operator that do not require assembly over cells, vertices, or
+// processors
template<typename quadrature_type>
inline
void
-pylith::feassemble::Integrator<quadrature_type>::integrateResidualAssembled(
- const topology::Field<topology::Mesh>& residual,
- const double t,
- topology::SolutionFields* const fields) {
+pylith::feassemble::Integrator<quadrature_type>::integrateJacobianAssembled(
+ topology::Jacobian* jacobian,
+ const double t,
+ topology::SolutionFields* const fields) {
+} // integrateJacobianAssembled
+
+// Integrate contributions to Jacobian matrix (A) associated with
+// operator.
+template<typename quadrature_type>
+inline
+void
+pylith::feassemble::Integrator<quadrature_type>::integrateJacobian(
+ const topology::Field<topology::Mesh>& jacobian,
+ const double t,
+ topology::SolutionFields* const fields) {
_needNewJacobian = false;
-} // integrateResidualAssembled
+} // integrateJacobian
// Integrate contributions to Jacobian matrix (A) associated with
// operator that do not require assembly over cells, vertices, or
@@ -93,9 +117,9 @@
inline
void
pylith::feassemble::Integrator<quadrature_type>::integrateJacobianAssembled(
- topology::Jacobian* jacobian,
- const double t,
- topology::SolutionFields* const fields) {
+ const topology::Field<topology::Mesh>& jacobian,
+ const double t,
+ topology::SolutionFields* const fields) {
} // integrateJacobianAssembled
// Update state variables as needed.
@@ -107,7 +131,28 @@
topology::SolutionFields* const fields) {
} // updateState
+// Constrain solution space.
+template<typename quadrature_type>
+inline
+void
+pylith::feassemble::Integrator<quadrature_type>::constrainSolnSpace(
+ topology::SolutionFields* const fields,
+ const double t,
+ const topology::Jacobian& jacobian) {
+} // constrainSolnSpace
+// Adjust solution from solver with lumped Jacobian to match Lagrange
+// multiplier constraints.
+template<typename quadrature_type>
+inline
+void
+pylith::feassemble::Integrator<quadrature_type>::adjustSolnLumped(
+ topology::SolutionFields* fields,
+ const topology::Field<topology::Mesh>& jacobian) {
+} // adjustSolnLumped
+
+
+
#endif
// End of file
Modified: short/3D/PyLith/trunk/libsrc/feassemble/IntegratorElasticity.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/IntegratorElasticity.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/feassemble/IntegratorElasticity.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -759,6 +759,38 @@
} // _elasticityJacobian1D
// ----------------------------------------------------------------------
+// Integrate laplacian term in Jacobian preconditioner for 1-D cells.
+void
+pylith::feassemble::IntegratorElasticity::_elasticityPrecon1D(
+ const double_array& elasticConsts)
+{ // _elasticityPrecon1D
+ const int numQuadPts = _quadrature->numQuadPts();
+ const int numBasis = _quadrature->numBasis();
+ const int spaceDim = _quadrature->spaceDim();
+ const int cellDim = _quadrature->cellDim();
+ const double_array& quadWts = _quadrature->quadWts();
+ const double_array& jacobianDet = _quadrature->jacobianDet();
+ const double_array& basisDeriv = _quadrature->basisDeriv();
+
+ assert(1 == cellDim);
+ assert(quadWts.size() == numQuadPts);
+
+ for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
+ const double wt = quadWts[iQuad] * jacobianDet[iQuad];
+ for (int iBasis=0, iQ=iQuad*numBasis; iBasis < numBasis; ++iBasis) {
+ const double valI = wt*basisDeriv[iQ+iBasis];
+ for (int jBasis=0; jBasis < numBasis; ++jBasis) {
+ const double valIJ = valI * basisDeriv[iQ+jBasis];
+ const int iBlock = iBasis*spaceDim * (numBasis*spaceDim);
+ const int jBlock = jBasis*spaceDim;
+ _cellMatrix[iBlock+jBlock] += valIJ;
+ } // for
+ } // for
+ } // for
+ PetscLogFlops(numQuadPts*(1+numBasis*(1+numBasis*2)));
+} // _elasticityPrecon1D
+
+// ----------------------------------------------------------------------
// Integrate elasticity term in Jacobian for 2-D cells.
void
pylith::feassemble::IntegratorElasticity::_elasticityJacobian2D(
@@ -823,6 +855,49 @@
} // _elasticityJacobian2D
// ----------------------------------------------------------------------
+// Integrate laplacian term in Jacobian preconditioner for 2-D cells.
+void
+pylith::feassemble::IntegratorElasticity::_elasticityPrecon2D(
+ const double_array& elasticConsts)
+{ // _elasticityPrecon2D
+ const int numQuadPts = _quadrature->numQuadPts();
+ const int numBasis = _quadrature->numBasis();
+ const int spaceDim = _quadrature->spaceDim();
+ const int cellDim = _quadrature->cellDim();
+ const double_array& quadWts = _quadrature->quadWts();
+ const double_array& jacobianDet = _quadrature->jacobianDet();
+ const double_array& basisDeriv = _quadrature->basisDeriv();
+
+ assert(2 == cellDim);
+ assert(quadWts.size() == numQuadPts);
+ const int numConsts = 6;
+
+ for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
+ const double wt = quadWts[iQuad] * jacobianDet[iQuad];
+ // Delta_ij = C_ijkl * e_kl
+ // = C_ijlk * 0.5 (u_k,l + u_l,k)
+ // = 0.5 * C_ijkl * (u_k,l + u_l,k)
+ for (int iBasis=0, iQ=iQuad*numBasis*spaceDim;
+ iBasis < numBasis;
+ ++iBasis) {
+ const double Nip = wt*basisDeriv[iQ+iBasis*spaceDim ];
+ const double Niq = wt*basisDeriv[iQ+iBasis*spaceDim+1];
+ const int iBlock = (iBasis*spaceDim ) * (numBasis*spaceDim);
+ const int iBlock1 = (iBasis*spaceDim+1) * (numBasis*spaceDim);
+ for (int jBasis=0; jBasis < numBasis; ++jBasis) {
+ const double Njp = basisDeriv[iQ+jBasis*spaceDim ];
+ const double Njq = basisDeriv[iQ+jBasis*spaceDim+1];
+ const int jBlock = (jBasis*spaceDim );
+ const int jBlock1 = (jBasis*spaceDim+1);
+ _cellMatrix[iBlock +jBlock ] += Nip*Njp;
+ _cellMatrix[iBlock1+jBlock1] += Niq*Njq;
+ } // for
+ } // for
+ } // for
+ PetscLogFlops(numQuadPts*(1+numBasis*(2+numBasis*(4))));
+} // _elasticityPrecon2D
+
+// ----------------------------------------------------------------------
// Integrate elasticity term in Jacobian for 3-D cells.
void
pylith::feassemble::IntegratorElasticity::_elasticityJacobian3D(
@@ -936,7 +1011,53 @@
} // _elasticityJacobian3D
// ----------------------------------------------------------------------
+// Integrate laplacian term in Jacobian preconditioner for 3-D cells.
void
+pylith::feassemble::IntegratorElasticity::_elasticityPrecon3D(
+ const double_array& elasticConsts)
+{ // _elasticityPrecon3D
+ const int numQuadPts = _quadrature->numQuadPts();
+ const int numBasis = _quadrature->numBasis();
+ const int spaceDim = _quadrature->spaceDim();
+ const int cellDim = _quadrature->cellDim();
+ const double_array& quadWts = _quadrature->quadWts();
+ const double_array& jacobianDet = _quadrature->jacobianDet();
+ const double_array& basisDeriv = _quadrature->basisDeriv();
+
+ assert(3 == cellDim);
+ assert(quadWts.size() == numQuadPts);
+ const int numConsts = 21;
+
+ // Compute Jacobian for consistent tangent matrix
+ for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
+ const double wt = quadWts[iQuad] * jacobianDet[iQuad];
+ for (int iBasis=0, iQ=iQuad*numBasis*spaceDim;
+ iBasis < numBasis;
+ ++iBasis) {
+ const double Nip = wt*basisDeriv[iQ+iBasis*spaceDim+0];
+ const double Niq = wt*basisDeriv[iQ+iBasis*spaceDim+1];
+ const double Nir = wt*basisDeriv[iQ+iBasis*spaceDim+2];
+ for (int jBasis=0; jBasis < numBasis; ++jBasis) {
+ const double Njp = basisDeriv[iQ+jBasis*spaceDim+0];
+ const double Njq = basisDeriv[iQ+jBasis*spaceDim+1];
+ const double Njr = basisDeriv[iQ+jBasis*spaceDim+2];
+ const int iBlock = iBasis*spaceDim * (numBasis*spaceDim);
+ const int iBlock1 = (iBasis*spaceDim+1) * (numBasis*spaceDim);
+ const int iBlock2 = (iBasis*spaceDim+2) * (numBasis*spaceDim);
+ const int jBlock = jBasis*spaceDim;
+ const int jBlock1 = jBasis*spaceDim+1;
+ const int jBlock2 = jBasis*spaceDim+2;
+ _cellMatrix[iBlock +jBlock ] += Nip*Njp;
+ _cellMatrix[iBlock1+jBlock1] += Niq*Njq;
+ _cellMatrix[iBlock2+jBlock2] += Nir*Njr;
+ } // for
+ } // for
+ } // for
+ PetscLogFlops(numQuadPts*(1+numBasis*(3+numBasis*(6))));
+} // _elasticityPrecon3D
+
+// ----------------------------------------------------------------------
+void
pylith::feassemble::IntegratorElasticity::_calcTotalStrain1D(
double_array* strain,
const double_array& basisDeriv,
Modified: short/3D/PyLith/trunk/libsrc/feassemble/IntegratorElasticity.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/IntegratorElasticity.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/feassemble/IntegratorElasticity.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
/**
- * @file pylith/feassemble/IntegratorElasticity.hh
+ * @file libsrc/feassemble/IntegratorElasticity.hh
*
* @brief Object containing general elasticity operations for implicit
* and explicit time integration of the elasticity equation.
@@ -32,6 +32,9 @@
#include "pylith/utils/arrayfwd.hh" // USES std::vector, double_array
// IntegratorElasticity -------------------------------------------------
+/** @brief General elasticity operations for implicit and explicit
+ * time integration of the elasticity equation.
+ */
class pylith::feassemble::IntegratorElasticity :
public Integrator<Quadrature<topology::Mesh> >
{ // IntegratorElasticity
@@ -135,6 +138,7 @@
* @param name Name of field to compute ('total-strain' or 'stress')
* @param fields Manager for solution fields.
*/
+ virtual
void _calcStrainStressField(topology::Field<topology::Mesh>* field,
const char* name,
topology::SolutionFields* const fields);
@@ -144,6 +148,7 @@
*
* @param field Field in which to store stress.
*/
+ virtual
void _calcStressFromStrain(topology::Field<topology::Mesh>* field);
@@ -183,6 +188,24 @@
*/
void _elasticityJacobian3D(const double_array& elasticConsts);
+ /** Integrate laplacian term in Jacobian preconditioner for 1-D cells.
+ *
+ * @param elasticConsts Matrix of elasticity constants at quadrature points.
+ */
+ void _elasticityPrecon1D(const double_array& elasticConsts);
+
+ /** Integrate laplacian term in Jacobian preconditioner for 2-D cells.
+ *
+ * @param elasticConsts Matrix of elasticity constants at quadrature points.
+ */
+ void _elasticityPrecon2D(const double_array& elasticConsts);
+
+ /** Integrate laplacian term in Jacobian preconditioner for 3-D cells.
+ *
+ * @param elasticConsts Matrix of elasticity constants at quadrature points.
+ */
+ void _elasticityPrecon3D(const double_array& elasticConsts);
+
/** Compute total strain in at quadrature points of a cell.
*
* @param strain Strain tensor at quadrature points.
Copied: short/3D/PyLith/trunk/libsrc/feassemble/IntegratorElasticityLgDeform.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/libsrc/feassemble/IntegratorElasticityLgDeform.cc)
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/IntegratorElasticityLgDeform.cc (rev 0)
+++ short/3D/PyLith/trunk/libsrc/feassemble/IntegratorElasticityLgDeform.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,1272 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#include <portinfo>
+
+#include "IntegratorElasticityLgDeform.hh" // implementation of class methods
+
+#include "Quadrature.hh" // USES Quadrature
+#include "CellGeometry.hh" // USES CellGeometry
+
+#include "pylith/materials/ElasticMaterial.hh" // USES ElasticMaterial
+#include "pylith/topology/Field.hh" // USES Field
+#include "pylith/topology/Fields.hh" // USES Fields
+#include "pylith/topology/SolutionFields.hh" // USES SolutionFields
+#include "pylith/utils/EventLogger.hh" // USES EventLogger
+
+#include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
+
+#include "pylith/utils/array.hh" // USES double_array
+
+#include <cstring> // USES memcpy()
+#include <strings.h> // USES strcasecmp()
+#include <cassert> // USES assert()
+#include <stdexcept> // USES std::runtime_error
+
+//#define PRECOMPUTE_GEOMETRY
+
+// ----------------------------------------------------------------------
+typedef pylith::topology::Mesh::SieveMesh SieveMesh;
+typedef pylith::topology::Mesh::RealSection RealSection;
+
+// ----------------------------------------------------------------------
+// Constructor
+pylith::feassemble::IntegratorElasticityLgDeform::IntegratorElasticityLgDeform(void)
+{ // constructor
+} // constructor
+
+// ----------------------------------------------------------------------
+// Destructor
+pylith::feassemble::IntegratorElasticityLgDeform::~IntegratorElasticityLgDeform(void)
+{ // destructor
+} // destructor
+
+// ----------------------------------------------------------------------
+// Determine whether we need to recompute the Jacobian.
+bool
+pylith::feassemble::IntegratorElasticityLgDeform::needNewJacobian(void)
+{ // needNewJacobian
+ _needNewJacobian = IntegratorElasticity::needNewJacobian();
+ return _needNewJacobian;
+} // needNewJacobian
+
+// ----------------------------------------------------------------------
+// Update state variables as needed.
+void
+pylith::feassemble::IntegratorElasticityLgDeform::updateStateVars(
+ const double t,
+ topology::SolutionFields* const fields)
+{ // updateStateVars
+ assert(0 != _quadrature);
+ assert(0 != _material);
+ assert(0 != fields);
+
+ // No need to update state vars if material doesn't have any.
+ if (!_material->hasStateVars())
+ return;
+
+ // Get cell information that doesn't depend on particular cell
+ const int cellDim = _quadrature->cellDim();
+ const int numQuadPts = _quadrature->numQuadPts();
+ const int numBasis = _quadrature->numBasis();
+ const int spaceDim = _quadrature->spaceDim();
+ const int tensorSize = _material->tensorSize();
+ totalStrain_fn_type calcTotalStrainFn;
+ if (1 == cellDim) {
+ calcTotalStrainFn =
+ &pylith::feassemble::IntegratorElasticityLgDeform::_calcTotalStrain1D;
+ } else if (2 == cellDim) {
+ calcTotalStrainFn =
+ &pylith::feassemble::IntegratorElasticityLgDeform::_calcTotalStrain2D;
+ } else if (3 == cellDim) {
+ calcTotalStrainFn =
+ &pylith::feassemble::IntegratorElasticityLgDeform::_calcTotalStrain3D;
+ } else {
+ std::cerr << "Bad cell dimension '" << cellDim << "'." << std::endl;
+ assert(0);
+ throw std::logic_error("Bad cell dimension in IntegratorElasticityLgDeform.");
+ } // else
+
+ // Allocate arrays for cell data.
+ double_array dispCell(numBasis*spaceDim);
+ double_array strainCell(numQuadPts*tensorSize);
+ double_array deformCell(numQuadPts*spaceDim*spaceDim);
+ deformCell = 0.0;
+ strainCell = 0.0;
+
+ // Get cell information
+ const ALE::Obj<SieveMesh>& sieveMesh = fields->mesh().sieveMesh();
+ assert(!sieveMesh.isNull());
+ const int materialId = _material->id();
+ const ALE::Obj<SieveMesh::label_sequence>& cells =
+ sieveMesh->getLabelStratum("material-id", materialId);
+ assert(!cells.isNull());
+ const SieveMesh::label_sequence::iterator cellsBegin = cells->begin();
+ const SieveMesh::label_sequence::iterator cellsEnd = cells->end();
+
+ // Get fields
+ const topology::Field<topology::Mesh>& disp = fields->get("disp(t)");
+ const ALE::Obj<RealSection>& dispSection = disp.section();
+ assert(!dispSection.isNull());
+ topology::Mesh::RestrictVisitor dispVisitor(*dispSection,
+ dispCell.size(), &dispCell[0]);
+
+ double_array coordinatesCell(numBasis*spaceDim);
+ const ALE::Obj<RealSection>& coordinates =
+ sieveMesh->getRealSection("coordinates");
+ assert(!coordinates.isNull());
+ topology::Mesh::RestrictVisitor coordsVisitor(*coordinates,
+ coordinatesCell.size(),
+ &coordinatesCell[0]);
+
+ // Loop over cells
+ for (SieveMesh::label_sequence::iterator c_iter=cellsBegin;
+ c_iter != cellsEnd;
+ ++c_iter) {
+ // Retrieve geometry information for current cell
+#if defined(PRECOMPUTE_GEOMETRY)
+ _quadrature->retrieveGeometry(*c_iter);
+#else
+ coordsVisitor.clear();
+ sieveMesh->restrictClosure(*c_iter, coordsVisitor);
+ _quadrature->computeGeometry(coordinatesCell, *c_iter);
+#endif
+
+ // Restrict input fields to cell
+ dispVisitor.clear();
+ sieveMesh->restrictClosure(*c_iter, dispVisitor);
+
+ // Get cell geometry information that depends on cell
+ const double_array& basisDeriv = _quadrature->basisDeriv();
+
+ // Compute deformation tensor.
+ _calcDeformation(&deformCell, basisDeriv, coordinatesCell, dispCell,
+ numBasis, numQuadPts, spaceDim);
+
+ // Compute strains
+ calcTotalStrainFn(&strainCell, deformCell, numQuadPts);
+
+ // Update material state
+ _material->updateStateVars(strainCell, *c_iter);
+ } // for
+} // updateStateVars
+
+// ----------------------------------------------------------------------
+void
+pylith::feassemble::IntegratorElasticityLgDeform::_calcStrainStressField(
+ topology::Field<topology::Mesh>* field,
+ const char* name,
+ topology::SolutionFields* const fields)
+{ // _calcStrainStressField
+ assert(0 != field);
+ assert(0 != _quadrature);
+ assert(0 != _material);
+
+ const bool calcStress = (0 == strcasecmp(name, "stress")) ? true : false;
+
+ // Get cell information that doesn't depend on particular cell
+ const int cellDim = _quadrature->cellDim();
+ const int numQuadPts = _quadrature->numQuadPts();
+ const int numBasis = _quadrature->numBasis();
+ const int spaceDim = _quadrature->spaceDim();
+ const int tensorSize = _material->tensorSize();
+ totalStrain_fn_type calcTotalStrainFn;
+ if (1 == cellDim) {
+ calcTotalStrainFn =
+ &pylith::feassemble::IntegratorElasticityLgDeform::_calcTotalStrain1D;
+ } else if (2 == cellDim) {
+ calcTotalStrainFn =
+ &pylith::feassemble::IntegratorElasticityLgDeform::_calcTotalStrain2D;
+ } else if (3 == cellDim) {
+ calcTotalStrainFn =
+ &pylith::feassemble::IntegratorElasticityLgDeform::_calcTotalStrain3D;
+ } else {
+ std::cerr << "Bad cell dimension '" << cellDim << "'." << std::endl;
+ assert(0);
+ throw std::logic_error("Bad cell dimension in IntegratorElasticityLgDeform.");
+ } // else
+
+ // Allocate arrays for cell data.
+ double_array dispCell(numBasis*spaceDim);
+ double_array deformCell(numQuadPts*spaceDim*spaceDim);
+ double_array strainCell(numQuadPts*tensorSize);
+ double_array stressCell(numQuadPts*tensorSize);
+
+ // Get cell information
+ const ALE::Obj<SieveMesh>& sieveMesh = field->mesh().sieveMesh();
+ assert(!sieveMesh.isNull());
+ const int materialId = _material->id();
+ const ALE::Obj<SieveMesh::label_sequence>& cells =
+ sieveMesh->getLabelStratum("material-id", materialId);
+ assert(!cells.isNull());
+ const SieveMesh::label_sequence::iterator cellsBegin = cells->begin();
+ const SieveMesh::label_sequence::iterator cellsEnd = cells->end();
+
+ // Get field
+ const topology::Field<topology::Mesh>& disp = fields->get("disp(t)");
+ const ALE::Obj<RealSection>& dispSection = disp.section();
+ assert(!dispSection.isNull());
+ topology::Mesh::RestrictVisitor dispVisitor(*dispSection,
+ dispCell.size(), &dispCell[0]);
+
+ double_array coordinatesCell(numBasis*spaceDim);
+ const ALE::Obj<RealSection>& coordinates =
+ sieveMesh->getRealSection("coordinates");
+ assert(!coordinates.isNull());
+ topology::Mesh::RestrictVisitor coordsVisitor(*coordinates,
+ coordinatesCell.size(),
+ &coordinatesCell[0]);
+
+ const ALE::Obj<RealSection>& fieldSection = field->section();
+ assert(!fieldSection.isNull());
+
+ // Loop over cells
+ for (SieveMesh::label_sequence::iterator c_iter=cellsBegin;
+ c_iter != cellsEnd;
+ ++c_iter) {
+ // Retrieve geometry information for current cell
+#if defined(PRECOMPUTE_GEOMETRY)
+ _quadrature->retrieveGeometry(*c_iter);
+#else
+ coordsVisitor.clear();
+ sieveMesh->restrictClosure(*c_iter, coordsVisitor);
+ _quadrature->computeGeometry(coordinatesCell, *c_iter);
+#endif
+
+ // Restrict input fields to cell
+ dispVisitor.clear();
+ sieveMesh->restrictClosure(*c_iter, dispVisitor);
+
+ // Get cell geometry information that depends on cell
+ const double_array& basisDeriv = _quadrature->basisDeriv();
+
+ // Compute deformation tensor.
+ _calcDeformation(&deformCell, basisDeriv, coordinatesCell, dispCell,
+ numBasis, numQuadPts, spaceDim);
+
+ // Compute strains
+ calcTotalStrainFn(&strainCell, deformCell, numQuadPts);
+
+ if (!calcStress)
+ fieldSection->updatePoint(*c_iter, &strainCell[0]);
+ else {
+ _material->retrievePropsAndVars(*c_iter);
+ stressCell = _material->calcStress(strainCell);
+ fieldSection->updatePoint(*c_iter, &stressCell[0]);
+ } // else
+ } // for
+} // _calcStrainStressField
+
+// ----------------------------------------------------------------------
+void
+pylith::feassemble::IntegratorElasticityLgDeform::_calcStressFromStrain(
+ topology::Field<topology::Mesh>* field)
+{ // _calcStressFromStrain
+ assert(0 != field);
+ assert(0 != _quadrature);
+ assert(0 != _material);
+
+ const int cellDim = _quadrature->cellDim();
+ const int numQuadPts = _quadrature->numQuadPts();
+ const int numBasis = _quadrature->numBasis();
+ const int spaceDim = _quadrature->spaceDim();
+ const int tensorSize = _material->tensorSize();
+
+ // Allocate arrays for cell data.
+ double_array strainCell(numQuadPts*tensorSize);
+ strainCell = 0.0;
+ double_array stressCell(numQuadPts*tensorSize);
+ stressCell = 0.0;
+
+ // Get cell information
+ const ALE::Obj<SieveMesh>& sieveMesh = field->mesh().sieveMesh();
+ assert(!sieveMesh.isNull());
+ const int materialId = _material->id();
+ const ALE::Obj<SieveMesh::label_sequence>& cells =
+ sieveMesh->getLabelStratum("material-id", materialId);
+ assert(!cells.isNull());
+ const SieveMesh::label_sequence::iterator cellsBegin = cells->begin();
+ const SieveMesh::label_sequence::iterator cellsEnd = cells->end();
+
+ // Get field
+ const ALE::Obj<RealSection>& fieldSection = field->section();
+ assert(!fieldSection.isNull());
+
+ // Loop over cells
+ for (SieveMesh::label_sequence::iterator c_iter=cellsBegin;
+ c_iter != cellsEnd;
+ ++c_iter) {
+ fieldSection->restrictPoint(*c_iter, &strainCell[0], strainCell.size());
+ _material->retrievePropsAndVars(*c_iter);
+ stressCell = _material->calcStress(strainCell);
+ fieldSection->updatePoint(*c_iter, &stressCell[0]);
+ } // for
+} // _calcStressFromStrain
+
+// ----------------------------------------------------------------------
+// Integrate elasticity term in residual for 1-D cells.
+void
+pylith::feassemble::IntegratorElasticityLgDeform::_elasticityResidual1D(
+ const double_array& stress,
+ const double_array& disp)
+{ // _elasticityResidual1D
+ const int numQuadPts = _quadrature->numQuadPts();
+ const int numBasis = _quadrature->numBasis();
+ const int spaceDim = _quadrature->spaceDim();
+ const int cellDim = _quadrature->cellDim();
+ const double_array& quadWts = _quadrature->quadWts();
+ const double_array& jacobianDet = _quadrature->jacobianDet();
+ const double_array& basisDeriv = _quadrature->basisDeriv();
+
+ assert(1 == cellDim);
+ assert(quadWts.size() == numQuadPts);
+
+ for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
+ const double wt = quadWts[iQuad] * jacobianDet[iQuad];
+ const double s11 = stress[iQuad];
+ double l11 = 0.0;
+ for (int kBasis=0; kBasis < numBasis; ++kBasis)
+ l11 += basisDeriv[iQuad*numBasis+kBasis ] * disp[kBasis ];
+ for (int iBasis=0; iBasis < numBasis; ++iBasis) {
+ const double N1 = wt * (1.0 + l11) * basisDeriv[iQuad*numBasis+iBasis ];
+ _cellVector[iBasis*spaceDim ] -= N1*s11;
+ } // for
+ } // for
+ PetscLogFlops(numQuadPts*(1+numBasis*5+numBasis*2));
+} // _elasticityResidual1D
+
+// ----------------------------------------------------------------------
+// Integrate elasticity term in residual for 2-D cells.
+void
+pylith::feassemble::IntegratorElasticityLgDeform::_elasticityResidual2D(
+ const double_array& stress,
+ const double_array& disp)
+{ // _elasticityResidual2D
+ const int numQuadPts = _quadrature->numQuadPts();
+ const int numBasis = _quadrature->numBasis();
+ const int spaceDim = _quadrature->spaceDim();
+ const int cellDim = _quadrature->cellDim();
+ const double_array& quadWts = _quadrature->quadWts();
+ const double_array& jacobianDet = _quadrature->jacobianDet();
+ const double_array& basisDeriv = _quadrature->basisDeriv();
+
+ assert(2 == cellDim);
+ assert(quadWts.size() == numQuadPts);
+ const int stressSize = 3;
+
+ for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
+ const int iQ = iQuad*numBasis*spaceDim;
+ const double wt = quadWts[iQuad] * jacobianDet[iQuad];
+ const double s11 = stress[iQuad*stressSize+0];
+ const double s22 = stress[iQuad*stressSize+1];
+ const double s12 = stress[iQuad*stressSize+2];
+
+ double l11 = 0.0;
+ double l12 = 0.0;
+ double l21 = 0.0;
+ double l22 = 0.0;
+ for (int kBasis=0; kBasis < numBasis; ++kBasis) {
+ const int kB = kBasis*spaceDim;
+ l11 += basisDeriv[iQ+kB ] * disp[kB ];
+ l12 += basisDeriv[iQ+kB+1] * disp[kB ];
+ l21 += basisDeriv[iQ+kB ] * disp[kB+1];
+ l22 += basisDeriv[iQ+kB+1] * disp[kB+1];
+ } // for
+
+ for (int iBasis=0, iQ=iQuad*numBasis*spaceDim;
+ iBasis < numBasis;
+ ++iBasis) {
+ const int iB = iBasis*spaceDim;
+ const double Nip = basisDeriv[iQ+iB ];
+ const double Niq = basisDeriv[iQ+iB+1];
+
+ // Generated using Maxima (see jacobian2d_lgdeform.wxm)
+ _cellVector[iB ] -=
+ wt*(l12*Niq*s22 +
+ ((l11+1)*Niq+l12*Nip)*s12 +
+ (l11+1)*Nip*s11);
+
+ _cellVector[iB+1] -=
+ wt*((l22+1)*Niq*s22 +
+ (l21*Niq+(l22+1)*Nip)*s12 +
+ l21*Nip*s11);
+ } // for
+ } // for
+ PetscLogFlops(numQuadPts*(1+numBasis*(numBasis*8+14)));
+} // _elasticityResidual2D
+
+// ----------------------------------------------------------------------
+// Integrate elasticity term in residual for 3-D cells.
+void
+pylith::feassemble::IntegratorElasticityLgDeform::_elasticityResidual3D(
+ const double_array& stress,
+ const double_array& disp)
+{ // _elasticityResidual3D
+ const int numQuadPts = _quadrature->numQuadPts();
+ const int numBasis = _quadrature->numBasis();
+ const int spaceDim = _quadrature->spaceDim();
+ const int cellDim = _quadrature->cellDim();
+ const double_array& quadWts = _quadrature->quadWts();
+ const double_array& jacobianDet = _quadrature->jacobianDet();
+ const double_array& basisDeriv = _quadrature->basisDeriv();
+
+ assert(3 == cellDim);
+ assert(quadWts.size() == numQuadPts);
+ const int stressSize = 6;
+
+ for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
+ const int iQ = iQuad*numBasis*spaceDim;
+ const double wt = quadWts[iQuad] * jacobianDet[iQuad];
+ const double s11 = stress[iQuad*stressSize+0];
+ const double s22 = stress[iQuad*stressSize+1];
+ const double s33 = stress[iQuad*stressSize+2];
+ const double s12 = stress[iQuad*stressSize+3];
+ const double s23 = stress[iQuad*stressSize+4];
+ const double s13 = stress[iQuad*stressSize+5];
+
+ double l11 = 0.0;
+ double l12 = 0.0;
+ double l13 = 0.0;
+ double l21 = 0.0;
+ double l22 = 0.0;
+ double l23 = 0.0;
+ double l31 = 0.0;
+ double l32 = 0.0;
+ double l33 = 0.0;
+ for (int kBasis=0; kBasis < numBasis; ++kBasis) {
+ const int kB = kBasis*spaceDim;
+ l11 += basisDeriv[iQ+kB ] * disp[kB ];
+ l12 += basisDeriv[iQ+kB+1] * disp[kB ];
+ l13 += basisDeriv[iQ+kB+2] * disp[kB ];
+ l21 += basisDeriv[iQ+kB ] * disp[kB+1];
+ l22 += basisDeriv[iQ+kB+1] * disp[kB+1];
+ l23 += basisDeriv[iQ+kB+2] * disp[kB+1];
+ l31 += basisDeriv[iQ+kB ] * disp[kB+2];
+ l32 += basisDeriv[iQ+kB+1] * disp[kB+2];
+ l33 += basisDeriv[iQ+kB+2] * disp[kB+2];
+ } // for
+
+ for (int iBasis=0, iQ=iQuad*numBasis*spaceDim;
+ iBasis < numBasis;
+ ++iBasis) {
+ const int iB = iBasis*spaceDim;
+ const double Nip = basisDeriv[iQ+iB ];
+ const double Niq = basisDeriv[iQ+iB+1];
+ const double Nir = basisDeriv[iQ+iB+2];
+
+ // Generated using Maxima (see jacobian3d_lgdeform.wxm)
+ _cellVector[iB ] -=
+ wt*(l13*Nir*s33 +
+ (l12*Nir+l13*Niq)*s23 +
+ l12*Niq*s22 +
+ ((l11+1)*Nir + l13*Nip)*s13 +
+ ((l11+1)*Niq+l12*Nip)*s12 +
+ (l11+1)*Nip*s11);
+
+ _cellVector[iB+1] -=
+ wt*(l23*Nir*s33 +
+ ((l22+1)*Nir+l23*Niq)*s23 +
+ (l22+1)*Niq*s22 +
+ (l21*Nir+l23*Nip)*s13 +
+ (l21*Niq+(l22+1)*Nip)*s12 +
+ l21*Nip*s11);
+
+ _cellVector[iB+2] -=
+ wt*((l33+1)*Nir*s33 +
+ (l32*Nir+(l33+1)*Niq)*s23 +
+ l32*Niq*s22 +
+ (l31*Nir+(l33+1)*Nip)*s13 +
+ (l31*Niq+l32*Nip)*s12 +
+ l31*Nip*s11);
+ } // for
+ } // for
+ PetscLogFlops(numQuadPts*(1+numBasis*(numBasis*18+3*27)));
+} // _elasticityResidual3D
+
+// ----------------------------------------------------------------------
+// Integrate elasticity term in Jacobian for 1-D cells.
+void
+pylith::feassemble::IntegratorElasticityLgDeform::_elasticityJacobian1D(
+ const double_array& elasticConsts,
+ const double_array& stress,
+ const double_array& disp)
+{ // _elasticityJacobian1D
+ const int numQuadPts = _quadrature->numQuadPts();
+ const int numBasis = _quadrature->numBasis();
+ const int spaceDim = _quadrature->spaceDim();
+ const int cellDim = _quadrature->cellDim();
+ const double_array& quadWts = _quadrature->quadWts();
+ const double_array& jacobianDet = _quadrature->jacobianDet();
+ const double_array& basisDeriv = _quadrature->basisDeriv();
+
+ assert(1 == cellDim);
+ assert(quadWts.size() == numQuadPts);
+
+ for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
+ const double wt = quadWts[iQuad] * jacobianDet[iQuad];
+ const double C1111 = elasticConsts[iQuad];
+ const double s11 = stress[iQuad];
+
+ double l11 = 0.0;
+ for (int kBasis=0; kBasis < numBasis; ++kBasis)
+ l11 += basisDeriv[iQuad*numBasis+kBasis ] * disp[kBasis ];
+
+ // KLij = valI * valJ * C1111 + valInl * valJnl * s11
+ // valI = (1+l11) * Ni,1
+ // valJ = (1+l11) * Nj,1
+ // valInl = Ni,1
+ // valJnl = Nj,1
+ for (int iBasis=0, iQ=iQuad*numBasis; iBasis < numBasis; ++iBasis) {
+ const double valI = wt*basisDeriv[iQ+iBasis]*(1.0+l11)*(1.0+l11)*C1111;
+ const double valInl = wt*s11*basisDeriv[iQ+iBasis];
+ for (int jBasis=0; jBasis < numBasis; ++jBasis) {
+ const double valIJ = valI * basisDeriv[iQ+jBasis];
+ const double valIJnl = valInl * basisDeriv[iQ+jBasis];
+ const int iBlock = iBasis*spaceDim * (numBasis*spaceDim);
+ const int jBlock = jBasis*spaceDim;
+ _cellMatrix[iBlock+jBlock] += valIJ + valIJnl;
+ } // for
+ } // for
+ } // for
+ PetscLogFlops(numQuadPts*(1+numBasis*(6+numBasis*4)));
+} // _elasticityJacobian1D
+
+// ----------------------------------------------------------------------
+// Integrate elasticity term in Jacobian for 2-D cells.
+void
+pylith::feassemble::IntegratorElasticityLgDeform::_elasticityJacobian2D(
+ const double_array& elasticConsts,
+ const double_array& stress,
+ const double_array& disp)
+{ // _elasticityJacobian2D
+ const int numQuadPts = _quadrature->numQuadPts();
+ const int numBasis = _quadrature->numBasis();
+ const int spaceDim = _quadrature->spaceDim();
+ const int cellDim = _quadrature->cellDim();
+ const double_array& quadWts = _quadrature->quadWts();
+ const double_array& jacobianDet = _quadrature->jacobianDet();
+ const double_array& basisDeriv = _quadrature->basisDeriv();
+ const int tensorSize = _material->tensorSize();
+
+ assert(2 == cellDim);
+ assert(quadWts.size() == numQuadPts);
+ const int numConsts = 6;
+
+ for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
+ const int iQ = iQuad*numBasis*spaceDim;
+ const double wt = quadWts[iQuad] * jacobianDet[iQuad];
+ // tau_ij = C_ijkl * e_kl
+ // = C_ijlk * 0.5 (u_k,l + u_l,k)
+ // = 0.5 * C_ijkl * (u_k,l + u_l,k)
+ // divide C_ijkl by 2 if k != l
+ const int iC = iQuad*numConsts;
+ const double C1111 = elasticConsts[iC+0];
+ const double C1122 = elasticConsts[iC+1];
+ const double C1112 = elasticConsts[iC+2] / 2.0; // 2*mu -> mu
+ const double C2222 = elasticConsts[iC+3];
+ const double C2212 = elasticConsts[iC+4] / 2.0;
+ const double C1212 = elasticConsts[iC+5] / 2.0;
+
+ const int iS = iQuad*tensorSize;
+ const double s11 = stress[iS+0];
+ const double s22 = stress[iS+1];
+ const double s12 = stress[iS+2];
+
+ double l11 = 0.0;
+ double l12 = 0.0;
+ double l21 = 0.0;
+ double l22 = 0.0;
+ for (int kBasis=0; kBasis < numBasis; ++kBasis) {
+ const int kB = kBasis*spaceDim;
+ l11 += basisDeriv[iQ+kB ] * disp[kB ];
+ l12 += basisDeriv[iQ+kB+1] * disp[kB ];
+ l21 += basisDeriv[iQ+kB ] * disp[kB+1];
+ l22 += basisDeriv[iQ+kB+1] * disp[kB+1];
+ } // for
+
+ for (int iBasis=0, iQ=iQuad*numBasis*spaceDim;
+ iBasis < numBasis;
+ ++iBasis) {
+ const int iB = iBasis*spaceDim;
+ const double Nip = wt*basisDeriv[iQ+iB ];
+ const double Niq = wt*basisDeriv[iQ+iB+1];
+ const int iBlock = (iB) * (numBasis*spaceDim);
+ const int iBlock1 = (iB+1) * (numBasis*spaceDim);
+
+ const double valInl0 = Nip*s11 + Niq*s12;
+ const double valInl1 = Nip*s12 + Niq*s22;
+ for (int jBasis=0; jBasis < numBasis; ++jBasis) {
+ const int jB = jBasis*spaceDim;
+ const double Njp = basisDeriv[iQ+jB ];
+ const double Njq = basisDeriv[iQ+jB+1];
+
+ // Generated using Maxima (see jacobian2d_lgdeform.wxm)
+ const double Ki0j0 =
+ 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 +
+ l21*Njp*C1122) +
+ ((l11+1.0)*Niq+l12*Nip)*((l22+1.0)*Njq*C2212 +
+ (l21*Njq+(l22+1.0)*Njp)*C1212 +
+ l21*Njp*C1112) +
+ (l11+1.0)*Nip*((l22+1.0)*Njq*C1122 +
+ (l21*Njq+(l22+1.0)*Njp)*C1112 +
+ l21*Njp*C1111);
+ const double Ki1j0 =
+ (l22+1.0)*Niq*(l12*Njq*C2222 +
+ ((l11+1.0)*Njq+l12*Njp)*C2212 +
+ (l11+1.0)*Njp*C1122) +
+ (l21*Niq+(l22+1.0)*Nip)*(l12*Njq*C2212 +
+ ((l11+1.0)*Njq+l12*Njp)*C1212 +
+ (l11+1.0)*Njp*C1112) +
+ l21*Nip*(l12*Njq*C1122 +
+ ((l11+1.0)*Njq+l12*Njp)*C1112 +
+ (l11+1.0)*Njp*C1111);
+ const double Ki1j1 =
+ (l22+1.0)*Niq*((l22+1.0)*Njq*C2222 +
+ (l21*Njq+(l22+1.0)*Njp)*C2212 +
+ l21*Njp*C1122) +
+ (l21*Niq+(l22+1.0)*Nip)*((l22+1.0)*Njq*C2212 +
+ (l21*Njq+(l22+1.0)*Njp)*C1212 +
+ l21*Njp*C1112) +
+ l21*Nip*((l22+1.0)*Njq*C1122 +
+ (l21*Njq+(l22+1.0)*Njp)*C1112 +
+ l21*Njp*C1111);
+ const double Knl =
+ (Nip*s11 + Niq*s12)*Njp + (Nip*s12 + Niq*s22)*Njq;
+
+ const int jBlock = (jB);
+ const int jBlock1 = (jB+1);
+ _cellMatrix[iBlock +jBlock ] += Ki0j0 + Knl;
+ _cellMatrix[iBlock +jBlock1] += Ki0j1;
+ _cellMatrix[iBlock1+jBlock ] += Ki1j0;
+ _cellMatrix[iBlock1+jBlock1] += Ki1j1 + Knl;
+ } // for
+ } // for
+ } // for
+ PetscLogFlops(numQuadPts*(1+numBasis*(2+numBasis*(3*11+4))));
+} // _elasticityJacobian2D
+
+// ----------------------------------------------------------------------
+// Integrate elasticity term in Jacobian for 3-D cells.
+void
+pylith::feassemble::IntegratorElasticityLgDeform::_elasticityJacobian3D(
+ const double_array& elasticConsts,
+ const double_array& stress,
+ const double_array& disp)
+{ // _elasticityJacobian3D
+ const int numQuadPts = _quadrature->numQuadPts();
+ const int numBasis = _quadrature->numBasis();
+ const int spaceDim = _quadrature->spaceDim();
+ const int cellDim = _quadrature->cellDim();
+ const double_array& quadWts = _quadrature->quadWts();
+ const double_array& jacobianDet = _quadrature->jacobianDet();
+ const double_array& basisDeriv = _quadrature->basisDeriv();
+ const int tensorSize = _material->tensorSize();
+
+ assert(3 == cellDim);
+ assert(quadWts.size() == numQuadPts);
+ assert(6 == tensorSize);
+ const int numConsts = 21;
+
+ // Compute Jacobian for consistent tangent matrix
+ for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
+ const int iQ = iQuad*numBasis*spaceDim;
+ const double wt = quadWts[iQuad] * jacobianDet[iQuad];
+ // tau_ij = C_ijkl * e_kl
+ // = C_ijlk * 0.5 (u_k,l + u_l,k)
+ // = 0.5 * C_ijkl * (u_k,l + u_l,k)
+ // divide C_ijkl by 2 if k != l
+ const int iC = iQuad*numConsts;
+ const double C1111 = elasticConsts[iC+ 0];
+ const double C1122 = elasticConsts[iC+ 1];
+ const double C1133 = elasticConsts[iC+ 2];
+ const double C1112 = elasticConsts[iC+ 3] / 2.0;
+ const double C1123 = elasticConsts[iC+ 4] / 2.0;
+ const double C1113 = elasticConsts[iC+ 5] / 2.0;
+ const double C2222 = elasticConsts[iC+ 6];
+ const double C2233 = elasticConsts[iC+ 7];
+ const double C2212 = elasticConsts[iC+ 8] / 2.0;
+ const double C2223 = elasticConsts[iC+ 9] / 2.0;
+ const double C2213 = elasticConsts[iC+10] / 2.0;
+ const double C3333 = elasticConsts[iC+11];
+ const double C3312 = elasticConsts[iC+12] / 2.0;
+ const double C3323 = elasticConsts[iC+13] / 2.0;
+ const double C3313 = elasticConsts[iC+14] / 2.0;
+ const double C1212 = elasticConsts[iC+15] / 2.0;
+ const double C1223 = elasticConsts[iC+16] / 2.0;
+ const double C1213 = elasticConsts[iC+17] / 2.0;
+ const double C2323 = elasticConsts[iC+18] / 2.0;
+ const double C2313 = elasticConsts[iC+19] / 2.0;
+ const double C1313 = elasticConsts[iC+20] / 2.0;
+
+ const int iS = iQuad*tensorSize;
+ const double s11 = stress[iS+0];
+ const double s22 = stress[iS+1];
+ const double s33 = stress[iS+2];
+ const double s12 = stress[iS+3];
+ const double s23 = stress[iS+4];
+ const double s13 = stress[iS+5];
+
+ double l11 = 0.0;
+ double l12 = 0.0;
+ double l13 = 0.0;
+ double l21 = 0.0;
+ double l22 = 0.0;
+ double l23 = 0.0;
+ double l31 = 0.0;
+ double l32 = 0.0;
+ double l33 = 0.0;
+ for (int kBasis=0; kBasis < numBasis; ++kBasis) {
+ const int kB = kBasis*spaceDim;
+ l11 += basisDeriv[iQ+kB ] * disp[kB ];
+ l12 += basisDeriv[iQ+kB+1] * disp[kB ];
+ l13 += basisDeriv[iQ+kB+2] * disp[kB ];
+ l21 += basisDeriv[iQ+kB ] * disp[kB+1];
+ l22 += basisDeriv[iQ+kB+1] * disp[kB+1];
+ l23 += basisDeriv[iQ+kB+2] * disp[kB+1];
+ l31 += basisDeriv[iQ+kB ] * disp[kB+2];
+ l32 += basisDeriv[iQ+kB+1] * disp[kB+2];
+ l33 += basisDeriv[iQ+kB+2] * disp[kB+2];
+ } // for
+
+ for (int iBasis=0, iQ=iQuad*numBasis*spaceDim;
+ iBasis < numBasis;
+ ++iBasis) {
+ const int iB = iBasis*spaceDim;
+ const double Nip = wt*basisDeriv[iQ+iB+0];
+ const double Niq = wt*basisDeriv[iQ+iB+1];
+ const double Nir = wt*basisDeriv[iQ+iB+2];
+ for (int jBasis=0; jBasis < numBasis; ++jBasis) {
+ const int jB = jBasis*spaceDim;
+ const double Njp = basisDeriv[iQ+jB+0];
+ const double Njq = basisDeriv[iQ+jB+1];
+ const double Njr = basisDeriv[iQ+jB+2];
+
+ // Generated using Maxima (see jacobian3d_lgdeform.wxm)
+ const double Ki0j0 =
+ l13*Nir*(l13*Njr*C3333 +
+ (l12*Njr+l13*Njq)*C3323 +
+ ((l11+1)*Njr+l13*Njp)*C3313 +
+ ((l11+1)*Njq+l12*Njp)*C3312 +
+ l12*Njq*C2233 +
+ (l11+1)*Njp*C1133) +
+ (l12*Nir+l13*Niq)*(l13*Njr*C3323 +
+ (l12*Njr+l13*Njq)*C2323 +
+ ((l11+1)*Njr+l13*Njp)*C2313 +
+ l12*Njq*C2223 +
+ ((l11+1)*Njq+l12*Njp)*C1223 +
+ (l11+1)*Njp*C1123) +
+ ((l11+1)*Nir+l13*Nip)*(l13*Njr*C3313 +
+ (l12*Njr+l13*Njq)*C2313 +
+ l12*Njq*C2213 +
+ ((l11+1)*Njr+l13*Njp)*C1313 +
+ ((l11+1)*Njq+l12*Njp)*C1213 +
+ (l11+1)*Njp*C1113) +
+ ((l11+1)*Niq+l12*Nip)*(l13*Njr*C3312 +
+ l12*Njq*C2212 +
+ (l12*Njr+l13*Njq)*C1223 +
+ ((l11+1)*Njr+l13*Njp)*C1213 +
+ ((l11+1)*Njq+l12*Njp)*C1212 +
+ (l11+1)*Njp*C1112) +
+ l12*Niq*(l13*Njr*C2233 +
+ (l12*Njr+l13*Njq)*C2223 +
+ l12*Njq*C2222 +
+ ((l11+1)*Njr+l13*Njp)*C2213 +
+ ((l11+1)*Njq+l12*Njp)*C2212 +
+ (l11+1)*Njp*C1122) +
+ (l11+1)*Nip*(l13*Njr*C1133 +
+ (l12*Njr+l13*Njq)*C1123 +
+ l12*Njq*C1122 +
+ ((l11+1)*Njr+l13*Njp)*C1113 +
+ ((l11+1)*Njq+l12*Njp)*C1112 +
+ (l11+1)*Njp*C1111);
+
+ const double Ki0j1 =
+ l13*Nir*(l23*Njr*C3333 +
+ ((l22+1)*Njr+l23*Njq)*C3323 +
+ (l21*Njr+l23*Njp)*C3313 +
+ (l21*Njq+(l22+1)*Njp)*C3312 +
+ (l22+1)*Njq*C2233 +
+ l21*Njp*C1133) +
+ (l12*Nir+l13*Niq)*(l23*Njr*C3323 +
+ ((l22+1)*Njr+l23*Njq)*C2323 +
+ (l21*Njr+l23*Njp)*C2313 +
+ (l22+1)*Njq*C2223 +
+ (l21*Njq+(l22+1)*Njp)*C1223 +
+ l21*Njp*C1123) +
+ ((l11+1)*Nir+l13*Nip)*(l23*Njr*C3313 +
+ ((l22+1)*Njr+l23*Njq)*C2313 +
+ (l22+1)*Njq*C2213 +
+ (l21*Njr+l23*Njp)*C1313 +
+ (l21*Njq+(l22+1)*Njp)*C1213 +
+ l21*Njp*C1113) +
+ ((l11+1)*Niq+l12*Nip)*(l23*Njr*C3312 +
+ (l22+1)*Njq*C2212 +
+ ((l22+1)*Njr+l23*Njq)*C1223 +
+ (l21*Njr+l23*Njp)*C1213 +
+ (l21*Njq+(l22+1)*Njp)*C1212 +
+ l21*Njp*C1112) +
+ l12*Niq*(l23*Njr*C2233 +
+ ((l22+1)*Njr+l23*Njq)*C2223 +
+ (l22+1)*Njq*C2222 +
+ (l21*Njr+l23*Njp)*C2213 +
+ (l21*Njq+(l22+1)*Njp)*C2212 +
+ l21*Njp*C1122) +
+ (l11+1)*Nip*(l23*Njr*C1133 +
+ ((l22+1)*Njr+l23*Njq)*C1123 +
+ (l22+1)*Njq*C1122 +
+ (l21*Njr+l23*Njp)*C1113 +
+ (l21*Njq+(l22+1)*Njp)*C1112 +
+ l21*Njp*C1111);
+
+ const double Ki0j2 =
+ l13*Nir*((l33+1)*Njr*C3333 +
+ (l32*Njr+(l33+1)*Njq)*C3323 +
+ (l31*Njr+(l33+1)*Njp)*C3313 +
+ (l31*Njq+l32*Njp)*C3312 +
+ l32*Njq*C2233 +
+ l31*Njp*C1133) +
+ (l12*Nir+l13*Niq)*((l33+1)*Njr*C3323 +
+ (l32*Njr+(l33+1)*Njq)*C2323 +
+ (l31*Njr+(l33+1)*Njp)*C2313 +
+ l32*Njq*C2223 +
+ (l31*Njq+l32*Njp)*C1223 +
+ l31*Njp*C1123) +
+ ((l11+1)*Nir+l13*Nip)*((l33+1)*Njr*C3313 +
+ (l32*Njr+(l33+1)*Njq)*C2313 +
+ l32*Njq*C2213 +
+ (l31*Njr+(l33+1)*Njp)*C1313 +
+ (l31*Njq+l32*Njp)*C1213 +
+ l31*Njp*C1113) +
+ ((l11+1)*Niq+l12*Nip)*((l33+1)*Njr*C3312 +
+ l32*Njq*C2212 +
+ (l32*Njr+(l33+1)*Njq)*C1223 +
+ (l31*Njr+(l33+1)*Njp)*C1213 +
+ (l31*Njq+l32*Njp)*C1212 +
+ l31*Njp*C1112) +
+ l12*Niq*((l33+1)*Njr*C2233 +
+ (l32*Njr+(l33+1)*Njq)*C2223 +
+ l32*Njq*C2222 +
+ (l31*Njr+(l33+1)*Njp)*C2213 +
+ (l31*Njq+l32*Njp)*C2212 +
+ l31*Njp*C1122) +
+ (l11+1)*Nip*((l33+1)*Njr*C1133 +
+ (l32*Njr+(l33+1)*Njq)*C1123 +
+ l32*Njq*C1122 +
+ (l31*Njr+(l33+1)*Njp)*C1113 +
+ (l31*Njq+l32*Njp)*C1112 +
+ l31*Njp*C1111);
+
+ const double Ki1j0 =
+ l23*Nir*(l13*Njr*C3333 +
+ (l12*Njr+l13*Njq)*C3323 +
+ ((l11+1)*Njr+l13*Njp)*C3313 +
+ ((l11+1)*Njq+l12*Njp)*C3312 +
+ l12*Njq*C2233+(l11+1)*Njp*C1133) +
+ ((l22+1)*Nir+l23*Niq)*(l13*Njr*C3323 +
+ (l12*Njr+l13*Njq)*C2323 +
+ ((l11+1)*Njr+l13*Njp)*C2313 +
+ l12*Njq*C2223 +
+ ((l11+1)*Njq+l12*Njp)*C1223 +
+ (l11+1)*Njp*C1123) +
+ (l21*Nir+l23*Nip)*(l13*Njr*C3313 +
+ (l12*Njr+l13*Njq)*C2313 +
+ l12*Njq*C2213 +
+ ((l11+1)*Njr +
+ l13*Njp)*C1313 +
+ ((l11+1)*Njq+l12*Njp)*C1213 +
+ (l11+1)*Njp*C1113) +
+ (l21*Niq+(l22+1)*Nip)*(l13*Njr*C3312 +
+ l12*Njq*C2212 +
+ (l12*Njr+l13*Njq)*C1223 +
+ ((l11+1)*Njr+l13*Njp)*C1213 +
+ ((l11+1)*Njq+l12*Njp)*C1212 +
+ (l11+1)*Njp*C1112) +
+ (l22+1)*Niq*(l13*Njr*C2233 +
+ (l12*Njr+l13*Njq)*C2223 +
+ l12*Njq*C2222 +
+ ((l11+1)*Njr+l13*Njp)*C2213 +
+ ((l11+1)*Njq+l12*Njp)*C2212 +
+ (l11+1)*Njp*C1122) +
+ l21*Nip*(l13*Njr*C1133 +
+ (l12*Njr+l13*Njq)*C1123 +
+ l12*Njq*C1122 +
+ ((l11+1)*Njr+l13*Njp)*C1113 +
+ ((l11+1)*Njq+l12*Njp)*C1112 +
+ (l11+1)*Njp*C1111);
+
+ const double Ki1j1 =
+ l23*Nir*(l23*Njr*C3333 +
+ ((l22+1)*Njr+l23*Njq)*C3323 +
+ (l21*Njr+l23*Njp)*C3313 +
+ (l21*Njq+(l22+1)*Njp)*C3312 +
+ (l22+1)*Njq*C2233 +
+ l21*Njp*C1133) +
+ ((l22+1)*Nir+l23*Niq)*(l23*Njr*C3323 +
+ ((l22+1)*Njr+l23*Njq)*C2323 +
+ (l21*Njr+l23*Njp)*C2313 +
+ (l22+1)*Njq*C2223 +
+ (l21*Njq+(l22+1)*Njp)*C1223 +
+ l21*Njp*C1123) +
+ (l21*Nir+l23*Nip)*(l23*Njr*C3313 +
+ ((l22+1)*Njr+l23*Njq)*C2313 +
+ (l22+1)*Njq*C2213 +
+ (l21*Njr+l23*Njp)*C1313 +
+ (l21*Njq+(l22+1)*Njp)*C1213 +
+ l21*Njp*C1113) +
+ (l21*Niq+(l22+1)*Nip)*(l23*Njr*C3312 +
+ (l22+1)*Njq*C2212 +
+ ((l22+1)*Njr+l23*Njq)*C1223 +
+ (l21*Njr+l23*Njp)*C1213 +
+ (l21*Njq+(l22+1)*Njp)*C1212 +
+ l21*Njp*C1112) +
+ (l22+1)*Niq*(l23*Njr*C2233 +
+ ((l22+1)*Njr+l23*Njq)*C2223 +
+ (l22+1)*Njq*C2222 +
+ (l21*Njr+l23*Njp)*C2213 +
+ (l21*Njq+(l22+1)*Njp)*C2212 +
+ l21*Njp*C1122) +
+ l21*Nip*(l23*Njr*C1133 +
+ ((l22+1)*Njr+l23*Njq)*C1123 +
+ (l22+1)*Njq*C1122 +
+ (l21*Njr+l23*Njp)*C1113 +
+ (l21*Njq+(l22+1)*Njp)*C1112 +
+ l21*Njp*C1111);
+
+ const double Ki1j2 =
+ l23*Nir*((l33+1)*Njr*C3333 +
+ (l32*Njr+(l33+1)*Njq)*C3323 +
+ (l31*Njr+(l33+1)*Njp)*C3313 +
+ (l31*Njq+l32*Njp)*C3312 +
+ l32*Njq*C2233 +
+ l31*Njp*C1133) +
+ ((l22+1)*Nir+l23*Niq)*((l33+1)*Njr*C3323 +
+ (l32*Njr+(l33+1)*Njq)*C2323 +
+ (l31*Njr+(l33+1)*Njp)*C2313 +
+ l32*Njq*C2223 +
+ (l31*Njq+l32*Njp)*C1223 +
+ l31*Njp*C1123) +
+ (l21*Nir+l23*Nip)*((l33+1)*Njr*C3313 +
+ (l32*Njr+(l33+1)*Njq)*C2313 +
+ l32*Njq*C2213 +
+ (l31*Njr+(l33+1)*Njp)*C1313 +
+ (l31*Njq+l32*Njp)*C1213 +
+ l31*Njp*C1113) +
+ (l21*Niq+(l22+1)*Nip)*((l33+1)*Njr*C3312 +
+ l32*Njq*C2212 +
+ (l32*Njr+(l33+1)*Njq)*C1223 +
+ (l31*Njr+(l33+1)*Njp)*C1213 +
+ (l31*Njq+l32*Njp)*C1212 +
+ l31*Njp*C1112) +
+ (l22+1)*Niq*((l33+1)*Njr*C2233 +
+ (l32*Njr+(l33+1)*Njq)*C2223 +
+ l32*Njq*C2222 +
+ (l31*Njr+(l33+1)*Njp)*C2213 +
+ (l31*Njq+l32*Njp)*C2212 +
+ l31*Njp*C1122) +
+ l21*Nip*((l33+1)*Njr*C1133 +
+ (l32*Njr+(l33+1)*Njq)*C1123 +
+ l32*Njq*C1122 +
+ (l31*Njr+(l33+1)*Njp)*C1113 +
+ (l31*Njq+l32*Njp)*C1112+l31*Njp*C1111);
+
+ const double Ki2j0 =
+ (l33+1)*Nir*(l13*Njr*C3333 +
+ (l12*Njr+l13*Njq)*C3323 +
+ ((l11+1)*Njr+l13*Njp)*C3313 +
+ ((l11+1)*Njq+l12*Njp)*C3312 +
+ l12*Njq*C2233 +
+ (l11+1)*Njp*C1133) +
+ (l32*Nir+(l33+1)*Niq)*(l13*Njr*C3323 +
+ (l12*Njr+l13*Njq)*C2323 +
+ ((l11+1)*Njr+l13*Njp)*C2313 +
+ l12*Njq*C2223 +
+ ((l11+1)*Njq+l12*Njp)*C1223 +
+ (l11+1)*Njp*C1123) +
+ (l31*Nir+(l33+1)*Nip)*(l13*Njr*C3313 +
+ (l12*Njr+l13*Njq)*C2313 +
+ l12*Njq*C2213 +
+ ((l11+1)*Njr+l13*Njp)*C1313 +
+ ((l11+1)*Njq+l12*Njp)*C1213 +
+ (l11+1)*Njp*C1113) +
+ (l31*Niq+l32*Nip)*(l13*Njr*C3312 +
+ l12*Njq*C2212 +
+ (l12*Njr+l13*Njq)*C1223 +
+ ((l11+1)*Njr+l13*Njp)*C1213 +
+ ((l11+1)*Njq+l12*Njp)*C1212 +
+ (l11+1)*Njp*C1112) +
+ l32*Niq*(l13*Njr*C2233 +
+ (l12*Njr+l13*Njq)*C2223 +
+ l12*Njq*C2222 +
+ ((l11+1)*Njr+l13*Njp)*C2213 +
+ ((l11+1)*Njq+l12*Njp)*C2212 +
+ (l11+1)*Njp*C1122) +
+ l31*Nip*(l13*Njr*C1133 +
+ (l12*Njr+l13*Njq)*C1123 +
+ l12*Njq*C1122 +
+ ((l11+1)*Njr+l13*Njp)*C1113 +
+ ((l11+1)*Njq+l12*Njp)*C1112 +
+ (l11+1)*Njp*C1111);
+
+ const double Ki2j1 =
+ (l33+1)*Nir*(l23*Njr*C3333 +
+ ((l22+1)*Njr+l23*Njq)*C3323 +
+ (l21*Njr+l23*Njp)*C3313 +
+ (l21*Njq+(l22+1)*Njp)*C3312 +
+ (l22+1)*Njq*C2233 +
+ l21*Njp*C1133) +
+ (l32*Nir+(l33+1)*Niq)*(l23*Njr*C3323 +
+ ((l22+1)*Njr+l23*Njq)*C2323 +
+ (l21*Njr+l23*Njp)*C2313 +
+ (l22+1)*Njq*C2223 +
+ (l21*Njq+(l22+1)*Njp)*C1223 +
+ l21*Njp*C1123) +
+ (l31*Nir+(l33+1)*Nip)*(l23*Njr*C3313 +
+ ((l22+1)*Njr+l23*Njq)*C2313 +
+ (l22+1)*Njq*C2213 +
+ (l21*Njr+l23*Njp)*C1313 +
+ (l21*Njq+(l22+1)*Njp)*C1213 +
+ l21*Njp*C1113) +
+ (l31*Niq+l32*Nip)*(l23*Njr*C3312 +
+ (l22+1)*Njq*C2212 +
+ ((l22+1)*Njr+l23*Njq)*C1223 +
+ (l21*Njr+l23*Njp)*C1213 +
+ (l21*Njq+(l22+1)*Njp)*C1212 +
+ l21*Njp*C1112) +
+ l32*Niq*(l23*Njr*C2233 +
+ ((l22+1)*Njr+l23*Njq)*C2223 +
+ (l22+1)*Njq*C2222 +
+ (l21*Njr+l23*Njp)*C2213 +
+ (l21*Njq+(l22+1)*Njp)*C2212 +
+ l21*Njp*C1122) +
+ l31*Nip*(l23*Njr*C1133 +
+ ((l22+1)*Njr+l23*Njq)*C1123 +
+ (l22+1)*Njq*C1122 +
+ (l21*Njr+l23*Njp)*C1113 +
+ (l21*Njq+(l22+1)*Njp)*C1112 +
+ l21*Njp*C1111);
+
+ const double Ki2j2 =
+ (l33+1)*Nir*((l33+1)*Njr*C3333 +
+ (l32*Njr+(l33+1)*Njq)*C3323 +
+ (l31*Njr+(l33+1)*Njp)*C3313 +
+ (l31*Njq+l32*Njp)*C3312 +
+ l32*Njq*C2233 +
+ l31*Njp*C1133) +
+ (l32*Nir+(l33+1)*Niq)*((l33+1)*Njr*C3323 +
+ (l32*Njr+(l33+1)*Njq)*C2323 +
+ (l31*Njr+(l33+1)*Njp)*C2313 +
+ l32*Njq*C2223 +
+ (l31*Njq+l32*Njp)*C1223 +
+ l31*Njp*C1123) +
+ (l31*Nir+(l33+1)*Nip)*((l33+1)*Njr*C3313 +
+ (l32*Njr+(l33+1)*Njq)*C2313 +
+ l32*Njq*C2213 +
+ (l31*Njr+(l33+1)*Njp)*C1313 +
+ (l31*Njq+l32*Njp)*C1213 +
+ l31*Njp*C1113) +
+ (l31*Niq+l32*Nip)*((l33+1)*Njr*C3312 +
+ l32*Njq*C2212 +
+ (l32*Njr+(l33+1)*Njq)*C1223 +
+ (l31*Njr+(l33+1)*Njp)*C1213 +
+ (l31*Njq+l32*Njp)*C1212 +
+ l31*Njp*C1112) +
+ l32*Niq*((l33+1)*Njr*C2233 +
+ (l32*Njr+(l33+1)*Njq)*C2223 +
+ l32*Njq*C2222 +
+ (l31*Njr+(l33+1)*Njp)*C2213 +
+ (l31*Njq+l32*Njp)*C2212 +
+ l31*Njp*C1122) +
+ l31*Nip*((l33+1)*Njr*C1133 +
+ (l32*Njr+(l33+1)*Njq)*C1123 +
+ l32*Njq*C1122 +
+ (l31*Njr+(l33+1)*Njp)*C1113 +
+ (l31*Njq+l32*Njp)*C1112 +
+ l31*Njp*C1111);
+
+ const double Knl =
+ Nir*(Njr*s33+Njq*s23+Njp*s13) +
+ Niq*(Njr*s23+Njq*s22+Njp*s12) +
+ Nip*(Njr*s13+Njq*s12+Njp*s11);
+
+ const int iBlock = iB * (numBasis*spaceDim);
+ const int iBlock1 = (iB+1) * (numBasis*spaceDim);
+ const int iBlock2 = (iB+2) * (numBasis*spaceDim);
+ const int jBlock = jB;
+ const int jBlock1 = jB+1;
+ const int jBlock2 = jB+2;
+ _cellMatrix[iBlock +jBlock ] += Ki0j0 + Knl;
+ _cellMatrix[iBlock +jBlock1] += Ki0j1;
+ _cellMatrix[iBlock +jBlock2] += Ki0j2;
+ _cellMatrix[iBlock1+jBlock ] += Ki1j0;
+ _cellMatrix[iBlock1+jBlock1] += Ki1j1 + Knl;
+ _cellMatrix[iBlock1+jBlock2] += Ki1j2;
+ _cellMatrix[iBlock2+jBlock ] += Ki2j0;
+ _cellMatrix[iBlock2+jBlock1] += Ki2j1;
+ _cellMatrix[iBlock2+jBlock2] += Ki2j2 + Knl;
+ } // for
+ } // for
+ } // for
+ PetscLogFlops(numQuadPts*(1+numBasis*(3+numBasis*(6*26+9))));
+} // _elasticityJacobian3D
+
+// ----------------------------------------------------------------------
+// Calculate Green-Lagrange strain tensor at quadrature points of a 1-D cell.
+void
+pylith::feassemble::IntegratorElasticityLgDeform::_calcTotalStrain1D(
+ double_array* strain,
+ const double_array& deform,
+ const int numQuadPts)
+{ // _calcTotalStrain1D
+ // Green-Lagrange strain tensor = 1/2 ( X^T X - I )
+ // X: deformation tensor
+ // I: identity matrix
+
+ assert(0 != strain);
+
+ const int dim = 1;
+ const int strainSize = 1;
+ assert(deform.size() == numQuadPts*dim*dim);
+ assert(strain->size() == numQuadPts*strainSize);
+
+
+ for (int iQuad=0; iQuad < numQuadPts; ++iQuad)
+ (*strain)[iQuad] = 0.5*(deform[iQuad]*deform[iQuad] - 1.0);
+} // _calcTotalStrain1D
+
+// ----------------------------------------------------------------------
+// Calculate Green-Lagrange strain tensor at quadrature points of a 2-D cell.
+void
+pylith::feassemble::IntegratorElasticityLgDeform::_calcTotalStrain2D(
+ double_array* strain,
+ const double_array& deform,
+ const int numQuadPts)
+{ // _calcTotalStrain2D
+ // Green-Lagrange strain tensor = 1/2 ( X^T X - I )
+ // X: deformation tensor
+ // I: identity matrix
+
+ assert(0 != strain);
+
+ const int dim = 2;
+ const int deformSize = dim*dim;
+ const int strainSize = 3;
+ assert(deform.size() == numQuadPts*deformSize);
+ assert(strain->size() == numQuadPts*strainSize);
+
+ for (int iQuad=0, iDeform=0, iStrain=0;
+ iQuad < numQuadPts;
+ ++iQuad, iDeform+=deformSize, iStrain+=strainSize) {
+ (*strain)[iStrain ] =
+ 0.5 * (deform[iDeform ]*deform[iDeform ] +
+ deform[iDeform+2]*deform[iDeform+2] - 1.0);
+ (*strain)[iStrain+1] =
+ 0.5 * (deform[iDeform+1]*deform[iDeform+1] +
+ deform[iDeform+3]*deform[iDeform+3] - 1.0);
+ (*strain)[iStrain+2] =
+ 0.5 * (deform[iDeform ]*deform[iDeform+1] +
+ deform[iDeform+2]*deform[iDeform+3]);
+ } // for
+} // _calcTotalStrain2D
+
+// ----------------------------------------------------------------------
+// Calculate Green-Lagrange strain tensor at quadrature points of a 3-D cell.
+void
+pylith::feassemble::IntegratorElasticityLgDeform::_calcTotalStrain3D(
+ double_array* strain,
+ const double_array& deform,
+ const int numQuadPts)
+{ // _calcTotalStrain3D
+ // Green-Lagrange strain tensor = 1/2 ( X^T X - I )
+ // X: deformation tensor
+ // I: identity matrix
+
+ assert(0 != strain);
+
+ const int dim = 3;
+ const int deformSize = dim*dim;
+ const int strainSize = 6;
+ assert(deform.size() == numQuadPts*dim*dim);
+ assert(strain->size() == numQuadPts*strainSize);
+
+ for (int iQuad=0, iDeform=0, iStrain=0;
+ iQuad < numQuadPts;
+ ++iQuad, iDeform+=deformSize, iStrain+=strainSize) {
+ (*strain)[iStrain ] =
+ 0.5 * (deform[iDeform ]*deform[iDeform ] +
+ deform[iDeform+3]*deform[iDeform+3] +
+ deform[iDeform+6]*deform[iDeform+6] - 1.0);
+ (*strain)[iStrain+1] =
+ 0.5 * (deform[iDeform+1]*deform[iDeform+1] +
+ deform[iDeform+4]*deform[iDeform+4] +
+ deform[iDeform+7]*deform[iDeform+7] - 1.0);
+ (*strain)[iStrain+2] =
+ 0.5 * (deform[iDeform+2]*deform[iDeform+2] +
+ deform[iDeform+5]*deform[iDeform+5] +
+ deform[iDeform+8]*deform[iDeform+8] - 1.0);
+ (*strain)[iStrain+3] =
+ 0.5 * (deform[iDeform ]*deform[iDeform+1] +
+ deform[iDeform+3]*deform[iDeform+4] +
+ deform[iDeform+6]*deform[iDeform+7]);
+ (*strain)[iStrain+4] =
+ 0.5 * (deform[iDeform+1]*deform[iDeform+2] +
+ deform[iDeform+4]*deform[iDeform+5] +
+ deform[iDeform+7]*deform[iDeform+8]);
+ (*strain)[iStrain+5] =
+ 0.5 * (deform[iDeform+0]*deform[iDeform+2] +
+ deform[iDeform+3]*deform[iDeform+5] +
+ deform[iDeform+6]*deform[iDeform+8]);
+ } // for
+} // _calcTotalStrain3D
+
+// ----------------------------------------------------------------------
+// Calculate deformation tensor.
+void
+pylith::feassemble::IntegratorElasticityLgDeform::_calcDeformation(
+ double_array* deform,
+ const double_array& basisDeriv,
+ const double_array& vertices,
+ const double_array& disp,
+ const int numBasis,
+ const int numQuadPts,
+ const int dim)
+{ // _calcDeformation
+ assert(0 != deform);
+
+ assert(basisDeriv.size() == numQuadPts*numBasis*dim);
+ assert(disp.size() == numBasis*dim);
+
+ const int deformSize = dim*dim;
+
+ (*deform) = 0.0;
+ for (int iQuad=0; iQuad < numQuadPts; ++iQuad)
+ 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]);
+
+} // _calcDeformation
+
+
+// End of file
Copied: short/3D/PyLith/trunk/libsrc/feassemble/IntegratorElasticityLgDeform.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/libsrc/feassemble/IntegratorElasticityLgDeform.hh)
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/IntegratorElasticityLgDeform.hh (rev 0)
+++ short/3D/PyLith/trunk/libsrc/feassemble/IntegratorElasticityLgDeform.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,214 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+/**
+ * @file libsrc/feassemble/IntegratorElasticityLgDeform.hh
+ *
+ * @brief Object containing general elasticity operations for implicit
+ * and explicit time integration of the elasticity equation for large
+ * rigid body rotations and small strains.
+ */
+
+#if !defined(pylith_feassemble_integratorelasticitylgdeform_hh)
+#define pylith_feassemble_integratorelasticitylgdeform_hh
+
+// Include directives ---------------------------------------------------
+#include "IntegratorElasticity.hh" // ISA IntegratorElasticity
+
+// IntegratorElasticity -------------------------------------------------
+/** @brief General elasticity operations for implicit and explicit
+ * time integration of the elasticity equation for large rigid body
+ * rotations and small strains.
+ */
+class pylith::feassemble::IntegratorElasticityLgDeform :
+ public IntegratorElasticity
+{ // IntegratorElasticityLgDeform
+ friend class TestIntegratorElasticityLgDeform; // unit testing
+
+// PUBLIC TYPEDEFS //////////////////////////////////////////////////////
+public :
+
+ typedef void (*totalStrain_fn_type)(double_array*,
+ const double_array&,
+ const int);
+
+
+// PUBLIC MEMBERS ///////////////////////////////////////////////////////
+public :
+
+ /// Constructor
+ IntegratorElasticityLgDeform(void);
+
+ /// Destructor
+ virtual
+ ~IntegratorElasticityLgDeform(void);
+
+ /** Determine whether we need to recompute the Jacobian.
+ *
+ * @returns True if Jacobian needs to be recomputed, false otherwise.
+ */
+ bool needNewJacobian(void);
+
+ /** Update state variables as needed.
+ *
+ * @param t Current time
+ * @param fields Solution fields
+ * @param mesh Finite-element mesh
+ */
+ void updateStateVars(const double t,
+ topology::SolutionFields* const fields);
+
+// PROTECTED METHODS ////////////////////////////////////////////////////
+protected :
+
+ /** Calculate stress or strain field from solution field.
+ *
+ * @param field Field in which to store stress or strain.
+ * @param name Name of field to compute ('total-strain' or 'stress')
+ * @param fields Manager for solution fields.
+ */
+ void _calcStrainStressField(topology::Field<topology::Mesh>* field,
+ const char* name,
+ topology::SolutionFields* const fields);
+
+ /** Calculate stress field from total strain field. Stress field
+ * replaces strain field in section.
+ *
+ * @param field Field in which to store stress.
+ */
+ void _calcStressFromStrain(topology::Field<topology::Mesh>* field);
+
+
+ /** Integrate elasticity term in residual for 1-D cells.
+ *
+ * @param stress Stress tensor for cell at quadrature points.
+ * @param disp Displacement field at cell's DOF.
+ */
+ void _elasticityResidual1D(const double_array& stress,
+ const double_array& disp);
+
+ /** Integrate elasticity term in residual for 2-D cells.
+ *
+ * @param stress Stress tensor for cell at quadrature points.
+ * @param disp Displacement field at cell's DOF.
+ */
+ void _elasticityResidual2D(const double_array& stress,
+ const double_array& disp);
+
+ /** Integrate elasticity term in residual for 3-D cells.
+ *
+ * @param stress Stress tensor for cell at quadrature points.
+ * @param disp Displacement field at cell's DOF.
+ */
+ void _elasticityResidual3D(const double_array& stress,
+ const double_array& disp);
+
+ /** Integrate elasticity term in Jacobian for 1-D cells.
+ *
+ * @param elasticConsts Matrix of elasticity constants at quadrature points.
+ * @param stress Stress tensor for cell at quadrature points.
+ * @param disp Displacement field at cell's DOF.
+ */
+ void _elasticityJacobian1D(const double_array& elasticConsts,
+ const double_array& stress,
+ const double_array& disp);
+
+ /** Integrate elasticity term in Jacobian for 2-D cells.
+ *
+ * @param elasticConsts Matrix of elasticity constants at quadrature points.
+ * @param stress Stress tensor for cell at quadrature points.
+ * @param disp Displacement field at cell's DOF.
+ */
+ void _elasticityJacobian2D(const double_array& elasticConsts,
+ const double_array& stress,
+ const double_array& disp);
+
+ /** Integrate elasticity term in Jacobian for 3-D cells.
+ *
+ * @param elasticConsts Matrix of elasticity constants at quadrature points.
+ * @param stress Stress tensor for cell at quadrature points.
+ * @param disp Displacement field at cell's DOF.
+ */
+ void _elasticityJacobian3D(const double_array& elasticConsts,
+ const double_array& stress,
+ const double_array& disp);
+
+ /** Calculate Green-Lagrange strain tensor at quadrature points of a
+ * 1-D cell.
+ *
+ * @param strain Green-Lagrange strain tensor at quadrature points (output).
+ * @param deform Deformation tensor at quadrature points.
+ * @param numQuadPts Number of quadrature points.
+ */
+ static
+ void _calcTotalStrain1D(double_array* strain,
+ const double_array& deform,
+ const int numQuadPts);
+
+ /** Calculate Green-Lagrange strain tensor at quadrature points of a
+ * 2-D cell.
+ *
+ * @param strain Green-Lagrange strain tensor at quadrature points (output).
+ * @param deform Deformation tensor at quadrature points.
+ * @param numQuadPts Number of quadrature points.
+ */
+ static
+ void _calcTotalStrain2D(double_array* strain,
+ const double_array& deform,
+ const int numQuadPts);
+
+ /** Calculate Green-Lagrange strain tensor at quadrature points of a
+ * 3-D cell.
+ *
+ * @param strain Green-Lagrange strain tensor at quadrature points (output).
+ * @param deform Deformation tensor at quadrature points.
+ * @param numQuadPts Number of quadrature points.
+ */
+ static
+ void _calcTotalStrain3D(double_array* strain,
+ const double_array& deform,
+ const int numQuadPts);
+
+ /** Calculate deformation tensor.
+ *
+ * @param deform Deformation tensor for cell at quadrature points.
+ * @param basisDeriv Derivatives of basis functions at quadrature points.
+ * @param vertices Coordinates of vertices in reference cell.
+ * @param disp Displacements of DOF of cell.
+ * @param numBasis Number of basis functions for cell.
+ * @param numQuadPts Number of quadrature points.
+ * @param dim Dimension of cell.
+ */
+ static
+ void _calcDeformation(double_array* deform,
+ const double_array& basisDeriv,
+ const double_array& vertices,
+ const double_array& disp,
+ const int numBasis,
+ const int numQuadPts,
+ const int dim);
+
+// NOT IMPLEMENTED //////////////////////////////////////////////////////
+private :
+
+ /// Not implemented.
+ IntegratorElasticityLgDeform(const IntegratorElasticityLgDeform&);
+
+ /// Not implemented
+ const IntegratorElasticityLgDeform& operator=(const IntegratorElasticityLgDeform&);
+
+}; // IntegratorElasticityLgDeform
+
+#endif // pylith_feassemble_integratorelasticitylgdeform_hh
+
+
+// End of file
Modified: short/3D/PyLith/trunk/libsrc/feassemble/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Makefile.am 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Makefile.am 2009-12-10 01:52:12 UTC (rev 16094)
@@ -19,11 +19,14 @@
Constraint.hh \
Constraint.icc \
ElasticityExplicit.hh \
+ ElasticityExplicitLgDeform.hh \
ElasticityImplicit.hh \
+ ElasticityImplicitLgDeform.hh \
Integrator.hh \
Integrator.icc \
Integrator.cc \
IntegratorElasticity.hh \
+ IntegratorElasticityLgDeform.hh \
GeometryPoint1D.hh \
GeometryPoint2D.hh \
GeometryPoint3D.hh \
Modified: short/3D/PyLith/trunk/libsrc/feassemble/Quadrature.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Quadrature.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Quadrature.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,19 +11,10 @@
//
/**
- * @file pylith/feassemble/Quadrature.hh
+ * @file libsrc/feassemble/Quadrature.hh
*
* @brief Abstract base class for integrating over finite-elements
* using quadrature.
- *
- * This object contains the informatio needed to perform numerical
- * quadrature over a finite-element cell. It inherits quadrature
- * information over the reference cell from the QuadratureRefCell object.
-
- * Given a cell this object will compute the cell's Jacobian, the
- * determinant of the Jacobian, the inverse of the Jacobian, and the
- * coordinates in the domain of the cell's quadrature points. The
- * Jacobian and its inverse are computed at the quadrature points.
*/
#if !defined(pylith_feassemble_quadrature_hh)
@@ -37,6 +28,19 @@
#include "pylith/utils/array.hh" // HASA double_array
// Quadrature -----------------------------------------------------------
+/** @brief Abstract base class for integrating over finite-elements
+ * using quadrature.
+ *
+ * This object contains the informatio needed to perform numerical
+ * quadrature over a finite-element cell. It inherits quadrature
+ * information over the reference cell from the QuadratureRefCell
+ * object.
+ *
+ * Given a cell this object will compute the cell's Jacobian, the
+ * determinant of the Jacobian, the inverse of the Jacobian, and the
+ * coordinates in the domain of the cell's quadrature points. The
+ * Jacobian and its inverse are computed at the quadrature points.
+ */
template<typename mesh_type>
class pylith::feassemble::Quadrature : public QuadratureRefCell
{ // Quadrature
Modified: short/3D/PyLith/trunk/libsrc/feassemble/Quadrature0D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Quadrature0D.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Quadrature0D.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,25 +11,23 @@
//
/**
- * @file pylith/feassemble/Quadrature0D.hh
+ * @file libsrc/feassemble/Quadrature0D.hh
*
* @brief Quadrature for 0-D finite-elements.
- *
- * Need Quadrature in 0-D for integration of boundary condition for
- * 1-D meshes.
*/
#if !defined(pylith_feassemble_quadrature0d_hh)
#define pylith_feassemble_quadrature0d_hh
+// Include directives ---------------------------------------------------
#include "QuadratureEngine.hh"
-namespace pylith {
- namespace feassemble {
- class TestQuadrature0D;
- } // feassemble
-} // pylith
-
+// Quadrature0D ---------------------------------------------------------
+/** @brief Quadrature for 0-D finite-elements.
+ *
+ * Need Quadrature in 0-D for integration of boundary condition for
+ * 1-D meshes.
+ */
class pylith::feassemble::Quadrature0D : public QuadratureEngine
{ // Quadrature0D
friend class TestQuadrature0D; // unit testing
Modified: short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1D.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1D.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
/**
- * @file pylith/feassemble/Quadrature1D.hh
+ * @file libsrc/feassemble/Quadrature1D.hh
*
* @brief Quadrature for 1-D finite-elements.
*/
@@ -19,8 +19,11 @@
#if !defined(pylith_feassemble_quadrature1d_hh)
#define pylith_feassemble_quadrature1d_hh
+// Include directives ---------------------------------------------------
#include "QuadratureEngine.hh" // ISA Quadrature
+// Quadrature1D ---------------------------------------------------------
+/// Quadrature for 1-D finite-elements.
class pylith::feassemble::Quadrature1D : public QuadratureEngine
{ // Quadrature1D
friend class TestQuadrature1D; // unit testing
Modified: short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1Din2D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1Din2D.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1Din2D.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
/**
- * @file pylith/feassemble/Quadrature1Din2D.hh
+ * @file libsrc/feassemble/Quadrature1Din2D.hh
*
* @brief Quadrature for 1-D finite-elements in 2-D space.
*/
@@ -19,14 +19,11 @@
#if !defined(pylith_feassemble_quadrature1din2d_hh)
#define pylith_feassemble_quadrature1din2d_hh
+// Include directives ---------------------------------------------------
#include "QuadratureEngine.hh"
-namespace pylith {
- namespace feassemble {
- class Quadrature1Din2D;
- } // feassemble
-} // pylith
-
+// Quadrature0D ---------------------------------------------------------
+/// Quadrature for 1-D finite-elements in 2-D space.
class pylith::feassemble::Quadrature1Din2D : public QuadratureEngine
{ // Quadrature1Din2D
friend class TestQuadrature1Din2D; // unit testing
Modified: short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1Din3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1Din3D.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1Din3D.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
/**
- * @file pylith/feassemble/Quadrature1Din3D.hh
+ * @file libsrc/feassemble/Quadrature1Din3D.hh
*
* @brief Quadrature for 1-D finite-elements in 3-D space.
*/
@@ -19,14 +19,12 @@
#if !defined(pylith_feassemble_quadrature1din3d_hh)
#define pylith_feassemble_quadrature1din3d_hh
+// Include directives ---------------------------------------------------
#include "QuadratureEngine.hh"
-namespace pylith {
- namespace feassemble {
- class Quadrature1Din3D;
- } // feassemble
-} // pylith
-
+// Quadrature0D ---------------------------------------------------------
+/** @brief Quadrature for 1-D finite-elements in 3-D space.
+ */
class pylith::feassemble::Quadrature1Din3D : public QuadratureEngine
{ // Quadrature1Din3D
friend class TestQuadrature1Din3D; // unit testing
Modified: short/3D/PyLith/trunk/libsrc/feassemble/Quadrature2D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Quadrature2D.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Quadrature2D.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
/**
- * @file pylith/feassemble/Quadrature2D.hh
+ * @file libsrc/feassemble/Quadrature2D.hh
*
* @brief Quadrature for 2-D finite-elements in 2-D space.
*/
@@ -19,15 +19,11 @@
#if !defined(pylith_feassemble_quadrature2d_hh)
#define pylith_feassemble_quadrature2d_hh
+// Include directives ---------------------------------------------------
#include "QuadratureEngine.hh"
-namespace pylith {
- namespace feassemble {
- class Quadrature2D;
- class TestQuadrature2D;
- } // feassemble
-} // pylith
-
+// Quadrature0D ---------------------------------------------------------
+/// Quadrature for 2-D finite-elements in 2-D space.
class pylith::feassemble::Quadrature2D : public QuadratureEngine
{ // Quadrature2D
friend class TestQuadrature2D; // unit testing
Modified: short/3D/PyLith/trunk/libsrc/feassemble/Quadrature2Din3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Quadrature2Din3D.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Quadrature2Din3D.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
/**
- * @file pylith/feassemble/Quadrature2Din3D.hh
+ * @file libsrc/feassemble/Quadrature2Din3D.hh
*
* @brief Quadrature for 2-D finite-elements in 3-D space.
*/
@@ -19,15 +19,11 @@
#if !defined(pylith_feassemble_quadrature2din3d_hh)
#define pylith_feassemble_quadrature2din3d_hh
+// Include directives ---------------------------------------------------
#include "QuadratureEngine.hh"
-namespace pylith {
- namespace feassemble {
- class Quadrature2Din3D;
- class TestQuadrature2Din3D;
- } // feassemble
-} // pylith
-
+// Quadrature0D ---------------------------------------------------------
+/// Quadrature for 2-D finite-elements in 3-D space.
class pylith::feassemble::Quadrature2Din3D : public QuadratureEngine
{ // Quadrature2Din3D
friend class TestQuadrature2Din3D; // unit testing
Modified: short/3D/PyLith/trunk/libsrc/feassemble/Quadrature3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Quadrature3D.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Quadrature3D.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
/**
- * @file pylith/feassemble/Quadrature3D.hh
+ * @file libsrc/feassemble/Quadrature3D.hh
*
* @brief Quadrature for 3-D finite-elements.
*/
@@ -19,8 +19,11 @@
#if !defined(pylith_feassemble_quadrature3d_hh)
#define pylith_feassemble_quadrature3d_hh
-#include "QuadratureEngine.hh" // ISA QuadratureEngine
+// Include directives ---------------------------------------------------
+#include "QuadratureEngine.hh"
+// Quadrature0D ---------------------------------------------------------
+/// Quadrature for 3-D finite-elements in 3-D space.
class pylith::feassemble::Quadrature3D : public QuadratureEngine
{ // Quadrature3D
friend class TestQuadrature3D; // unit testing
Modified: short/3D/PyLith/trunk/libsrc/feassemble/QuadratureEngine.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/QuadratureEngine.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/feassemble/QuadratureEngine.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
/**
- * @file pylith/feassemble/QuadratureEngine.hh
+ * @file libsrc/feassemble/QuadratureEngine.hh
*
* @brief Abstract base class for quadrature computation engine.
*/
@@ -19,9 +19,12 @@
#if !defined(pylith_feassemble_quadratureengine_hh)
#define pylith_feassemble_quadratureengine_hh
+// Include directives ---------------------------------------------------
#include "feassemblefwd.hh" // forward declaration
#include "pylith/utils/array.hh" // USES double_array
+// Quadrature0D ---------------------------------------------------------
+/// Abstract base class for quadrature computation engine.
class pylith::feassemble::QuadratureEngine
{ // QuadratureEngine
friend class TestQuadratureEngine;
Modified: short/3D/PyLith/trunk/libsrc/feassemble/QuadratureRefCell.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/QuadratureRefCell.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/feassemble/QuadratureRefCell.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,16 +11,10 @@
//
/**
- * @file pylith/feassemble/QuadratureRefCell.hh
+ * @file libsrc/feassemble/QuadratureRefCell.hh
*
- * @brief Object with basic quadrature information for the reference cell.
- *
- * This object contains the basis functions and their derivatives
- * evaluated at the quadrature points of the reference element, and
- * the coordinates and weights of the quadrature points.
- *
- * The Quadrature object manages the general functionality of the
- * numerical quadrature.
+ * @brief Object with basic quadrature information for the reference
+ * cell.
*/
#if !defined(pylith_feassemble_quadraturerefcell_hh)
@@ -32,6 +26,16 @@
#include "pylith/utils/array.hh" // HASA double_array
// Quadrature -----------------------------------------------------------
+/** @brief Object with basic quadrature information for the reference
+ * cell.
+ *
+ * This object contains the basis functions and their derivatives
+ * evaluated at the quadrature points of the reference element, and
+ * the coordinates and weights of the quadrature points.
+ *
+ * The Quadrature object manages the general functionality of the
+ * numerical quadrature.
+ */
class pylith::feassemble::QuadratureRefCell
{ // Quadrature
friend class TestQuadratureRefCell; // unit testing
Modified: short/3D/PyLith/trunk/libsrc/feassemble/feassemblefwd.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/feassemblefwd.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/feassemble/feassemblefwd.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -56,6 +56,10 @@
class ElasticityImplicit;
class ElasticityExplicit;
+ class IntegratorElasticityLgDeform;
+ class ElasticityImplicitLgDeform;
+ class ElasticityExplicitLgDeform;
+
} // feassemble
} // pylith
Copied: short/3D/PyLith/trunk/libsrc/feassemble/jacobian2d_lgdeform.wxm (from rev 16093, short/3D/PyLith/branches/pylith-friction/libsrc/feassemble/jacobian2d_lgdeform.wxm)
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/jacobian2d_lgdeform.wxm (rev 0)
+++ short/3D/PyLith/trunk/libsrc/feassemble/jacobian2d_lgdeform.wxm 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,53 @@
+/* [wxMaxima batch file version 1] [ DO NOT EDIT BY HAND! ]*/
+/* [ Created with wxMaxima version 0.8.2 ] */
+
+/* [wxMaxima: input start ] */
+Bnl: matrix([N11,0,N21,0,N31,0],
+[N12,0,N22,0,N32,0],
+[0,N11,0,N21,0,N31],
+[0,N12,0,N22,0,N32]);
+/* [wxMaxima: input end ] */
+
+/* [wxMaxima: input start ] */
+S: matrix([S11,S12,0,0],
+[S12,S22,0,0],
+[0,0,S11,S12],
+[0,0,S12,S22]);
+/* [wxMaxima: input end ] */
+
+/* [wxMaxima: input start ] */
+x: transpose(Bnl) . S . Bnl;
+/* [wxMaxima: input end ] */
+
+/* [wxMaxima: input start ] */
+Bi: matrix([Nip*(1+l11), l21*Nip],
+[l12*Niq,(1+l22)*Niq],
+[(1+l11)*Niq+l12*Nip,(1+l22)*Nip+l21*Niq]);
+/* [wxMaxima: input end ] */
+
+/* [wxMaxima: input start ] */
+Bj: matrix([Njp*(1+l11), l21*Njp],
+[l12*Njq,(1+l22)*Njq],
+[(1+l11)*Njq+l12*Njp,(1+l22)*Njp+l21*Njq]);
+/* [wxMaxima: input end ] */
+
+/* [wxMaxima: input start ] */
+C: matrix([C1111, C1122, C1112],
+[C1122, C2222, C2212],
+[C1112, C2212, C1212]);
+/* [wxMaxima: input end ] */
+
+/* [wxMaxima: input start ] */
+y: transpose(Bi) . C . Bj;
+/* [wxMaxima: input end ] */
+
+/* [wxMaxima: input start ] */
+Svec: matrix([s11, s22, s12]);
+/* [wxMaxima: input end ] */
+
+/* [wxMaxima: input start ] */
+r: transpose(Bi) . transpose(Svec);
+/* [wxMaxima: input end ] */
+
+/* Maxima can't load/batch files which end with a comment! */
+"Created with wxMaxima"$
Copied: short/3D/PyLith/trunk/libsrc/feassemble/jacobian3d_lgdeform.wxm (from rev 16093, short/3D/PyLith/branches/pylith-friction/libsrc/feassemble/jacobian3d_lgdeform.wxm)
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/jacobian3d_lgdeform.wxm (rev 0)
+++ short/3D/PyLith/trunk/libsrc/feassemble/jacobian3d_lgdeform.wxm 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,84 @@
+/* [wxMaxima batch file version 1] [ DO NOT EDIT BY HAND! ]*/
+/* [ Created with wxMaxima version 0.8.2 ] */
+
+/* [wxMaxima: input start ] */
+Bnli: matrix([Nip,0,0],
+[Niq,0,0],
+[Nir,0,0],
+[0,Nip,0],
+[0,Niq,0],
+[0,Nir,0],
+[0,0,Nip],
+[0,0,Niq],
+[0,0,Nir]);
+/* [wxMaxima: input end ] */
+
+/* [wxMaxima: input start ] */
+Bnlj: matrix([Njp,0,0],
+[Njq,0,0],
+[Njr,0,0],
+[0,Njp,0],
+[0,Njq,0],
+[0,Njr,0],
+[0,0,Njp],
+[0,0,Njq],
+[0,0,Njr]);
+/* [wxMaxima: input end ] */
+
+/* [wxMaxima: input start ] */
+S: matrix([s11,s12,s13,0,0,0,0,0,0],
+[s12,s22,s23,0,0,0,0,0,0],
+[s13,s23,s33,0,0,0,0,0,0],
+[0,0,0,s11,s12,s13,0,0,0],
+[0,0,0,s12,s22,s23,0,0,0],
+[0,0,0,s13,s23,s33,0,0,0],
+[0,0,0,0,0,0,s11,s12,s13],
+[0,0,0,0,0,0,s12,s22,s23],
+[0,0,0,0,0,0,s13,s23,s33]);
+/* [wxMaxima: input end ] */
+
+/* [wxMaxima: input start ] */
+x: transpose(Bnli) . S . Bnlj;
+/* [wxMaxima: input end ] */
+
+/* [wxMaxima: input start ] */
+Bi: matrix([Nip*(1+l11), l21*Nip, l31*Nip],
+[l12*Niq,(1+l22)*Niq, l32*Niq],
+[l13*Nir, l23*Nir, (1+l33)*Nir],
+[(1+l11)*Niq+l12*Nip,(1+l22)*Nip+l21*Niq,l31*Niq+l32*Nip],
+[l12*Nir+l13*Niq, (1+l22)*Nir+l23*Niq, (1+l33)*Niq+l32*Nir],
+[(1+l11)*Nir+l13*Nip, l21*Nir+l23*Nip, (1+l33)*Nip+l31*Nir]);
+/* [wxMaxima: input end ] */
+
+/* [wxMaxima: input start ] */
+Bj: matrix([Njp*(1+l11), l21*Njp, l31*Njp],
+[l12*Njq,(1+l22)*Njq, l32*Njq],
+[l13*Njr, l23*Njr, (1+l33)*Njr],
+[(1+l11)*Njq+l12*Njp,(1+l22)*Njp+l21*Njq,l31*Njq+l32*Njp],
+[l12*Njr+l13*Njq, (1+l22)*Njr+l23*Njq, (1+l33)*Njq+l32*Njr],
+[(1+l11)*Njr+l13*Njp, l21*Njr+l23*Njp, (1+l33)*Njp+l31*Njr]);
+/* [wxMaxima: input end ] */
+
+/* [wxMaxima: input start ] */
+C: matrix([C1111, C1122, C1133, C1112, C1123, C1113],
+[C1122, C2222, C2233, C2212, C2223, C2213],
+[C1133, C2233, C3333, C3312, C3323, C3313],
+[C1112, C2212, C3312, C1212, C1223, C1213],
+[C1123, C2223, C3323, C1223, C2323, C2313],
+[C1113, C2213, C3313, C1213, C2313, C1313]);
+/* [wxMaxima: input end ] */
+
+/* [wxMaxima: input start ] */
+y: transpose(Bi) . C . Bj;
+/* [wxMaxima: input end ] */
+
+/* [wxMaxima: input start ] */
+Svec: matrix([s11,s22,s33,s12,s23,s13]);
+/* [wxMaxima: input end ] */
+
+/* [wxMaxima: input start ] */
+r: transpose(Bi) . transpose(Svec);
+/* [wxMaxima: input end ] */
+
+/* Maxima can't load/batch files which end with a comment! */
+"Created with wxMaxima"$
Property changes on: short/3D/PyLith/trunk/libsrc/materials
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Modified: short/3D/PyLith/trunk/libsrc/materials/EffectiveStress.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/EffectiveStress.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/materials/EffectiveStress.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -13,23 +13,20 @@
/** @file libsrc/materials/EffectiveStress.hh
*
* @brief C++ EffectiveStress object.
- *
- * This class contains bracketing and root-finding functions for
- * materials that use an effective stress formulation.
*/
#if !defined(pylith_materials_effectivestress_hh)
#define pylith_materials_effectivestress_hh
-/// Namespace for pylith package
-namespace pylith {
- namespace materials {
- class EffectiveStress;
- } // materials
+// Include directives ---------------------------------------------------
+#include "materialsfwd.hh"
-} // pylith
-
-/// C++ abstract base class for Material object.
+// EffectiveStress ------------------------------------------------------
+/** @brief C++ EffectiveStress object.
+ *
+ * This class contains bracketing and root-finding functions for
+ * materials that use an effective stress formulation.
+ */
class pylith::materials::EffectiveStress
{ // class EffectiveStress
Modified: short/3D/PyLith/trunk/libsrc/materials/ElasticIsotropic3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/ElasticIsotropic3D.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/materials/ElasticIsotropic3D.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -10,14 +10,23 @@
// ----------------------------------------------------------------------
//
-/** @file libsrc/materials/ElasticIsotropic3D.h
+/** @file libsrc/materials/ElasticIsotropic3D.hh
*
- * @brief C++ ElasticIsotropic3D object
+ * @brief C++ 3-D, isotropic, linear elastic material.
+ */
+
+#if !defined(pylith_materials_elasticisotropic3d_hh)
+#define pylith_materials_elasticisotropic3d_hh
+
+// Include directives ---------------------------------------------------
+#include "ElasticMaterial.hh" // ISA ElasticMaterial
+
+// ElasticIsotropic3D ---------------------------------------------------
+/** @brief 3-D, isotropic, linear elastic material.
*
- * 3-D, isotropic, linear elastic material. The physical properties
- * are specified using density, shear-wave speed, and
- * compressional-wave speed. The physical properties are stored
- * internally using density, lambda, and mu, which are directly
+ * The physical properties are specified using density, shear-wave
+ * speed, and compressional-wave speed. The physical properties are
+ * stored internally using density, lambda, and mu, which are directly
* related to the elasticity constants used in the finite-element
* integration.
*
@@ -26,14 +35,6 @@
* This implies that when $\epsilon = \epsilon_0$, $\sigma =
* \sigma_0$.
*/
-
-#if !defined(pylith_materials_elasticisotropic3d_hh)
-#define pylith_materials_elasticisotropic3d_hh
-
-// Include directives ---------------------------------------------------
-#include "ElasticMaterial.hh" // ISA ElasticMaterial
-
-// ElasticIsotropic3D ---------------------------------------------------
class pylith::materials::ElasticIsotropic3D : public ElasticMaterial
{ // class ElasticIsotropic3D
friend class TestElasticIsotropic3D; // unit testing
Modified: short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/materials/ElasticMaterial.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -12,9 +12,8 @@
/** @file libsrc/materials/ElasticMaterial.hh
*
- * @brief C++ ElasticMaterial object
- *
- * Interface definition for linear and nonlinear elastic materials.
+ * @brief Interface definition for linear and nonlinear elastic
+ * materials.
*/
#if !defined(pylith_materials_elasticmaterial_hh)
@@ -24,6 +23,9 @@
#include "Material.hh" // ISA Material
// ElasticMaterial ------------------------------------------------------
+/** @brief Interface definition for linear and nonlinear elastic
+ * materials.
+ */
class pylith::materials::ElasticMaterial : public Material
{ // class ElasticMaterial
friend class TestElasticMaterial; ///< unit testing
Modified: short/3D/PyLith/trunk/libsrc/materials/ElasticPlaneStrain.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/ElasticPlaneStrain.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/materials/ElasticPlaneStrain.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -10,14 +10,23 @@
// ----------------------------------------------------------------------
//
-/** @file libsrc/materials/ElasticPlaneStrain.h
+/** @file libsrc/materials/ElasticPlaneStrain.hh
*
- * @brief C++ ElasticPlaneStrain object
+ * @brief 2-D, isotropic, linear elastic material for plane strain.
+ */
+
+#if !defined(pylith_materials_elasticplanestrain_hh)
+#define pylith_materials_elasticplanestrain_hh
+
+// Include directives ---------------------------------------------------
+#include "ElasticMaterial.hh" // ISA ElasticMaterial
+
+// ElasticPlaneStrain ---------------------------------------------------
+/** @brief 2-D, isotropic, linear elastic material for plane strain.
*
- * 2-D, isotropic, linear elastic material for plane strain. The
- * physical properties are specified using density, shear-wave speed,
- * and compressional-wave speed. The physical properties are stored
- * internally using density, lambda, and mu, which are directly
+ * The physical properties are specified using density, shear-wave
+ * speed, and compressional-wave speed. The physical properties are
+ * stored internally using density, lambda, and mu, which are directly
* related to the elasticity constants used in the finite-element
* integration.
*
@@ -26,14 +35,6 @@
* This implies that when $\epsilon = \epsilon_0$, $\sigma =
* \sigma_0$.
*/
-
-#if !defined(pylith_materials_elasticplanestrain_hh)
-#define pylith_materials_elasticplanestrain_hh
-
-// Include directives ---------------------------------------------------
-#include "ElasticMaterial.hh" // ISA ElasticMaterial
-
-// ElasticPlaneStrain ---------------------------------------------------
class pylith::materials::ElasticPlaneStrain : public ElasticMaterial
{ // class ElasticPlaneStrain
friend class TestElasticPlaneStrain; // unit testing
Modified: short/3D/PyLith/trunk/libsrc/materials/ElasticPlaneStress.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/ElasticPlaneStress.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/materials/ElasticPlaneStress.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -10,21 +10,9 @@
// ----------------------------------------------------------------------
//
-/** @file libsrc/materials/ElasticPlaneStress.h
+/** @file libsrc/materials/ElasticPlaneStress.hh
*
- * @brief C++ ElasticPlaneStress object
- *
- * 2-D, isotropic, linear elastic material for plane stress. The
- * physical properties are specified using density, shear-wave speed,
- * and compressional-wave speed. The physical properties are stored
- * internally using density, lambda, and mu, which are directly
- * related to the elasticity constants used in the finite-element
- * integration.
- *
- * $\sigma - \sigma_0 = C (\epsilon - \epsilon_0)
- *
- * This implies that when $\epsilon = \epsilon_0$, $\sigma =
- * \sigma_0$.
+ * @brief 2-D, isotropic, linear elastic material for plane stress.
*/
#if !defined(pylith_materials_elasticplanestress_hh)
@@ -34,6 +22,21 @@
#include "ElasticMaterial.hh" // ISA ElasticMaterial
// ElasticPlaneStrain ---------------------------------------------------
+/** @brief 2-D, isotropic, linear elastic material for plane stress.
+ *
+ * The physical properties are specified using density, shear-wave
+ * speed, and compressional-wave speed. The physical properties are
+ * stored internally using density, lambda, and mu, which are directly
+ * related to the elasticity constants used in the finite-element
+ * integration.
+ *
+ * \f[
+ * \sigma - \sigma_0 = C (\epsilon - \epsilon_0)
+ * \f]
+ *
+ * This implies that when \f$\epsilon = \epsilon_0\f$, \f$\sigma =
+ * \sigma_0\f$.
+ */
class pylith::materials::ElasticPlaneStress : public ElasticMaterial
{ // class ElasticPlaneStress
friend class TestElasticPlaneStress; // unit testing
Modified: short/3D/PyLith/trunk/libsrc/materials/ElasticStrain1D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/ElasticStrain1D.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/materials/ElasticStrain1D.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -10,20 +10,9 @@
// ----------------------------------------------------------------------
//
-/** @file libsrc/materials/ElasticStrain1D.h
+/** @file libsrc/materials/ElasticStrain1D.hh
*
- * @brief C++ ElasticStrain1D object
- *
- * 1-D, linear elastic material with axial strain. The physical
- * properties are specified using density and compressional-wave
- * speed. The physical properties are stored internally using density
- * and lambda + 2 mu, which are directly related to the elasticity
- * constants used in the finite-element integration.
- *
- * $\sigma - \sigma_0 = (\lambda + 2 \mu) (\epislon - \epsilon_0)$
- *
- * This implies that when $\epsilon = \epsilon_0$, $\sigma =
- * \sigma_0$.
+ * @brief 1-D, linear elastic material with axial strain.
*/
#if !defined(pylith_materials_elasticstrain1d_hh)
@@ -33,6 +22,20 @@
#include "ElasticMaterial.hh" // ISA ElasticMaterial
// ElasticStrain1D ------------------------------------------------------
+/** @brief 1-D, linear elastic material with axial strain.
+ *
+ * The physical properties are specified using density and
+ * compressional-wave speed. The physical properties are stored
+ * internally using density and lambda + 2 mu, which are directly
+ * related to the elasticity constants used in the finite-element
+ * integration.
+ *
+ * $\sigma - \sigma_0 = (\lambda + 2 \mu) (\epislon - \epsilon_0)$
+ *
+ * This implies that when $\epsilon = \epsilon_0$, $\sigma =
+ * \sigma_0$.
+ */
+
class pylith::materials::ElasticStrain1D : public ElasticMaterial
{ // class ElasticStrain1D
friend class TestElasticStrain1D; // unit testing
Modified: short/3D/PyLith/trunk/libsrc/materials/ElasticStress1D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/ElasticStress1D.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/materials/ElasticStress1D.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -10,14 +10,23 @@
// ----------------------------------------------------------------------
//
-/** @file libsrc/materials/ElasticStress1D.h
+/** @file libsrc/materials/ElasticStress1D.hh
*
- * @brief C++ ElasticStress1D object
+ * @brief 1-D, linear elastic material with axial stress.
+ */
+
+#if !defined(pylith_materials_elasticstress1d_hh)
+#define pylith_materials_elasticstress1d_hh
+
+// Include directives ---------------------------------------------------
+#include "ElasticMaterial.hh" // ISA ElasticMaterial
+
+// ElasticStress1D ------------------------------------------------------
+/** @brief 1-D, linear elastic material with axial stress.
*
- * 1-D, linear elastic material with axial stress. The physical
- * properties are specified using density, shear-wave speed, and
- * compressional-wave speed. The physical properties are stored
- * internally using density, mu, and lambda, which are directly
+ * The physical properties are specified using density, shear-wave
+ * speed, and compressional-wave speed. The physical properties are
+ * stored internally using density, mu, and lambda, which are directly
* related to the elasticity constants used in the finite-element
* integration.
*
@@ -28,13 +37,6 @@
* \sigma_0$.
*/
-#if !defined(pylith_materials_elasticstress1d_hh)
-#define pylith_materials_elasticstress1d_hh
-
-// Include directives ---------------------------------------------------
-#include "ElasticMaterial.hh" // ISA ElasticMaterial
-
-// ElasticStress1D ------------------------------------------------------
class pylith::materials::ElasticStress1D : public ElasticMaterial
{ // class ElasticStress1D
friend class TestElasticStress1D; // unit testing
Modified: short/3D/PyLith/trunk/libsrc/materials/GenMaxwellIsotropic3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/GenMaxwellIsotropic3D.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/materials/GenMaxwellIsotropic3D.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -10,11 +10,24 @@
// ----------------------------------------------------------------------
//
-/** @file libsrc/materials/GenMaxwellIsotropic3D.h
+/** @file libsrc/materials/GenMaxwellIsotropic3D.hh
*
* @brief C++ GenMaxwellIsotropic3D object
+ */
+
+// :TODO: Rewrite as template over the number of Maxwell models?
+// We could instatiate for 2 and 3 models and provide example for how to
+// instantiate over other numbers of Maxwell models.
+
+#if !defined(pylith_materials_genmaxwellisotropic3d_hh)
+#define pylith_materials_genmaxwellisotropic3d_hh
+
+// Include directives ---------------------------------------------------
+#include "ElasticMaterial.hh" // ISA ElasticMaterial
+
+// GenMaxwellIsotropic3D ------------------------------------------------
+/** @brief 3-D, isotropic, generalized linear Maxwell viscoelastic material.
*
- * 3-D, isotropic, generalized linear Maxwell viscoelastic material.
* This consists of several Maxwell models in parallel. At present,
* the number of models is fixed at 3, but this will be changed in the
* future. The physical properties are specified using density,
@@ -31,18 +44,6 @@
* (viscosity/mu), and the shear ratio is also stored for each Maxwell
* model.
*/
-
-// :TODO: Rewrite as template over the number of Maxwell models?
-// We could instatiate for 2 and 3 models and provide example for how to
-// instantiate over other numbers of Maxwell models.
-
-#if !defined(pylith_materials_genmaxwellisotropic3d_hh)
-#define pylith_materials_genmaxwellisotropic3d_hh
-
-// Include directives ---------------------------------------------------
-#include "ElasticMaterial.hh" // ISA ElasticMaterial
-
-// GenMaxwellIsotropic3D ------------------------------------------------
class pylith::materials::GenMaxwellIsotropic3D : public ElasticMaterial
{ // class GenMaxwellIsotropic3D
friend class TestGenMaxwellIsotropic3D; // unit testing
Modified: short/3D/PyLith/trunk/libsrc/materials/Material.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/Material.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/materials/Material.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -13,10 +13,6 @@
/** @file libsrc/materials/Material.hh
*
* @brief C++ abstract base class for Material object.
- *
- * Interface definition for a material. The physical properties for
- * the material are associated with the constants in the constitutive
- * model.
*/
#if !defined(pylith_materials_material_hh)
@@ -35,6 +31,13 @@
#include <string> // HASA std::string
// Material -------------------------------------------------------------
+/** @brief C++ abstract base class for Material object.
+ *
+ * Interface definition for a material. The physical properties for
+ * the material are associated with the constants in the constitutive
+ * model.
+ */
+
class pylith::materials::Material
{ // class Material
friend class TestMaterial; // unit testing
Modified: short/3D/PyLith/trunk/libsrc/materials/MaxwellIsotropic3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/MaxwellIsotropic3D.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/materials/MaxwellIsotropic3D.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -10,16 +10,9 @@
// ----------------------------------------------------------------------
//
-/** @file libsrc/materials/MaxwellIsotropic3D.h
+/** @file libsrc/materials/MaxwellIsotropic3D.hh
*
- * @brief C++ MaxwellIsotropic3D object
- *
- * 3-D, isotropic, linear Maxwell viscoelastic material. The
- * physical properties are specified using density, shear-wave speed,
- * viscosity, and compressional-wave speed. The physical properties are
- * stored internally using density, lambda, mu, which are directly
- * related to the elasticity constants used in the finite-element
- * integration. The viscosity is stored using Maxwell Time (viscosity/mu).
+ * @brief 3-D, isotropic, linear Maxwell viscoelastic material.
*/
#if !defined(pylith_materials_maxwellisotropic3d_hh)
@@ -29,6 +22,15 @@
#include "ElasticMaterial.hh" // ISA ElasticMaterial
// MaxwellIsotropic3D ---------------------------------------------------
+/** @brief 3-D, isotropic, linear Maxwell viscoelastic material.
+ *
+ * The physical properties are specified using density, shear-wave
+ * speed, viscosity, and compressional-wave speed. The physical
+ * properties are stored internally using density, lambda, mu, which
+ * are directly related to the elasticity constants used in the
+ * finite-element integration. The viscosity is stored using Maxwell
+ * Time (viscosity/mu).
+ */
class pylith::materials::MaxwellIsotropic3D : public ElasticMaterial
{ // class MaxwellIsotropic3D
friend class TestMaxwellIsotropic3D; // unit testing
Modified: short/3D/PyLith/trunk/libsrc/materials/MaxwellPlaneStrain.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/MaxwellPlaneStrain.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/materials/MaxwellPlaneStrain.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -10,16 +10,10 @@
// ----------------------------------------------------------------------
//
-/** @file libsrc/materials/MaxwellPlaneStrain.h
+/** @file libsrc/materials/MaxwellPlaneStrain.hh
*
- * @brief C++ MaxwellPlaneStrain object
- *
- * 2-D, isotropic, linear Maxwell viscoelastic material for plane strain. The
- * physical properties are specified using density, shear-wave speed,
- * viscosity, and compressional-wave speed. The physical properties are
- * stored internally using density, lambda, mu, which are directly
- * related to the elasticity constants used in the finite-element
- * integration. The viscosity is stored using Maxwell Time (viscosity/mu).
+ * @brief 2-D, isotropic, linear Maxwell viscoelastic material for
+ * plane strain.
*/
#if !defined(pylith_materials_maxwellplanestrain_hh)
@@ -29,6 +23,16 @@
#include "ElasticMaterial.hh" // ISA ElasticMaterial
// MaxwellPlaneStrain ---------------------------------------------------
+/** @brief 2-D, isotropic, linear Maxwell viscoelastic material for
+ * plane strain.
+ *
+ * The physical properties are specified using density, shear-wave
+ * speed, viscosity, and compressional-wave speed. The physical
+ * properties are stored internally using density, lambda, mu, which
+ * are directly related to the elasticity constants used in the
+ * finite-element integration. The viscosity is stored using Maxwell
+ * Time (viscosity/mu).
+ */
class pylith::materials::MaxwellPlaneStrain : public ElasticMaterial
{ // class MaxwellPlaneStrain
friend class TestMaxwellPlaneStrain; // unit testing
Modified: short/3D/PyLith/trunk/libsrc/materials/Metadata.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/Metadata.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/materials/Metadata.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,12 +11,9 @@
//
/**
- * @file libsrc/topology/Metadata.hh
+ * @file libsrc/materials/Metadata.hh
*
* @brief C++ object for material metadata.
- *
- * Extends Sieve mesh to include coordinate system associated with
- * domain.
*/
#if !defined(pylith_materials_metadata_hh)
@@ -31,6 +28,12 @@
#include <map> // HASA std::map
// MaterialMetadata -----------------------------------------------------
+/** @brief C++ object for material metadata.
+ *
+ * Extends Sieve mesh to include coordinate system associated with
+ * domain.
+ */
+
class pylith::materials::Metadata
{ // Mesh
friend class TestMetadata; // unit testing
Modified: short/3D/PyLith/trunk/libsrc/materials/PowerLaw3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/PowerLaw3D.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/materials/PowerLaw3D.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -10,17 +10,9 @@
// ----------------------------------------------------------------------
//
-/** @file libsrc/materials/PowerLaw3D.h
+/** @file libsrc/materials/PowerLaw3D.hh
*
- * @brief C++ PowerLaw3D object
- *
- * 3-D, isotropic, power-law Maxwell viscoelastic material. The
- * physical properties are specified using density, shear-wave speed,
- * power-law coefficient, power-law exponent, and compressional-wave speed.
- * The physical properties are stored internally using density, lambda, mu,
- * which are directly related to the elasticity constants used in the
- * finite-element integration. The viscosity information is retained as
- * a viscosity coefficient and the power-law exponent.
+ * @brief 3-D, isotropic, power-law viscoelastic material.
*/
#if !defined(pylith_materials_powerlaw3d_hh)
@@ -30,6 +22,16 @@
#include "ElasticMaterial.hh" // ISA ElasticMaterial
// Powerlaw3D -----------------------------------------------------------
+/** @brief 3-D, isotropic, power-law viscoelastic material.
+ *
+ * The physical properties are specified using density, shear-wave
+ * speed, viscosity coefficient, power-law exponent, and
+ * compressional-wave speed. The physical properties are stored
+ * internally using density, lambda, mu, which are directly related to
+ * the elasticity constants used in the finite-element
+ * integration. The viscosity information is retained as specified.
+ */
+
class pylith::materials::PowerLaw3D : public ElasticMaterial
{ // class PowerLaw3D
friend class TestPowerLaw3D; // unit testing
Modified: short/3D/PyLith/trunk/libsrc/materials/ViscoelasticMaxwell.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/ViscoelasticMaxwell.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/materials/ViscoelasticMaxwell.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -12,24 +12,21 @@
/** @file libsrc/materials/ViscoelasticMaxwell.hh
*
- * @brief C++ ViscoelasticMaxwell object.
- *
- * This class contains a single function that can be used by any
- * linear Maxwell viscoelastic class.
+ * @brief Class for basic Maxwell viscoelastic functions.
*/
#if !defined(pylith_materials_viscoelasticmaxwell_hh)
#define pylith_materials_viscoelasticmaxwell_hh
-/// Namespace for pylith package
-namespace pylith {
- namespace materials {
- class ViscoelasticMaxwell;
- } // materials
+// Include directives ---------------------------------------------------
+#include "materialsfwd.hh" // forward declarations
-} // pylith
-
-/// C++ abstract base class for Material object.
+// ViscoelasticMaxwell --------------------------------------------------
+/** @brief Class for basic Maxwell viscoelastic functions.
+ *
+ * This class contains functions that can be used by any linear
+ * Maxwell viscoelastic class.
+ */
class pylith::materials::ViscoelasticMaxwell
{ // class ViscoelasticMaxwell
Modified: short/3D/PyLith/trunk/libsrc/materials/materialsfwd.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/materialsfwd.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/materials/materialsfwd.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -40,6 +40,9 @@
class GenMaxwellIsotropic3D;
class PowerLaw3D;
+ class EffectiveStress;
+ class ViscoelasticMaxwell;
+
} // materials
} // pylith
Property changes on: short/3D/PyLith/trunk/libsrc/meshio
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Modified: short/3D/PyLith/trunk/libsrc/meshio/BinaryIO.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/meshio/BinaryIO.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/meshio/BinaryIO.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
/**
- * @file pylith/meshio/MeshIOCubit.hh
+ * @file libsrc/meshio/BinaryIO.hh
*
* @brief C++ object for general binary input/output operations.
*/
@@ -25,6 +25,7 @@
#include <iosfwd>
// BinaryIO -------------------------------------------------------------
+/// General binary input/output operations.
class pylith::meshio::BinaryIO
{ // BinaryIO
Modified: short/3D/PyLith/trunk/libsrc/meshio/CellFilter.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/meshio/CellFilter.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/meshio/CellFilter.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
/**
- * @file pylith/meshio/CellFilter.hh
+ * @file libsrc/meshio/CellFilter.hh
*
* @brief C++ object for filtering cell fields when outputing
* finite-element data.
@@ -27,6 +27,9 @@
#include "pylith/feassemble/feassemblefwd.hh" // HOLDSA Quadrature<Mesh>
// CellFilter -----------------------------------------------------------
+/** @brief C++ object for filtering cell fields when outputing
+ * finite-element data.
+ */
template<typename mesh_type, typename field_type>
class pylith::meshio::CellFilter
{ // CellFilter
Modified: short/3D/PyLith/trunk/libsrc/meshio/CellFilterAvg.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/meshio/CellFilterAvg.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/meshio/CellFilterAvg.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
/**
- * @file pylith/meshio/CellFilterAvg.hh
+ * @file libsrc/meshio/CellFilterAvg.hh
*
* @brief C++ object for averaging cell fields over quadrature points
* when outputing finite-element data.
@@ -24,6 +24,9 @@
#include "CellFilter.hh" // ISA CellFilter
// CellFilter -----------------------------------------------------------
+/** @brief C++ object for averaging cell fields over quadrature points
+ * when outputing finite-element data.
+ */
template<typename mesh_type, typename field_type>
class pylith::meshio::CellFilterAvg : public CellFilter<mesh_type, field_type>
{ // CellFilterAvg
Modified: short/3D/PyLith/trunk/libsrc/meshio/DataWriter.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/meshio/DataWriter.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/meshio/DataWriter.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
/**
- * @file pylith/meshio/DataWriter.hh
+ * @file libsrc/meshio/DataWriter.hh
*
* @brief Abstract base class for writing finite-element data to file.
*/
@@ -25,6 +25,7 @@
#include "pylith/topology/topologyfwd.hh" // USES Field
// DataWriter -----------------------------------------------------------
+/// Abstract base class for writing finite-element data to file.
template<typename mesh_type, typename field_type>
class pylith::meshio::DataWriter
{ // DataWriter
Modified: short/3D/PyLith/trunk/libsrc/meshio/DataWriterVTK.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/meshio/DataWriterVTK.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/meshio/DataWriterVTK.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -27,7 +27,8 @@
_timeFormat("%f"),
_viewer(0),
_wroteVertexHeader(false),
- _wroteCellHeader(false)
+ _wroteCellHeader(false),
+ _precision(6)
{ // constructor
} // constructor
@@ -40,6 +41,21 @@
} // destructor
// ----------------------------------------------------------------------
+// Set precision of floating point values in output.
+template<typename mesh_type, typename field_type>
+void
+pylith::meshio::DataWriterVTK<mesh_type,field_type>::precision(const int value)
+{ // precision
+ if (value <= 0) {
+ std::ostringstream msg;
+ msg << "Floating point precision (" << value << ") must be positive.";
+ throw std::runtime_error(msg.str());
+ } // if
+
+ _precision = value;
+} // precision
+
+// ----------------------------------------------------------------------
// Deallocate PETSc and local data structures.
template<typename mesh_type, typename field_type>
void
@@ -201,7 +217,7 @@
} // if
err = VTKViewer::writeField(section, field.label(), fiberDim, numbering,
- _viewer, enforceDim);
+ _viewer, enforceDim, _precision);
CHECK_PETSC_ERROR(err);
} catch (const std::exception& err) {
std::ostringstream msg;
@@ -269,7 +285,7 @@
} // if
VTKViewer::writeField(section, field.label(), fiberDim, numbering,
- _viewer, enforceDim);
+ _viewer, enforceDim, _precision);
} catch (const std::exception& err) {
std::ostringstream msg;
msg << "Error while writing field '" << field.label() << "' at time "
Modified: short/3D/PyLith/trunk/libsrc/meshio/DataWriterVTK.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/meshio/DataWriterVTK.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/meshio/DataWriterVTK.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,9 +11,9 @@
//
/**
- * @file pylith/meshio/DataWriterVTK.hh
+ * @file libsrc/meshio/DataWriterVTK.hh
*
- * @brief Abstract base class for writing finite-element data to file.
+ * @brief Object for writing finite-element data to VTK file.
*/
#if !defined(pylith_meshio_datawritervtk_hh)
@@ -23,6 +23,7 @@
#include "DataWriter.hh" // ISA DataWriter
// DataWriterVTK --------------------------------------------------------
+/// Object for writing finite-element data to VTK file.
template<typename mesh_type, typename field_type>
class pylith::meshio::DataWriterVTK : public DataWriter<mesh_type,field_type>
{ // DataWriterVTK
@@ -70,6 +71,12 @@
*/
void timeConstant(const double value);
+ /** Set precision of floating point values in output.
+ *
+ * @param value Precision for floating point values.
+ */
+ void precision(const int value);
+
/** Prepare file for data at a new time step.
*
* @param t Time stamp for new data
@@ -140,6 +147,8 @@
PetscViewer _viewer; ///< Output file
+ int _precision; ///< Precision of floating point values in output.
+
bool _wroteVertexHeader; ///< True if wrote header for vertex data.
bool _wroteCellHeader; ///< True if wrote header for cell data
Modified: short/3D/PyLith/trunk/libsrc/meshio/GMVFile.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/meshio/GMVFile.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/meshio/GMVFile.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
/**
- * @file libsrc/topology/GMVFile.hh
+ * @file libsrc/meshio/GMVFile.hh
*
* @brief C++ base class for input/output of LaGriT GMV files.
*/
@@ -20,6 +20,7 @@
#define pylith_meshio_gmvfile_hh
// Include directives ---------------------------------------------------
+/// C++ base class for input/output of LaGriT GMV files.
#include "meshiofwd.hh" // forward declarations
#include <string> // HASA std::string
Modified: short/3D/PyLith/trunk/libsrc/meshio/GMVFileAscii.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/meshio/GMVFileAscii.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/meshio/GMVFileAscii.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
/**
- * @file libsrc/topology/GMVFileAscii.hh
+ * @file libsrc/meshio/GMVFileAscii.hh
*
* @brief C++ object for input/output of LaGriT ASCII GMV files.
*/
@@ -26,6 +26,7 @@
#include <iosfwd>
// GMVFileAscii ---------------------------------------------------------
+/// C++ object for input/output of LaGriT ASCII GMV files.
class pylith::meshio::GMVFileAscii : public GMVFile
{ // GMVFileAscii
Modified: short/3D/PyLith/trunk/libsrc/meshio/GMVFileBinary.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/meshio/GMVFileBinary.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/meshio/GMVFileBinary.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,9 +11,9 @@
//
/**
- * @file libsrc/topology/GMVFileAscii.hh
+ * @file libsrc/meshio/GMVFileBinary.hh
*
- * @brief C++ object for input/output of LaGriT ASCII GMV files.
+ * @brief C++ object for input/output of LaGriT binary GMV files.
*/
#if !defined(pylith_meshio_gmvfilebinary_hh)
@@ -26,6 +26,7 @@
#include <iosfwd>
// GMVFileBinary --------------------------------------------------------
+/// C++ object for input/output of LaGriT binary GMV files.
class pylith::meshio::GMVFileBinary : public GMVFile
{ // GMVFileBinary
Modified: short/3D/PyLith/trunk/libsrc/meshio/MeshBuilder.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/meshio/MeshBuilder.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/meshio/MeshBuilder.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -10,6 +10,12 @@
// ======================================================================
//
+/**
+ * @file libsrc/meshio/MeshBuilder.hh
+ *
+ * @brief Helper class for constructing Sieve mesh data structures.
+ */
+
#if !defined(pylith_meshio_meshbuilder_hh)
#define pylith_meshio_meshbuilder_hh
@@ -24,6 +30,7 @@
#include "pylith/topology/Mesh.hh" // USES Mesh
// MeshBuilder ----------------------------------------------------------
+/// Helper class for constructing Sieve mesh data structures.
class pylith::meshio::MeshBuilder
{ // MeshBuilder
Modified: short/3D/PyLith/trunk/libsrc/meshio/MeshIO.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/meshio/MeshIO.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/meshio/MeshIO.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -290,6 +290,13 @@
const ALE::Obj<SieveMesh>& sieveMesh = _mesh->sieveMesh();
assert(!sieveMesh.isNull());
+ if (sieveMesh->hasIntSection(name)) {
+ std::ostringstream msg;
+ msg << "Could not setup group '" << name
+ << "'. Group already exists in mesh.";
+ throw std::runtime_error(msg.str());
+ } // if
+
ALE::MemoryLogger& logger = ALE::MemoryLogger::singleton();
logger.stagePush("VertexGroups");
const ALE::Obj<IntSection>& groupField = sieveMesh->getIntSection(name);
@@ -396,6 +403,13 @@
const ALE::Obj<SieveMesh>& sieveMesh = _mesh->sieveMesh();
assert(!sieveMesh.isNull());
+ if (!sieveMesh->hasIntSection(name)) {
+ std::ostringstream msg;
+ msg << "Could not get group '" << name
+ << "'. Group missing from mesh.";
+ throw std::runtime_error(msg.str());
+ } // if
+
const ALE::Obj<IntSection>& groupField = sieveMesh->getIntSection(name);
assert(!groupField.isNull());
const IntSection::chart_type& chart = groupField->getChart();
Modified: short/3D/PyLith/trunk/libsrc/meshio/MeshIO.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/meshio/MeshIO.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/meshio/MeshIO.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,9 +11,9 @@
//
/**
- * @file libsrc/topology/MeshIO.hh
+ * @file libsrc/meshio/MeshIO.hh
*
- * @brief C++ object for managing mesh input/output.
+ * @brief C++ base class for managing mesh input/output.
*/
#if !defined(pylith_meshio_meshio_hh)
@@ -29,6 +29,7 @@
// string_vector
// MeshIO ---------------------------------------------------------------
+/// C++ abstract base class for managing mesh input/output.
class pylith::meshio::MeshIO
{ // MeshIO
Modified: short/3D/PyLith/trunk/libsrc/meshio/MeshIOAscii.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/meshio/MeshIOAscii.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/meshio/MeshIOAscii.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -28,6 +28,7 @@
#include <string> // HASA std::string
// MeshIOAscii ----------------------------------------------------------
+/// C++ input/output manager for PyLith ASCII mesh files.
class pylith::meshio::MeshIOAscii : public MeshIO
{ // MeshIOAscii
friend class TestMeshIOAscii; // unit testing
Modified: short/3D/PyLith/trunk/libsrc/meshio/MeshIOCubit.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/meshio/MeshIOCubit.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/meshio/MeshIOCubit.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
/**
- * @file pylith/meshio/MeshIOCubit.hh
+ * @file libsrc/meshio/MeshIOCubit.hh
*
* @brief C++ input/output manager for CUBIT Exodus II files.
*/
@@ -25,6 +25,7 @@
#include <string> // HASA std::string
// Forward declarations -------------------------------------------------
+/// C++ input/output manager for CUBIT Exodus II files.
class NcFile; // netcdf file
// MeshIOCubit ----------------------------------------------------------
Modified: short/3D/PyLith/trunk/libsrc/meshio/MeshIOLagrit.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/meshio/MeshIOLagrit.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/meshio/MeshIOLagrit.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -25,6 +25,7 @@
#include <string> // HASA std::string
// MeshIOLagrit ---------------------------------------------------------
+/// Input/output manager for LaGriT GMV and Pset files.
class pylith::meshio::MeshIOLagrit : public MeshIO
{ // MeshIOLagrit
friend class TestMeshIOLagrit; // unit testing
Modified: short/3D/PyLith/trunk/libsrc/meshio/OutputManager.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/meshio/OutputManager.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/meshio/OutputManager.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,9 +11,9 @@
//
/**
- * @file pylith/meshio/OutputManager.hh
+ * @file libsrc/meshio/OutputManager.hh
*
- * @brief C++ object for manager output of finite-element data.
+ * @brief Manager for output of finite-element data.
*/
#if !defined(pylith_meshio_outputmanager_hh)
@@ -26,6 +26,7 @@
#include "spatialdata/geocoords/geocoordsfwd.hh" // USES CoordSys
// OutputManager --------------------------------------------------------
+/// Manager for output of finite-element data.
template<typename mesh_type, typename field_type>
class pylith::meshio::OutputManager
{ // OutputManager
Modified: short/3D/PyLith/trunk/libsrc/meshio/OutputSolnSubset.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/meshio/OutputSolnSubset.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/meshio/OutputSolnSubset.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,9 +11,9 @@
//
/**
- * @file pylith/meshio/OutputSolnSubset.hh
+ * @file libsrc/meshio/OutputSolnSubset.hh
*
- * @brief C++ object for manager output of finite-element data over a
+ * @brief C++ object for managing output of finite-element data over a
* subdomain.
*/
@@ -31,6 +31,9 @@
#include <string> // HASA std::string
// OutputSolnSubset -----------------------------------------------------
+/** @brief C++ object for managing output of finite-element data over
+ * a subdomain.
+ */
class pylith::meshio::OutputSolnSubset :
public OutputManager<topology::SubMesh, topology::Field<topology::Mesh> >
{ // OutputSolnSubset
Modified: short/3D/PyLith/trunk/libsrc/meshio/PsetFile.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/meshio/PsetFile.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/meshio/PsetFile.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
/**
- * @file libsrc/topology/PsetFile.hh
+ * @file libsrc/meshio/PsetFile.hh
*
* @brief C++ base class for input/output of LaGriT Pset files.
*/
@@ -26,6 +26,7 @@
#include <string> // HASA std::string
// PsetFile -------------------------------------------------------------
+/// C++ base class for input/output of LaGriT Pset files.
class pylith::meshio::PsetFile
{ // PsetFile
Modified: short/3D/PyLith/trunk/libsrc/meshio/PsetFileAscii.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/meshio/PsetFileAscii.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/meshio/PsetFileAscii.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
/**
- * @file libsrc/topology/PsetFile.hh
+ * @file libsrc/meshio/PsetFileAscii.hh
*
* @brief C++ object for input/output of LaGriT binary Pset files.
*/
@@ -25,6 +25,7 @@
#include <iosfwd>
// PsetFileAscii --------------------------------------------------------
+/// C++ object for input/output of LaGriT ascii Pset files.
class pylith::meshio::PsetFileAscii : public PsetFile
{ // PsetFileAscii
Modified: short/3D/PyLith/trunk/libsrc/meshio/PsetFileBinary.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/meshio/PsetFileBinary.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/meshio/PsetFileBinary.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
/**
- * @file libsrc/topology/PsetFile.hh
+ * @file libsrc/meshio/PsetFileBinary.hh
*
* @brief C++ object for input/output of LaGriT binary Pset files.
*/
@@ -25,6 +25,7 @@
#include <iosfwd>
// PsetFileBinary -------------------------------------------------------
+/// C++ object for input/output of LaGriT binary Pset files.
class pylith::meshio::PsetFileBinary : public PsetFile
{ // PsetFileBinary
Modified: short/3D/PyLith/trunk/libsrc/meshio/UCDFaultFile.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/meshio/UCDFaultFile.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/meshio/UCDFaultFile.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -14,12 +14,6 @@
* @file libsrc/meshio/UCDFaultFile.hh
*
* @brief C++ object for reading a fault mesh from a UCD file.
- *
- * Temporary fix for getting a fault mesh information into
- * PyLith. Using a fault mesh permits cells to have more than one face
- * on the fault surface. Supporting information also provides the
- * orientation of the fault surface, eliminating the need to determine
- * it from the faces/vertices alone.
*/
#if !defined(pylith_meshio_ucdfaultfile_hh)
@@ -33,6 +27,14 @@
#include "pylith/utils/sievetypes.hh" // USES ALE::Obj, ALE::Mesh
// UCDFaultFile ---------------------------------------------------------
+/** @brief C++ object for reading a fault mesh from a UCD file.
+ *
+ * TEMPORARY fix for getting a fault mesh information into
+ * PyLith. Using a fault mesh permits cells to have more than one face
+ * on the fault surface. Supporting information also provides the
+ * orientation of the fault surface, eliminating the need to determine
+ * it from the faces/vertices alone.
+ */
class pylith::meshio::UCDFaultFile
{ // UCDFaultFile
friend class TestUCDFaultFile; // unit testing
Modified: short/3D/PyLith/trunk/libsrc/meshio/VertexFilter.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/meshio/VertexFilter.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/meshio/VertexFilter.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
/**
- * @file pylith/meshio/VertexFilter.hh
+ * @file libsrc/meshio/VertexFilter.hh
*
* @brief C++ object for filtering vertex fields when outputing
* finite-element data.
@@ -26,6 +26,9 @@
#include "pylith/topology/topologyfwd.hh" // USES Field
// VertexFilter ---------------------------------------------------------
+/** @brief C++ object for filtering vertex fields when outputing
+ * finite-element data.
+ */
template<typename field_type>
class pylith::meshio::VertexFilter
{ // VertexFilter
Modified: short/3D/PyLith/trunk/libsrc/meshio/VertexFilterVecNorm.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/meshio/VertexFilterVecNorm.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/meshio/VertexFilterVecNorm.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
/**
- * @file pylith/meshio/VertexFilterVecNorm.hh
+ * @file libsrc/meshio/VertexFilterVecNorm.hh
*
* @brief C++ object for computing vector norms for fields over
* vertices when outputing finite-element data.
@@ -24,6 +24,9 @@
#include "VertexFilter.hh" // ISA VertexFilter
// VertexFilterVecNorm --------------------------------------------------
+/** @brief C++ object for computing vector norms for fields over
+ * vertices when outputing finite-element data.
+ */
template<typename field_type>
class pylith::meshio::VertexFilterVecNorm : public VertexFilter<field_type>
{ // VertexFilterVecNorm
Property changes on: short/3D/PyLith/trunk/libsrc/problems
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Modified: short/3D/PyLith/trunk/libsrc/problems/Formulation.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/problems/Formulation.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/problems/Formulation.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -30,6 +30,7 @@
_t(0.0),
_dt(0.0),
_jacobian(0),
+ _jacobianLumped(0),
_fields(0)
{ // constructor
} // constructor
@@ -47,6 +48,7 @@
pylith::problems::Formulation::deallocate(void)
{ // deallocate
_jacobian = 0; // :TODO: Use shared pointer.
+ _jacobianLumped = 0; // :TODO: Use shared pointer.
_fields = 0; // :TODO: Use shared pointer.
} // deallocate
@@ -104,6 +106,25 @@
} // updateSettings
// ----------------------------------------------------------------------
+// Update handles and parameters for reforming the Jacobian and
+// residual.
+void
+pylith::problems::Formulation::updateSettings(topology::Field<topology::Mesh>* jacobian,
+ topology::SolutionFields* fields,
+ const double t,
+ const double dt)
+{ // updateSettings
+ assert(0 != jacobian);
+ assert(0 != fields);
+ assert(dt > 0.0);
+
+ _jacobianLumped = jacobian;
+ _fields = fields;
+ _t = t;
+ _dt = dt;
+} // updateSettings
+
+// ----------------------------------------------------------------------
// Reform system residual.
void
pylith::problems::Formulation::reformResidual(const PetscVec* tmpResidualVec,
@@ -194,7 +215,106 @@
// Assemble jacobian.
_jacobian->assemble("final_assembly");
+
+ // Extract diagonal :KLUDGE: We extract the diagonal even if we
+ // don't need to.
+ if (!_fields->hasField("Jacobian diagonal")) {
+ _fields->add("Jacobian diagonal", "jacobian_diagonal");
+ topology::Field<topology::Mesh>& jacobianDiag =
+ _fields->get("Jacobian diagonal");
+ const topology::Field<topology::Mesh>& disp =
+ _fields->get("disp(t)");
+ jacobianDiag.cloneSection(disp);
+ jacobianDiag.createVector();
+ jacobianDiag.createScatter();
+ } // if
+ topology::Field<topology::Mesh>& jacobianDiag =
+ _fields->get("Jacobian diagonal");
+ MatGetDiagonal(_jacobian->matrix(), jacobianDiag.vector());
+ jacobianDiag.scatterVectorToSection();
} // reformJacobian
+// ----------------------------------------------------------------------
+// Reform system Jacobian.
+void
+pylith::problems::Formulation::reformJacobianLumped(void)
+{ // reformJacobian
+ assert(0 != _jacobianLumped);
+ assert(0 != _fields);
+ // Set jacobian to zero.
+ _jacobianLumped->zero();
+
+ // Add in contributions that require assembly.
+ int numIntegrators = _meshIntegrators.size();
+ for (int i=0; i < numIntegrators; ++i)
+ _meshIntegrators[i]->integrateJacobian(*_jacobianLumped, _t, _fields);
+ numIntegrators = _submeshIntegrators.size();
+ for (int i=0; i < numIntegrators; ++i)
+ _submeshIntegrators[i]->integrateJacobian(*_jacobianLumped, _t, _fields);
+
+ // Assemble jacbian.
+ _jacobianLumped->complete();
+
+ // Add in contributions that do not require assembly.
+ numIntegrators = _meshIntegrators.size();
+ for (int i=0; i < numIntegrators; ++i)
+ _meshIntegrators[i]->integrateJacobianAssembled(*_jacobianLumped,
+ _t, _fields);
+ numIntegrators = _submeshIntegrators.size();
+ for (int i=0; i < numIntegrators; ++i)
+ _submeshIntegrators[i]->integrateJacobianAssembled(*_jacobianLumped,
+ _t, _fields);
+
+} // reformJacobian
+
+// ----------------------------------------------------------------------
+// Constrain solution space.
+void
+pylith::problems::Formulation::constrainSolnSpace(const PetscVec* tmpSolutionVec)
+{ // constrainSolnSpace
+ assert(0 != tmpSolutionVec);
+ assert(0 != _fields);
+
+ // Update section view of field.
+ if (0 != tmpSolutionVec) {
+ topology::Field<topology::Mesh>& solution = _fields->solution();
+ solution.scatterVectorToSection(*tmpSolutionVec);
+ } // if
+
+ int numIntegrators = _meshIntegrators.size();
+ assert(numIntegrators > 0); // must have at least 1 bulk integrator
+ for (int i=0; i < numIntegrators; ++i) {
+ _meshIntegrators[i]->timeStep(_dt);
+ _meshIntegrators[i]->constrainSolnSpace(_fields, _t, *_jacobian);
+ } // for
+ numIntegrators = _submeshIntegrators.size();
+ for (int i=0; i < numIntegrators; ++i) {
+ _submeshIntegrators[i]->timeStep(_dt);
+ _submeshIntegrators[i]->constrainSolnSpace(_fields, _t, *_jacobian);
+ } // for
+
+ // Update PETScVec of solution for changes to Lagrange multipliers.
+ if (0 != tmpSolutionVec) {
+ topology::Field<topology::Mesh>& solution = _fields->solution();
+ solution.scatterSectionToVector(*tmpSolutionVec);
+ } // if
+} // constrainSolnSpace
+
+// ----------------------------------------------------------------------
+// Adjust solution from solver with lumped Jacobian to match Lagrange
+// multiplier constraints.
+void
+pylith::problems::Formulation::adjustSolnLumped(void)
+{ // adjustSolnLumped
+ int numIntegrators = _meshIntegrators.size();
+ for (int i=0; i < numIntegrators; ++i)
+ _meshIntegrators[i]->adjustSolnLumped(_fields, *_jacobianLumped);
+
+ numIntegrators = _submeshIntegrators.size();
+ for (int i=0; i < numIntegrators; ++i)
+ _submeshIntegrators[i]->adjustSolnLumped(_fields, *_jacobianLumped);
+} // adjustSolnLumped
+
+
// End of file
Modified: short/3D/PyLith/trunk/libsrc/problems/Formulation.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/problems/Formulation.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/problems/Formulation.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -32,6 +32,7 @@
// Formulation ----------------------------------------------------------
+/// Reform the Jacobian and residual for the problem.
class pylith::problems::Formulation
{ // Formulation
friend class TestFormulation; // unit testing
@@ -54,6 +55,12 @@
/// Deallocate PETSc and local data structures.
void deallocate(void);
+ /** Get solution fields.
+ *
+ * @returns solution fields.
+ */
+ const topology::SolutionFields& fields(void) const;
+
/** Set handles to integrators over the mesh.
*
* @param integrators Integrators over the mesh.
@@ -83,13 +90,26 @@
const double t,
const double dt);
+ /** Update handles and parameters for reforming the Jacobian and
+ * residual.
+ *
+ * @param jacobian Handle to diagonal matrix (as Field) for system Jacobian.
+ * @param fields Handle to solution fields.
+ * @param t Current time (nondimensional).
+ * @param dt Time step (nondimension).
+ */
+ void updateSettings(topology::Field<topology::Mesh>* jacobian,
+ topology::SolutionFields* fields,
+ const double t,
+ const double dt);
+
/** Reform system residual.
*
* @param tmpResidualVec Temporary PETSc vector for residual.
- * @param tmpSolveSolnVec Temporary PETSc vector for solution.
+ * @param tmpSolutionVec Temporary PETSc vector for solution.
*/
void reformResidual(const PetscVec* tmpResidualVec =0,
- const PetscVec* tmpSolveSolnVec =0);
+ const PetscVec* tmpSolutionVec =0);
/* Reform system Jacobian.
*
@@ -97,14 +117,28 @@
*/
void reformJacobian(const PetscVec* tmpSolveSolnVec =0);
- const topology::SolutionFields& fields() const;
+ /* Reform system Jacobian.
+ */
+ void reformJacobianLumped(void);
+ /** Constrain solution space.
+ *
+ * @param tmpSolutionVec Temporary PETSc vector for solution.
+ */
+ void constrainSolnSpace(const PetscVec* tmpSolutionVec);
+
+ /** Adjust solution from solver with lumped Jacobian to match Lagrange
+ * multiplier constraints.
+ */
+ void adjustSolnLumped(void);
+
// PRIVATE MEMBERS //////////////////////////////////////////////////////
private :
double _t; ///< Current time (nondimensional).
double _dt; ///< Current time step (nondimensional).
topology::Jacobian* _jacobian; ///< Handle to Jacobian of system.
+ topology::Field<topology::Mesh>* _jacobianLumped; ///< Handle to lumped Jacobian of system.
topology::SolutionFields* _fields; ///< Handle to solution fields for system.
/// Integrators over subdomains of the mesh.
Modified: short/3D/PyLith/trunk/libsrc/problems/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/libsrc/problems/Makefile.am 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/problems/Makefile.am 2009-12-10 01:52:12 UTC (rev 16094)
@@ -18,6 +18,7 @@
Solver.hh \
SolverLinear.hh \
SolverNonlinear.hh \
+ SolverLumped.hh \
problemsfwd.hh
noinst_HEADERS =
Modified: short/3D/PyLith/trunk/libsrc/problems/Solver.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/problems/Solver.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/problems/Solver.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -27,6 +27,9 @@
// Solver ---------------------------------------------------------
+/** @brief Abstract C++ base class for using PETSc linear and
+ * nonlinear solvers.
+ */
class pylith::problems::Solver
{ // Solver
friend class TestSolver; // unit testing
Modified: short/3D/PyLith/trunk/libsrc/problems/SolverLinear.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/problems/SolverLinear.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/problems/SolverLinear.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -14,9 +14,6 @@
* @file libsrc/problems/SolverLinear.hh
*
* @brief Object for using PETSc scalable linear equation solvers (KSP).
- *
- * The PETSc linear KSP solvers provide an interface to Krylov subspace
- * (KS) iterative methods and preconditioners (P).
*/
#if !defined(pylith_problems_solverlinear_hh)
@@ -28,6 +25,13 @@
#include "pylith/utils/petscfwd.h" // HASA PetscKSP
// SolverLinear ---------------------------------------------------------
+/** @brief Object for using PETSc scalable linear equation solvers
+ * (KSP).
+ *
+ * The PETSc linear KSP solvers provide an interface to Krylov subspace
+ * (KS) iterative methods and preconditioners (P).
+ */
+
class pylith::problems::SolverLinear : Solver
{ // SolverLinear
friend class TestSolverLinear; // unit testing
Copied: short/3D/PyLith/trunk/libsrc/problems/SolverLumped.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/libsrc/problems/SolverLumped.cc)
===================================================================
--- short/3D/PyLith/trunk/libsrc/problems/SolverLumped.cc (rev 0)
+++ short/3D/PyLith/trunk/libsrc/problems/SolverLumped.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,119 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+#include <portinfo>
+
+#include "SolverLumped.hh" // implementation of class methods
+
+#include "pylith/topology/SolutionFields.hh" // USES SolutionFields
+#include "pylith/topology/Jacobian.hh" // USES Jacobian
+#include "pylith/problems/Formulation.hh" // USES Formulation
+
+// ----------------------------------------------------------------------
+typedef pylith::topology::Mesh::SieveMesh SieveMesh;
+typedef pylith::topology::Mesh::RealSection RealSection;
+
+// ----------------------------------------------------------------------
+// Constructor
+pylith::problems::SolverLumped::SolverLumped(void)
+{ // constructor
+} // constructor
+
+// ----------------------------------------------------------------------
+// Destructor
+pylith::problems::SolverLumped::~SolverLumped(void)
+{ // destructor
+ deallocate();
+} // destructor
+
+// ----------------------------------------------------------------------
+// Deallocate data structures.
+void
+pylith::problems::SolverLumped::deallocate(void)
+{ // deallocate
+ Solver::deallocate();
+} // deallocate
+
+// ----------------------------------------------------------------------
+// Initialize solver.
+void
+pylith::problems::SolverLumped::initialize(
+ const topology::SolutionFields& fields,
+ const topology::Field<topology::Mesh>& jacobian,
+ Formulation* formulation)
+{ // initialize
+ assert(0 != formulation);
+
+ _formulation = formulation;
+} // initialize
+
+// ----------------------------------------------------------------------
+// Solve the system.
+void
+pylith::problems::SolverLumped::solve(
+ topology::Field<topology::Mesh>* solution,
+ const topology::Field<topology::Mesh>& jacobian,
+ const topology::Field<topology::Mesh>& residual)
+{ // solve
+ assert(0 != solution);
+ assert(0 != _formulation);
+
+ // solution = residual / jacobian
+
+ const spatialdata::geocoords::CoordSys* cs = solution->mesh().coordsys();
+ assert(0 != cs);
+ const int spaceDim = cs->spaceDim();
+
+ // Get mesh vertices.
+ const ALE::Obj<SieveMesh>& sieveMesh = solution->mesh().sieveMesh();
+ assert(!sieveMesh.isNull());
+ const ALE::Obj<SieveMesh::label_sequence>& vertices =
+ sieveMesh->depthStratum(0);
+ assert(!vertices.isNull());
+ const SieveMesh::label_sequence::iterator verticesBegin =
+ vertices->begin();
+ const SieveMesh::label_sequence::iterator verticesEnd = vertices->end();
+
+ // Get sections.
+ double_array solutionVertex(spaceDim);
+ const ALE::Obj<RealSection>& solutionSection = solution->section();
+ assert(!solutionSection.isNull());
+
+ double_array jacobianVertex(spaceDim);
+ const ALE::Obj<RealSection>& jacobianSection = jacobian.section();
+ assert(!jacobianSection.isNull());
+
+ double_array residualVertex(spaceDim);
+ const ALE::Obj<RealSection>& residualSection = residual.section();
+ assert(!residualSection.isNull());
+
+ for (SieveMesh::label_sequence::iterator v_iter=verticesBegin;
+ v_iter != verticesEnd;
+ ++v_iter) {
+ jacobianSection->restrictPoint(*v_iter, &jacobianVertex[0],
+ jacobianVertex.size());
+ residualSection->restrictPoint(*v_iter, &residualVertex[0],
+ residualVertex.size());
+ solutionVertex = residualVertex / jacobianVertex;
+
+ assert(solutionSection->getFiberDimension(*v_iter) == spaceDim);
+ solutionSection->updatePoint(*v_iter, &solutionVertex[0]);
+ } // for
+
+ // Adjust solution to match constraints
+ _formulation->adjustSolnLumped();
+
+ PetscLogFlops(vertices->size());
+} // solve
+
+
+// End of file
Copied: short/3D/PyLith/trunk/libsrc/problems/SolverLumped.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/libsrc/problems/SolverLumped.hh)
===================================================================
--- short/3D/PyLith/trunk/libsrc/problems/SolverLumped.hh (rev 0)
+++ short/3D/PyLith/trunk/libsrc/problems/SolverLumped.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,79 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+/**
+ * @file libsrc/problems/SolverLumped.hh
+ *
+ * @brief Object for using PETSc scalable linear equation solvers (KSP).
+ */
+
+#if !defined(pylith_problems_solverlumped_hh)
+#define pylith_problems_solverlumped_hh
+
+// Include directives ---------------------------------------------------
+#include "Solver.hh" // ISA Solver
+
+#include "pylith/utils/petscfwd.h" // HASA PetscKSP
+
+// SolverLumped ---------------------------------------------------------
+/** @brief Object for using simple solver to solver system with lumped Jacobian.
+ */
+
+class pylith::problems::SolverLumped : Solver
+{ // SolverLumped
+ friend class TestSolverLumped; // unit testing
+
+// PUBLIC MEMBERS ///////////////////////////////////////////////////////
+public :
+
+ /// Constructor
+ SolverLumped(void);
+
+ /// Destructor
+ ~SolverLumped(void);
+
+ /// Deallocate PETSc and local data structures.
+ void deallocate(void);
+
+ /** Initialize solver.
+ *
+ * @param fields Solution fields.
+ * @param jacobian Jacobian of system.
+ * @param formulation Formulation of system of equations.
+ */
+ void
+ initialize(const topology::SolutionFields& fields,
+ const topology::Field<topology::Mesh>& jacobian,
+ Formulation* const formulation);
+
+ /** Solve the system.
+ *
+ * @param solution Solution field.
+ * @param jacobian Jacobian of the system.
+ * @param residual Residual field.
+ */
+ void solve(topology::Field<topology::Mesh>* solution,
+ const topology::Field<topology::Mesh>& jacobian,
+ const topology::Field<topology::Mesh>& residual);
+
+// NOT IMPLEMENTED //////////////////////////////////////////////////////
+private :
+
+ SolverLumped(const SolverLumped&); ///< Not implemented
+ const SolverLumped& operator=(const SolverLumped&); ///< Not implemented
+
+}; // SolverLumped
+
+#endif // pylith_problems_solverlumped_hh
+
+
+// End of file
Modified: short/3D/PyLith/trunk/libsrc/problems/SolverNonlinear.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/problems/SolverNonlinear.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/problems/SolverNonlinear.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -22,6 +22,11 @@
#include "pylith/utils/petscerror.h" // USES CHECK_PETSC_ERROR
+#include <cmath>
+#define isnan std::isnan // TEMPORARY
+#define isinf std::isinf // TEMPORARY
+#include "../src/snes/impls/ls/ls.h"
+
// ----------------------------------------------------------------------
// Constructor
pylith::problems::SolverNonlinear::SolverNonlinear(void) :
@@ -80,6 +85,8 @@
CHECK_PETSC_ERROR(err);
err = SNESSetFromOptions(_snes); CHECK_PETSC_ERROR(err);
+ err = SNESLineSearchSet(_snes, lineSearch,
+ (void*) formulation); CHECK_PETSC_ERROR(err);
} // initialize
// ----------------------------------------------------------------------
@@ -140,5 +147,249 @@
return 0;
} // reformJacobian
+// ----------------------------------------------------------------------
+// Generic C interface for customized PETSc line search.
+PetscErrorCode
+pylith::problems::SolverNonlinear::lineSearch(PetscSNES snes,
+ void *lsctx,
+ PetscVec x,
+ PetscVec f,
+ PetscVec g,
+ PetscVec y,
+ PetscVec w,
+ PetscReal fnorm,
+ PetscReal xnorm,
+ PetscReal *ynorm,
+ PetscReal *gnorm,
+ PetscTruth *flag)
+{ // lineSearch
+ // Note that for line search purposes we work with with the related
+ // minimization problem:
+ // min z(x): R^n -> R,
+ // where z(x) = .5 * fnorm*fnorm, and fnorm = || f ||_2.
+
+ PetscReal initslope,lambdaprev,gnormprev,a,b,d,t1,t2,rellength;
+ PetscReal minlambda,lambda,lambdatemp;
+#if defined(PETSC_USE_COMPLEX)
+ PetscScalar cinitslope;
+#endif
+ PetscErrorCode ierr;
+ PetscInt count;
+ SNES_LS *neP = (SNES_LS*)snes->data;
+ PetscTruth changed_w = PETSC_FALSE,changed_y = PETSC_FALSE;
+ PetscFunctionBegin;
+ ierr = PetscLogEventBegin(SNES_LineSearch,snes,x,f,g);CHKERRQ(ierr);
+ *flag = PETSC_TRUE;
+
+ ierr = VecNorm(y,NORM_2,ynorm);CHKERRQ(ierr);
+ if (!*ynorm) {
+ ierr = PetscInfo(snes,"Search direction and size is 0\n");CHKERRQ(ierr);
+ *gnorm = fnorm;
+ ierr = VecCopy(x,w);CHKERRQ(ierr);
+ ierr = VecCopy(f,g);CHKERRQ(ierr);
+ *flag = PETSC_FALSE;
+ goto theend1;
+ }
+ if (*ynorm > neP->maxstep) { /* Step too big, so scale back */
+ ierr = PetscInfo2(snes,"Scaling step by %G old ynorm %G\n",
+ neP->maxstep/(*ynorm),*ynorm);CHKERRQ(ierr);
+ ierr = VecScale(y,neP->maxstep/(*ynorm));CHKERRQ(ierr);
+ *ynorm = neP->maxstep;
+ }
+ ierr = VecMaxPointwiseDivide(y,x,&rellength);CHKERRQ(ierr);
+ minlambda = neP->minlambda/rellength;
+ ierr = MatMult(snes->jacobian,y,w);CHKERRQ(ierr);
+#if defined(PETSC_USE_COMPLEX)
+ ierr = VecDot(f,w,&cinitslope);CHKERRQ(ierr);
+ initslope = PetscRealPart(cinitslope);
+#else
+ ierr = VecDot(f,w,&initslope);CHKERRQ(ierr);
+#endif
+ if (initslope > 0.0) initslope = -initslope;
+ if (initslope == 0.0) initslope = -1.0;
+
+ ierr = VecWAXPY(w,-1.0,y,x);CHKERRQ(ierr);
+ if (snes->nfuncs >= snes->max_funcs) {
+ ierr = PetscInfo(snes,"Exceeded maximum function evaluations, "
+ "while checking full step length!\n");CHKERRQ(ierr);
+ *flag = PETSC_FALSE;
+ snes->reason = SNES_DIVERGED_FUNCTION_COUNT;
+ goto theend1;
+ } // if
+ // TEMPORARY: update w?
+
+ ierr = SNESComputeFunction(snes,w,g);CHKERRQ(ierr);
+ if (snes->domainerror) {
+ ierr = PetscLogEventEnd(SNES_LineSearch,snes,x,f,g);CHKERRQ(ierr);
+ PetscFunctionReturn(0);
+ }
+ ierr = VecNorm(g,NORM_2,gnorm);CHKERRQ(ierr);
+ if (PetscIsInfOrNanReal(*gnorm))
+ SETERRQ(PETSC_ERR_FP, "User provided compute function generated a "
+ "Not-a-Number");
+ ierr = PetscInfo2(snes,"Initial fnorm %G gnorm %G\n",fnorm,*gnorm);CHKERRQ(ierr);
+ if (.5*(*gnorm)*(*gnorm) <= .5*fnorm*fnorm + neP->alpha*initslope) {
+ // Sufficient reduction
+ ierr = PetscInfo2(snes,"Using full step: fnorm %G gnorm %G\n",
+ fnorm,*gnorm);CHKERRQ(ierr);
+ goto theend1;
+ } // if
+
+ // Fit points with quadratic
+ lambda = 1.0;
+ lambdatemp = -initslope/((*gnorm)*(*gnorm) - fnorm*fnorm - 2.0*initslope);
+ lambdaprev = lambda;
+ gnormprev = *gnorm;
+ if (lambdatemp > .5*lambda)
+ lambdatemp = .5*lambda;
+ if (lambdatemp <= .1*lambda)
+ lambda = .1*lambda;
+ else
+ lambda = lambdatemp;
+
+ ierr = VecWAXPY(w,-lambda,y,x);CHKERRQ(ierr);
+ if (snes->nfuncs >= snes->max_funcs) {
+ ierr = PetscInfo1(snes,"Exceeded maximum function evaluations, while attempting quadratic backtracking! %D \n",snes->nfuncs);CHKERRQ(ierr);
+ *flag = PETSC_FALSE;
+ snes->reason = SNES_DIVERGED_FUNCTION_COUNT;
+ goto theend1;
+ } // if
+ // TEMPORARY: update w?
+
+ ierr = SNESComputeFunction(snes,w,g);CHKERRQ(ierr);
+ if (snes->domainerror) {
+ ierr = PetscLogEventEnd(SNES_LineSearch,snes,x,f,g);CHKERRQ(ierr);
+ PetscFunctionReturn(0);
+ } // if
+ ierr = VecNorm(g,NORM_2,gnorm);CHKERRQ(ierr);
+ if PetscIsInfOrNanReal(*gnorm) SETERRQ(PETSC_ERR_FP,"User provided compute function generated a Not-a-Number");
+ ierr = PetscInfo1(snes,"gnorm after quadratic fit %G\n",*gnorm);CHKERRQ(ierr);
+ if (.5*(*gnorm)*(*gnorm) < .5*fnorm*fnorm + lambda*neP->alpha*initslope) { /* sufficient reduction */
+ ierr = PetscInfo1(snes,"Quadratically determined step, lambda=%18.16e\n",lambda);CHKERRQ(ierr);
+ goto theend1;
+ } // if
+
+ // Fit points with cubic
+ count = 1;
+ while (PETSC_TRUE) {
+ if (lambda <= minlambda) {
+ ierr = PetscInfo1(snes,"Unable to find good step length! After %D "
+ "tries \n",count);CHKERRQ(ierr);
+ ierr = PetscInfo6(snes,"fnorm=%18.16e, gnorm=%18.16e, ynorm=%18.16e, "
+ "minlambda=%18.16e, lambda=%18.16e, "
+ "initial slope=%18.16e\n",
+ fnorm,*gnorm,*ynorm,minlambda,lambda,initslope);
+ CHKERRQ(ierr);
+ *flag = PETSC_FALSE;
+ break;
+ }
+ t1 = .5*((*gnorm)*(*gnorm) - fnorm*fnorm) - lambda*initslope;
+ t2 = .5*(gnormprev*gnormprev - fnorm*fnorm) - lambdaprev*initslope;
+ a = (t1/(lambda*lambda) - t2/(lambdaprev*lambdaprev))/(lambda-lambdaprev);
+ b = (-lambdaprev*t1/(lambda*lambda) +
+ lambda*t2/(lambdaprev*lambdaprev))/(lambda-lambdaprev);
+ d = b*b - 3*a*initslope;
+ if (d < 0.0) d = 0.0;
+ if (a == 0.0) {
+ lambdatemp = -initslope/(2.0*b);
+ } else {
+ lambdatemp = (-b + sqrt(d))/(3.0*a);
+ } // if/else
+ lambdaprev = lambda;
+ gnormprev = *gnorm;
+ if (lambdatemp > .5*lambda)
+ lambdatemp = .5*lambda;
+ if (lambdatemp <= .1*lambda)
+ lambda = .1*lambda;
+ else
+ lambda = lambdatemp;
+ ierr = VecWAXPY(w,-lambda,y,x);CHKERRQ(ierr);
+ if (snes->nfuncs >= snes->max_funcs) {
+ ierr = PetscInfo1(snes,"Exceeded maximum function evaluations, "
+ "while looking for good step length! %D \n",count);
+ CHKERRQ(ierr);
+ ierr = PetscInfo5(snes,"fnorm=%18.16e, gnorm=%18.16e, ynorm=%18.16e, "
+ "lambda=%18.16e, initial slope=%18.16e\n",
+ fnorm,*gnorm,*ynorm,lambda,initslope);CHKERRQ(ierr);
+ *flag = PETSC_FALSE;
+ snes->reason = SNES_DIVERGED_FUNCTION_COUNT;
+ break;
+ } // if
+ // TEMPORARY: update w?
+
+ ierr = SNESComputeFunction(snes,w,g);CHKERRQ(ierr);
+ if (snes->domainerror) {
+ ierr = PetscLogEventEnd(SNES_LineSearch,snes,x,f,g);CHKERRQ(ierr);
+ PetscFunctionReturn(0);
+ } // if
+ ierr = VecNorm(g,NORM_2,gnorm);CHKERRQ(ierr);
+ if (PetscIsInfOrNanReal(*gnorm))
+ SETERRQ(PETSC_ERR_FP,"User provided compute function generated a "
+ "Not-a-Number");
+ if (.5*(*gnorm)*(*gnorm) < .5*fnorm*fnorm + lambda*neP->alpha*initslope) {
+ // is reduction enough?
+ ierr = PetscInfo2(snes,"Cubically determined step, current gnorm %G "
+ "lambda=%18.16e\n",*gnorm,lambda);CHKERRQ(ierr);
+ break;
+ } else {
+ ierr = PetscInfo2(snes,"Cubic step no good, shrinking lambda, "
+ "current gnorem %G lambda=%18.16e\n",
+ *gnorm,lambda);CHKERRQ(ierr);
+ } // if/else
+ count++;
+ } // while
+
+ theend1:
+ /* Optional user-defined check for line search step validity */
+ if (neP->postcheckstep && *flag) {
+ ierr = (*neP->postcheckstep)(snes,x,y,w,neP->postcheck,&changed_y,
+ &changed_w);CHKERRQ(ierr);
+ if (changed_y)
+ ierr = VecWAXPY(w,-1.0,y,x);CHKERRQ(ierr);
+ // TEMPORARY: update w?
+
+ if (changed_y || changed_w) {
+ // recompute the function if the step has changed
+ ierr = SNESComputeFunction(snes,w,g);CHKERRQ(ierr);
+ if (snes->domainerror) {
+ ierr = PetscLogEventEnd(SNES_LineSearch,snes,x,f,g);CHKERRQ(ierr);
+ PetscFunctionReturn(0);
+ }
+ ierr = VecNormBegin(g,NORM_2,gnorm);CHKERRQ(ierr);
+ if (PetscIsInfOrNanReal(*gnorm))
+ SETERRQ(PETSC_ERR_FP, "User provided compute function generated a "
+ "Not-a-Number");
+ ierr = VecNormBegin(y,NORM_2,ynorm);CHKERRQ(ierr);
+ ierr = VecNormEnd(g,NORM_2,gnorm);CHKERRQ(ierr);
+ ierr = VecNormEnd(y,NORM_2,ynorm);CHKERRQ(ierr);
+ } // if
+ } // if
+ ierr = PetscLogEventEnd(SNES_LineSearch,snes,x,f,g);CHKERRQ(ierr);
+
+ // ======================================================================
+ // Code to constrain solution space.
+ assert(0 != lsctx);
+ Formulation* formulation = (Formulation*) lsctx;
+ assert(0 != formulation);
+ formulation->constrainSolnSpace(&w);
+
+ ierr = SNESComputeFunction(snes,w,g);CHKERRQ(ierr);
+ if (snes->domainerror) {
+ ierr = PetscLogEventEnd(SNES_LineSearch,snes,x,f,g);CHKERRQ(ierr);
+ PetscFunctionReturn(0);
+ }
+ ierr = VecNormBegin(g,NORM_2,gnorm);CHKERRQ(ierr);
+ if (PetscIsInfOrNanReal(*gnorm))
+ SETERRQ(PETSC_ERR_FP, "User provided compute function generated a "
+ "Not-a-Number");
+ ierr = VecNormBegin(y,NORM_2,ynorm);CHKERRQ(ierr);
+ ierr = VecNormEnd(g,NORM_2,gnorm);CHKERRQ(ierr);
+ ierr = VecNormEnd(y,NORM_2,ynorm);CHKERRQ(ierr);
+ // ======================================================================
+
+ PetscFunctionReturn(0);
+} // lineSearch
+
+
// End of file
Modified: short/3D/PyLith/trunk/libsrc/problems/SolverNonlinear.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/problems/SolverNonlinear.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/problems/SolverNonlinear.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -15,9 +15,6 @@
*
* @brief Object for using PETSc scalable nonlinear equation solvers
* (SNES).
- *
- * The PETSc nonlinear solvers provide an interface to Newton-based
- * methods for solving nonlinear equations.
*/
#if !defined(pylith_problems_solvernonlinear_hh)
@@ -30,6 +27,12 @@
#include <petscmat.h> // USES MatStructure
// SolverNonlinear ---------------------------------------------------------
+/** @brief Object for using PETSc scalable nonlinear equation solvers
+ * (SNES).
+ *
+ * The PETSc nonlinear solvers provide an interface to Newton-based
+ * methods for solving nonlinear equations.
+ */
class pylith::problems::SolverNonlinear : public Solver
{ // SolverNonlinear
friend class TestSolverNonlinear; // unit testing
@@ -101,6 +104,37 @@
MatStructure* preconditionerLayout,
void* context);
+ /** Generic C interface for customized PETSc line search.
+ *
+ * @param snes PETSc SNES solver.
+ * @param lsctx Optional context for line search (not used here).
+ * @param x Current iterate.
+ * @param f Residual evaluated at x.
+ * @param y Search direction.
+ * @param w Work vector
+ * @param f 2-norm of f.
+ * @param xnorm Norm of x if known, otherwise 0.
+ * @param g Residual evaluated at new iterate y.
+ * @param w New iterate.
+ * @param gnorm 2-norm of g.
+ * @param ynorm 2-norm of search length.
+ * @param PETSC_TRUE if line search succeeds; PETSC_FALSE on failure.
+ * @returns PETSc error code.
+ */
+ static
+ PetscErrorCode lineSearch(PetscSNES snes,
+ void *lsctx,
+ PetscVec x,
+ PetscVec f,
+ PetscVec g,
+ PetscVec y,
+ PetscVec w,
+ PetscReal fnorm,
+ PetscReal xnorm,
+ PetscReal *ynorm,
+ PetscReal *gnorm,
+ PetscTruth *flag);
+
// PRIVATE MEMBERS //////////////////////////////////////////////////////
private :
Modified: short/3D/PyLith/trunk/libsrc/problems/problemsfwd.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/problems/problemsfwd.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/problems/problemsfwd.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -29,6 +29,7 @@
class Solver;
class SolverLinear;
class SolverNonlinear;
+ class SolverLumped;
} // problems
} // pylith
Property changes on: short/3D/PyLith/trunk/libsrc/topology
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Modified: short/3D/PyLith/trunk/libsrc/topology/Distributor.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/Distributor.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/topology/Distributor.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
/**
- * @file pylith/topology/Distributor.hh
+ * @file libsrc/topology/Distributor.hh
*
* @brief Object for managing distribution of mesh among processors.
*/
@@ -25,6 +25,7 @@
#include "pylith/meshio/meshiofwd.hh" // USES DataWriter<Mesh>
// Distributor ----------------------------------------------------------
+/// Distribute mesh among processors.
class pylith::topology::Distributor
{ // Distributor
friend class TestDistributor; // unit testing
Modified: short/3D/PyLith/trunk/libsrc/topology/Field.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/Field.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/topology/Field.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -15,8 +15,6 @@
*
* @brief Vector field over the vertices or cells of a finite-element
* mesh.
- *
- * Extends Sieve real general section by adding metadata.
*/
#if !defined(pylith_topology_field_hh)
@@ -31,6 +29,11 @@
#include <petscmesh.hh>
// Field ----------------------------------------------------------------
+/** @brief Vector field over the vertices or cells of a finite-element
+ * mesh.
+ *
+ * Extends Sieve real general section by adding metadata.
+ */
template<typename mesh_type>
class pylith::topology::Field : public FieldBase
{ // Field
Modified: short/3D/PyLith/trunk/libsrc/topology/FieldBase.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/FieldBase.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/topology/FieldBase.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -24,6 +24,9 @@
#include "topologyfwd.hh" // forward declarations
// FieldBase ------------------------------------------------------------
+/** @brief Basic information related to a vector field over the
+ * vertices or cells of a finite-element mesh.
+ */
class pylith::topology::FieldBase
{ // Field
Modified: short/3D/PyLith/trunk/libsrc/topology/Fields.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/Fields.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/topology/Fields.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -13,7 +13,8 @@
/**
* @file libsrc/topology/Fields.hh
*
- * @brief Object for managing fields over a finite-element mesh.
+ * @brief Container for managing multiple fields over a finite-element
+ * mesh.
*/
#if !defined(pylith_topology_fields_hh)
@@ -27,6 +28,7 @@
#include <string> // USES std::string
// Fields ---------------------------------------------------------------
+/// Container for managing multiple fields over a finite-element mesh.
template<typename field_type>
class pylith::topology::Fields
{ // Fields
@@ -60,7 +62,7 @@
/** Add field.
*
* @param name Name of field.
- * @param label Label for field.
+ * @param label Label for field (used in output).
*/
void add(const char* name,
const char* label);
Modified: short/3D/PyLith/trunk/libsrc/topology/Jacobian.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/Jacobian.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/topology/Jacobian.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -25,6 +25,7 @@
#include "pylith/utils/petscfwd.h" // HOLDSA PetscMat
// Jacobian -------------------------------------------------------------
+/// Jacobian of the system as a PETSc sparse matrix.
class pylith::topology::Jacobian
{ // Jacobian
friend class TestJacobian; // unit testing
Modified: short/3D/PyLith/trunk/libsrc/topology/Mesh.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/Mesh.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/topology/Mesh.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -153,16 +153,25 @@
int
pylith::topology::Mesh::groupSize(const char *name)
{ // groupSize
+ if (!_mesh->hasIntSection(name)) {
+ std::ostringstream msg;
+ msg << "Cannot get size of group '" << name
+ << "'. Group missing from mesh.";
+ throw std::runtime_error(msg.str());
+ } // if
+
const ALE::Obj<IntSection>& group = _mesh->getIntSection(name);
const IntSection::chart_type& chart = group->getChart();
IntSection::chart_type::const_iterator chartEnd = chart.end();
int size = 0;
- for(IntSection::chart_type::const_iterator c_iter = chart.begin(); c_iter != chartEnd; ++c_iter) {
- if (group->getFiberDimension(*c_iter)) {
+ for(IntSection::chart_type::const_iterator c_iter = chart.begin();
+ c_iter != chartEnd;
+ ++c_iter) {
+ if (group->getFiberDimension(*c_iter))
size++;
- }
- }
+ } // for
+
return size;
} // groupSize
Modified: short/3D/PyLith/trunk/libsrc/topology/Mesh.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/Mesh.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/topology/Mesh.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -14,9 +14,6 @@
* @file libsrc/topology/Mesh.hh
*
* @brief C++ PyLith finite-element mesh.
- *
- * Extends Sieve mesh to include coordinate system associated with
- * domain.
*/
#if !defined(pylith_topology_mesh_hh)
@@ -30,6 +27,11 @@
#include <petscmesh.hh> // HASA ALE::IMesh
// Mesh -----------------------------------------------------------------
+/** @brief PyLith finite-element mesh.
+ *
+ * Extends Sieve mesh to include coordinate system associated with
+ * domain.
+ */
class pylith::topology::Mesh
{ // Mesh
friend class TestMesh; // unit testing
@@ -37,22 +39,26 @@
// PUBLIC TYPEDEFS //////////////////////////////////////////////////////
public :
- // Typedefs for basic types associated with Sieve mesh.
- // All other PyLith mesh and submesh objects should define:
- // (1) SieveMesh - Sieve mesh
- // (2) RealSection - Section of doubles
- // (3) IntSection - Section of ints
- // because these are used in templated code.
- //
- // All other mesh objects for the domain should also define
- // (1) SieveSubMesh - SubMesh object
+ /** Typedefs for basic types associated with Sieve mesh.
+ * All other PyLith mesh and submesh objects should define:
+ * (1) SieveMesh - Sieve mesh
+ * (2) RealSection - Section of doubles
+ * (3) IntSection - Section of ints
+ * because these are used in templated code.
+ *
+ * All other mesh objects for the domain should also define
+ * (1) SieveSubMesh - SubMesh object
+ */
+ //@{
typedef ALE::IMesh<> SieveMesh;
typedef SieveMesh::real_section_type RealSection;
typedef SieveMesh::int_section_type IntSection;
typedef ALE::IMesh<ALE::LabelSifter<int, SieveMesh::point_type> > SieveSubMesh;
typedef ALE::ISieveVisitor::RestrictVisitor<RealSection> RestrictVisitor;
typedef ALE::ISieveVisitor::UpdateAddVisitor<RealSection> UpdateAddVisitor;
+ typedef ALE::ISieveVisitor::UpdateAllVisitor<RealSection> UpdateAllVisitor;
typedef ALE::ISieveVisitor::IndicesVisitor<RealSection,SieveMesh::order_type,PetscInt> IndicesVisitor;
+ //@}
// PUBLIC METHODS ///////////////////////////////////////////////////////
Modified: short/3D/PyLith/trunk/libsrc/topology/MeshOps.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/MeshOps.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/topology/MeshOps.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
/**
- * @file pylith/topology/MeshOps.hh
+ * @file libsrc/topology/MeshOps.hh
*
* @brief Simple operations on a Mesh object.
*/
@@ -23,6 +23,7 @@
#include "topologyfwd.hh" // forward declarations
// MeshOps --------------------------------------------------------------
+/// Simple operations on a Mesh object.
class pylith::topology::MeshOps
{ // MeshOps
friend class TestMeshOps; // unit testing
Modified: short/3D/PyLith/trunk/libsrc/topology/RefineUniform.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/RefineUniform.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/topology/RefineUniform.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
/**
- * @file pylith/topology/RefineUniform.hh
+ * @file libsrc/topology/RefineUniform.hh
*
* @brief Object for managing uniform global mesh refinement.
*/
@@ -23,6 +23,7 @@
#include "topologyfwd.hh" // forward declarations
// RefineUniform --------------------------------------------------------
+/// Object for managing uniform global mesh refinement.
class pylith::topology::RefineUniform
{ // RefineUniform
friend class TestRefineUniform; // unit testing
Modified: short/3D/PyLith/trunk/libsrc/topology/SolutionFields.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/SolutionFields.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/topology/SolutionFields.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -30,6 +30,9 @@
#include "Fields.hh" // ISA Fields< Field<Mesh> >
// SolutionFields -------------------------------------------------------
+/** @brief Object for managing solution fields over a finite-element
+ * mesh.
+ */
class pylith::topology::SolutionFields : public Fields<Field<Mesh> >
{ // SolutionFields
friend class TestSolutionFields; // unit testing
Modified: short/3D/PyLith/trunk/libsrc/topology/SubMesh.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/SubMesh.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/topology/SubMesh.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -62,12 +62,14 @@
const ALE::Obj<DomainSieveMesh>& meshSieveMesh = mesh.sieveMesh();
assert(!meshSieveMesh.isNull());
- const ALE::Obj<IntSection>& groupField = meshSieveMesh->getIntSection(label);
- if (groupField.isNull()) {
+ if (!meshSieveMesh->hasIntSection(label)) {
std::ostringstream msg;
msg << "Could not find group of points '" << label << "' in mesh.";
throw std::runtime_error(msg.str());
} // if
+
+ const ALE::Obj<IntSection>& groupField = meshSieveMesh->getIntSection(label);
+ assert(!groupField.isNull());
_mesh =
ALE::Selection<DomainSieveMesh>::submeshV<SieveMesh>(meshSieveMesh,
groupField);
Modified: short/3D/PyLith/trunk/libsrc/topology/SubMesh.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/topology/SubMesh.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/topology/SubMesh.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -14,9 +14,6 @@
* @file libsrc/topology/SubMesh.hh
*
* @brief C++ PyLith finite-element mesh.
- *
- * Extends Sieve mesh over subset of domain to include coordinate
- * system associated with domain.
*/
#if !defined(pylith_topology_submesh_hh)
@@ -29,6 +26,12 @@
#include "Mesh.hh" // USES Mesh
// SubMesh -----------------------------------------------------------------
+/** @brief C++ PyLith finite-element mesh.
+ *
+ * Extends Sieve mesh over subset of domain to include coordinate
+ * system associated with domain. Also has functions to simply
+ * creating submeshes from groups of vertices.
+ */
class pylith::topology::SubMesh
{ // SubMesh
friend class TestSubMesh; // unit testing
Property changes on: short/3D/PyLith/trunk/libsrc/utils
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Modified: short/3D/PyLith/trunk/libsrc/utils/EventLogger.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/utils/EventLogger.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/utils/EventLogger.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
/**
- * @file pylith/utils/EventLogger.hh
+ * @file libsrc/utils/EventLogger.hh
*
* @brief C++ object for managing event logging using PETSc.
*
@@ -31,6 +31,10 @@
#include "petsclog.h" // USES PetscLogEventBegin/End() in inline methods
// EventLogger ----------------------------------------------------------
+/** @brief C++ object for managing event logging using PETSc.
+ *
+ * Each logger object manages the events for a single "logging class".
+ */
class pylith::utils::EventLogger
{ // EventLogger
friend class TestEventLogger; // unit testing
Modified: short/3D/PyLith/trunk/libsrc/utils/TestArray.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/utils/TestArray.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/utils/TestArray.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,15 +11,9 @@
//
/**
- * @file pylith/utils/TestArray.hh
+ * @file libsrc/utils/TestArray.hh
*
* @brief C++ object for testing array values.
- *
- * This object is used in unit testing of SWIG interfaces where the
- * C++ object has an accessor returning a std::valarray. The TestArray
- * methods provide the ability to compare the array returned by the
- * accessor against the expected values, which are supplied via a
- * pointer and a size (number of values).
*/
#if !defined(pylith_utils_testarray_hh)
@@ -31,6 +25,14 @@
#include "arrayfwd.hh" // USES double_array
// TestArray ------------------------------------------------------------
+/** @brief C++ object for testing array values.
+ *
+ * This object is used in unit testing of SWIG interfaces where the
+ * C++ object has an accessor returning a std::valarray. The TestArray
+ * methods provide the ability to compare the array returned by the
+ * accessor against the expected values, which are supplied via a
+ * pointer and a size (number of values).
+ */
class pylith::utils::TestArray
{ // TestArray
Modified: short/3D/PyLith/trunk/libsrc/utils/array.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/utils/array.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/utils/array.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
/**
- * @file pylith/utils/array.hh
+ * @file libsrc/utils/array.hh
*
* @brief Header file for PyLith array objects.
*
Modified: short/3D/PyLith/trunk/libsrc/utils/arrayfwd.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/utils/arrayfwd.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/utils/arrayfwd.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
/**
- * @file pylith/utils/arrayfwd.hh
+ * @file libsrc/utils/arrayfwd.hh
*
* @brief Forward declarations for PyLith array objects.
*
Modified: short/3D/PyLith/trunk/libsrc/utils/constdefs.h
===================================================================
--- short/3D/PyLith/trunk/libsrc/utils/constdefs.h 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/utils/constdefs.h 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
/**
- * @file pylith/utils/macrodefs.hh
+ * @file libsrc/utils/constdefs.h
*
* @brief Macro definitions for PyLith.
*/
Modified: short/3D/PyLith/trunk/libsrc/utils/lapack.h
===================================================================
--- short/3D/PyLith/trunk/libsrc/utils/lapack.h 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/utils/lapack.h 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
/**
- * @file pylith/utils/lapack.h
+ * @file libsrc/utils/lapack.h
*
* @brief Declarations for LAPACK routines that we use. We rely on
* PETSc's interface to these routines.
Modified: short/3D/PyLith/trunk/libsrc/utils/macrodefs.h
===================================================================
--- short/3D/PyLith/trunk/libsrc/utils/macrodefs.h 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/utils/macrodefs.h 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
/**
- * @file pylith/utils/macrodefs.hh
+ * @file libsrc/utils/macrodefs.h
*
* @brief Macro definitions for PyLith.
*/
Modified: short/3D/PyLith/trunk/libsrc/utils/petscerror.h
===================================================================
--- short/3D/PyLith/trunk/libsrc/utils/petscerror.h 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/utils/petscerror.h 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
/**
- * @file pylith/utils/petscerror.h
+ * @file libsrc/utils/petscerror.h
*
* @brief Wrappers around PETSc error handling routines.
*/
Modified: short/3D/PyLith/trunk/libsrc/utils/petscfwd.h
===================================================================
--- short/3D/PyLith/trunk/libsrc/utils/petscfwd.h 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/utils/petscfwd.h 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
/**
- * @file pylith/utils/petscfwd.h
+ * @file libsrc/utils/petscfwd.h
*
* @brief Forward declarations for Petsc objects.
*/
Modified: short/3D/PyLith/trunk/libsrc/utils/sievefwd.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/utils/sievefwd.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/utils/sievefwd.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
/**
- * @file pylith/utils/sievefwd.hh
+ * @file libsrc/utils/sievefwd.hh
*
* @brief Forward declarations for PETSc Sieve objects.
*/
Modified: short/3D/PyLith/trunk/libsrc/utils/sievetypes.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/utils/sievetypes.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/libsrc/utils/sievetypes.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
/**
- * @file pylith/utils/sievetypes.hh
+ * @file libsrc/utils/sievetypes.hh
*
* @brief Aliases for Sieve types.
*/
@@ -23,7 +23,10 @@
namespace pylith {
+ /// Sieve mesh.
typedef ALE::IMesh<> Mesh;
+
+ /// Sieve submesh.
typedef ALE::IMesh<ALE::LabelSifter<int, Mesh::point_type> > SubMesh;
} // pylith
Modified: short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveDyn.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveDyn.i 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveDyn.i 2009-12-10 01:52:12 UTC (rev 16094)
@@ -34,6 +34,12 @@
/// Deallocate PETSc and local data structures.
virtual
void deallocate(void);
+
+ /** Sets the spatial database for the inital tractions
+ * @param dbs spatial database for initial tractions
+ */
+ void dbInitial(spatialdata::spatialdb::SpatialDB* dbs);
+
/** Initialize fault. Determine orientation and setup boundary
* condition parameters.
Copied: short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveDynL.i (from rev 16093, short/3D/PyLith/branches/pylith-friction/modulesrc/faults/FaultCohesiveDynL.i)
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveDynL.i (rev 0)
+++ short/3D/PyLith/trunk/modulesrc/faults/FaultCohesiveDynL.i 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,165 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/** @file modulesrc/faults/FaultCohesiveDynL.i
+ *
+ * @brief Python interface to C++ FaultCohesiveDynL object.
+ */
+
+namespace pylith {
+ namespace faults {
+
+ class FaultCohesiveDynL : public FaultCohesive
+ { // class FaultCohesiveDynL
+
+ // PUBLIC METHODS /////////////////////////////////////////////////
+ public :
+
+ /// Default constructor.
+ FaultCohesiveDynL(void);
+
+ /// Destructor.
+ virtual
+ ~FaultCohesiveDynL(void);
+
+ /// Deallocate PETSc and local data structures.
+ virtual
+ void deallocate(void);
+
+ /** Sets the spatial database for the inital tractions.
+ *
+ * @param db spatial database for initial tractions
+ */
+ void dbInitial(spatialdata::spatialdb::SpatialDB* db);
+
+ /** Initialize fault. Determine orientation and setup boundary
+ * condition parameters.
+ *
+ * @param mesh Finite-element mesh.
+ * @param upDir Direction perpendicular to along-strike direction that is
+ * not collinear with fault normal (usually "up" direction but could
+ * be up-dip direction; only applies to fault surfaces in a 3-D domain).
+ * @param normalDir General preferred direction for fault normal
+ * (used to pick which of two possible normal directions for
+ * interface; only applies to fault surfaces in a 3-D domain).
+ */
+ void initialize(const pylith::topology::Mesh& mesh,
+ const double upDir[3],
+ const double normalDir[3]);
+
+ /** Split solution field for separate preconditioning.
+ *
+ * @param field Solution field.
+ */
+ void splitField(pylith::topology::Field<pylith::topology::Mesh>* field);
+
+ /** Integrate contributions to residual term (r) for operator that
+ * require assembly across processors.
+ *
+ * @param residual Field containing values for residual
+ * @param t Current time
+ * @param fields Solution fields
+ */
+ void integrateResidual(const pylith::topology::Field<pylith::topology::Mesh>& residual,
+ const double t,
+ pylith::topology::SolutionFields* const fields);
+
+ /** Integrate contributions to residual term (r) for operator that
+ * do not require assembly across cells, vertices, or processors.
+ *
+ * @param residual Field containing values for residual
+ * @param t Current time
+ * @param fields Solution fields
+ */
+ void integrateResidualAssembled(const pylith::topology::Field<pylith::topology::Mesh>& residual,
+ const double t,
+ pylith::topology::SolutionFields* const fields);
+
+ /** Integrate contributions to Jacobian matrix (A) associated with
+ * operator that do not require assembly across cells, vertices, or
+ * processors.
+ *
+ * @param mat Sparse matrix
+ * @param t Current time
+ * @param fields Solution fields
+ * @param mesh Finite-element mesh
+ */
+ void integrateJacobianAssembled(pylith::topology::Jacobian* jacobian,
+ const double t,
+ pylith::topology::SolutionFields* const fields);
+
+ /** Update state variables as needed.
+ *
+ * @param t Current time
+ * @param fields Solution fields
+ * @param mesh Finite-element mesh
+ */
+ void updateStateVars(const double t,
+ pylith::topology::SolutionFields* const fields);
+
+ /** Constrain solution space based on friction.
+ *
+ * @param fields Solution fields.
+ * @param t Current time.
+ * @param jacobian Sparse matrix for system Jacobian.
+ */
+ void constrainSolnSpace(pylith::topology::SolutionFields* const fields,
+ const double t,
+ const pylith::topology::Jacobian& jacobian);
+
+ /** Verify configuration is acceptable.
+ *
+ * @param mesh Finite-element mesh
+ */
+ void verifyConfiguration(const pylith::topology::Mesh& mesh) const;
+
+ /** Get vertex field associated with integrator.
+ *
+ * @param name Name of cell field.
+ * @param fields Solution fields.
+ * @returns Vertex field.
+ */
+ const pylith::topology::Field<pylith::topology::SubMesh>&
+ vertexField(const char* name,
+ const pylith::topology::SolutionFields* fields =0);
+
+ /** Get cell field associated with integrator.
+ *
+ * @param name Name of cell field.
+ * @param fields Solution fields.
+ * @returns Cell field.
+ */
+ const pylith::topology::Field<pylith::topology::SubMesh>&
+ cellField(const char* name,
+ const pylith::topology::SolutionFields* fields =0);
+
+ /** Cohesive cells use Lagrange multiplier constraints?
+ *
+ * @returns True if implementation using Lagrange multiplier
+ * constraints, false otherwise.
+ */
+ bool useLagrangeConstraints(void) const;
+
+ /** Get fields associated with fault.
+ *
+ * @returns Fields associated with fault.
+ */
+ const pylith::topology::Fields<pylith::topology::Field<pylith::topology::SubMesh> >*
+ fields(void) const;
+
+ }; // class FaultCohesiveDynL
+
+ } // faults
+} // pylith
+
+
+// End of file
Modified: short/3D/PyLith/trunk/modulesrc/faults/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/Makefile.am 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/modulesrc/faults/Makefile.am 2009-12-10 01:52:12 UTC (rev 16094)
@@ -28,6 +28,7 @@
Fault.i \
FaultCohesive.i \
FaultCohesiveDyn.i \
+ FaultCohesiveDynL.i \
FaultCohesiveKin.i \
../topology/SubMesh.i \
../feassemble/Quadrature.i \
Copied: short/3D/PyLith/trunk/modulesrc/faults/TimeHistorySlipFn.i (from rev 16093, short/3D/PyLith/branches/pylith-friction/modulesrc/faults/TimeHistorySlipFn.i)
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/TimeHistorySlipFn.i (rev 0)
+++ short/3D/PyLith/trunk/modulesrc/faults/TimeHistorySlipFn.i 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,106 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/** @file modulesrc/faults/TimeHistorySlipFn.i
+ *
+ * @brief Python interface to C++ Fault object.
+ */
+
+namespace pylith {
+ namespace faults {
+
+ class TimeHistorySlipFn : public SlipTimeFn
+ { // class TimeHistorySlipFn
+
+ // PUBLIC METHODS /////////////////////////////////////////////////
+ public :
+
+ /// Default constructor.
+ TimeHistorySlipFn(void);
+
+ /// Destructor.
+ ~TimeHistorySlipFn(void);
+
+ /// Deallocate PETSc and local data structures.
+ virtual
+ void deallocate(void);
+
+ /** Set spatial database for amplitude of slip time history.
+ *
+ * @param db Spatial database
+ */
+ void dbAmplitude(spatialdata::spatialdb::SpatialDB* const db);
+
+ /** Set spatial database for slip initiation time.
+ *
+ * @param db Spatial database
+ */
+ void dbSlipTime(spatialdata::spatialdb::SpatialDB* const db);
+
+ /** Set time history.
+ *
+ * @param th Time history.
+ */
+ void dbTimeHistory(spatialdata::spatialdb::TimeHistory* const th);
+
+ /** Initialize slip time function.
+ *
+ * @param faultMesh Finite-element mesh of fault.
+ * @param cs Coordinate system for mesh
+ * @param normalizer Nondimensionalization of scales.
+ * @param originTime Origin time for earthquake source.
+ */
+ void initialize(const pylith::topology::SubMesh& faultMesh,
+ const spatialdata::units::Nondimensional& normalizer,
+ const double originTime =0.0);
+
+ /** Get slip on fault surface at time t.
+ *
+ * @param slipField Slip field over fault surface.
+ * @param t Time t.
+ *
+ * @returns Slip vector as left-lateral/reverse/normal.
+ */
+ void slip(pylith::topology::Field<pylith::topology::SubMesh>* const slipField,
+ const double t);
+
+ /** Get slip increment on fault surface between time t0 and t1.
+ *
+ * @param slipField Slip field over fault surface.
+ * @param t0 Time t.
+ * @param t1 Time t+dt.
+ *
+ * @returns Increment in slip vector as left-lateral/reverse/normal.
+ */
+ void slipIncr(pylith::topology::Field<pylith::topology::SubMesh>* slipField,
+ const double t0,
+ const double t1);
+
+ /** Get final slip.
+ *
+ * @returns Final slip.
+ */
+ const pylith::topology::Field<pylith::topology::SubMesh>& finalSlip(void);
+
+ /** Get time when slip begins at each point.
+ *
+ * @returns Time when slip begins.
+ */
+ const pylith::topology::Field<pylith::topology::SubMesh>& slipTime(void);
+
+ }; // class TimeHistorySlipFn
+
+ } // faults
+} // pylith
+
+
+// End of file
Modified: short/3D/PyLith/trunk/modulesrc/faults/faults.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/faults/faults.i 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/modulesrc/faults/faults.i 2009-12-10 01:52:12 UTC (rev 16094)
@@ -20,10 +20,12 @@
#include "pylith/faults/ConstRateSlipFn.hh"
#include "pylith/faults/BruneSlipFn.hh"
#include "pylith/faults/LiuCosSlipFn.hh"
+#include "pylith/faults/TimeHistorySlipFn.hh"
#include "pylith/faults/EqKinSrc.hh"
#include "pylith/faults/Fault.hh"
#include "pylith/faults/FaultCohesive.hh"
#include "pylith/faults/FaultCohesiveDyn.hh"
+#include "pylith/faults/FaultCohesiveDynL.hh"
#include "pylith/faults/FaultCohesiveKin.hh"
#include "pylith/topology/SubMesh.hh"
@@ -67,10 +69,12 @@
%include "ConstRateSlipFn.i"
%include "BruneSlipFn.i"
%include "LiuCosSlipFn.i"
+%include "TimeHistorySlipFn.i"
%include "EqKinSrc.i"
%include "Fault.i"
%include "FaultCohesive.i"
%include "FaultCohesiveDyn.i"
+%include "FaultCohesiveDynL.i"
%include "FaultCohesiveKin.i"
// End of file
Property changes on: short/3D/PyLith/trunk/modulesrc/feassemble
___________________________________________________________________
Name: svn:ignore
- Makefile.am
feassemble.py
feassemble_wrap.cxx
+ Makefile.am
feassemble.py
feassemble_wrap.cxx
Makefile.in
Copied: short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityExplicitLgDeform.i (from rev 16093, short/3D/PyLith/branches/pylith-friction/modulesrc/feassemble/ElasticityExplicitLgDeform.i)
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityExplicitLgDeform.i (rev 0)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityExplicitLgDeform.i 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,84 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/** @file modulesrc/feassemble/ElasticityExplicitLgDeform.i
+ *
+ * @brief Python interface to C++ ElasticityExplicitLgDeform object.
+ */
+
+namespace pylith {
+ namespace feassemble {
+
+ class ElasticityExplicitLgDeform : public IntegratorElasticityLgDeform
+ { // ElasticityExplicitLgDeform
+
+ // PUBLIC MEMBERS /////////////////////////////////////////////////
+ public:
+
+ /// Constructor
+ ElasticityExplicitLgDeform(void);
+
+ /// Destructor
+ ~ElasticityExplicitLgDeform(void);
+
+ /// Deallocate PETSc and local data structures.
+ void deallocate(void);
+
+ /** Set time step for advancing from time t to time t+dt.
+ *
+ * @param dt Time step
+ */
+ void timeStep(const double dt);
+
+ /** Set flag for setting constraints for total field solution or
+ * incremental field solution.
+ *
+ * @param flag True if using incremental solution, false otherwise.
+ */
+ void useSolnIncr(const bool flag);
+
+ /** Integrate contributions to residual term (r) for operator.
+ *
+ * @param residual Field containing values for residual
+ * @param t Current time
+ * @param fields Solution fields
+ */
+ void integrateResidual(const pylith::topology::Field<pylith::topology::Mesh>& residual,
+ const double t,
+ pylith::topology::SolutionFields* const fields);
+
+ /** Integrate contributions to Jacobian matrix (A) associated with
+ * operator.
+ *
+ * @param jacobian Sparse matrix for Jacobian of system.
+ * @param t Current time
+ * @param fields Solution fields
+ */
+ void integrateJacobian(pylith::topology::Jacobian* jacobian,
+ const double t,
+ pylith::topology::SolutionFields* const fields);
+
+ /** Integrate contributions to Jacobian matrix (A) associated with
+ * operator.
+ *
+ * @param jacobian Diagonal matrix (as field) for Jacobian of system.
+ * @param t Current time
+ * @param fields Solution fields
+ */
+ void integrateJacobian(const pylith::topology::Field<pylith::topology::Mesh>& jacobian,
+ const double t,
+ pylith::topology::SolutionFields* const fields);
+
+ }; // ElasticityExplicitLgDeform
+
+ } // feassemble
+} // pylith
Copied: short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityImplicitLgDeform.i (from rev 16093, short/3D/PyLith/branches/pylith-friction/modulesrc/feassemble/ElasticityImplicitLgDeform.i)
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityImplicitLgDeform.i (rev 0)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/ElasticityImplicitLgDeform.i 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,93 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/** @file modulesrc/feassemble/ElasticityImplicitLgDeform.i
+ *
+ * @brief Python interface to C++ ElasticityImplicitLgDeform object.
+ */
+
+namespace pylith {
+ namespace feassemble {
+
+ class ElasticityImplicitLgDeform : public IntegratorElasticityLgDeform
+ { // ElasticityImplicitLgDeform
+
+ // PUBLIC MEMBERS /////////////////////////////////////////////////
+ public:
+
+ /// Constructor
+ ElasticityImplicitLgDeform(void);
+
+ /// Destructor
+ ~ElasticityImplicitLgDeform(void);
+
+ /// Deallocate PETSc and local data structures.
+ void deallocate(void);
+
+ /** Set time step for advancing from time t to time t+dt.
+ *
+ * @param dt Time step
+ */
+ void timeStep(const double dt);
+
+ /** Get stable time step for advancing from time t to time t+dt.
+ *
+ * Default is current time step.
+ *
+ * @param mesh Finite-element mesh.
+ * @returns Time step
+ */
+ double stableTimeStep(const pylith::topology::Mesh& mesh) const;
+
+ /** Set flag for setting constraints for total field solution or
+ * incremental field solution.
+ *
+ * @param flag True if using incremental solution, false otherwise.
+ */
+ void useSolnIncr(const bool flag);
+
+ /** Integrate residual part of RHS for 3-D finite elements.
+ * Includes gravity and element internal force contribution.
+ *
+ * We assume that the effects of boundary conditions are already
+ * included in the residual (tractions, concentrated nodal forces,
+ * and contributions to internal force vector due to
+ * displacement/velocity BC). This routine computes the additional
+ * external loads due to body forces plus the
+ * element internal forces for the current stress state.
+ *
+ * @param residual Field containing values for residual
+ * @param t Current time
+ * @param fields Solution fields
+ */
+ void integrateResidual(const pylith::topology::Field<pylith::topology::Mesh>& residual,
+ const double t,
+ pylith::topology::SolutionFields* const fields);
+
+ /** Integrate contributions to Jacobian matrix (A) associated with
+ * operator.
+ *
+ * @param jacobian Sparse matrix for Jacobian of system.
+ * @param t Current time
+ * @param fields Solution fields
+ */
+ void integrateJacobian(pylith::topology::Jacobian* jacobian,
+ const double t,
+ pylith::topology::SolutionFields* const fields);
+
+ }; // ElasticityImplicitLgDeform
+
+ } // feassemble
+} // pylith
+
+
+// End of file
Modified: short/3D/PyLith/trunk/modulesrc/feassemble/IntegratorElasticity.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/IntegratorElasticity.i 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/IntegratorElasticity.i 2009-12-10 01:52:12 UTC (rev 16094)
@@ -10,9 +10,9 @@
// ----------------------------------------------------------------------
//
-/** @file modulesrc/feassemble/Integrator.i
+/** @file modulesrc/feassemble/IntegratorElasticity.i
*
- * @brief Python interface to C++ abstract Integrator object.
+ * @brief Python interface to C++ abstract IntegratorElasticity object.
*/
%template(MeshIntegrator) pylith::feassemble::Integrator<pylith::feassemble::Quadrature<pylith::topology::Mesh> >;
Copied: short/3D/PyLith/trunk/modulesrc/feassemble/IntegratorElasticityLgDeform.i (from rev 16093, short/3D/PyLith/branches/pylith-friction/modulesrc/feassemble/IntegratorElasticityLgDeform.i)
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/IntegratorElasticityLgDeform.i (rev 0)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/IntegratorElasticityLgDeform.i 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,56 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/** @file modulesrc/feassemble/IntegratorElasticityLgDeform.i
+ *
+ * @brief Python interface to C++ abstract IntegratorElasticityLgDeform object.
+ */
+
+namespace pylith {
+ namespace feassemble {
+
+ class IntegratorElasticityLgDeform :
+ public pylith::feassemble::IntegratorElasticity
+ { // IntegratorElasticityLgDeform
+
+ // PUBLIC MEMBERS /////////////////////////////////////////////////
+ public :
+
+ /// Constructor
+ IntegratorElasticityLgDeform(void);
+
+ /// Destructor
+ virtual
+ ~IntegratorElasticityLgDeform(void);
+
+ /** Determine whether we need to recompute the Jacobian.
+ *
+ * @returns True if Jacobian needs to be recomputed, false otherwise.
+ */
+ bool needNewJacobian(void);
+
+ /** Update state variables as needed.
+ *
+ * @param t Current time
+ * @param fields Solution fields
+ * @param mesh Finite-element mesh
+ */
+ void updateStateVars(const double t,
+ pylith::topology::SolutionFields* const fields);
+
+ }; // IntegratorElasticityLgDeform
+
+ } // feassemble
+} // pylith
+
+
+// End of file
Modified: short/3D/PyLith/trunk/modulesrc/feassemble/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/Makefile.am 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/Makefile.am 2009-12-10 01:52:12 UTC (rev 16094)
@@ -37,7 +37,10 @@
Integrator.i \
IntegratorElasticity.i \
ElasticityImplicit.i \
- ElasticityExplicit.i
+ ElasticityExplicit.i \
+ IntegratorElasticityLgDeform.i \
+ ElasticityImplicitLgDeform.i \
+ ElasticityExplicitLgDeform.i
swig_generated = \
feassemble_wrap.cxx \
Modified: short/3D/PyLith/trunk/modulesrc/feassemble/feassemble.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/feassemble.i 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/feassemble.i 2009-12-10 01:52:12 UTC (rev 16094)
@@ -35,6 +35,8 @@
#include "pylith/feassemble/Quadrature.hh"
#include "pylith/feassemble/ElasticityImplicit.hh"
#include "pylith/feassemble/ElasticityExplicit.hh"
+#include "pylith/feassemble/ElasticityImplicitLgDeform.hh"
+#include "pylith/feassemble/ElasticityExplicitLgDeform.hh"
%}
@@ -79,6 +81,9 @@
%include "IntegratorElasticity.i"
%include "ElasticityImplicit.i"
%include "ElasticityExplicit.i"
+%include "IntegratorElasticityLgDeform.i"
+%include "ElasticityImplicitLgDeform.i"
+%include "ElasticityExplicitLgDeform.i"
// Template instatiation
%template(MeshQuadrature) pylith::feassemble::Quadrature<pylith::topology::Mesh>;
Property changes on: short/3D/PyLith/trunk/modulesrc/include
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Modified: short/3D/PyLith/trunk/modulesrc/meshio/DataWriterVTK.i
===================================================================
--- short/3D/PyLith/trunk/modulesrc/meshio/DataWriterVTK.i 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/modulesrc/meshio/DataWriterVTK.i 2009-12-10 01:52:12 UTC (rev 16094)
@@ -63,6 +63,12 @@
*/
void timeConstant(const double value);
+ /** Set precision of floating point values in output.
+ *
+ * @param value Precision for floating point values.
+ */
+ void precision(const int value);
+
/** Prepare file for data at a new time step.
*
* @param t Time stamp for new data
Copied: short/3D/PyLith/trunk/playpen/friction (from rev 16093, short/3D/PyLith/branches/pylith-friction/playpen/friction)
Property changes on: short/3D/PyLith/trunk/pylith
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Modified: short/3D/PyLith/trunk/pylith/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/pylith/Makefile.am 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/pylith/Makefile.am 2009-12-10 01:52:12 UTC (rev 16094)
@@ -32,18 +32,24 @@
faults/Fault.py \
faults/FaultCohesive.py \
faults/FaultCohesiveKin.py \
+ faults/FaultCohesiveDyn.py \
+ faults/FaultCohesiveDynL.py \
faults/LiuCosSlipFn.py \
faults/SingleRupture.py \
faults/SlipTimeFn.py \
faults/StepSlipFn.py \
+ faults/TimeHistorySlipFn.py \
feassemble/__init__.py \
feassemble/Constraint.py \
feassemble/ElasticityExplicit.py \
+ feassemble/ElasticityExplicitLgDeform.py \
feassemble/ElasticityImplicit.py \
+ feassemble/ElasticityImplicitLgDeform.py \
feassemble/FIATLagrange.py \
feassemble/FIATSimplex.py \
feassemble/Integrator.py \
feassemble/IntegratorElasticity.py \
+ feassemble/IntegratorElasticityLgDeform.py \
feassemble/ReferenceCell.py \
feassemble/Quadrature.py \
feassemble/CellGeometry.py \
@@ -79,6 +85,7 @@
meshio/OutputManagerSubMesh.py \
meshio/OutputSoln.py \
meshio/OutputFaultKin.py \
+ meshio/OutputFaultDyn.py \
meshio/OutputMatElastic.py \
meshio/OutputNeumann.py \
meshio/OutputSolnSubset.py \
@@ -101,12 +108,16 @@
perf/Jacobian.py \
problems/__init__.py \
problems/Explicit.py \
+ problems/ExplicitLumped.py \
+ problems/ExplicitLgDeform.py \
problems/Formulation.py \
problems/Implicit.py \
+ problems/ImplicitLgDeform.py \
problems/Problem.py \
problems/Solver.py \
problems/SolverLinear.py \
problems/SolverNonlinear.py \
+ problems/SolverLumped.py \
problems/TimeDependent.py \
problems/TimeStep.py \
problems/TimeStepAdapt.py \
Copied: short/3D/PyLith/trunk/pylith/faults/FaultCohesiveDyn.py (from rev 16093, short/3D/PyLith/branches/pylith-friction/pylith/faults/FaultCohesiveDyn.py)
===================================================================
--- short/3D/PyLith/trunk/pylith/faults/FaultCohesiveDyn.py (rev 0)
+++ short/3D/PyLith/trunk/pylith/faults/FaultCohesiveDyn.py 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,220 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+# Brad T. Aagaard
+# U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file pylith/faults/FaultCohesiveDyn.py
+##
+
+## @brief Python object for a fault surface with dynamic
+## (friction) fault implemented with cohesive elements.
+##
+## Factory: fault
+
+from FaultCohesive import FaultCohesive
+from pylith.feassemble.Integrator import Integrator
+from faults import FaultCohesiveDyn as ModuleFaultCohesiveDyn
+
+from pylith.utils.NullComponent import NullComponent
+
+# FaultCohesiveDyn class
+class FaultCohesiveDyn(FaultCohesive, Integrator, ModuleFaultCohesiveDyn):
+ """
+ Python object for a fault surface with dynamic (friction) fault
+ implemented with cohesive elements.
+
+ Inventory
+
+ @class Inventory
+ Python object for managing FaultCohesiveDyn facilities and properties.
+
+ \b Properties
+ @li None
+
+ \b Facilities
+ @li \b db_initial_tractions Spatial database for initial tractions.
+ @li \b output Output manager associated with fault data.
+
+ Factory: fault
+ """
+
+ # INVENTORY //////////////////////////////////////////////////////////
+
+ import pyre.inventory
+
+ db = pyre.inventory.facility("db_initial_tractions", family="spatial_database",
+ factory=NullComponent)
+ db.meta['tip'] = "Spatial database for initial tractions."
+
+ from pylith.meshio.OutputFaultDyn import OutputFaultDyn
+ output = pyre.inventory.facility("output", family="output_manager",
+ factory=OutputFaultDyn)
+ output.meta['tip'] = "Output manager associated with fault data."
+
+
+ # PUBLIC METHODS /////////////////////////////////////////////////////
+
+ def __init__(self, name="faultcohesivedyn"):
+ """
+ Initialize configuration.
+ """
+ FaultCohesive.__init__(self, name)
+ Integrator.__init__(self)
+ self._loggingPrefix = "CoDy "
+
+ self.availableFields = \
+ {'vertex': \
+ {'info': [],
+ 'data': []},
+ 'cell': \
+ {'info': ["normal_dir"],
+ 'data': ["slip",
+ "traction"]},
+}
+ return
+
+
+ def preinitialize(self, mesh):
+ """
+ Do pre-initialization setup.
+ """
+ self._info.log("Pre-initializing fault '%s'." % self.label())
+ FaultCohesive.preinitialize(self, mesh)
+ Integrator.preinitialize(self, mesh)
+
+ ModuleFaultCohesiveDyn.quadrature(self, self.faultQuadrature)
+
+ if mesh.dimension() == 2:
+ self.availableFields['cell']['info'] += ["strike_dir"]
+ elif mesh.dimension() == 3:
+ self.availableFields['cell']['info'] += ["strike_dir",
+ "dip_dir"]
+
+ if not isinstance(self.inventory.db, NullComponent):
+ self.availableFields['cell']['info'] += ["initial_traction"]
+ return
+
+
+ def verifyConfiguration(self):
+ """
+ Verify compatibility of configuration.
+ """
+ logEvent = "%sverify" % self._loggingPrefix
+ self._eventLogger.eventBegin(logEvent)
+
+ FaultCohesive.verifyConfiguration(self)
+ Integrator.verifyConfiguration(self)
+ ModuleFaultCohesiveDyn.verifyConfiguration(self, self.mesh)
+
+ self._eventLogger.eventEnd(logEvent)
+ return
+
+
+ def initialize(self, totalTime, numTimeSteps, normalizer):
+ """
+ Initialize cohesive elements.
+ """
+ logEvent = "%sinit" % self._loggingPrefix
+ self._eventLogger.eventBegin(logEvent)
+ self._info.log("Initializing fault '%s'." % self.label())
+
+ Integrator.initialize(self, totalTime, numTimeSteps, normalizer)
+
+ FaultCohesive.initialize(self, totalTime, numTimeSteps, normalizer)
+
+ self._eventLogger.eventEnd(logEvent)
+ return
+
+
+ def poststep(self, t, dt, totalTime, fields):
+ """
+ Hook for doing stuff after advancing time step.
+ """
+ logEvent = "%spoststep" % self._loggingPrefix
+ self._eventLogger.eventBegin(logEvent)
+
+ Integrator.poststep(self, t, dt, totalTime, fields)
+ FaultCohesive.poststep(self, t, dt, totalTime, fields)
+
+ self._eventLogger.eventEnd(logEvent)
+ return
+
+
+ def getVertexField(self, name, fields=None):
+ """
+ Get vertex field.
+ """
+ if None == fields:
+ field = ModuleFaultCohesiveDyn.vertexField(self, name)
+ else:
+ field = ModuleFaultCohesiveDyn.vertexField(self, name, fields)
+ return field
+
+
+ def getCellField(self, name, fields=None):
+ """
+ Get cell field.
+ """
+ if None == fields:
+ field = ModuleFaultCohesiveDyn.cellField(self, name)
+ else:
+ field = ModuleFaultCohesiveDyn.cellField(self, name, fields)
+ return field
+
+
+ def finalize(self):
+ """
+ Cleanup.
+ """
+ FaultCohesive.finalize(self)
+ Integrator.finalize(self)
+ return
+
+
+ # PRIVATE METHODS ////////////////////////////////////////////////////
+
+ def _configure(self):
+ """
+ Setup members using inventory.
+ """
+ FaultCohesive._configure(self)
+ if not isinstance(self.inventory.db, NullComponent):
+ ModuleFaultCohesiveDyn.dbInitial(self, self.inventory.db)
+ self.output = self.inventory.output
+ return
+
+
+ def _createModuleObj(self):
+ """
+ Create handle to C++ FaultCohesiveDyn.
+ """
+ ModuleFaultCohesiveDyn.__init__(self)
+ return
+
+
+ def _modelMemoryUse(self):
+ """
+ Model memory allocation.
+ """
+ self.perfLogger.logFault("Fault", self)
+ #self.perfLogger.logFields("Fault", self.fields())
+ return
+
+
+# FACTORIES ////////////////////////////////////////////////////////////
+
+def fault():
+ """
+ Factory associated with FaultCohesiveDyn.
+ """
+ return FaultCohesiveDyn()
+
+
+# End of file
Copied: short/3D/PyLith/trunk/pylith/faults/FaultCohesiveDynL.py (from rev 16093, short/3D/PyLith/branches/pylith-friction/pylith/faults/FaultCohesiveDynL.py)
===================================================================
--- short/3D/PyLith/trunk/pylith/faults/FaultCohesiveDynL.py (rev 0)
+++ short/3D/PyLith/trunk/pylith/faults/FaultCohesiveDynL.py 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,219 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+# Brad T. Aagaard
+# U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file pylith/faults/FaultCohesiveDynL.py
+##
+
+## @brief Python object for a fault surface with dynamic
+## (friction) fault implemented with cohesive elements.
+##
+## Factory: fault
+
+from FaultCohesive import FaultCohesive
+from pylith.feassemble.Integrator import Integrator
+from faults import FaultCohesiveDynL as ModuleFaultCohesiveDynL
+
+from pylith.utils.NullComponent import NullComponent
+
+# FaultCohesiveDynL class
+class FaultCohesiveDynL(FaultCohesive, Integrator, ModuleFaultCohesiveDynL):
+ """
+ Python object for a fault surface with kinematic (prescribed) slip
+ implemented with cohesive elements.
+
+ Inventory
+
+ @class Inventory
+ Python object for managing FaultCohesiveDynL facilities and properties.
+
+ \b Properties
+ @li None
+
+ \b Facilities
+ @li \b db_initial_tractions Spatial database for initial tractions.
+ @li \b output Output manager associated with fault data.
+
+ Factory: fault
+ """
+
+ # INVENTORY //////////////////////////////////////////////////////////
+
+ import pyre.inventory
+
+ db = pyre.inventory.facility("db_initial_tractions", family="spatial_database",
+ factory=NullComponent)
+ db.meta['tip'] = "Spatial database for initial tractions."
+
+ from pylith.meshio.OutputFaultDyn import OutputFaultDyn
+ output = pyre.inventory.facility("output", family="output_manager",
+ factory=OutputFaultDyn)
+ output.meta['tip'] = "Output manager associated with fault data."
+
+
+ # PUBLIC METHODS /////////////////////////////////////////////////////
+
+ def __init__(self, name="faultcohesivedynl"):
+ """
+ Initialize configuration.
+ """
+ FaultCohesive.__init__(self, name)
+ Integrator.__init__(self)
+ self._loggingPrefix = "CoDy "
+
+ self.availableFields = \
+ {'vertex': \
+ {'info': ["normal_dir"],
+ 'data': ["slip",
+ "traction"]},
+ 'cell': \
+ {'info': [],
+ 'data': []}}
+ return
+
+
+ def preinitialize(self, mesh):
+ """
+ Do pre-initialization setup.
+ """
+ self._info.log("Pre-initializing fault '%s'." % self.label())
+ FaultCohesive.preinitialize(self, mesh)
+ Integrator.preinitialize(self, mesh)
+
+ ModuleFaultCohesiveDynL.quadrature(self, self.faultQuadrature)
+
+ if mesh.dimension() == 2:
+ self.availableFields['vertex']['info'] += ["strike_dir"]
+ elif mesh.dimension() == 3:
+ self.availableFields['vertex']['info'] += ["strike_dir",
+ "dip_dir"]
+
+ if not isinstance(self.inventory.db, NullComponent):
+ self.availableFields['vertex']['info'] += ["initial_traction"]
+ return
+
+
+ def verifyConfiguration(self):
+ """
+ Verify compatibility of configuration.
+ """
+ logEvent = "%sverify" % self._loggingPrefix
+ self._eventLogger.eventBegin(logEvent)
+
+ FaultCohesive.verifyConfiguration(self)
+ Integrator.verifyConfiguration(self)
+ ModuleFaultCohesiveDynL.verifyConfiguration(self, self.mesh)
+
+ self._eventLogger.eventEnd(logEvent)
+ return
+
+
+ def initialize(self, totalTime, numTimeSteps, normalizer):
+ """
+ Initialize cohesive elements.
+ """
+ logEvent = "%sinit" % self._loggingPrefix
+ self._eventLogger.eventBegin(logEvent)
+ self._info.log("Initializing fault '%s'." % self.label())
+
+ Integrator.initialize(self, totalTime, numTimeSteps, normalizer)
+
+ FaultCohesive.initialize(self, totalTime, numTimeSteps, normalizer)
+
+ self._eventLogger.eventEnd(logEvent)
+ return
+
+
+ def poststep(self, t, dt, totalTime, fields):
+ """
+ Hook for doing stuff after advancing time step.
+ """
+ logEvent = "%spoststep" % self._loggingPrefix
+ self._eventLogger.eventBegin(logEvent)
+
+ Integrator.poststep(self, t, dt, totalTime, fields)
+ FaultCohesive.poststep(self, t, dt, totalTime, fields)
+
+ self._eventLogger.eventEnd(logEvent)
+ return
+
+
+ def getVertexField(self, name, fields=None):
+ """
+ Get vertex field.
+ """
+ if None == fields:
+ field = ModuleFaultCohesiveDynL.vertexField(self, name)
+ else:
+ field = ModuleFaultCohesiveDynL.vertexField(self, name, fields)
+ return field
+
+
+ def getCellField(self, name, fields=None):
+ """
+ Get cell field.
+ """
+ if None == fields:
+ field = ModuleFaultCohesiveDynL.cellField(self, name)
+ else:
+ field = ModuleFaultCohesiveDynL.cellField(self, name, fields)
+ return field
+
+
+ def finalize(self):
+ """
+ Cleanup.
+ """
+ FaultCohesive.finalize(self)
+ Integrator.finalize(self)
+ return
+
+
+ # PRIVATE METHODS ////////////////////////////////////////////////////
+
+ def _configure(self):
+ """
+ Setup members using inventory.
+ """
+ FaultCohesive._configure(self)
+ if not isinstance(self.inventory.db, NullComponent):
+ ModuleFaultCohesiveDynL.dbInitial(self, self.inventory.db)
+ self.output = self.inventory.output
+ return
+
+
+ def _createModuleObj(self):
+ """
+ Create handle to C++ FaultCohesiveDynL.
+ """
+ ModuleFaultCohesiveDynL.__init__(self)
+ return
+
+
+ def _modelMemoryUse(self):
+ """
+ Model memory allocation.
+ """
+ self.perfLogger.logFault("Fault", self)
+ self.perfLogger.logFields("Fault", self.fields())
+ return
+
+
+# FACTORIES ////////////////////////////////////////////////////////////
+
+def fault():
+ """
+ Factory associated with FaultCohesiveDynL.
+ """
+ return FaultCohesiveDynL()
+
+
+# End of file
Modified: short/3D/PyLith/trunk/pylith/faults/LiuCosSlipFn.py
===================================================================
--- short/3D/PyLith/trunk/pylith/faults/LiuCosSlipFn.py 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/pylith/faults/LiuCosSlipFn.py 2009-12-10 01:52:12 UTC (rev 16094)
@@ -10,7 +10,7 @@
# ----------------------------------------------------------------------
#
-## @file pylith/faults/BruneSlipFn.py
+## @file pylith/faults/LiuCosSlipFn.py
##
## @brief Sine/cosine slip time function from Liu, Archuleta, and Hartzell,
## BSSA, 2006 (doi:10.1785/0120060036) which has a rapid rise and then
@@ -62,13 +62,13 @@
# PUBLIC METHODS /////////////////////////////////////////////////////
- def __init__(self, name="bruneslipfn"):
+ def __init__(self, name="liucosslipfn"):
"""
Constructor.
"""
SlipTimeFn.__init__(self, name)
ModuleLiuCosSlipFn.__init__(self)
- self._loggingPrefix = "BrSF "
+ self._loggingPrefix = "LCSF "
return
Copied: short/3D/PyLith/trunk/pylith/faults/TimeHistorySlipFn.py (from rev 16093, short/3D/PyLith/branches/pylith-friction/pylith/faults/TimeHistorySlipFn.py)
===================================================================
--- short/3D/PyLith/trunk/pylith/faults/TimeHistorySlipFn.py (rev 0)
+++ short/3D/PyLith/trunk/pylith/faults/TimeHistorySlipFn.py 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,97 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+# Brad T. Aagaard
+# U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file pylith/faults/TimeHistorySlipFn.py
+##
+## @brief User-defined slip-time function with spatially variable
+## amplitude and start time.
+##
+## Factory: slip_time_fn
+
+from SlipTimeFn import SlipTimeFn
+from faults import TimeHistorySlipFn as ModuleTimeHistorySlipFn
+
+# TimeHistorySlipFn class
+class TimeHistorySlipFn(SlipTimeFn, ModuleTimeHistorySlipFn):
+ """
+ User-defined slip-time function with spatially variable amplitude
+ and start time.
+
+ Inventory
+
+ \b Properties
+ @li None
+
+ \b Facilities
+ @li \b slip Spatial database of slip amplitude.
+ @li \b slip_time Spatial database of slip initiation time.
+ @li \b time_history Temporal database for slip time history function.
+
+ Factory: slip_time_fn
+ """
+
+ # INVENTORY //////////////////////////////////////////////////////////
+
+ import pyre.inventory
+
+ from spatialdata.spatialdb.SimpleDB import SimpleDB
+
+ dbSlip = pyre.inventory.facility("slip", family="spatial_database",
+ factory=SimpleDB)
+ dbSlip.meta['tip'] = "Spatial database of slip amplitude."
+
+ dbSlipTime = pyre.inventory.facility("slip_time", family="spatial_database",
+ factory=SimpleDB)
+ dbSlipTime.meta['tip'] = "Spatial database of slip initiation time."
+
+ from spatialdata.spatialdb.TimeHistory import TimeHistory
+ dbTimeHistory = pyre.inventory.facility("time_history",
+ family="temporal_database",
+ factory=TimeHistory)
+ dbTimeHistory.meta['tip'] = "Spatial database of rise time (t95)."
+
+
+ # PUBLIC METHODS /////////////////////////////////////////////////////
+
+ def __init__(self, name="timehistoryslipfn"):
+ """
+ Constructor.
+ """
+ SlipTimeFn.__init__(self, name)
+ ModuleTimeHistorySlipFn.__init__(self)
+ self._loggingPrefix = "THSF "
+ return
+
+
+ # PRIVATE METHODS ////////////////////////////////////////////////////
+
+ def _configure(self):
+ """
+ Setup members using inventory.
+ """
+ SlipTimeFn._configure(self)
+ ModuleTimeHistorySlipFn.dbAmplitude(self, self.inventory.dbSlip)
+ ModuleTimeHistorySlipFn.dbSlipTime(self, self.inventory.dbSlipTime)
+ ModuleTimeHistorySlipFn.dbTimeHistory(self, self.inventory.dbTimeHistory)
+ return
+
+
+# FACTORIES ////////////////////////////////////////////////////////////
+
+def slip_time_fn():
+ """
+ Factory associated with TimeHistorySlipFn.
+ """
+ return TimeHistorySlipFn()
+
+
+# End of file
Copied: short/3D/PyLith/trunk/pylith/feassemble/ElasticityExplicitLgDeform.py (from rev 16093, short/3D/PyLith/branches/pylith-friction/pylith/feassemble/ElasticityExplicitLgDeform.py)
===================================================================
--- short/3D/PyLith/trunk/pylith/feassemble/ElasticityExplicitLgDeform.py (rev 0)
+++ short/3D/PyLith/trunk/pylith/feassemble/ElasticityExplicitLgDeform.py 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,69 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+# Brad T. Aagaard
+# U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file pylith/feassemble/ElasticityExplicitLgDeform.py
+##
+## @brief Python object for explicit time integration of dynamic
+## elasticity equation using finite-elements with large rigidy body
+## motion and small strains.
+##
+## Factory: integrator
+
+from IntegratorElasticityLgDeform import IntegratorElasticityLgDeform
+from feassemble import ElasticityExplicitLgDeform as ModuleElasticityExplicitLgDeform
+
+# ElasticityExplicitLgDeform class
+class ElasticityExplicitLgDeform(IntegratorElasticityLgDeform,
+ ModuleElasticityExplicitLgDeform):
+ """
+ Python object for explicit time integration of dynamic elasticity
+ equation using finite-elements with large rigid body motions and
+ small strains.
+ """
+
+ # PUBLIC METHODS /////////////////////////////////////////////////////
+
+ def __init__(self, name="elasticityexplicit"):
+ """
+ Constructor.
+ """
+ IntegratorElasticityLgDeform.__init__(self, name)
+ ModuleElasticityExplicitLgDeform.__init__(self)
+ self._loggingPrefix = "ElEx "
+ return
+
+
+ def initialize(self, totalTime, numTimeSteps, normalizer):
+ """
+ Do initialization.
+ """
+ logEvent = "%sinit" % self._loggingPrefix
+ self._eventLogger.eventBegin(logEvent)
+
+ IntegratorElasticityLgDeform.initialize(self, totalTime, numTimeSteps, normalizer)
+ ModuleElasticityExplicitLgDeform.initialize(self, self.mesh)
+ self._initializeOutput(totalTime, numTimeSteps, normalizer)
+
+ self._eventLogger.eventEnd(logEvent)
+ return
+
+
+# FACTORIES ////////////////////////////////////////////////////////////
+
+def integrator():
+ """
+ Factory associated with ElasticityExplicitLgDeform.
+ """
+ return ElasticityExplicitLgDeform()
+
+
+# End of file
Copied: short/3D/PyLith/trunk/pylith/feassemble/ElasticityImplicitLgDeform.py (from rev 16093, short/3D/PyLith/branches/pylith-friction/pylith/feassemble/ElasticityImplicitLgDeform.py)
===================================================================
--- short/3D/PyLith/trunk/pylith/feassemble/ElasticityImplicitLgDeform.py (rev 0)
+++ short/3D/PyLith/trunk/pylith/feassemble/ElasticityImplicitLgDeform.py 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,68 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+# Brad T. Aagaard
+# U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file pylith/feassemble/ElasticityImplicitLgDeform.py
+##
+## @brief Python object for implicit time integration of dynamic
+## elasticity equation using finite-elements.
+##
+## Factory: integrator
+
+from IntegratorElasticityLgDeform import IntegratorElasticityLgDeform
+from feassemble import ElasticityImplicitLgDeform as ModuleElasticityImplicitLgDeform
+
+# ElasticityImplicitLgDeform class
+class ElasticityImplicitLgDeform(IntegratorElasticityLgDeform,
+ ModuleElasticityImplicitLgDeform):
+ """
+ Python object for implicit time integration of elasticity
+ equation using finite-elements.
+ """
+
+ # PUBLIC METHODS /////////////////////////////////////////////////////
+
+ def __init__(self, name="elasticityimplicit"):
+ """
+ Constructor.
+ """
+ IntegratorElasticityLgDeform.__init__(self, name)
+ ModuleElasticityImplicitLgDeform.__init__(self)
+ self._loggingPrefix = "ElIm "
+ return
+
+
+ def initialize(self, totalTime, numTimeSteps, normalizer):
+ """
+ Do initialization.
+ """
+ logEvent = "%sinit" % self._loggingPrefix
+ self._eventLogger.eventBegin(logEvent)
+
+ IntegratorElasticityLgDeform.initialize(self, totalTime, numTimeSteps,
+ normalizer)
+ ModuleElasticityImplicitLgDeform.initialize(self, self.mesh)
+ self._initializeOutput(totalTime, numTimeSteps, normalizer)
+
+ self._eventLogger.eventEnd(logEvent)
+ return
+
+
+# FACTORIES ////////////////////////////////////////////////////////////
+
+def integrator():
+ """
+ Factory associated with ElasticityImplicitLgDeform.
+ """
+ return ElasticityImplicitLgDeform()
+
+
+# End of file
Copied: short/3D/PyLith/trunk/pylith/feassemble/IntegratorElasticityLgDeform.py (from rev 16093, short/3D/PyLith/branches/pylith-friction/pylith/feassemble/IntegratorElasticityLgDeform.py)
===================================================================
--- short/3D/PyLith/trunk/pylith/feassemble/IntegratorElasticityLgDeform.py (rev 0)
+++ short/3D/PyLith/trunk/pylith/feassemble/IntegratorElasticityLgDeform.py 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,43 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+# Brad T. Aagaard
+# U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file pylith/feassemble/IntegratorElasticityLgDeform.py
+##
+## @brief Python object implementing sgeneral methods for time
+## integration of the elasticity equation using finite-elements with
+## large rogid body motions and small strains.
+##
+## Factory: integrator
+
+from IntegratorElasticity import IntegratorElasticity
+
+# IntegratorElasticityLgDeform class
+class IntegratorElasticityLgDeform(IntegratorElasticity):
+ """
+ Python object implementing sgeneral methods for time integration of
+ the elasticity equation using finite-elements with large rigid body
+ motions and small strains.
+ """
+
+ # PUBLIC METHODS /////////////////////////////////////////////////////
+
+ def __init__(self, name="integratorelasticitylgdeform"):
+ """
+ Constructor.
+ """
+ IntegratorElasticity.__init__(self)
+ self.name = "Integrator ElasticityLgDeform"
+
+ return
+
+
+# End of file
Modified: short/3D/PyLith/trunk/pylith/feassemble/__init__.py
===================================================================
--- short/3D/PyLith/trunk/pylith/feassemble/__init__.py 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/pylith/feassemble/__init__.py 2009-12-10 01:52:12 UTC (rev 16094)
@@ -17,10 +17,13 @@
__all__ = ['CellGeometry',
'Constraint',
'ElasticityExplicit',
+ 'ElasticityExplicitLgDeform',
'ElasticityImplicit',
+ 'ElasticityImplicitLgDeform',
'FIATLagrange',
'FIATSimplex',
'IntegratorElasticity',
+ 'IntegratorElasticityLgDeform',
'Integrator',
'Quadrature',
'ReferenceCell',
Modified: short/3D/PyLith/trunk/pylith/meshio/DataWriterVTK.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/DataWriterVTK.py 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/pylith/meshio/DataWriterVTK.py 2009-12-10 01:52:12 UTC (rev 16094)
@@ -48,6 +48,11 @@
validator=pyre.inventory.greater(0.0*second))
timeConstant.meta['tip'] = "Values used to normalize time stamp in filename."
+ precision = pyre.inventory.int("float_precision", default=6,
+ validator=pyre.inventory.greater(0))
+ precision.meta['tip'] = "Precision of floating point values in output."
+
+
# PUBLIC METHODS /////////////////////////////////////////////////////
def __init__(self, name="datawritervtk"):
Modified: short/3D/PyLith/trunk/pylith/meshio/DataWriterVTKMesh.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/DataWriterVTKMesh.py 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/pylith/meshio/DataWriterVTKMesh.py 2009-12-10 01:52:12 UTC (rev 16094)
@@ -47,6 +47,7 @@
ModuleDataWriterVTK.filename(self, self.filename)
ModuleDataWriterVTK.timeFormat(self, self.timeFormat)
ModuleDataWriterVTK.timeConstant(self, self.timeConstantN)
+ ModuleDataWriterVTK.precision(self, self.precision)
return
Modified: short/3D/PyLith/trunk/pylith/meshio/DataWriterVTKSubMesh.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/DataWriterVTKSubMesh.py 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/pylith/meshio/DataWriterVTKSubMesh.py 2009-12-10 01:52:12 UTC (rev 16094)
@@ -47,6 +47,7 @@
ModuleDataWriterVTK.filename(self, self.filename)
ModuleDataWriterVTK.timeFormat(self, self.timeFormat)
ModuleDataWriterVTK.timeConstant(self, self.timeConstantN)
+ ModuleDataWriterVTK.precision(self, self.precision)
return
Modified: short/3D/PyLith/trunk/pylith/meshio/DataWriterVTKSubSubMesh.py
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/DataWriterVTKSubSubMesh.py 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/pylith/meshio/DataWriterVTKSubSubMesh.py 2009-12-10 01:52:12 UTC (rev 16094)
@@ -47,6 +47,7 @@
ModuleDataWriterVTK.filename(self, self.filename)
ModuleDataWriterVTK.timeFormat(self, self.timeFormat)
ModuleDataWriterVTK.timeConstant(self, self.timeConstantN)
+ ModuleDataWriterVTK.precision(self, self.precision)
return
Copied: short/3D/PyLith/trunk/pylith/meshio/OutputFaultDyn.py (from rev 16093, short/3D/PyLith/branches/pylith-friction/pylith/meshio/OutputFaultDyn.py)
===================================================================
--- short/3D/PyLith/trunk/pylith/meshio/OutputFaultDyn.py (rev 0)
+++ short/3D/PyLith/trunk/pylith/meshio/OutputFaultDyn.py 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,88 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+# Brad T. Aagaard
+# U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file pyre/meshio/OutputFaultDyn.py
+##
+## @brief Python object for managing output of finite-element
+## information for faults with dynamic ruptures.
+##
+## Factory: output_manager
+
+from OutputManagerSubMesh import OutputManagerSubMesh
+
+# OutputFaultDyn class
+class OutputFaultDyn(OutputManagerSubMesh):
+ """
+ Python object for managing output of finite-element information for
+ faults with dynamic ruptures.
+
+ Inventory
+
+ @class Inventory
+ Python object for managing OutputFaultDyn facilities and properties.
+
+ \b Properties
+ @li \b vertex_info_fields Names of vertex info fields to output.
+ @li \b vertex_data_fields Names of vertex data fields to output.
+
+ \b Facilities
+ @li None
+
+ Factory: output_manager
+ """
+
+ # INVENTORY //////////////////////////////////////////////////////////
+
+ import pyre.inventory
+
+ vertexInfoFields = pyre.inventory.list("vertex_info_fields",
+ default=["normal_dir"])
+ vertexInfoFields.meta['tip'] = "Names of vertex info fields to output."
+
+ vertexDataFields = pyre.inventory.list("vertex_data_fields",
+ default=["slip",
+ "traction"])
+ vertexDataFields.meta['tip'] = "Names of vertex data fields to output."
+
+
+ # PUBLIC METHODS /////////////////////////////////////////////////////
+
+ def __init__(self, name="outputfaultdyn"):
+ """
+ Constructor.
+ """
+ OutputManagerSubMesh.__init__(self, name)
+ return
+
+
+ # PRIVATE METHODS ////////////////////////////////////////////////////
+
+ def _configure(self):
+ """
+ Set members based using inventory.
+ """
+ OutputManagerSubMesh._configure(self)
+ self.vertexInfoFields = self.inventory.vertexInfoFields
+ self.vertexDataFields = self.inventory.vertexDataFields
+ return
+
+
+# FACTORIES ////////////////////////////////////////////////////////////
+
+def output_manager():
+ """
+ Factory associated with OutputManager.
+ """
+ return OutputFaultDyn()
+
+
+# End of file
Copied: short/3D/PyLith/trunk/pylith/problems/ExplicitLgDeform.py (from rev 16093, short/3D/PyLith/branches/pylith-friction/pylith/problems/ExplicitLgDeform.py)
===================================================================
--- short/3D/PyLith/trunk/pylith/problems/ExplicitLgDeform.py (rev 0)
+++ short/3D/PyLith/trunk/pylith/problems/ExplicitLgDeform.py 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,68 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+# Brad T. Aagaard
+# U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file pylith/problems/ExplicitLgDeform.py
+##
+## @brief Python ExplicitLgDeform object for solving equations using an
+## explicit formulation with rigid body motion and small strains.
+##
+## Factory: pde_formulation
+
+from Explicit import Explicit
+
+# ExplicitLgDeform class
+class ExplicitLgDeform(Explicit):
+ """
+ Python ExplicitLgDeform object for solving equations using an explicit
+ formulation with rigid body motion and small strains.
+
+ Factory: pde_formulation.
+ """
+
+ # PUBLIC METHODS /////////////////////////////////////////////////////
+
+ def __init__(self, name="explicitlgdeform"):
+ """
+ Constructor.
+ """
+ Explicit.__init__(self, name)
+ return
+
+
+ def elasticityIntegrator(self):
+ """
+ Get integrator for elastic material.
+ """
+ from pylith.feassemble.ElasticityExplicitLgDeform import ElasticityExplicitLgDeform
+ return ElasticityExplicitLgDeform()
+
+
+ # PRIVATE METHODS ////////////////////////////////////////////////////
+
+ def _configure(self):
+ """
+ Set members based using inventory.
+ """
+ Explicit._configure(self)
+ return
+
+
+# FACTORIES ////////////////////////////////////////////////////////////
+
+def pde_formulation():
+ """
+ Factory associated with ExplicitLgDeform.
+ """
+ return ExplicitLgDeform()
+
+
+# End of file
Copied: short/3D/PyLith/trunk/pylith/problems/ExplicitLumped.py (from rev 16093, short/3D/PyLith/branches/pylith-friction/pylith/problems/ExplicitLumped.py)
===================================================================
--- short/3D/PyLith/trunk/pylith/problems/ExplicitLumped.py (rev 0)
+++ short/3D/PyLith/trunk/pylith/problems/ExplicitLumped.py 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,247 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+# Brad T. Aagaard
+# U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file pylith/problems/ExplicitLumped.py
+##
+## @brief Python ExplicitLumped object for solving equations using an
+## explicit formulation with a lumped Jacobian matrix that is stored
+## as a Field.
+##
+## Factory: pde_formulation
+
+from Formulation import Formulation
+from pylith.utils.profiling import resourceUsageString
+
+# ExplicitLumped class
+class ExplicitLumped(Formulation):
+ """
+ Python ExplicitLumped object for solving equations using an explicit
+ formulation.
+
+ The formulation has the general form, [A(t)] {u(t+dt)} = {b(t)},
+ where we want to solve for {u(t+dt)}, A(t) is usually constant
+ (i.e., independent of time), and {b(t)} usually depends on {u(t)}
+ and {u(t-dt)}.
+
+ Jacobian: A(t)
+ solution: u(t+dt)
+ residual: b(t) - A(t) \hat u(t+dt)
+ constant: b(t)
+
+ Factory: pde_formulation.
+ """
+
+ # INVENTORY //////////////////////////////////////////////////////////
+
+ class Inventory(Formulation.Inventory):
+ """
+ Python object for managing ExplicitLumped facilities and properties.
+
+ Provide appropriate solver for lumped Jacobian as the default.
+ """
+
+ ## @class Inventory
+ ## Python object for managing ExplicitLumped facilities and properties.
+ ##
+ ## \b Properties
+ ## @li None
+ ##
+ ## \b Facilities
+ ## @li \b solver Algebraic solver.
+
+ import pyre.inventory
+
+ from SolverLumped import SolverLumped
+ solver = pyre.inventory.facility("solver", family="solver",
+ factory=SolverLumped)
+ solver.meta['tip'] = "Algebraic solver."
+
+ # PUBLIC METHODS /////////////////////////////////////////////////////
+
+ def __init__(self, name="explicit"):
+ """
+ Constructor.
+ """
+ Formulation.__init__(self, name)
+ self._loggingPrefix = "TSEx "
+ return
+
+
+ def elasticityIntegrator(self):
+ """
+ Get integrator for elastic material.
+ """
+ from pylith.feassemble.ElasticityExplicit import ElasticityExplicit
+ return ElasticityExplicit()
+
+
+ def initialize(self, dimension, normalizer):
+ """
+ Initialize problem for explicit time integration.
+ """
+ logEvent = "%sinit" % self._loggingPrefix
+ self._eventLogger.eventBegin(logEvent)
+
+ Formulation.initialize(self, dimension, normalizer)
+
+ from pylith.utils.petsc import MemoryLogger
+ logger = MemoryLogger.singleton()
+ logger.setDebug(0)
+ logger.stagePush("Problem")
+
+ # Allocate other fields, reusing layout from dispIncr
+ self._info.log("Creating other fields.")
+ self.fields.add("disp(t-dt)", "displacement")
+ self.fields.copyLayout("dispIncr(t->t+dt)")
+ self._debug.log(resourceUsageString())
+
+ # Setup fields and set to zero
+ dispTmdt = self.fields.get("disp(t-dt)")
+ dispTmdt.zero()
+ dispT = self.fields.get("disp(t)")
+ dispT.zero()
+ residual = self.fields.get("residual")
+ residual.zero()
+ residual.createVector()
+ self._debug.log(resourceUsageString())
+ logger.stagePop()
+
+ self._info.log("Creating lumped Jacobian matrix.")
+ from pylith.topology.topology.MeshField import MeshField
+ jacobian = MeshField(self.mesh)
+ jacobian.label("jacobian")
+ solution.vectorFieldType(solution.VECTOR)
+ jacobian.newSection(jacobian.VERTICES_FIELD, dimension)
+ jacobian.allocate()
+ self.jacobian = jacobian
+ self._debug.log(resourceUsageString())
+
+ logger.stagePush("Problem")
+ self._info.log("Initializing solver.")
+ self.solver.initialize(self.fields, self.jacobian, self)
+ self._debug.log(resourceUsageString())
+
+ # Solve for increment in displacement field.
+ for constraint in self.constraints:
+ constraint.useSolnIncr(True)
+ for integrator in self.integratorsMesh + self.integratorsSubMesh:
+ integrator.useSolnIncr(True)
+
+ logger.stagePop()
+ logger.setDebug(0)
+ self._eventLogger.eventEnd(logEvent)
+ return
+
+
+ def prestep(self, t, dt):
+ """
+ Hook for doing stuff before advancing time step.
+ """
+ logEvent = "%sprestep" % self._loggingPrefix
+ self._eventLogger.eventBegin(logEvent)
+
+ dispIncr = self.fields.get("dispIncr(t->t+dt)")
+ for constraint in self.constraints:
+ constraint.setFieldIncr(t, t+dt, dispIncr)
+
+ needNewJacobian = False
+ for integrator in self.integratorsMesh + self.integratorsSubMesh:
+ integrator.timeStep(dt)
+ if integrator.needNewJacobian():
+ needNewJacobian = True
+ if needNewJacobian:
+ self._reformJacobian(t, dt)
+
+ self._eventLogger.eventEnd(logEvent)
+ return
+
+
+ def step(self, t, dt):
+ """
+ Advance to next time step.
+ """
+ logEvent = "%sstep" % self._loggingPrefix
+ self._eventLogger.eventBegin(logEvent)
+
+ self._reformResidual(t, dt)
+
+ self._info.log("Solving equations.")
+ residual = self.fields.get("residual")
+ dispIncr = self.fields.get("dispIncr(t->t+dt)")
+ self.solver.solve(dispIncr, self.jacobian, residual)
+
+ self._eventLogger.eventEnd(logEvent)
+ return
+
+
+ def poststep(self, t, dt):
+ """
+ Hook for doing stuff after advancing time step.
+ """
+ logEvent = "%spoststep" % self._loggingPrefix
+ self._eventLogger.eventBegin(logEvent)
+
+ dispIncr = self.fields.get("dispIncr(t->t+dt)")
+ dispT = self.fields.get("disp(t)")
+ dispTmdt = self.fields.get("disp(t-dt)")
+
+ dispTmdt.copy(dispT)
+ dispT += dispIncr
+ dispIncr.zero()
+
+ Formulation.poststep(self, t, dt)
+
+ self._eventLogger.eventEnd(logEvent)
+ return
+
+
+ # PRIVATE METHODS ////////////////////////////////////////////////////
+
+ def _configure(self):
+ """
+ Set members based using inventory.
+ """
+ Formulation._configure(self)
+ self.solver = self.inventory.solver
+ return
+
+
+ def _reformJacobian(self, t, dt):
+ """
+ Reform Jacobian matrix for operator.
+ """
+ self._debug.log(resourceUsageString())
+ self._info.log("Integrating Jacobian operator.")
+ self._eventLogger.stagePush("Reform Jacobian")
+
+ self.updateSettings(self.jacobian, fields, t, dt)
+ self.reformJacobianLumped()
+
+ self._eventLogger.stagePop()
+
+ if self.viewJacobian:
+ self.jacobian.view("Lumped Jacobian")
+
+ self._debug.log(resourceUsageString())
+ return
+
+
+# FACTORIES ////////////////////////////////////////////////////////////
+
+def pde_formulation():
+ """
+ Factory associated with ExplicitLumped.
+ """
+ return ExplicitLumped()
+
+
+# End of file
Copied: short/3D/PyLith/trunk/pylith/problems/ImplicitLgDeform.py (from rev 16093, short/3D/PyLith/branches/pylith-friction/pylith/problems/ImplicitLgDeform.py)
===================================================================
--- short/3D/PyLith/trunk/pylith/problems/ImplicitLgDeform.py (rev 0)
+++ short/3D/PyLith/trunk/pylith/problems/ImplicitLgDeform.py 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,68 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+# Brad T. Aagaard
+# U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file pylith/problems/ImplicitLgDeform.py
+##
+## @brief Python ImplicitLgDeform object for solving equations using
+## an implicit formulation with rigid body motions and small strains.
+##
+## Factory: pde_formulation
+
+from Implicit import Implicit
+
+# ImplicitLgDeform class
+class ImplicitLgDeform(Implicit):
+ """
+ Python ImplicitLgDeform object for solving equations using an implicit
+ formulation with rigid body motions and small strains.
+
+ Factory: pde_formulation.
+ """
+
+ # PUBLIC METHODS /////////////////////////////////////////////////////
+
+ def __init__(self, name="implicitlgdeform"):
+ """
+ Constructor.
+ """
+ Implicit.__init__(self, name)
+ return
+
+
+ def elasticityIntegrator(self):
+ """
+ Get integrator for elastic material.
+ """
+ from pylith.feassemble.ElasticityImplicitLgDeform import ElasticityImplicitLgDeform
+ return ElasticityImplicitLgDeform()
+
+
+ # PRIVATE METHODS ////////////////////////////////////////////////////
+
+ def _configure(self):
+ """
+ Set members based using inventory.
+ """
+ Implicit._configure(self)
+ return
+
+
+# FACTORIES ////////////////////////////////////////////////////////////
+
+def pde_formulation():
+ """
+ Factory associated with ImplicitLgDeform.
+ """
+ return ImplicitLgDeform()
+
+
+# End of file
Copied: short/3D/PyLith/trunk/pylith/problems/SolverLumped.py (from rev 16093, short/3D/PyLith/branches/pylith-friction/pylith/problems/SolverLumped.py)
===================================================================
--- short/3D/PyLith/trunk/pylith/problems/SolverLumped.py (rev 0)
+++ short/3D/PyLith/trunk/pylith/problems/SolverLumped.py 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,91 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+# Brad T. Aagaard
+# U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file pylith/solver/SolverLumped.py
+
+## @brief Python PyLith simple solver for system with a lumped (i.e.,
+## diagonal) Jacobian matrix.
+
+from Solver import Solver
+from problems import SolverLumped as ModuleSolverLumped
+
+# SolverLumped class
+class SolverLumped(Solver, ModuleSolverLumped):
+ """
+ Python PyLith linear algebraic solver.
+ """
+
+ # INVENTORY //////////////////////////////////////////////////////////
+
+ class Inventory(Solver.Inventory):
+ """
+ Python object for managing SolverLumped facilities and properties.
+ """
+
+ ## @class Inventory
+ ## Python object for managing SolverLumped facilities and properties.
+ ##
+ ## \b Properties
+ ## @li None
+ ##
+ ## \b Facilities
+ ## @li None
+
+ import pyre.inventory
+
+ # PUBLIC METHODS /////////////////////////////////////////////////////
+
+ def __init__(self, name="solverlinear"):
+ """
+ Constructor.
+ """
+ Solver.__init__(self, name)
+ ModuleSolverLumped.__init__(self)
+ return
+
+
+ def initialize(self, fields, jacobian, formulation):
+ """
+ Initialize linear solver.
+ """
+ ModuleSolverLumped.initialize(self, fields, jacobian, formulation)
+ return
+
+
+ # PRIVATE METHODS /////////////////////////////////////////////////////
+
+ def _configure(self):
+ """
+ Set members based using inventory.
+ """
+ Solver._configure(self)
+ return
+
+
+ def _cleanup(self):
+ """
+ Deallocate PETSc and local data structures.
+ """
+ self.deallocate()
+ return
+
+
+# FACTORIES ////////////////////////////////////////////////////////////
+
+def solver():
+ """
+ Factory associated with Solver.
+ """
+ return SolverLumped()
+
+
+# End of file
Modified: short/3D/PyLith/trunk/pylith/tests/PhysicalProperties.py
===================================================================
--- short/3D/PyLith/trunk/pylith/tests/PhysicalProperties.py 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/pylith/tests/PhysicalProperties.py 2009-12-10 01:52:12 UTC (rev 16094)
@@ -33,7 +33,7 @@
testcase.assertEqual(mesh['spaceDim'], spaceDim)
# Check physical properties
- tolerance = 1.0e-5
+ tolerance = 1.0e-6
for name in properties.keys():
propertyE = properties[name]
Modified: short/3D/PyLith/trunk/pylith/tests/Solution.py
===================================================================
--- short/3D/PyLith/trunk/pylith/tests/Solution.py 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/pylith/tests/Solution.py 2009-12-10 01:52:12 UTC (rev 16094)
@@ -22,25 +22,22 @@
"""
data = testcase.reader.read(filename)
- # Check cells
- (ncells, ncorners) = data['cells'].shape
- testcase.assertEqual(mesh['ncells'], ncells)
- testcase.assertEqual(mesh['ncorners'], ncorners)
-
# Check vertices
(nvertices, spaceDim) = data['vertices'].shape
testcase.assertEqual(mesh['nvertices'], nvertices)
testcase.assertEqual(mesh['spaceDim'], spaceDim)
# Check displacement solution
- tolerance = 1.0e-5
+ tolerance = 1.0e-6
dispE = testcase.calcDisplacements(data['vertices'])
disp = data['vertex_fields']['displacement']
# Check x displacements
+ mask = numpy.abs(dispE[:,0] > tolerance)
diff = numpy.abs(disp[:,0] - dispE[:,0])
- okay = diff < tolerance
+ diffR = numpy.abs(1.0 - disp[:,0] / dispE[:,0])
+ okay = ~mask * (diff < tolerance) + mask * (diffR < tolerance)
if numpy.sum(okay) != nvertices:
"Error in x-component of displacement field."
print "Expected values: ",dispE
@@ -48,8 +45,10 @@
testcase.assertEqual(nvertices, numpy.sum(okay))
# Check y displacements
- diff = numpy.abs(disp[:,1] - dispE[:,1])
- okay = diff < tolerance
+ mask = numpy.abs(dispE[:,1] > tolerance)
+ diff = numpy.abs(disp[:,1] - dispE[:,0])
+ diffR = numpy.abs(1.0 - disp[:,1] / dispE[:,1])
+ okay = ~mask * (diff < tolerance) + mask * (diffR < tolerance)
if numpy.sum(okay) != nvertices:
"Error in y-component of displacement field."
print "Expected values: ",dispE
@@ -57,8 +56,10 @@
testcase.assertEqual(nvertices, numpy.sum(okay))
# Check z displacements
+ mask = numpy.abs(dispE[:,2] > tolerance)
diff = numpy.abs(disp[:,2] - dispE[:,2])
- okay = diff < tolerance
+ diffR = numpy.abs(1.0 - disp[:,2] / dispE[:,2])
+ okay = ~mask * (diff < tolerance) + mask * (diffR < tolerance)
if numpy.sum(okay) != nvertices:
"Error in z-component of displacement field."
print "Expected values: ",dispE
Modified: short/3D/PyLith/trunk/pylith/tests/StateVariables.py
===================================================================
--- short/3D/PyLith/trunk/pylith/tests/StateVariables.py 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/pylith/tests/StateVariables.py 2009-12-10 01:52:12 UTC (rev 16094)
@@ -37,7 +37,7 @@
normalizer._configure()
# Check state variables
- tolerance = 1.0e-5
+ tolerance = 1.0e-6
for name in stateVarNames:
valuesE = testcase.calcStateVar(name, data['vertices'], data['cells'])
Modified: short/3D/PyLith/trunk/pylith/utils/VTKDataReader.py
===================================================================
--- short/3D/PyLith/trunk/pylith/utils/VTKDataReader.py 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/pylith/utils/VTKDataReader.py 2009-12-10 01:52:12 UTC (rev 16094)
@@ -74,6 +74,8 @@
raise ValueError("Expecting cells to all be the same type.")
if cellId == 5: # tri3
ncorners = 3
+ elif cellId == 12: # tri3
+ ncorners = 8
elif cellId == 3: # line2
ncorners = 2
elif cellId == 9: # quad4
Property changes on: short/3D/PyLith/trunk/share
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/templates
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/tests
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/tests/1d
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/tests/1d/line2
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Modified: short/3D/PyLith/trunk/tests/1d/line2/TestDislocation.py
===================================================================
--- short/3D/PyLith/trunk/tests/1d/line2/TestDislocation.py 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/tests/1d/line2/TestDislocation.py 2009-12-10 01:52:12 UTC (rev 16094)
@@ -89,7 +89,7 @@
return
filename = "%s-fault_t0000000.vtk" % self.outputRoot
- fields = ["cumulative_slip", "traction_change"]
+ fields = ["slip", "traction_change"]
check_vertex_fields(self, filename, self.faultMesh, fields)
return
@@ -163,7 +163,7 @@
elif name == "slip_time":
field = slipTime*numpy.ones( (nvertices, 1), dtype=numpy.float64)
- elif name == "cumulative_slip":
+ elif name == "slip":
field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
field[:,0] = finalSlip
Copied: short/3D/PyLith/trunk/tests/1d/line2/lgdeformtranslation.cfg (from rev 16093, short/3D/PyLith/branches/pylith-friction/tests/1d/line2/lgdeformtranslation.cfg)
===================================================================
--- short/3D/PyLith/trunk/tests/1d/line2/lgdeformtranslation.cfg (rev 0)
+++ short/3D/PyLith/trunk/tests/1d/line2/lgdeformtranslation.cfg 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,95 @@
+# -*- Python -*-
+[pylithapp]
+
+[pylithapp.launcher] # WARNING: THIS IS NOT PORTABLE
+command = mpirun -np ${nodes}
+
+# ----------------------------------------------------------------------
+# journal
+# ----------------------------------------------------------------------
+[pylithapp.journal.info]
+#timedependent = 1
+#implicit = 1
+#petsc = 1
+#solverlinear = 1
+#meshioascii = 1
+#implicitelasticity = 1
+#quadrature = 1
+#fiatsimplex = 1
+
+# ----------------------------------------------------------------------
+# mesh_generator
+# ----------------------------------------------------------------------
+[pylithapp.mesh_generator]
+#debug = 1
+
+[pylithapp.mesh_generator.reader]
+filename = bar.mesh
+coordsys.space_dim = 1
+
+# ----------------------------------------------------------------------
+# problem
+# ----------------------------------------------------------------------
+[pylithapp.timedependent]
+dimension = 1
+bc = [bc]
+
+formulation = pylith.problems.ImplicitLgDeform
+formulation.solver = pylith.problems.SolverNonlinear
+
+[pylithapp.timedependent.formulation.time_step]
+total_time = 0.0*s
+
+# ----------------------------------------------------------------------
+# materials
+# ----------------------------------------------------------------------
+[pylithapp.timedependent]
+materials = [elastic]
+materials.elastic = pylith.materials.ElasticStrain1D
+
+[pylithapp.timedependent.materials.elastic]
+label = Elastic material
+id = 1
+db_properties.iohandler.filename = matprops.spatialdb
+quadrature.cell.shape = line
+
+# ----------------------------------------------------------------------
+# boundary conditions
+# ----------------------------------------------------------------------
+[pylithapp.timedependent.bc.bc]
+bc_dof = [0]
+label = end points
+db_initial = spatialdata.spatialdb.UniformDB
+db_initial.label = Dirichlet BC
+db_initial.values = [displacement-x]
+db_initial.data = [2.5*m]
+
+# ----------------------------------------------------------------------
+# PETSc
+# ----------------------------------------------------------------------
+[pylithapp.petsc]
+ksp_rtol = 1.0e-8
+pc_type = asm
+# Change the preconditioner settings (must turn off
+# shift_positive_definite and turn on shift_nonzero).
+sub_pc_factor_shift_positive_definite = 0
+sub_pc_factor_shift_nonzero =
+
+ksp_max_it = 100
+ksp_gmres_restart = 50
+#ksp_monitor = true
+#ksp_view = true
+#log_summary = true
+#start_in_debugger = true
+#snes_monitor = true
+#snes_view = true
+
+# ----------------------------------------------------------------------
+# output
+# ----------------------------------------------------------------------
+[pylithapp.problem.formulation.output.output.writer]
+filename = lgdeformtranslation.vtk
+
+[pylithapp.timedependent.materials.elastic.output]
+cell_filter = pylith.meshio.CellFilterAvgMesh
+writer.filename = lgdeformtranslation-elastic.vtk
Property changes on: short/3D/PyLith/trunk/tests/1d/line3
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Modified: short/3D/PyLith/trunk/tests/1d/line3/TestDislocation.py
===================================================================
--- short/3D/PyLith/trunk/tests/1d/line3/TestDislocation.py 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/tests/1d/line3/TestDislocation.py 2009-12-10 01:52:12 UTC (rev 16094)
@@ -89,7 +89,7 @@
return
filename = "%s-fault_t0000000.vtk" % self.outputRoot
- fields = ["cumulative_slip", "traction_change"]
+ fields = ["slip", "traction_change"]
check_vertex_fields(self, filename, self.faultMesh, fields)
return
@@ -163,7 +163,7 @@
elif name == "slip_time":
field = slipTime*numpy.ones( (nvertices, 1), dtype=numpy.float64)
- elif name == "cumulative_slip":
+ elif name == "slip":
field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
field[:,0] = finalSlip
Property changes on: short/3D/PyLith/trunk/tests/2d
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/tests/2d/quad4
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Modified: short/3D/PyLith/trunk/tests/2d/quad4/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/tests/2d/quad4/Makefile.am 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/tests/2d/quad4/Makefile.am 2009-12-10 01:52:12 UTC (rev 16094)
@@ -25,6 +25,11 @@
TestDislocation.py \
dislocation_soln.py \
dislocation2_soln.py \
+ TestLgDeformRigidBody.py \
+ rigidbody_soln.py \
+ rigidbody_gendb.py \
+ TestLgDeformTraction.py \
+ lgdeformtraction_soln.py \
testpylith.py
dist_noinst_DATA = \
@@ -35,7 +40,9 @@
axialdisp.cfg \
sheardisp.cfg \
dislocation.cfg \
- dislocation2.cfg
+ dislocation2.cfg \
+ lgdeformrigidbody.cfg \
+ lgdeformtraction.cfg
noinst_TMP = \
axial_disp.spatialdb \
@@ -50,7 +57,14 @@
dislocation-elastic_info.vtk \
dislocation-elastic_t0000000.vtk \
dislocation-fault_info.vtk \
- dislocation-fault_t0000000.vtk
+ dislocation-fault_t0000000.vtk \
+ rigidbody_disp.spatialdb \
+ lgdeformrigidbody_t0000000.vtk \
+ lgdeformrigidbody-elastic_info.vtk \
+ lgdeformrigidbody-elastic_t0000000.vtk \
+ lgdeformtraction_t0000000.vtk \
+ lgdeformtraction-elastic_info.vtk \
+ lgdeformtraction-elastic_t0000000.vtk
TESTS_ENVIRONMENT = $(PYTHON)
Modified: short/3D/PyLith/trunk/tests/2d/quad4/TestDislocation.py
===================================================================
--- short/3D/PyLith/trunk/tests/2d/quad4/TestDislocation.py 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/tests/2d/quad4/TestDislocation.py 2009-12-10 01:52:12 UTC (rev 16094)
@@ -92,7 +92,7 @@
return
filename = "%s-fault_t0000000.vtk" % self.outputRoot
- fields = ["cumulative_slip", "traction_change"]
+ fields = ["slip", "traction_change"]
check_vertex_fields(self, filename, self.faultMesh, fields)
return
@@ -144,7 +144,7 @@
elif name == "slip_time":
field = slipTime*numpy.zeros( (nvertices, 1), dtype=numpy.float64)
- elif name == "cumulative_slip":
+ elif name == "slip":
field = numpy.zeros( (nvertices, 3), dtype=numpy.float64)
field[:,0] = finalSlip
Copied: short/3D/PyLith/trunk/tests/2d/quad4/TestLgDeformRigidBody.py (from rev 16093, short/3D/PyLith/branches/pylith-friction/tests/2d/quad4/TestLgDeformRigidBody.py)
===================================================================
--- short/3D/PyLith/trunk/tests/2d/quad4/TestLgDeformRigidBody.py (rev 0)
+++ short/3D/PyLith/trunk/tests/2d/quad4/TestLgDeformRigidBody.py 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,93 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+# Brad T. Aagaard
+# U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file tests/2d/quad4/TestRigidBody.py
+##
+## @brief Test suite for testing pylith with rigid body motion for
+## large deformations in 2-D.
+
+import numpy
+from TestQuad4 import TestQuad4
+from rigidbody_soln import AnalyticalSoln
+from pylith.utils.VTKDataReader import has_vtk
+from pylith.utils.VTKDataReader import VTKDataReader
+
+# Local version of PyLithApp
+from pylith.apps.PyLithApp import PyLithApp
+class RigidBodyApp(PyLithApp):
+ def __init__(self):
+ PyLithApp.__init__(self, name="lgdeformrigidbody")
+ return
+
+
+# Helper function to run PyLith
+def run_pylith():
+ """
+ Run pylith.
+ """
+ if not "done" in dir(run_pylith):
+ # Generate spatial databases
+ from rigidbody_gendb import GenerateDB
+ db = GenerateDB()
+ db.run()
+
+ # Run PyLith
+ app = RigidBodyApp()
+ app.run()
+ run_pylith.done = True
+ return
+
+
+class TestRigidBody(TestQuad4):
+ """
+ Test suite for testing pylith with 2-D rigid body motion.
+ """
+
+ def setUp(self):
+ """
+ Setup for test.
+ """
+ TestQuad4.setUp(self)
+ run_pylith()
+ self.outputRoot = "lgdeformrigidbody"
+ if has_vtk():
+ self.reader = VTKDataReader()
+ self.soln = AnalyticalSoln()
+ else:
+ self.reader = None
+ return
+
+
+ def calcDisplacements(self, vertices):
+ """
+ Calculate displacement field given coordinates of vertices.
+ """
+ return self.soln.displacement(vertices)
+
+
+ def calcStateVar(self, name, vertices, cells):
+ """
+ Calculate state variable.
+ """
+ ncells = self.mesh['ncells']
+ pts = numpy.zeros( (ncells, 3), dtype=numpy.float64)
+ if name == "total_strain":
+ stateVar = self.soln.strain(pts)
+ elif name == "stress":
+ stateVar = self.soln.stress(pts)
+ else:
+ raise ValueError("Unknown state variable '%s'." % name)
+
+ return stateVar
+
+
+# End of file
Copied: short/3D/PyLith/trunk/tests/2d/quad4/TestLgDeformTraction.py (from rev 16093, short/3D/PyLith/branches/pylith-friction/tests/2d/quad4/TestLgDeformTraction.py)
===================================================================
--- short/3D/PyLith/trunk/tests/2d/quad4/TestLgDeformTraction.py (rev 0)
+++ short/3D/PyLith/trunk/tests/2d/quad4/TestLgDeformTraction.py 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,88 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+# Brad T. Aagaard
+# U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file tests/2d/quad4/TestLgDeformTraction.py
+##
+## @brief Test suite for testing pylith with uniform tractions for
+## large deformations in 2-D.
+
+import numpy
+from TestQuad4 import TestQuad4
+from lgdeformtraction_soln import AnalyticalSoln
+from pylith.utils.VTKDataReader import has_vtk
+from pylith.utils.VTKDataReader import VTKDataReader
+
+# Local version of PyLithApp
+from pylith.apps.PyLithApp import PyLithApp
+class TractionApp(PyLithApp):
+ def __init__(self):
+ PyLithApp.__init__(self, name="lgdeformtraction")
+ return
+
+
+# Helper function to run PyLith
+def run_pylith():
+ """
+ Run pylith.
+ """
+ if not "done" in dir(run_pylith):
+ # Run PyLith
+ app = TractionApp()
+ app.run()
+ run_pylith.done = True
+ return
+
+
+class TestTraction(TestQuad4):
+ """
+ Test suite for testing pylith with 2-D axial tractions.
+ """
+
+ def setUp(self):
+ """
+ Setup for test.
+ """
+ TestQuad4.setUp(self)
+ run_pylith()
+ self.outputRoot = "lgdeformtraction"
+ if has_vtk():
+ self.reader = VTKDataReader()
+ self.soln = AnalyticalSoln()
+ else:
+ self.reader = None
+ return
+
+
+ def calcDisplacements(self, vertices):
+ """
+ Calculate displacement field given coordinates of vertices.
+ """
+ return self.soln.displacement(vertices)
+
+
+ def calcStateVar(self, name, vertices, cells):
+ """
+ Calculate state variable.
+ """
+ ncells = self.mesh['ncells']
+ pts = numpy.zeros( (ncells, 3), dtype=numpy.float64)
+ if name == "total_strain":
+ stateVar = self.soln.strain(pts)
+ elif name == "stress":
+ stateVar = self.soln.stress(pts)
+ else:
+ raise ValueError("Unknown state variable '%s'." % name)
+
+ return stateVar
+
+
+# End of file
Copied: short/3D/PyLith/trunk/tests/2d/quad4/lgdeformrigidbody.cfg (from rev 16093, short/3D/PyLith/branches/pylith-friction/tests/2d/quad4/lgdeformrigidbody.cfg)
===================================================================
--- short/3D/PyLith/trunk/tests/2d/quad4/lgdeformrigidbody.cfg (rev 0)
+++ short/3D/PyLith/trunk/tests/2d/quad4/lgdeformrigidbody.cfg 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,108 @@
+# -*- Python -*-
+[lgdeformrigidbody]
+
+[lgdeformrigidbody.launcher] # WARNING: THIS IS NOT PORTABLE
+command = mpirun -np ${nodes}
+
+# ----------------------------------------------------------------------
+# journal
+# ----------------------------------------------------------------------
+[lgdeformrigidbody.journal.info]
+#timedependent = 1
+#implicit = 1
+#petsc = 1
+#solverlinear = 1
+#meshiocubit = 1
+#implicitelasticity = 1
+#quadrature2d = 1
+#fiatlagrange = 1
+
+# ----------------------------------------------------------------------
+# mesh_generator
+# ----------------------------------------------------------------------
+[lgdeformrigidbody.mesh_generator]
+#debug = 1
+reader = pylith.meshio.MeshIOCubit
+
+[lgdeformrigidbody.mesh_generator.reader]
+filename = mesh.exo
+coordsys.space_dim = 2
+
+# ----------------------------------------------------------------------
+# problem
+# ----------------------------------------------------------------------
+[lgdeformrigidbody.timedependent]
+dimension = 2
+bc = [x_neg,x_pos]
+
+formulation = pylith.problems.ImplicitLgDeform
+formulation.solver = pylith.problems.SolverNonlinear
+
+[lgdeformrigidbody.timedependent.formulation.time_step]
+total_time = 0.0*s
+
+# ----------------------------------------------------------------------
+# materials
+# ----------------------------------------------------------------------
+[lgdeformrigidbody.timedependent]
+materials = [elastic]
+materials.elastic = pylith.materials.ElasticPlaneStrain
+
+[lgdeformrigidbody.timedependent.materials.elastic]
+label = Elastic material
+id = 1
+db_properties.iohandler.filename = matprops.spatialdb
+quadrature.cell = pylith.feassemble.FIATLagrange
+quadrature.cell.dimension = 2
+
+# ----------------------------------------------------------------------
+# boundary conditions
+# ----------------------------------------------------------------------
+[lgdeformrigidbody.timedependent.bc.x_neg]
+bc_dof = [0,1]
+label = 21
+db_initial = spatialdata.spatialdb.SimpleDB
+db_initial.label = Dirichlet BC -x edge
+db_initial.iohandler.filename = rigidbody_disp.spatialdb
+
+[lgdeformrigidbody.timedependent.bc.x_pos]
+bc_dof = [0,1]
+label = 20
+db_initial = spatialdata.spatialdb.SimpleDB
+db_initial.label = Dirichlet BC +x edge
+db_initial.iohandler.filename = rigidbody_disp.spatialdb
+
+# ----------------------------------------------------------------------
+# PETSc
+# ----------------------------------------------------------------------
+[lgdeformrigidbody.petsc]
+ksp_rtol = 1.0e-8
+pc_type = asm
+# Change the preconditioner settings (must turn off
+# shift_positive_definite and turn on shift_nonzero).
+sub_pc_factor_shift_positive_definite = 0
+sub_pc_factor_shift_nonzero =
+
+ksp_max_it = 200
+ksp_gmres_restart = 100
+#ksp_monitor = true
+#ksp_view = true
+#snes_monitor = true
+#snes_view = true
+#ksp_converged_reason = true
+#snes_converged_reason = true
+#log_summary = true
+# start_in_debugger = true
+
+
+# ----------------------------------------------------------------------
+# output
+# ----------------------------------------------------------------------
+[lgdeformrigidbody.problem.formulation.output.output.writer]
+filename = lgdeformrigidbody.vtk
+float_precision = 8
+
+[lgdeformrigidbody.timedependent.materials.elastic.output]
+cell_filter = pylith.meshio.CellFilterAvgMesh
+writer.filename = lgdeformrigidbody-elastic.vtk
+writer.float_precision = 8
Copied: short/3D/PyLith/trunk/tests/2d/quad4/lgdeformtraction.cfg (from rev 16093, short/3D/PyLith/branches/pylith-friction/tests/2d/quad4/lgdeformtraction.cfg)
===================================================================
--- short/3D/PyLith/trunk/tests/2d/quad4/lgdeformtraction.cfg (rev 0)
+++ short/3D/PyLith/trunk/tests/2d/quad4/lgdeformtraction.cfg 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,124 @@
+# -*- Python -*-
+[lgdeformtraction]
+
+[lgdeformtraction.launcher] # WARNING: THIS IS NOT PORTABLE
+command = mpirun -np ${nodes}
+
+# ----------------------------------------------------------------------
+# journal
+# ----------------------------------------------------------------------
+[lgdeformtraction.journal.info]
+#timedependent = 1
+#implicit = 1
+#petsc = 1
+#solverlinear = 1
+#meshiocubit = 1
+#implicitelasticity = 1
+#quadrature2d = 1
+#fiatlagrange = 1
+
+# ----------------------------------------------------------------------
+# mesh_generator
+# ----------------------------------------------------------------------
+[lgdeformtraction.mesh_generator]
+#debug = 1
+reader = pylith.meshio.MeshIOCubit
+
+[lgdeformtraction.mesh_generator.reader]
+filename = mesh.exo
+coordsys.space_dim = 2
+
+# ----------------------------------------------------------------------
+# problem
+# ----------------------------------------------------------------------
+[lgdeformtraction.timedependent]
+dimension = 2
+bc = [x_neg,x_pos,y_neg,y_pos]
+
+formulation = pylith.problems.ImplicitLgDeform
+formulation.solver = pylith.problems.SolverNonlinear
+
+[lgdeformtraction.timedependent.formulation.time_step]
+total_time = 0.0*s
+
+# ----------------------------------------------------------------------
+# materials
+# ----------------------------------------------------------------------
+[lgdeformtraction.timedependent]
+materials = [elastic]
+materials.elastic = pylith.materials.ElasticPlaneStrain
+
+[lgdeformtraction.timedependent.materials.elastic]
+label = Elastic material
+id = 1
+db_properties.iohandler.filename = matprops.spatialdb
+quadrature.cell = pylith.feassemble.FIATLagrange
+quadrature.cell.dimension = 2
+
+# ----------------------------------------------------------------------
+# boundary conditions
+# ----------------------------------------------------------------------
+[lgdeformtraction.timedependent.bc]
+x_pos = pylith.bc.Neumann
+y_pos = pylith.bc.Neumann
+
+[lgdeformtraction.timedependent.bc.x_neg]
+bc_dof = [0]
+label = 21
+
+[lgdeformtraction.timedependent.bc.y_neg]
+bc_dof = [1]
+label = 23
+
+[lgdeformtraction.timedependent.bc.x_pos]
+label = 20
+db_initial = spatialdata.spatialdb.UniformDB
+db_initial.label = Neumann BC +x edge
+db_initial.values = [traction-shear,traction-normal]
+db_initial.data = [0.0*MPa,-100*MPa]
+quadrature.cell = pylith.feassemble.FIATLagrange
+quadrature.cell.dimension = 1
+
+[lgdeformtraction.timedependent.bc.y_pos]
+label = 22
+db_initial = spatialdata.spatialdb.UniformDB
+db_initial.label = Neumann BC +y edge
+db_initial.values = [traction-shear,traction-normal]
+db_initial.data = [0.0*MPa,-10*MPa]
+quadrature.cell = pylith.feassemble.FIATLagrange
+quadrature.cell.dimension = 1
+
+# ----------------------------------------------------------------------
+# PETSc
+# ----------------------------------------------------------------------
+[lgdeformtraction.petsc]
+ksp_rtol = 1.0e-8
+pc_type = asm
+# Change the preconditioner settings (must turn off
+# shift_positive_definite and turn on shift_nonzero).
+sub_pc_factor_shift_positive_definite = 0
+sub_pc_factor_shift_nonzero =
+
+ksp_max_it = 100
+ksp_gmres_restart = 50
+#ksp_monitor = true
+#ksp_view = true
+#snes_monitor = true
+#snes_view = true
+#ksp_converged_reason = true
+#snes_converged_reason = true
+#log_summary = true
+# start_in_debugger = true
+
+
+# ----------------------------------------------------------------------
+# output
+# ----------------------------------------------------------------------
+[lgdeformtraction.problem.formulation.output.output.writer]
+filename = lgdeformtraction.vtk
+float_precision = 8
+
+[lgdeformtraction.timedependent.materials.elastic.output]
+cell_filter = pylith.meshio.CellFilterAvgMesh
+writer.filename = lgdeformtraction-elastic.vtk
+writer.float_precision = 8
Copied: short/3D/PyLith/trunk/tests/2d/quad4/lgdeformtraction_soln.py (from rev 16093, short/3D/PyLith/branches/pylith-friction/tests/2d/quad4/lgdeformtraction_soln.py)
===================================================================
--- short/3D/PyLith/trunk/tests/2d/quad4/lgdeformtraction_soln.py (rev 0)
+++ short/3D/PyLith/trunk/tests/2d/quad4/lgdeformtraction_soln.py 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,95 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+# Brad T. Aagaard
+# U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file tests/2d/quad4/lgdeformtraction_soln.py
+##
+## @brief Analytical solution to axial tractions with large
+## deformation formulation.
+
+import numpy
+
+# Physical properties
+p_density = 2500.0
+p_vs = 3000.0
+p_vp = 5291.502622129181
+
+p_mu = p_density*p_vs**2
+p_lambda = p_density*p_vp**2 - 2*p_mu
+
+# Uniform stress field (plane strain)
+sxx0 = -100.0e+6
+syy0 = -10.0e+6
+ux = -12.6625644
+uy = 3.37567811
+
+sxx = -1.00158533e+8
+sxy = 0.0
+syy = -9.99578218e+6
+szz = p_lambda/(2*p_lambda+2*p_mu)*(sxx+syy)
+
+# Uniform strain field
+exx = -0.00158156790
+eyy = 0.000422048789
+ezz = 1.0/(2*p_mu) * (szz - p_lambda/(3*p_lambda+2*p_mu) * (sxx+syy+szz))
+
+exy = 1.0/(2*p_mu) * (sxy)
+
+#print sxx,syy
+#print exx,eyy,exy,ezz
+#print -exx*p_lambda/(p_lambda+2*p_mu)
+
+# ----------------------------------------------------------------------
+class AnalyticalSoln(object):
+ """
+ Analytical solution to axial/shear displacement problem.
+ """
+
+ def __init__(self):
+ return
+
+
+ def displacement(self, locs):
+ """
+ Compute displacement field at locations.
+ """
+ (npts, dim) = locs.shape
+ disp = numpy.zeros( (npts, 3), dtype=numpy.float64)
+ disp[:,0] = ux*(4000.0 + locs[:,0]) / 8000.0
+ disp[:,1] = uy*(4000.0 + locs[:,1]) / 8000.0
+ return disp
+
+
+ def strain(self, locs):
+ """
+ Compute strain field at locations.
+ """
+ (npts, dim) = locs.shape
+ strain = numpy.zeros( (npts, 3), dtype=numpy.float64)
+ strain[:,0] = exx
+ strain[:,1] = eyy
+ strain[:,2] = exy
+ return strain
+
+
+ def stress(self, locs):
+ """
+ Compute stress field at locations.
+ """
+ (npts, dim) = locs.shape
+ stress = numpy.zeros( (npts, 3), dtype=numpy.float64)
+ stress[:,0] = sxx
+ stress[:,1] = syy
+ stress[:,2] = sxy
+ return stress
+
+
+# End of file
Copied: short/3D/PyLith/trunk/tests/2d/quad4/rigidbody_gendb.py (from rev 16093, short/3D/PyLith/branches/pylith-friction/tests/2d/quad4/rigidbody_gendb.py)
===================================================================
--- short/3D/PyLith/trunk/tests/2d/quad4/rigidbody_gendb.py (rev 0)
+++ short/3D/PyLith/trunk/tests/2d/quad4/rigidbody_gendb.py 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,79 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+# Brad T. Aagaard
+# U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file tests/2d/quad4/rigidbody_gendb.py
+##
+## @brief Python script to generate spatial database with displacement
+## boundary conditions for the rigid body motion test.
+
+import numpy
+
+class GenerateDB(object):
+ """
+ Python object to generate spatial database with displacement
+ boundary conditions for the rigid body motion test.
+ """
+
+ def __init__(self):
+ """
+ Constructor.
+ """
+ return
+
+
+ def run(self):
+ """
+ Generate the database.
+ """
+ # Domain
+ x = numpy.arange(-4000.0, 4000.1, 1000.0)
+ y = numpy.arange(-4000.0, 4000.1, 1000.0)
+ npts = x.shape[0]
+
+ xx = x * numpy.ones( (npts, 1), dtype=numpy.float64)
+ yy = y * numpy.ones( (npts, 1), dtype=numpy.float64)
+ xy = numpy.zeros( (npts**2, 2), dtype=numpy.float64)
+ xy[:,0] = numpy.ravel(xx)
+ xy[:,1] = numpy.ravel(numpy.transpose(yy))
+
+ from rigidbody_soln import AnalyticalSoln
+ soln = AnalyticalSoln()
+ disp = soln.displacement(xy)
+
+ from spatialdata.geocoords.CSCart import CSCart
+ cs = CSCart()
+ cs.inventory.spaceDim = 2
+ cs._configure()
+ data = {'locs': xy,
+ 'coordsys': cs,
+ 'data_dim': 2,
+ 'values': [{'name': "displacement-x",
+ 'units': "m",
+ 'data': numpy.ravel(disp[:,0])},
+ {'name': "displacement-y",
+ 'units': "m",
+ 'data': numpy.ravel(disp[:,1])}]}
+
+ from spatialdata.spatialdb.SimpleIOAscii import SimpleIOAscii
+ io = SimpleIOAscii()
+ io.inventory.filename = "rigidbody_disp.spatialdb"
+ io._configure()
+ io.write(data)
+ return
+
+# ======================================================================
+if __name__ == "__main__":
+ app = GenerateDB()
+ app.run()
+
+
+# End of file
Copied: short/3D/PyLith/trunk/tests/2d/quad4/rigidbody_soln.py (from rev 16093, short/3D/PyLith/branches/pylith-friction/tests/2d/quad4/rigidbody_soln.py)
===================================================================
--- short/3D/PyLith/trunk/tests/2d/quad4/rigidbody_soln.py (rev 0)
+++ short/3D/PyLith/trunk/tests/2d/quad4/rigidbody_soln.py 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,95 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+# Brad T. Aagaard
+# U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file tests/2d/quad4/rigidbody_soln.py
+##
+## @brief Analytical solution to rigid body motion problem.
+
+import numpy
+
+# Physical properties
+p_density = 2500.0
+p_vs = 3000.0
+p_vp = 5291.502622129181
+
+p_mu = p_density*p_vs**2
+p_lambda = p_density*p_vp**2 - 2*p_mu
+
+# Uniform stress field (plane strain)
+sxx = 0.0
+sxy = 0.0
+syy = 0.0
+szz = p_lambda/(2*p_lambda+2*p_mu)*(sxx+syy)
+
+# Uniform strain field
+exx = 0.0
+eyy = 0.0
+ezz = 0.0
+
+exy = 1.0/(2*p_mu) * (sxy)
+
+#print exx,eyy,exy,ezz
+#print -exx*p_lambda/(p_lambda+2*p_mu)
+
+# ----------------------------------------------------------------------
+class AnalyticalSoln(object):
+ """
+ Analytical solution to axial/shear displacement problem.
+ """
+
+ def __init__(self):
+ return
+
+
+ def displacement(self, locs):
+ """
+ Compute displacement field at locations.
+ """
+ u0 = 1000.0
+ v0 = 500.0
+ from math import pi
+ theta = -30.0/180.0*pi
+
+ (npts, dim) = locs.shape
+ disp = numpy.zeros( (npts, 3), dtype=numpy.float64)
+ disp[:,0] = -locs[:,0] + \
+ u0 + numpy.cos(theta)*locs[:,0] + numpy.sin(theta)*locs[:,1]
+ disp[:,1] = -locs[:,1] + \
+ v0 - numpy.sin(theta)*locs[:,0] + numpy.cos(theta)*locs[:,1]
+ return disp
+
+
+ def strain(self, locs):
+ """
+ Compute strain field at locations.
+ """
+ (npts, dim) = locs.shape
+ strain = numpy.zeros( (npts, 3), dtype=numpy.float64)
+ strain[:,0] = exx
+ strain[:,1] = eyy
+ strain[:,2] = exy
+ return strain
+
+
+ def stress(self, locs):
+ """
+ Compute stress field at locations.
+ """
+ (npts, dim) = locs.shape
+ stress = numpy.zeros( (npts, 3), dtype=numpy.float64)
+ stress[:,0] = sxx
+ stress[:,1] = syy
+ stress[:,2] = sxy
+ return stress
+
+
+# End of file
Modified: short/3D/PyLith/trunk/tests/2d/quad4/testpylith.py
===================================================================
--- short/3D/PyLith/trunk/tests/2d/quad4/testpylith.py 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/tests/2d/quad4/testpylith.py 2009-12-10 01:52:12 UTC (rev 16094)
@@ -32,6 +32,12 @@
#from TestDislocation2 import TestDislocation2
#suite.addTest(unittest.makeSuite(TestDislocation2))
+ from TestLgDeformRigidBody import TestRigidBody
+ suite.addTest(unittest.makeSuite(TestRigidBody))
+
+ from TestLgDeformTraction import TestTraction
+ suite.addTest(unittest.makeSuite(TestTraction))
+
return suite
Property changes on: short/3D/PyLith/trunk/tests/2d/tri3
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Copied: short/3D/PyLith/trunk/tests/3dnew (from rev 16093, short/3D/PyLith/branches/pylith-friction/tests/3dnew)
Modified: short/3D/PyLith/trunk/tests/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/tests/Makefile.am 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/tests/Makefile.am 2009-12-10 01:52:12 UTC (rev 16094)
@@ -12,7 +12,9 @@
SUBDIRS = \
1d \
- 2d
+ 2d \
+ 3dnew \
+ petsc
# End of file
Modified: short/3D/PyLith/trunk/tests/README
===================================================================
--- short/3D/PyLith/trunk/tests/README 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/tests/README 2009-12-10 01:52:12 UTC (rev 16094)
@@ -9,10 +9,13 @@
Point force
Neumann
Absorbing dampers
+ Body forces (2-D, 3-D)
Faults
+ Kinematic
+ Dynamic
+ Large deformations
-
----------------------------------------------------------------------
1-D tests
----------------------------------------------------------------------
@@ -69,6 +72,18 @@
* dislocationdyn --TODO--
[single fault, dynamic]
+ * lgdeformrigidbody --TODO-- (need higher precision output)
+
+ - Dirichlet BC w/initial displacement, UniformDB
+ (rigid body translation and rotation)
+ - Large deformation
+
+ * lgdeformtraction --TODO-- (need higher precision output)
+
+ - Dirichlet BC w/initial displacement, UniformDB
+ - Neuman BC w/initial value, UniformDB
+ - Large deformation
+
tri3 (linear cells, plane stress)
* axialdisp
@@ -100,3 +115,15 @@
Gravity with faults, Neumann BC.
+ * lgdeformrigidbody --TODO-- (need higher precision output)
+
+ - Dirichlet BC w/initial displacement, UniformDB
+ (rigid body translation and rotation)
+ - Large deformation
+
+ * lgdeformtraction --TODO-- (need higher precision output)
+
+ - Dirichlet BC w/initial displacement, UniformDB
+ - Neuman BC w/initial value, UniformDB
+ - Large deformation
+
Property changes on: short/3D/PyLith/trunk/tests/petsc
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Modified: short/3D/PyLith/trunk/tests/petsc/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/tests/petsc/Makefile.am 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/tests/petsc/Makefile.am 2009-12-10 01:52:12 UTC (rev 16094)
@@ -14,7 +14,7 @@
check_SCRIPTS = testpetsc.py
-noinst_PYTHON = \
+dist_noinst_PYTHON = \
TestPetscApp.py
noinst_DATA =
@@ -26,15 +26,15 @@
# 'export' the input files by performing a mock install
export_datadir = $(top_builddir)/tests/petsc
-export-data: $(noinst_PYTHON) $(noinst_DATA)
- for f in $(noinst_PYTHON) $(noinst_DATA); do $(install_sh_DATA) $(srcdir)/$$f $(export_datadir); done
+export-data: $(dist_noinst_PYTHON) $(dist_noinst_DATA)
+ for f in $(dist_noinst_PYTHON) $(dist_noinst_DATA); do $(install_sh_DATA) $(srcdir)/$$f $(export_datadir); done
-BUILT_SOURCES = export-data
+clean-data:
+ if [ "X$(top_srcdir)" != "X$(top_builddir)" ]; then for f in $(dist_noinst_PYTHON) $(dist_noinst_DATA) $(noinst_TMP); do $(RM) $(RM_FLAGS) $(export_datadir)/$$f; done; fi
-CLEANFILES = \
- $(export_datadir)/$(noinst_PYTHON) \
- $(export_datadir)/$(noinst_DATA) \
- $(export_datadir)/$(noinst_TMP)
+BUILT_SOURCES = export-data
+clean-local: clean-data
+CLEANFILES = *.pyc
# End of file
Property changes on: short/3D/PyLith/trunk/unittests
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/unittests/libtests
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/unittests/libtests/bc
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampers.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampers.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampers.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -277,7 +277,81 @@
} // testIntegrateJacobian
// ----------------------------------------------------------------------
+// Test integrateJacobianLumped().
void
+pylith::bc::TestAbsorbingDampers::testIntegrateJacobianLumped(void)
+{ // testIntegrateJacobianLumped
+ CPPUNIT_ASSERT(0 != _data);
+
+ topology::Mesh mesh;
+ AbsorbingDampers bc;
+ topology::SolutionFields fields(mesh);
+ _initialize(&mesh, &bc, &fields);
+
+ topology::Field<topology::Mesh> jacobian(mesh);
+ jacobian.label("Jacobian");
+ jacobian.vectorFieldType(topology::FieldBase::VECTOR);
+ jacobian.newSection(topology::FieldBase::VERTICES_FIELD, _data->spaceDim);
+ jacobian.allocate();
+
+ const ALE::Obj<SieveMesh>& sieveMesh = mesh.sieveMesh();
+ CPPUNIT_ASSERT(!sieveMesh.isNull());
+
+ const topology::SubMesh& boundaryMesh = *bc._boundaryMesh;
+ const ALE::Obj<SieveSubMesh>& submesh = boundaryMesh.sieveMesh();
+ CPPUNIT_ASSERT(!submesh.isNull());
+
+ topology::Field<topology::Mesh>& solution = fields.solution();
+ const ALE::Obj<RealSection>& solutionSection = solution.section();
+ CPPUNIT_ASSERT(!solutionSection.isNull());
+
+ const double t = 1.0;
+ bc.integrateJacobian(jacobian, t, &fields);
+ CPPUNIT_ASSERT_EQUAL(false, bc.needNewJacobian());
+ jacobian.complete();
+
+ const double* valsMatrixE = _data->valsJacobian;
+ const int totalNumVertices = sieveMesh->depthStratum(0)->size();
+ const int sizeE = totalNumVertices * _data->spaceDim;
+ double_array valsE(sizeE);
+ const int spaceDim = _data->spaceDim;
+ for (int iVertex=0; iVertex < totalNumVertices; ++iVertex)
+ for (int iDim=0; iDim < spaceDim; ++iDim) {
+ const int indexRow = (iVertex*spaceDim+iDim)*totalNumVertices*spaceDim;
+ double value = 0.0;
+ for (int jVertex=0; jVertex < totalNumVertices; ++jVertex)
+ value += valsMatrixE[indexRow + jVertex*spaceDim+iDim];
+ valsE[iVertex*spaceDim+iDim] = value;
+ } // for
+
+#if 0 // DEBUGGING
+ jacobian.view("JACOBIAN");
+ std::cout << "\n\nJACOBIAN FULL" << std::endl;
+ const int n = totalNumVertices*spaceDim;
+ for (int r=0; r < n; ++r) {
+ for (int c=0; c < n; ++c)
+ std::cout << " " << valsMatrixE[r*n+c];
+ std::cout << "\n";
+ } // for
+#endif // DEBUGGING
+
+ const ALE::Obj<RealSection>& jacobianSection = jacobian.section();
+ CPPUNIT_ASSERT(!jacobianSection.isNull());
+ const double* vals = jacobianSection->restrictSpace();
+ const int size = jacobianSection->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);
+
+} // testIntegrateJacobianLumped
+
+// ----------------------------------------------------------------------
+void
pylith::bc::TestAbsorbingDampers::_initialize(topology::Mesh* mesh,
AbsorbingDampers* const bc,
topology::SolutionFields* fields) const
Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampers.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampers.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampers.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -71,6 +71,9 @@
/// Test integrateJacobian().
void testIntegrateJacobian(void);
+ /// Test integrateJacobianLumped().
+ void testIntegrateJacobianLumped(void);
+
// PROTECTED MEMBERS //////////////////////////////////////////////////
protected :
Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampersHex8.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampersHex8.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampersHex8.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -40,6 +40,7 @@
CPPUNIT_TEST( testInitialize );
CPPUNIT_TEST( testIntegrateResidual );
CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testIntegrateJacobianLumped );
CPPUNIT_TEST_SUITE_END();
Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampersLine2.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampersLine2.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampersLine2.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -39,6 +39,7 @@
CPPUNIT_TEST( testInitialize );
CPPUNIT_TEST( testIntegrateResidual );
CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testIntegrateJacobianLumped );
CPPUNIT_TEST_SUITE_END();
// PUBLIC METHODS /////////////////////////////////////////////////////
Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampersQuad4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampersQuad4.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampersQuad4.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -39,6 +39,7 @@
CPPUNIT_TEST( testInitialize );
CPPUNIT_TEST( testIntegrateResidual );
CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testIntegrateJacobianLumped );
CPPUNIT_TEST_SUITE_END();
// PUBLIC METHODS /////////////////////////////////////////////////////
Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampersTet4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampersTet4.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampersTet4.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -39,6 +39,7 @@
CPPUNIT_TEST( testInitialize );
CPPUNIT_TEST( testIntegrateResidual );
CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testIntegrateJacobianLumped );
CPPUNIT_TEST_SUITE_END();
// PUBLIC METHODS /////////////////////////////////////////////////////
Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampersTri3.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampersTri3.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestAbsorbingDampersTri3.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -39,6 +39,7 @@
CPPUNIT_TEST( testInitialize );
CPPUNIT_TEST( testIntegrateResidual );
CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testIntegrateJacobianLumped );
CPPUNIT_TEST_SUITE_END();
// PUBLIC METHODS /////////////////////////////////////////////////////
Property changes on: short/3D/PyLith/trunk/unittests/libtests/bc/data
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Modified: short/3D/PyLith/trunk/unittests/libtests/bc/test_bc.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/test_bc.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/test_bc.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -64,6 +64,9 @@
// Finalize PETSc
err = PetscFinalize(); CHKERRQ(err);
+ } catch (const std::exception& err) {
+ std::cerr << "Error: " << err.what() << std::endl;
+ abort();
} catch (...) {
abort();
} // catch
Property changes on: short/3D/PyLith/trunk/unittests/libtests/faults
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/Makefile.am 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/Makefile.am 2009-12-10 01:52:12 UTC (rev 16094)
@@ -27,6 +27,7 @@
TestConstRateSlipFn.cc \
TestBruneSlipFn.cc \
TestLiuCosSlipFn.cc \
+ TestTimeHistorySlipFn.cc \
TestEqKinSrc.cc \
TestFaultCohesiveKin.cc \
TestFaultCohesiveKinLine2.cc \
@@ -49,7 +50,7 @@
noinst_HEADERS = \
TestBruneSlipFn.hh \
- TestLiuCosSlipFn.hh \
+ TestTimeHistorySlipFn.hh \
TestConstRateSlipFn.hh \
TestStepSlipFn.hh \
TestEqKinSrc.hh \
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKin.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKin.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKin.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -521,12 +521,12 @@
topology::Jacobian jacobian(fields);
const double t = 2.134;
- fault.integrateJacobian(&jacobian, t, &fields);
+ fault.integrateJacobianAssembled(&jacobian, t, &fields);
CPPUNIT_ASSERT_EQUAL(false, fault.needNewJacobian());
jacobian.assemble("final_assembly");
- //MatView(jacobian, PETSC_VIEWER_STDOUT_WORLD); // DEBUGGING
+ // MatView(jacobian.matrix(), PETSC_VIEWER_STDOUT_WORLD); // DEBUGGING
const double* valsE = _data->valsJacobian;
const int nrowsE = dispSection->sizeWithBC();
@@ -576,6 +576,77 @@
} // testIntegrateJacobianAssembled
// ----------------------------------------------------------------------
+// Test integrateJacobianAssembled() with lumped Jacobian.
+void
+pylith::faults::TestFaultCohesiveKin::testIntegrateJacobianAssembledLumped(void)
+{ // testIntegrateJacobianAssembledLumped
+ topology::Mesh mesh;
+ FaultCohesiveKin fault;
+ topology::SolutionFields fields(mesh);
+ _initialize(&mesh, &fault, &fields);
+
+ topology::Field<topology::Mesh> jacobian(mesh);
+ jacobian.label("Jacobian");
+ jacobian.vectorFieldType(topology::FieldBase::VECTOR);
+ jacobian.newSection(topology::FieldBase::VERTICES_FIELD, _data->spaceDim);
+ jacobian.allocate();
+
+ const double t = 2.134;
+ fault.integrateJacobianAssembled(jacobian, t, &fields);
+ CPPUNIT_ASSERT_EQUAL(false, fault.needNewJacobian());
+ jacobian.complete();
+
+#if 0 // DEBUGGING
+ jacobian.view("JACOBIAN");
+#endif // DEBUGGING
+
+ const ALE::Obj<RealSection>& jacobianSection = jacobian.section();
+ CPPUNIT_ASSERT(!jacobianSection.isNull());
+
+ int iVertex = 0;
+ const double tolerance = 1.0e-06;
+ const int spaceDim = _data->spaceDim;
+ const ALE::Obj<SieveSubMesh>& faultSieveMesh = fault._faultMesh->sieveMesh();
+ CPPUNIT_ASSERT(!faultSieveMesh.isNull());
+ const ALE::Obj<SieveMesh::label_sequence>& vertices =
+ faultSieveMesh->depthStratum(0);
+ CPPUNIT_ASSERT(!vertices.isNull());
+ const SieveSubMesh::label_sequence::iterator verticesBegin =
+ vertices->begin();
+ const SieveSubMesh::label_sequence::iterator verticesEnd = vertices->end();
+ SieveSubMesh::renumbering_type& renumbering =
+ faultSieveMesh->getRenumbering();
+ const SieveMesh::renumbering_type::const_iterator renumberingBegin =
+ renumbering.begin();
+ const SieveMesh::renumbering_type::const_iterator renumberingEnd =
+ renumbering.end();
+ for (SieveMesh::label_sequence::iterator v_iter=verticesBegin;
+ v_iter != verticesEnd;
+ ++v_iter, ++iVertex) {
+ SieveMesh::point_type meshVertex = -1;
+ bool found = false;
+
+ for (SieveMesh::renumbering_type::const_iterator r_iter = renumberingBegin;
+ r_iter != renumberingEnd;
+ ++r_iter) {
+ if (r_iter->second == *v_iter) {
+ meshVertex = r_iter->first;
+ found = true;
+ break;
+ } // if
+ } // for
+ CPPUNIT_ASSERT(found);
+ int fiberDim = jacobianSection->getFiberDimension(meshVertex);
+ CPPUNIT_ASSERT_EQUAL(spaceDim, fiberDim);
+ const double* jacobianVertex = jacobianSection->restrictPoint(meshVertex);
+ CPPUNIT_ASSERT(0 != jacobianVertex);
+ for (int iDim=0; iDim < spaceDim; ++iDim)
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, jacobianVertex[iDim],
+ tolerance);
+ } // for
+} // testIntegrateJacobianAssembledLumped
+
+// ----------------------------------------------------------------------
// Test updateStateVars().
void
pylith::faults::TestFaultCohesiveKin::testUpdateStateVars(void)
@@ -622,16 +693,16 @@
const SieveSubMesh::label_sequence::iterator verticesEnd = vertices->end();
SieveSubMesh::renumbering_type& renumbering = faultSieveMesh->getRenumbering();
- // Compute expected cumulative slip using eqsrcs
- topology::Field<topology::SubMesh> cumSlipE(*fault._faultMesh);
- cumSlipE.newSection(topology::FieldBase::VERTICES_FIELD, spaceDim);
- cumSlipE.allocate();
- const ALE::Obj<RealSection> cumSlipESection = cumSlipE.section();
- CPPUNIT_ASSERT(!cumSlipESection.isNull());
+ // Compute expected slip using eqsrcs
+ topology::Field<topology::SubMesh> slipE(*fault._faultMesh);
+ slipE.newSection(topology::FieldBase::VERTICES_FIELD, spaceDim);
+ slipE.allocate();
+ const ALE::Obj<RealSection> slipESection = slipE.section();
+ CPPUNIT_ASSERT(!slipESection.isNull());
- const ALE::Obj<RealSection> cumSlipSection =
- fault._fields->get("cumulative slip").section();
- CPPUNIT_ASSERT(!cumSlipSection.isNull());
+ const ALE::Obj<RealSection> slipSection =
+ fault._fields->get("slip").section();
+ CPPUNIT_ASSERT(!slipSection.isNull());
const FaultCohesiveKin::srcs_type::const_iterator srcsEnd = fault._eqSrcs.end();
for (FaultCohesiveKin::srcs_type::iterator s_iter=fault._eqSrcs.begin();
@@ -640,7 +711,7 @@
EqKinSrc* src = s_iter->second;
assert(0 != src);
if (t >= src->originTime())
- src->slip(&cumSlipE, t);
+ src->slip(&slipE, t);
} // for
int iVertex = 0;
@@ -660,13 +731,13 @@
} // for
CPPUNIT_ASSERT(found);
- // Check _cumSlip
- int fiberDim = cumSlipSection->getFiberDimension(*v_iter);
+ // Check _slip
+ int fiberDim = slipSection->getFiberDimension(*v_iter);
CPPUNIT_ASSERT_EQUAL(spaceDim, fiberDim);
- const double* slipV = cumSlipSection->restrictPoint(*v_iter);
+ const double* slipV = slipSection->restrictPoint(*v_iter);
CPPUNIT_ASSERT(0 != slipV);
- const double* slipE = cumSlipESection->restrictPoint(*v_iter);
+ const double* slipE = slipESection->restrictPoint(*v_iter);
CPPUNIT_ASSERT(0 != slipE);
for (int iDim=0; iDim < spaceDim; ++iDim) {
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKin.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKin.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKin.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -101,6 +101,9 @@
/// Test integrateJacobianAssembled().
void testIntegrateJacobianAssembled(void);
+ /// Test integrateJacobianAssembled() with lumped Jacobian.
+ void testIntegrateJacobianAssembledLumped(void);
+
/// Test updateStateVars().
void testUpdateStateVars(void);
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinHex8.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinHex8.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinHex8.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -40,6 +40,8 @@
CPPUNIT_TEST( testInitialize );
CPPUNIT_TEST( testIntegrateResidual );
CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testIntegrateJacobianAssembled );
+ CPPUNIT_TEST( testIntegrateJacobianAssembledLumped );
CPPUNIT_TEST( testUpdateStateVars );
CPPUNIT_TEST( testCalcTractionsChange );
CPPUNIT_TEST( testSplitField );
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinLine2.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinLine2.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinLine2.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -40,6 +40,8 @@
CPPUNIT_TEST( testInitialize );
CPPUNIT_TEST( testIntegrateResidual );
CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testIntegrateJacobianAssembled );
+ CPPUNIT_TEST( testIntegrateJacobianAssembledLumped );
CPPUNIT_TEST( testUpdateStateVars );
CPPUNIT_TEST( testCalcTractionsChange );
CPPUNIT_TEST( testSplitField );
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinQuad4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinQuad4.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinQuad4.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -40,6 +40,8 @@
CPPUNIT_TEST( testInitialize );
CPPUNIT_TEST( testIntegrateResidual );
CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testIntegrateJacobianAssembled );
+ CPPUNIT_TEST( testIntegrateJacobianAssembledLumped );
CPPUNIT_TEST( testUpdateStateVars );
CPPUNIT_TEST( testCalcTractionsChange );
CPPUNIT_TEST( testSplitField );
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinQuad4e.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinQuad4e.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinQuad4e.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -40,6 +40,8 @@
CPPUNIT_TEST( testInitialize );
CPPUNIT_TEST( testIntegrateResidual );
CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testIntegrateJacobianAssembled );
+ CPPUNIT_TEST( testIntegrateJacobianAssembledLumped );
CPPUNIT_TEST( testUpdateStateVars );
CPPUNIT_TEST( testCalcTractionsChange );
CPPUNIT_TEST( testSplitField );
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinSrcsHex8.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinSrcsHex8.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinSrcsHex8.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -40,6 +40,8 @@
CPPUNIT_TEST( testInitialize );
CPPUNIT_TEST( testIntegrateResidual );
CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testIntegrateJacobianAssembled );
+ CPPUNIT_TEST( testIntegrateJacobianAssembledLumped );
CPPUNIT_TEST( testCalcTractionsChange );
CPPUNIT_TEST_SUITE_END();
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinSrcsLine2.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinSrcsLine2.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinSrcsLine2.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -41,6 +41,8 @@
CPPUNIT_TEST( testInitialize );
CPPUNIT_TEST( testIntegrateResidual );
CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testIntegrateJacobianAssembled );
+ CPPUNIT_TEST( testIntegrateJacobianAssembledLumped );
CPPUNIT_TEST( testCalcTractionsChange );
CPPUNIT_TEST_SUITE_END();
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinSrcsQuad4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinSrcsQuad4.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinSrcsQuad4.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -40,6 +40,8 @@
CPPUNIT_TEST( testInitialize );
CPPUNIT_TEST( testIntegrateResidual );
CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testIntegrateJacobianAssembled );
+ CPPUNIT_TEST( testIntegrateJacobianAssembledLumped );
CPPUNIT_TEST( testCalcTractionsChange );
CPPUNIT_TEST_SUITE_END();
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinSrcsTet4.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinSrcsTet4.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinSrcsTet4.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -40,6 +40,8 @@
CPPUNIT_TEST( testInitialize );
CPPUNIT_TEST( testIntegrateResidual );
CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testIntegrateJacobianAssembled );
+ CPPUNIT_TEST( testIntegrateJacobianAssembledLumped );
CPPUNIT_TEST( testCalcTractionsChange );
CPPUNIT_TEST_SUITE_END();
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinSrcsTri3.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinSrcsTri3.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinSrcsTri3.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -40,6 +40,8 @@
CPPUNIT_TEST( testInitialize );
CPPUNIT_TEST( testIntegrateResidual );
CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testIntegrateJacobianAssembled );
+ CPPUNIT_TEST( testIntegrateJacobianAssembledLumped );
CPPUNIT_TEST( testCalcTractionsChange );
CPPUNIT_TEST_SUITE_END();
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTet4e.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTet4e.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTet4e.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -40,6 +40,8 @@
CPPUNIT_TEST( testInitialize );
CPPUNIT_TEST( testIntegrateResidual );
CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testIntegrateJacobianAssembled );
+ CPPUNIT_TEST( testIntegrateJacobianAssembledLumped );
CPPUNIT_TEST( testUpdateStateVars );
CPPUNIT_TEST( testCalcTractionsChange );
CPPUNIT_TEST( testSplitField );
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTet4f.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTet4f.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTet4f.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -40,6 +40,8 @@
CPPUNIT_TEST( testInitialize );
CPPUNIT_TEST( testIntegrateResidual );
CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testIntegrateJacobianAssembled );
+ CPPUNIT_TEST( testIntegrateJacobianAssembledLumped );
CPPUNIT_TEST( testUpdateStateVars );
CPPUNIT_TEST( testCalcTractionsChange );
CPPUNIT_TEST( testSplitField );
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTri3.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTri3.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTri3.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -40,6 +40,8 @@
CPPUNIT_TEST( testInitialize );
CPPUNIT_TEST( testIntegrateResidual );
CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testIntegrateJacobianAssembled );
+ CPPUNIT_TEST( testIntegrateJacobianAssembledLumped );
CPPUNIT_TEST( testUpdateStateVars );
CPPUNIT_TEST( testCalcTractionsChange );
CPPUNIT_TEST( testSplitField );
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTri3d.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTri3d.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestFaultCohesiveKinTri3d.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -40,6 +40,8 @@
CPPUNIT_TEST( testInitialize );
CPPUNIT_TEST( testIntegrateResidual );
CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testIntegrateJacobianAssembled );
+ CPPUNIT_TEST( testIntegrateJacobianAssembledLumped );
CPPUNIT_TEST( testUpdateStateVars );
CPPUNIT_TEST( testCalcTractionsChange );
CPPUNIT_TEST( testSplitField );
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/TestLiuCosSlipFn.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestLiuCosSlipFn.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestLiuCosSlipFn.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -407,9 +407,8 @@
*mesh, sieveMesh->getIntSection(faultLabel));
CohesiveTopology::create(mesh, *faultMesh, faultBoundary,
sieveMesh->getIntSection(faultLabel),
- faultId,
- firstFaultVertex, firstLagrangeVertex, firstFaultCell,
- useLagrangeConstraints);
+ faultId, firstFaultVertex, firstLagrangeVertex,
+ firstFaultCell, useLagrangeConstraints);
// Need to copy coordinates from mesh to fault mesh since we are not
// using create() instead of createParallel().
const ALE::Obj<SieveSubMesh>& faultSieveMesh = faultMesh->sieveMesh();
@@ -481,9 +480,8 @@
mesh, sieveMesh->getIntSection(data.faultLabel));
CohesiveTopology::create(&mesh, faultMesh, faultBoundary,
sieveMesh->getIntSection(data.faultLabel),
- data.faultId,
- firstFaultVertex, firstLagrangeVertex, firstFaultCell,
- useLagrangeConstraints);
+ data.faultId, firstFaultVertex, firstLagrangeVertex,
+ firstFaultCell, useLagrangeConstraints);
// Need to copy coordinates from mesh to fault mesh since we are not
// using create() instead of createParallel().
const ALE::Obj<SieveSubMesh>& faultSieveMesh = faultMesh.sieveMesh();
Copied: short/3D/PyLith/trunk/unittests/libtests/faults/TestTimeHistorySlipFn.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/faults/TestTimeHistorySlipFn.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestTimeHistorySlipFn.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestTimeHistorySlipFn.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,498 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestTimeHistorySlipFn.hh" // Implementation of class methods
+
+#include "pylith/faults/TimeHistorySlipFn.hh" // USES TimeHistorySlipFn
+
+#include "pylith/faults/CohesiveTopology.hh" // USES CohesiveTopology
+#include "pylith/topology/Mesh.hh" // USES Mesh
+#include "pylith/topology/SubMesh.hh" // USES SubMesh
+#include "pylith/topology/Field.hh" // USES Field
+#include "pylith/topology/Fields.hh" // USES Fields
+#include "pylith/meshio/MeshIOAscii.hh" // USES MeshIOAscii
+
+#include "spatialdata/geocoords/CSCart.hh" // USES CSCart
+#include "spatialdata/spatialdb/SimpleDB.hh" // USES SimpleDB
+#include "spatialdata/spatialdb/SimpleIOAscii.hh" // USES SimpleIOAscii
+#include "spatialdata/spatialdb/TimeHistory.hh" // USES TimeHistory
+#include "spatialdata/units/Nondimensional.hh" // USES Nondimensional
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::faults::TestTimeHistorySlipFn );
+
+// ----------------------------------------------------------------------
+typedef pylith::topology::Mesh::SieveMesh SieveMesh;
+typedef pylith::topology::Mesh::SieveSubMesh SieveSubMesh;
+typedef pylith::topology::Mesh::RealSection RealSection;
+
+// ----------------------------------------------------------------------
+namespace pylith {
+ namespace faults {
+ namespace _TestTimeHistorySlipFn {
+ struct DataStruct {
+ const char* meshFilename;
+ const char* faultLabel;
+ const int faultId;
+ const char* finalSlipFilename;
+ const char* slipTimeFilename;
+ const char* timeHistoryFilename;
+ const int* constraintPts;
+ const double* amplitudeE;
+ const double* slipTimeE;
+ const int numConstraintPts;
+ }; // DataStruct
+ } // _TestTimeHistorySlipFn
+ } // faults
+} // pylith
+
+// ----------------------------------------------------------------------
+// Test constructor.
+void
+pylith::faults::TestTimeHistorySlipFn::testConstructor(void)
+{ // testConstructor
+ TimeHistorySlipFn slipfn;
+} // testConstructor
+
+// ----------------------------------------------------------------------
+// Test dbAmplitude().
+void
+pylith::faults::TestTimeHistorySlipFn::testDbAmplitude(void)
+{ // testDbAmplitude
+ const char* label = "database ABC";
+ TimeHistorySlipFn slipfn;
+
+ spatialdata::spatialdb::SimpleDB db(label);
+ slipfn.dbAmplitude(&db);
+
+ CPPUNIT_ASSERT(0 != slipfn._dbAmplitude);
+ CPPUNIT_ASSERT_EQUAL(std::string(label),
+ std::string(slipfn._dbAmplitude->label()));
+ CPPUNIT_ASSERT(0 == slipfn._dbSlipTime);
+ CPPUNIT_ASSERT(0 == slipfn._dbTimeHistory);
+} // testDbAmplitude
+
+// ----------------------------------------------------------------------
+// Test dbSlipTime().
+void
+pylith::faults::TestTimeHistorySlipFn::testDbSlipTime(void)
+{ // testDbSlipTime
+ const char* label = "database ABCD";
+ TimeHistorySlipFn slipfn;
+
+ spatialdata::spatialdb::SimpleDB db(label);
+ slipfn.dbSlipTime(&db);
+
+ CPPUNIT_ASSERT(0 != slipfn._dbSlipTime);
+ CPPUNIT_ASSERT_EQUAL(std::string(label),
+ std::string(slipfn._dbSlipTime->label()));
+ CPPUNIT_ASSERT(0 == slipfn._dbAmplitude);
+ CPPUNIT_ASSERT(0 == slipfn._dbTimeHistory);
+} // testDbSlipTime
+
+// ----------------------------------------------------------------------
+// Test dbTimeHistory().
+void
+pylith::faults::TestTimeHistorySlipFn::testDbTimeHistory(void)
+{ // testDbTimeHistory
+ const char* label = "database ABCDE";
+ TimeHistorySlipFn slipfn;
+
+ spatialdata::spatialdb::TimeHistory db(label);
+ slipfn.dbTimeHistory(&db);
+
+ CPPUNIT_ASSERT(0 != slipfn._dbTimeHistory);
+ CPPUNIT_ASSERT_EQUAL(std::string(label),
+ std::string(slipfn._dbTimeHistory->label()));
+ CPPUNIT_ASSERT(0 == slipfn._dbAmplitude);
+ CPPUNIT_ASSERT(0 == slipfn._dbSlipTime);
+} // testDbTimeHistory
+
+// ----------------------------------------------------------------------
+// Test initialize() in 1-D.
+void
+pylith::faults::TestTimeHistorySlipFn::testInitialize1D(void)
+{ // testInitialize1D
+ const char* meshFilename = "data/line2.mesh";
+ const char* faultLabel = "fault";
+ const int faultId = 2;
+ const char* finalSlipFilename = "data/line2_finalslip.spatialdb";
+ const char* slipTimeFilename = "data/line2_sliptime.spatialdb";
+ const char* timeHistoryFilename = "data/slipfn.timedb";
+ const int constraintPts[] = { 3 };
+ const double amplitudeE[] = { 2.3 };
+ const double slipTimeE[] = { 1.2 };
+ const int numConstraintPts = 1;
+
+ _TestTimeHistorySlipFn::DataStruct data = {meshFilename,
+ faultLabel,
+ faultId,
+ finalSlipFilename,
+ slipTimeFilename,
+ timeHistoryFilename,
+ constraintPts,
+ amplitudeE,
+ slipTimeE,
+ numConstraintPts};
+ _testInitialize(data);
+} // testInitialize1D
+
+// ----------------------------------------------------------------------
+// Test initialize() in 2-D.
+void
+pylith::faults::TestTimeHistorySlipFn::testInitialize2D(void)
+{ // testInitialize2D
+ const char* meshFilename = "data/tri3.mesh";
+ const char* faultLabel = "fault";
+ const int faultId = 2;
+ const char* finalSlipFilename = "data/tri3_finalslip.spatialdb";
+ const char* slipTimeFilename = "data/tri3_sliptime.spatialdb";
+ const char* timeHistoryFilename = "data/slipfn.timedb";
+ const int constraintPts[] = { 3, 4 };
+ const double amplitudeE[] = { 2.3, 0.1,
+ 2.4, 0.2};
+ const double slipTimeE[] = { 1.2, 1.3 };
+ const int numConstraintPts = 2;
+
+ _TestTimeHistorySlipFn::DataStruct data = {meshFilename,
+ faultLabel,
+ faultId,
+ finalSlipFilename,
+ slipTimeFilename,
+ timeHistoryFilename,
+ constraintPts,
+ amplitudeE,
+ slipTimeE,
+ numConstraintPts};
+ _testInitialize(data);
+} // testInitialize2D
+
+// ----------------------------------------------------------------------
+// Test initialize() in 3-D.
+void
+pylith::faults::TestTimeHistorySlipFn::testInitialize3D(void)
+{ // testInitialize3D
+ const char* meshFilename = "data/tet4.mesh";
+ const char* faultLabel = "fault";
+ const int faultId = 2;
+ const char* finalSlipFilename = "data/tet4_finalslip.spatialdb";
+ const char* slipTimeFilename = "data/tet4_sliptime.spatialdb";
+ const char* timeHistoryFilename = "data/slipfn.timedb";
+ const int constraintPts[] = { 3, 4, 5 };
+ const double amplitudeE[] = { 2.3, -0.7, 0.1,
+ 2.4, -0.8, 0.2,
+ 2.5, -0.9, 0.3 };
+ const double slipTimeE[] = { 1.2, 1.3, 1.4 };
+ const int numConstraintPts = 3;
+
+ _TestTimeHistorySlipFn::DataStruct data = {meshFilename,
+ faultLabel,
+ faultId,
+ finalSlipFilename,
+ slipTimeFilename,
+ timeHistoryFilename,
+ constraintPts,
+ amplitudeE,
+ slipTimeE,
+ numConstraintPts};
+ _testInitialize(data);
+} // testInitialize3D
+
+// ----------------------------------------------------------------------
+// Test slip().
+void
+pylith::faults::TestTimeHistorySlipFn::testSlip(void)
+{ // testSlip
+ const double slipTimeE[] = { 1.2, 1.3 };
+ const double slipE[] = { 0.92, 0.04,
+ 0.84, 0.07 };
+ const double originTime = 5.064;
+
+ topology::Mesh mesh;
+ topology::SubMesh faultMesh;
+ TimeHistorySlipFn slipfn;
+ spatialdata::spatialdb::TimeHistory th;
+ _initialize(&mesh, &faultMesh, &slipfn, &th, originTime);
+
+ const spatialdata::geocoords::CoordSys* cs = faultMesh.coordsys();
+ CPPUNIT_ASSERT(0 != cs);
+
+ const int spaceDim = cs->spaceDim();
+ const ALE::Obj<SieveSubMesh>& faultSieveMesh = faultMesh.sieveMesh();
+ CPPUNIT_ASSERT(!faultSieveMesh.isNull());
+ const ALE::Obj<SieveMesh::label_sequence>& vertices =
+ faultSieveMesh->depthStratum(0);
+ const SieveMesh::label_sequence::iterator verticesEnd = vertices->end();
+ topology::Field<topology::SubMesh> slip(faultMesh);
+ slip.newSection(vertices, spaceDim);
+ slip.allocate();
+
+ const double t = 2.0;
+ slipfn.slip(&slip, originTime+t);
+
+ const double tolerance = 1.0e-06;
+ int iPoint = 0;
+ const ALE::Obj<RealSection>& slipSection = slip.section();
+ CPPUNIT_ASSERT(!slipSection.isNull());
+ for (SieveMesh::label_sequence::iterator v_iter=vertices->begin();
+ v_iter != verticesEnd;
+ ++v_iter, ++iPoint) {
+ const int fiberDim = slipSection->getFiberDimension(*v_iter);
+ CPPUNIT_ASSERT_EQUAL(spaceDim, fiberDim);
+ const double* vals = slipSection->restrictPoint(*v_iter);
+ CPPUNIT_ASSERT(0 != vals);
+
+ for (int iDim=0; iDim < fiberDim; ++iDim)
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(slipE[iPoint*spaceDim+iDim],
+ vals[iDim], tolerance);
+ } // for
+} // testSlip
+
+// ----------------------------------------------------------------------
+// Test slipIncr().
+void
+pylith::faults::TestTimeHistorySlipFn::testSlipIncr(void)
+{ // testSlipIncr
+ const double slipTimeE[] = { 1.2, 1.3 };
+ const double slipE[] = { 0.92, 0.04,
+ 0.984, 0.082};
+ const double originTime = 1.064;
+
+ topology::Mesh mesh;
+ topology::SubMesh faultMesh;
+ TimeHistorySlipFn slipfn;
+ spatialdata::spatialdb::TimeHistory th;
+ _initialize(&mesh, &faultMesh, &slipfn, &th, originTime);
+
+ const spatialdata::geocoords::CoordSys* cs = faultMesh.coordsys();
+ CPPUNIT_ASSERT(0 != cs);
+
+ const int spaceDim = cs->spaceDim();
+ const ALE::Obj<SieveSubMesh>& faultSieveMesh = faultMesh.sieveMesh();
+ CPPUNIT_ASSERT(!faultSieveMesh.isNull());
+ const ALE::Obj<SieveMesh::label_sequence>& vertices =
+ faultSieveMesh->depthStratum(0);
+ const SieveMesh::label_sequence::iterator verticesEnd = vertices->end();
+ topology::Field<topology::SubMesh> slip(faultMesh);
+ slip.newSection(vertices, spaceDim);
+ slip.allocate();
+
+ const double t0 = 3.2;
+ const double t1 = 9.7;
+ slipfn.slipIncr(&slip, originTime+t0, originTime+t1);
+
+ const double tolerance = 1.0e-06;
+ int iPoint = 0;
+ const ALE::Obj<RealSection>& slipSection = slip.section();
+ CPPUNIT_ASSERT(!slipSection.isNull());
+ for (SieveMesh::label_sequence::iterator v_iter=vertices->begin();
+ v_iter != verticesEnd;
+ ++v_iter, ++iPoint) {
+
+ const int fiberDim = slipSection->getFiberDimension(*v_iter);
+ CPPUNIT_ASSERT_EQUAL(spaceDim, fiberDim);
+ const double* vals = slipSection->restrictPoint(*v_iter);
+ CPPUNIT_ASSERT(0 != vals);
+
+ for (int iDim=0; iDim < fiberDim; ++iDim)
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(slipE[iPoint*spaceDim+iDim],
+ vals[iDim], tolerance);
+ } // for
+} // testSlipIncr
+
+// ----------------------------------------------------------------------
+// Initialize TimeHistorySlipFn.
+void
+pylith::faults::TestTimeHistorySlipFn::_initialize(topology::Mesh* mesh,
+ topology::SubMesh* faultMesh,
+ TimeHistorySlipFn* slipfn,
+ spatialdata::spatialdb::TimeHistory* th,
+ const double originTime)
+{ // _initialize
+ assert(0 != slipfn);
+
+ const char* meshFilename = "data/tri3.mesh";
+ const char* faultLabel = "fault";
+ const int faultId = 2;
+ const char* finalSlipFilename = "data/tri3_finalslip.spatialdb";
+ const char* slipTimeFilename = "data/tri3_sliptime.spatialdb";
+ const char* timeHistoryFilename = "data/slipfn.timedb";
+
+ meshio::MeshIOAscii meshIO;
+ meshIO.filename(meshFilename);
+ meshIO.debug(false);
+ meshIO.interpolate(false);
+ meshIO.read(mesh);
+
+ // Set up coordinates
+ spatialdata::geocoords::CSCart cs;
+ cs.setSpaceDim(mesh->dimension());
+ cs.initialize();
+ mesh->coordsys(&cs);
+
+ // Create fault mesh
+ int firstFaultVertex = 0;
+ int firstLagrangeVertex = mesh->sieveMesh()->getIntSection(faultLabel)->size();
+ int firstFaultCell = mesh->sieveMesh()->getIntSection(faultLabel)->size();
+ const bool useLagrangeConstraints = true;
+ if (useLagrangeConstraints) {
+ firstFaultCell += mesh->sieveMesh()->getIntSection(faultLabel)->size();
+ }
+ ALE::Obj<ALE::Mesh> faultBoundary = 0;
+ const ALE::Obj<SieveMesh>& sieveMesh = mesh->sieveMesh();
+ CPPUNIT_ASSERT(!sieveMesh.isNull());
+ CohesiveTopology::createFault(faultMesh, faultBoundary,
+ *mesh, sieveMesh->getIntSection(faultLabel));
+ CohesiveTopology::create(mesh, *faultMesh, faultBoundary,
+ sieveMesh->getIntSection(faultLabel),
+ faultId, firstFaultVertex, firstLagrangeVertex,
+ firstFaultCell, useLagrangeConstraints);
+ // Need to copy coordinates from mesh to fault mesh since we are not
+ // using create() instead of createParallel().
+ const ALE::Obj<SieveSubMesh>& faultSieveMesh = faultMesh->sieveMesh();
+ CPPUNIT_ASSERT(!faultSieveMesh.isNull());
+ faultSieveMesh->setRealSection("coordinates",
+ sieveMesh->getRealSection("coordinates"));
+
+ // Setup databases
+ spatialdata::spatialdb::SimpleDB dbAmplitude("slip amplitude");
+ spatialdata::spatialdb::SimpleIOAscii ioFinalSlip;
+ ioFinalSlip.filename(finalSlipFilename);
+ dbAmplitude.ioHandler(&ioFinalSlip);
+
+ spatialdata::spatialdb::SimpleDB dbSlipTime("slip time");
+ spatialdata::spatialdb::SimpleIOAscii ioSlipTime;
+ ioSlipTime.filename(slipTimeFilename);
+ dbSlipTime.ioHandler(&ioSlipTime);
+
+ th->label("time history");
+ th->filename(timeHistoryFilename);
+
+ spatialdata::units::Nondimensional normalizer;
+
+ // setup TimeHistorySlipFn
+ slipfn->dbAmplitude(&dbAmplitude);
+ slipfn->dbSlipTime(&dbSlipTime);
+ slipfn->dbTimeHistory(th);
+
+ slipfn->initialize(*faultMesh, normalizer, originTime);
+} // _initialize
+
+// ----------------------------------------------------------------------
+// Test initialize().
+void
+pylith::faults::TestTimeHistorySlipFn::_testInitialize(const _TestTimeHistorySlipFn::DataStruct& data)
+{ // _testInitialize
+ typedef std::set<Mesh::point_type>::const_iterator vert_iterator;
+
+ // Setup mesh
+ topology::Mesh mesh;
+ meshio::MeshIOAscii meshIO;
+ meshIO.filename(data.meshFilename);
+ meshIO.debug(false);
+ meshIO.interpolate(false);
+ meshIO.read(&mesh);
+
+ // Set up coordinates
+ spatialdata::geocoords::CSCart cs;
+ const int spaceDim = mesh.dimension();
+ cs.setSpaceDim(spaceDim);
+ cs.initialize();
+ mesh.coordsys(&cs);
+
+ // Create fault mesh
+ topology::SubMesh faultMesh;
+ int firstFaultVertex = 0;
+ int firstLagrangeVertex = mesh.sieveMesh()->getIntSection(data.faultLabel)->size();
+ int firstFaultCell = mesh.sieveMesh()->getIntSection(data.faultLabel)->size();
+ const bool useLagrangeConstraints = true;
+ if (useLagrangeConstraints) {
+ firstFaultCell += mesh.sieveMesh()->getIntSection(data.faultLabel)->size();
+ }
+ ALE::Obj<ALE::Mesh> faultBoundary = 0;
+ const ALE::Obj<SieveMesh>& sieveMesh = mesh.sieveMesh();
+ CPPUNIT_ASSERT(!sieveMesh.isNull());
+ CohesiveTopology::createFault(&faultMesh, faultBoundary,
+ mesh, sieveMesh->getIntSection(data.faultLabel));
+ CohesiveTopology::create(&mesh, faultMesh, faultBoundary,
+ sieveMesh->getIntSection(data.faultLabel),
+ data.faultId, firstFaultVertex, firstLagrangeVertex,
+ firstFaultCell, useLagrangeConstraints);
+ // Need to copy coordinates from mesh to fault mesh since we are not
+ // using create() instead of createParallel().
+ const ALE::Obj<SieveSubMesh>& faultSieveMesh = faultMesh.sieveMesh();
+ CPPUNIT_ASSERT(!faultSieveMesh.isNull());
+ faultSieveMesh->setRealSection("coordinates",
+ sieveMesh->getRealSection("coordinates"));
+
+ // Setup databases
+ spatialdata::spatialdb::SimpleDB dbAmplitude("slip amplitude");
+ spatialdata::spatialdb::SimpleIOAscii ioFinalSlip;
+ ioFinalSlip.filename(data.finalSlipFilename);
+ dbAmplitude.ioHandler(&ioFinalSlip);
+
+ spatialdata::spatialdb::SimpleDB dbSlipTime("slip time");
+ spatialdata::spatialdb::SimpleIOAscii ioSlipTime;
+ ioSlipTime.filename(data.slipTimeFilename);
+ dbSlipTime.ioHandler(&ioSlipTime);
+
+ spatialdata::spatialdb::TimeHistory dbTimeHistory("time history");
+ dbTimeHistory.filename(data.timeHistoryFilename);
+
+ // setup TimeHistorySlipFn
+ TimeHistorySlipFn slipfn;
+ slipfn.dbAmplitude(&dbAmplitude);
+ slipfn.dbSlipTime(&dbSlipTime);
+ slipfn.dbTimeHistory(&dbTimeHistory);
+
+ spatialdata::units::Nondimensional normalizer;
+ const double originTime = 5.353;
+
+ slipfn.initialize(faultMesh, normalizer, originTime);
+
+ const ALE::Obj<SieveMesh::label_sequence>& vertices =
+ faultSieveMesh->depthStratum(0);
+ const SieveMesh::label_sequence::iterator verticesEnd = vertices->end();
+
+ CPPUNIT_ASSERT(0 != slipfn._parameters);
+ const ALE::Obj<RealSection>& finalSlipSection =
+ slipfn._parameters->get("slip amplitude").section();
+ CPPUNIT_ASSERT(!finalSlipSection.isNull());
+ const ALE::Obj<RealSection>& slipTimeSection =
+ slipfn._parameters->get("slip time").section();
+ CPPUNIT_ASSERT(!slipTimeSection.isNull());
+
+ const double tolerance = 1.0e-06;
+ int iPoint = 0;
+ for (SieveMesh::label_sequence::iterator v_iter=vertices->begin();
+ v_iter != verticesEnd;
+ ++v_iter, ++iPoint) {
+ CPPUNIT_ASSERT_EQUAL(spaceDim, finalSlipSection->getFiberDimension(*v_iter));
+ const double* amplitudeVertex = finalSlipSection->restrictPoint(*v_iter);
+ CPPUNIT_ASSERT(0 != amplitudeVertex);
+ for (int iDim=0; iDim < spaceDim; ++iDim)
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(data.amplitudeE[iPoint*spaceDim+iDim],
+ amplitudeVertex[iDim],
+ tolerance);
+
+ CPPUNIT_ASSERT_EQUAL(1, slipTimeSection->getFiberDimension(*v_iter));
+ const double* slipTimeVertex = slipTimeSection->restrictPoint(*v_iter);
+ CPPUNIT_ASSERT(0 != slipTimeVertex);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(data.slipTimeE[iPoint]+originTime,
+ slipTimeVertex[0], tolerance);
+ } // for
+} // _testInitialize
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/faults/TestTimeHistorySlipFn.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/faults/TestTimeHistorySlipFn.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/TestTimeHistorySlipFn.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/TestTimeHistorySlipFn.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,131 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/faults/TestTimeHistorySlipFn.hh
+ *
+ * @brief C++ TestTimeHistorySlipFn object
+ *
+ * C++ unit testing for TimeHistorySlipFn.
+ */
+
+#if !defined(pylith_faults_testtimehistoryslipfn_hh)
+#define pylith_faults_testtimehistoryslipfn_hh
+
+#include "pylith/faults/faultsfwd.hh" // USES TimeHistorySlipFn
+#include "pylith/topology/topologyfwd.hh" // USES Mesh, SubMesh
+#include "spatialdata/spatialdb/spatialdbfwd.hh" // USES TimeHistory
+
+#include <cppunit/extensions/HelperMacros.h>
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace faults {
+ class TestTimeHistorySlipFn;
+
+ namespace _TestTimeHistorySlipFn {
+ struct DataStruct;
+ } // _TimeHistorySlipTimeFn
+ } // faults
+} // pylith
+
+/// C++ unit testing for TimeHistorySlipFn
+class pylith::faults::TestTimeHistorySlipFn : public CppUnit::TestFixture
+{ // class TestTimeHistorySlipFn
+
+ // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+ CPPUNIT_TEST_SUITE( TestTimeHistorySlipFn );
+
+ CPPUNIT_TEST( testConstructor );
+ CPPUNIT_TEST( testDbAmplitude );
+ CPPUNIT_TEST( testDbSlipTime );
+ CPPUNIT_TEST( testDbTimeHistory );
+ CPPUNIT_TEST( testInitialize1D );
+ CPPUNIT_TEST( testInitialize2D );
+ CPPUNIT_TEST( testInitialize3D );
+ CPPUNIT_TEST( testSlip );
+ CPPUNIT_TEST( testSlipIncr );
+
+ CPPUNIT_TEST_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Test constructor.
+ void testConstructor(void);
+
+ /// Test dbAmplitude().
+ void testDbAmplitude(void);
+
+ /// Test dbSlipTime().
+ void testDbSlipTime(void);
+
+ /// Test dbTimeHistory().
+ void testDbTimeHistory(void);
+
+ /// Test initialize() in 1-D.
+ void testInitialize1D(void);
+
+ /// Test initialize() in 2-D.
+ void testInitialize2D(void);
+
+ /// Test initialize() in 3-D.
+ void testInitialize3D(void);
+
+ /// Test slip().
+ void testSlip(void);
+
+ /// Test slipIncr().
+ void testSlipIncr(void);
+
+ // PRIVATE METHODS ////////////////////////////////////////////////////
+private :
+
+ /** Initialize TimeHistorySlipFn.
+ *
+ * @param mesh Finite-element mesh of domain.
+ * @param faultMesh Finite-element mesh of fault.
+ * @param slipfn Step slip function.
+ * @param th Time history database.
+ * @param originTime Origin time for earthquake rupture.
+ */
+ static
+ void _initialize(topology::Mesh* mesh,
+ topology::SubMesh* faultMesh,
+ TimeHistorySlipFn* slipfn,
+ spatialdata::spatialdb::TimeHistory* th,
+ const double originTime);
+
+ /** Test intialize().
+ *
+ * @param data Data for initialization and testing of TimeHistorySlipFn.
+ */
+ static
+ void _testInitialize(const _TestTimeHistorySlipFn::DataStruct& data);
+
+ /** Slip time function.
+ *
+ * @param t Time relative to when slip begins.
+ * @param finalSlip Final slip.
+ * @param riseTime Rise time (t95).
+ */
+ static
+ double _slipFn(const double t,
+ const double finalSlip,
+ const double riseTime);
+
+}; // class TestTimeHistorySlipFn
+
+#endif // pylith_faults_testtimehistoryslipfn_hh
+
+
+// End of file
Property changes on: short/3D/PyLith/trunk/unittests/libtests/faults/data
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Modified: short/3D/PyLith/trunk/unittests/libtests/faults/data/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/Makefile.am 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/Makefile.am 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,6 +11,7 @@
#
dist_noinst_DATA = \
+ slipfn.timedb \
bulkprops_1d.spatialdb \
bulkprops_2d.spatialdb \
bulkprops_3d.spatialdb \
Copied: short/3D/PyLith/trunk/unittests/libtests/faults/data/slipfn.timedb (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/faults/data/slipfn.timedb)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/faults/data/slipfn.timedb (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/faults/data/slipfn.timedb 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,10 @@
+#TIME HISTORY ascii
+TimeHistory {
+ num-points = 5
+ time-units = second
+}
+ 0.0 0.0
+ 1.0 0.5
+ 4.0 0.8
+ 8.0 1.0
+10.0 1.0
Property changes on: short/3D/PyLith/trunk/unittests/libtests/feassemble
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/Makefile.am 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/Makefile.am 2009-12-10 01:52:12 UTC (rev 16094)
@@ -53,6 +53,12 @@
TestElasticityExplicit2DQuadratic.cc \
TestElasticityExplicit3DLinear.cc \
TestElasticityExplicit3DQuadratic.cc \
+ TestElasticityExplicitGrav1DLinear.cc \
+ TestElasticityExplicitGrav1DQuadratic.cc \
+ TestElasticityExplicitGrav2DLinear.cc \
+ TestElasticityExplicitGrav2DQuadratic.cc \
+ TestElasticityExplicitGrav3DLinear.cc \
+ TestElasticityExplicitGrav3DQuadratic.cc \
TestElasticityImplicit.cc \
TestElasticityImplicit1DLinear.cc \
TestElasticityImplicit1DQuadratic.cc \
@@ -66,6 +72,33 @@
TestElasticityImplicitGrav2DQuadratic.cc \
TestElasticityImplicitGrav3DLinear.cc \
TestElasticityImplicitGrav3DQuadratic.cc \
+ TestIntegratorElasticityLgDeform.cc \
+ TestElasticityExplicitLgDeform.cc \
+ TestElasticityExplicitLgDeform1DLinear.cc \
+ TestElasticityExplicitLgDeform1DQuadratic.cc \
+ TestElasticityExplicitLgDeform2DLinear.cc \
+ TestElasticityExplicitLgDeform2DQuadratic.cc \
+ TestElasticityExplicitLgDeform3DLinear.cc \
+ TestElasticityExplicitLgDeform3DQuadratic.cc \
+ TestElasticityExplicitLgDeformGrav1DLinear.cc \
+ TestElasticityExplicitLgDeformGrav1DQuadratic.cc \
+ TestElasticityExplicitLgDeformGrav2DLinear.cc \
+ TestElasticityExplicitLgDeformGrav2DQuadratic.cc \
+ TestElasticityExplicitLgDeformGrav3DLinear.cc \
+ TestElasticityExplicitLgDeformGrav3DQuadratic.cc \
+ TestElasticityImplicitLgDeform.cc \
+ TestElasticityImplicitLgDeform1DLinear.cc \
+ TestElasticityImplicitLgDeform1DQuadratic.cc \
+ TestElasticityImplicitLgDeform2DLinear.cc \
+ TestElasticityImplicitLgDeform2DQuadratic.cc \
+ TestElasticityImplicitLgDeform3DLinear.cc \
+ TestElasticityImplicitLgDeform3DQuadratic.cc \
+ TestElasticityImplicitLgDeformGrav1DLinear.cc \
+ TestElasticityImplicitLgDeformGrav1DQuadratic.cc \
+ TestElasticityImplicitLgDeformGrav2DLinear.cc \
+ TestElasticityImplicitLgDeformGrav2DQuadratic.cc \
+ TestElasticityImplicitLgDeformGrav3DLinear.cc \
+ TestElasticityImplicitLgDeformGrav3DQuadratic.cc \
test_feassemble.cc
@@ -79,6 +112,12 @@
TestElasticityExplicit2DQuadratic.hh \
TestElasticityExplicit3DLinear.hh \
TestElasticityExplicit3DQuadratic.hh \
+ TestElasticityExplicitGrav1DLinear.hh \
+ TestElasticityExplicitGrav1DQuadratic.hh \
+ TestElasticityExplicitGrav2DLinear.hh \
+ TestElasticityExplicitGrav2DQuadratic.hh \
+ TestElasticityExplicitGrav3DLinear.hh \
+ TestElasticityExplicitGrav3DQuadratic.hh \
TestElasticityImplicit.hh \
TestElasticityImplicit1DLinear.hh \
TestElasticityImplicit1DQuadratic.hh \
@@ -92,6 +131,33 @@
TestElasticityImplicitGrav2DQuadratic.hh \
TestElasticityImplicitGrav3DLinear.hh \
TestElasticityImplicitGrav3DQuadratic.hh \
+ TestIntegratorElasticityLgDeform.hh \
+ TestElasticityExplicitLgDeform.hh \
+ TestElasticityExplicitLgDeform1DLinear.hh \
+ TestElasticityExplicitLgDeform1DQuadratic.hh \
+ TestElasticityExplicitLgDeform2DLinear.hh \
+ TestElasticityExplicitLgDeform2DQuadratic.hh \
+ TestElasticityExplicitLgDeform3DLinear.hh \
+ TestElasticityExplicitLgDeform3DQuadratic.hh \
+ TestElasticityExplicitLgDeformGrav1DLinear.hh \
+ TestElasticityExplicitLgDeformGrav1DQuadratic.hh \
+ TestElasticityExplicitLgDeformGrav2DLinear.hh \
+ TestElasticityExplicitLgDeformGrav2DQuadratic.hh \
+ TestElasticityExplicitLgDeformGrav3DLinear.hh \
+ TestElasticityExplicitLgDeformGrav3DQuadratic.hh \
+ TestElasticityImplicitLgDeform.hh \
+ TestElasticityImplicitLgDeform1DLinear.hh \
+ TestElasticityImplicitLgDeform1DQuadratic.hh \
+ TestElasticityImplicitLgDeform2DLinear.hh \
+ TestElasticityImplicitLgDeform2DQuadratic.hh \
+ TestElasticityImplicitLgDeform3DLinear.hh \
+ TestElasticityImplicitLgDeform3DQuadratic.hh \
+ TestElasticityImplicitLgDeformGrav1DLinear.hh \
+ TestElasticityImplicitLgDeformGrav1DQuadratic.hh \
+ TestElasticityImplicitLgDeformGrav2DLinear.hh \
+ TestElasticityImplicitLgDeformGrav2DQuadratic.hh \
+ TestElasticityImplicitLgDeformGrav3DLinear.hh \
+ TestElasticityImplicitLgDeformGrav3DQuadratic.hh \
TestGeometryPoint1D.hh \
TestGeometryPoint2D.hh \
TestGeometryPoint3D.hh \
@@ -139,6 +205,12 @@
data/ElasticityExplicitData2DQuadratic.cc \
data/ElasticityExplicitData3DLinear.cc \
data/ElasticityExplicitData3DQuadratic.cc \
+ data/ElasticityExplicitGravData1DLinear.cc \
+ data/ElasticityExplicitGravData1DQuadratic.cc \
+ data/ElasticityExplicitGravData2DLinear.cc \
+ data/ElasticityExplicitGravData2DQuadratic.cc \
+ data/ElasticityExplicitGravData3DLinear.cc \
+ data/ElasticityExplicitGravData3DQuadratic.cc \
data/ElasticityImplicitData1DLinear.cc \
data/ElasticityImplicitData1DQuadratic.cc \
data/ElasticityImplicitData2DLinear.cc \
@@ -151,6 +223,30 @@
data/ElasticityImplicitGravData2DQuadratic.cc \
data/ElasticityImplicitGravData3DLinear.cc \
data/ElasticityImplicitGravData3DQuadratic.cc \
+ data/ElasticityExplicitLgDeformData1DLinear.cc \
+ data/ElasticityExplicitLgDeformData1DQuadratic.cc \
+ data/ElasticityExplicitLgDeformData2DLinear.cc \
+ data/ElasticityExplicitLgDeformData2DQuadratic.cc \
+ data/ElasticityExplicitLgDeformData3DLinear.cc \
+ data/ElasticityExplicitLgDeformData3DQuadratic.cc \
+ data/ElasticityExplicitLgDeformGravData1DLinear.cc \
+ data/ElasticityExplicitLgDeformGravData1DQuadratic.cc \
+ data/ElasticityExplicitLgDeformGravData2DLinear.cc \
+ data/ElasticityExplicitLgDeformGravData2DQuadratic.cc \
+ data/ElasticityExplicitLgDeformGravData3DLinear.cc \
+ data/ElasticityExplicitLgDeformGravData3DQuadratic.cc \
+ data/ElasticityImplicitLgDeformData1DLinear.cc \
+ data/ElasticityImplicitLgDeformData1DQuadratic.cc \
+ data/ElasticityImplicitLgDeformData2DLinear.cc \
+ data/ElasticityImplicitLgDeformData2DQuadratic.cc \
+ data/ElasticityImplicitLgDeformData3DLinear.cc \
+ data/ElasticityImplicitLgDeformData3DQuadratic.cc \
+ data/ElasticityImplicitLgDeformGravData1DLinear.cc \
+ data/ElasticityImplicitLgDeformGravData1DQuadratic.cc \
+ data/ElasticityImplicitLgDeformGravData2DLinear.cc \
+ data/ElasticityImplicitLgDeformGravData2DQuadratic.cc \
+ data/ElasticityImplicitLgDeformGravData3DLinear.cc \
+ data/ElasticityImplicitLgDeformGravData3DQuadratic.cc \
data/QuadratureData.cc \
data/QuadratureData1DLinear.cc \
data/QuadratureData1DQuadratic.cc \
@@ -189,6 +285,12 @@
data/ElasticityExplicitData2DQuadratic.hh \
data/ElasticityExplicitData3DLinear.hh \
data/ElasticityExplicitData3DQuadratic.hh \
+ data/ElasticityExplicitGravData1DLinear.hh \
+ data/ElasticityExplicitGravData1DQuadratic.hh \
+ data/ElasticityExplicitGravData2DLinear.hh \
+ data/ElasticityExplicitGravData2DQuadratic.hh \
+ data/ElasticityExplicitGravData3DLinear.hh \
+ data/ElasticityExplicitGravData3DQuadratic.hh \
data/ElasticityImplicitData1DLinear.hh \
data/ElasticityImplicitData1DQuadratic.hh \
data/ElasticityImplicitData2DLinear.hh \
@@ -201,6 +303,30 @@
data/ElasticityImplicitGravData2DQuadratic.hh \
data/ElasticityImplicitGravData3DLinear.hh \
data/ElasticityImplicitGravData3DQuadratic.hh \
+ data/ElasticityExplicitLgDeformData1DLinear.hh \
+ data/ElasticityExplicitLgDeformData1DQuadratic.hh \
+ data/ElasticityExplicitLgDeformData2DLinear.hh \
+ data/ElasticityExplicitLgDeformData2DQuadratic.hh \
+ data/ElasticityExplicitLgDeformData3DLinear.hh \
+ data/ElasticityExplicitLgDeformData3DQuadratic.hh \
+ data/ElasticityExplicitLgDeformGravData1DLinear.hh \
+ data/ElasticityExplicitLgDeformGravData1DQuadratic.hh \
+ data/ElasticityExplicitLgDeformGravData2DLinear.hh \
+ data/ElasticityExplicitLgDeformGravData2DQuadratic.hh \
+ data/ElasticityExplicitLgDeformGravData3DLinear.hh \
+ data/ElasticityExplicitLgDeformGravData3DQuadratic.hh \
+ data/ElasticityImplicitLgDeformData1DLinear.hh \
+ data/ElasticityImplicitLgDeformData1DQuadratic.hh \
+ data/ElasticityImplicitLgDeformData2DLinear.hh \
+ data/ElasticityImplicitLgDeformData2DQuadratic.hh \
+ data/ElasticityImplicitLgDeformData3DLinear.hh \
+ data/ElasticityImplicitLgDeformData3DQuadratic.hh \
+ data/ElasticityImplicitLgDeformGravData1DLinear.hh \
+ data/ElasticityImplicitLgDeformGravData1DQuadratic.hh \
+ data/ElasticityImplicitLgDeformGravData2DLinear.hh \
+ data/ElasticityImplicitLgDeformGravData2DQuadratic.hh \
+ data/ElasticityImplicitLgDeformGravData3DLinear.hh \
+ data/ElasticityImplicitLgDeformGravData3DQuadratic.hh \
data/QuadratureData.hh \
data/QuadratureData1DLinear.hh \
data/QuadratureData1DQuadratic.hh \
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -181,6 +181,13 @@
const int size = residualSection->sizeWithBC();
CPPUNIT_ASSERT_EQUAL(sizeE, size);
+#if 0
+ residual.view("RESIDUAL");
+ std::cout << "EXPECTED RESIDUAL" << std::endl;
+ for (int i=0; i < size; ++i)
+ std::cout << " " << valsE[i] << std::endl;
+#endif
+
const double tolerance = 1.0e-06;
for (int i=0; i < size; ++i)
if (fabs(valsE[i]) > 1.0)
@@ -248,6 +255,70 @@
} // testIntegrateJacobian
// ----------------------------------------------------------------------
+// Test integrateJacobian().
+void
+pylith::feassemble::TestElasticityExplicit::testIntegrateJacobianLumped(void)
+{ // testIntegrateJacobian
+ CPPUNIT_ASSERT(0 != _data);
+
+ topology::Mesh mesh;
+ ElasticityExplicit integrator;
+ topology::SolutionFields fields(mesh);
+ _initialize(&mesh, &integrator, &fields);
+ integrator._needNewJacobian = true;
+
+ topology::Field<topology::Mesh> jacobian(mesh);
+ jacobian.label("Jacobian");
+ jacobian.vectorFieldType(topology::FieldBase::VECTOR);
+ jacobian.newSection(topology::FieldBase::VERTICES_FIELD, _data->spaceDim);
+ jacobian.allocate();
+
+ const double t = 1.0;
+ integrator.integrateJacobian(jacobian, t, &fields);
+ CPPUNIT_ASSERT_EQUAL(false, integrator.needNewJacobian());
+ jacobian.complete();
+
+ const double* valsMatrixE = _data->valsJacobian;
+ const int sizeE = _data->numVertices * _data->spaceDim;
+ double_array valsE(sizeE);
+ const int spaceDim = _data->spaceDim;
+ const int numBasis = _data->numVertices;
+ for (int iBasis=0; iBasis < numBasis; ++iBasis)
+ for (int iDim=0; iDim < spaceDim; ++iDim) {
+ const int indexRow = (iBasis*spaceDim+iDim)*numBasis*spaceDim;
+ double value = 0.0;
+ for (int jBasis=0; jBasis < numBasis; ++jBasis)
+ value += valsMatrixE[indexRow + jBasis*spaceDim+iDim];
+ valsE[iBasis*spaceDim+iDim] = value;
+ } // for
+
+#if 0 // DEBUGGING
+ // TEMPORARY
+ jacobian.view("JACOBIAN");
+ std::cout << "\n\nJACOBIAN FULL" << std::endl;
+ const int n = numBasis*spaceDim;
+ for (int r=0; r < n; ++r) {
+ for (int c=0; c < n; ++c)
+ std::cout << " " << valsMatrixE[r*n+c];
+ std::cout << "\n";
+ } // for
+#endif // DEBUGGING
+
+ const ALE::Obj<RealSection>& jacobianSection = jacobian.section();
+ CPPUNIT_ASSERT(!jacobianSection.isNull());
+ const double* vals = jacobianSection->restrictSpace();
+ const int size = jacobianSection->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);
+} // testIntegrateJacobianLumped
+
+// ----------------------------------------------------------------------
// Test updateStateVars().
void
pylith::feassemble::TestElasticityExplicit::testUpdateStateVars(void)
@@ -344,9 +415,6 @@
mesh->coordsys(&cs);
mesh->nondimensionalize(normalizer);
- // Setup gravityField
- _gravityField = 0;
-
// Setup material
spatialdata::spatialdb::SimpleIOAscii iohandler;
iohandler.filename(_data->matDBFilename);
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -89,6 +89,9 @@
/// Test integrateJacobian().
void testIntegrateJacobian(void);
+ /// Test integrateJacobianLumped().
+ void testIntegrateJacobianLumped(void);
+
/// Test updateStateVars().
void testUpdateStateVars(void);
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit1DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit1DLinear.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit1DLinear.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -32,6 +32,7 @@
TestElasticityExplicit::setUp();
_data = new ElasticityExplicitData1DLinear();
+ _gravityField = 0;
GeometryLine1D geometry;
CPPUNIT_ASSERT(0 != _quadrature);
_quadrature->refGeometry(&geometry);
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit1DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit1DLinear.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit1DLinear.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -41,6 +41,7 @@
CPPUNIT_TEST( testInitialize );
CPPUNIT_TEST( testIntegrateResidual );
CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testIntegrateJacobianLumped );
CPPUNIT_TEST( testUpdateStateVars );
CPPUNIT_TEST( testStableTimeStep );
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit1DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit1DQuadratic.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit1DQuadratic.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -32,6 +32,7 @@
TestElasticityExplicit::setUp();
_data = new ElasticityExplicitData1DQuadratic();
+ _gravityField = 0;
GeometryLine1D geometry;
CPPUNIT_ASSERT(0 != _quadrature);
_quadrature->refGeometry(&geometry);
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit1DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit1DQuadratic.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit1DQuadratic.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -41,6 +41,7 @@
CPPUNIT_TEST( testInitialize );
CPPUNIT_TEST( testIntegrateResidual );
CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testIntegrateJacobianLumped );
CPPUNIT_TEST( testUpdateStateVars );
CPPUNIT_TEST( testStableTimeStep );
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit2DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit2DLinear.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit2DLinear.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -32,6 +32,7 @@
TestElasticityExplicit::setUp();
_data = new ElasticityExplicitData2DLinear();
+ _gravityField = 0;
CPPUNIT_ASSERT(0 != _quadrature);
GeometryTri2D geometry;
_quadrature->refGeometry(&geometry);
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit2DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit2DLinear.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit2DLinear.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -41,6 +41,7 @@
CPPUNIT_TEST( testInitialize );
CPPUNIT_TEST( testIntegrateResidual );
CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testIntegrateJacobianLumped );
CPPUNIT_TEST( testUpdateStateVars );
CPPUNIT_TEST( testStableTimeStep );
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit2DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit2DQuadratic.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit2DQuadratic.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -32,6 +32,7 @@
TestElasticityExplicit::setUp();
_data = new ElasticityExplicitData2DQuadratic();
+ _gravityField = 0;
CPPUNIT_ASSERT(0 != _quadrature);
GeometryTri2D geometry;
_quadrature->refGeometry(&geometry);
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit2DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit2DQuadratic.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit2DQuadratic.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -41,6 +41,7 @@
CPPUNIT_TEST( testInitialize );
CPPUNIT_TEST( testIntegrateResidual );
CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testIntegrateJacobianLumped );
CPPUNIT_TEST( testUpdateStateVars );
CPPUNIT_TEST( testStableTimeStep );
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit3DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit3DLinear.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit3DLinear.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -32,6 +32,7 @@
TestElasticityExplicit::setUp();
_data = new ElasticityExplicitData3DLinear();
+ _gravityField = 0;
CPPUNIT_ASSERT(0 != _quadrature);
GeometryTet3D geometry;
_quadrature->refGeometry(&geometry);
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit3DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit3DLinear.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit3DLinear.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -41,6 +41,7 @@
CPPUNIT_TEST( testInitialize );
CPPUNIT_TEST( testIntegrateResidual );
CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testIntegrateJacobianLumped );
CPPUNIT_TEST( testUpdateStateVars );
CPPUNIT_TEST( testStableTimeStep );
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit3DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit3DQuadratic.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit3DQuadratic.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -32,6 +32,7 @@
TestElasticityExplicit::setUp();
_data = new ElasticityExplicitData3DQuadratic();
+ _gravityField = 0;
CPPUNIT_ASSERT(0 != _quadrature);
GeometryTet3D geometry;
_quadrature->refGeometry(&geometry);
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit3DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit3DQuadratic.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicit3DQuadratic.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -41,6 +41,7 @@
CPPUNIT_TEST( testInitialize );
CPPUNIT_TEST( testIntegrateResidual );
CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testIntegrateJacobianLumped );
CPPUNIT_TEST( testUpdateStateVars );
CPPUNIT_TEST( testStableTimeStep );
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav1DLinear.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityExplicitGrav1DLinear.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav1DLinear.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav1DLinear.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,56 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestElasticityExplicitGrav1DLinear.hh" // Implementation of class methods
+
+#include "data/ElasticityExplicitGravData1DLinear.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
+#include "spatialdata/spatialdb/GravityField.hh" // USES GravityField
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::feassemble::TestElasticityExplicitGrav1DLinear );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::feassemble::TestElasticityExplicitGrav1DLinear::setUp(void)
+{ // setUp
+ TestElasticityExplicit::setUp();
+
+ _data = new ElasticityExplicitGravData1DLinear();
+ _gravityField = new spatialdata::spatialdb::GravityField();
+ CPPUNIT_ASSERT(0 != _quadrature);
+ CPPUNIT_ASSERT(0 != _gravityField);
+ GeometryLine1D geometry;
+ _quadrature->refGeometry(&geometry);
+
+ const double g = 1.0e8;
+ const double gravityDir[] = { -1.0, 0.0, 0.0};
+ _gravityField->gravAcceleration(g);
+ _gravityField->gravityDir(gravityDir[0], gravityDir[1], gravityDir[2]);
+
+ _material = new materials::ElasticStrain1D;
+ CPPUNIT_ASSERT(0 != _material);
+
+ CPPUNIT_ASSERT(0 != _data);
+ CPPUNIT_ASSERT_EQUAL(std::string("ElasticStrain1D"),
+ std::string(_data->matType));
+} // setUp
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav1DLinear.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityExplicitGrav1DLinear.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav1DLinear.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav1DLinear.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,59 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/feassemble/TestElasticityExplicitGrav1DLinear.hh
+ *
+ * @brief C++ TestElasticityExplicit object
+ *
+ * C++ unit testing for ElasticityExplicit with 1-D linear cells and gravity.
+ */
+
+#if !defined(pylith_feassemble_testelasticityexplicitgrav1dlinear_hh)
+#define pylith_feassemble_testelasticityexplicitgrav1dlinear_hh
+
+#include "TestElasticityExplicit.hh" // ISA TestElasticityExplicit
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace feassemble {
+ class TestElasticityExplicitGrav1DLinear;
+ } // feassemble
+} // pylith
+
+/// C++ unit testing for ElasticityExplicit
+class pylith::feassemble::TestElasticityExplicitGrav1DLinear :
+ public TestElasticityExplicit
+{ // class TestElasticityExplicit1DLinear
+
+ // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+ CPPUNIT_TEST_SUITE( TestElasticityExplicitGrav1DLinear );
+
+ CPPUNIT_TEST( testInitialize );
+ CPPUNIT_TEST( testIntegrateResidual );
+ CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testUpdateStateVars );
+
+ CPPUNIT_TEST_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Setup testing data.
+ void setUp(void);
+
+}; // class TestElasticityExplicitGrav1DLinear
+
+#endif // pylith_feassemble_testelasticityexplicitgrav1dlinear_hh
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav1DQuadratic.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityExplicitGrav1DQuadratic.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav1DQuadratic.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav1DQuadratic.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,56 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestElasticityExplicitGrav1DQuadratic.hh" // Implementation of class methods
+
+#include "data/ElasticityExplicitGravData1DQuadratic.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
+#include "spatialdata/spatialdb/GravityField.hh" // USES GravityField
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::feassemble::TestElasticityExplicitGrav1DQuadratic );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::feassemble::TestElasticityExplicitGrav1DQuadratic::setUp(void)
+{ // setUp
+ TestElasticityExplicit::setUp();
+
+ _data = new ElasticityExplicitGravData1DQuadratic();
+ _gravityField = new spatialdata::spatialdb::GravityField();
+ CPPUNIT_ASSERT(0 != _quadrature);
+ CPPUNIT_ASSERT(0 != _gravityField);
+ GeometryLine1D geometry;
+ _quadrature->refGeometry(&geometry);
+
+ const double g = 1.0e8;
+ const double gravityDir[] = { -1.0, 0.0, 0.0};
+ _gravityField->gravAcceleration(g);
+ _gravityField->gravityDir(gravityDir[0], gravityDir[1], gravityDir[2]);
+
+ _material = new materials::ElasticStrain1D;
+ CPPUNIT_ASSERT(0 != _material);
+
+ CPPUNIT_ASSERT(0 != _data);
+ CPPUNIT_ASSERT_EQUAL(std::string("ElasticStrain1D"),
+ std::string(_data->matType));
+} // setUp
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav1DQuadratic.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityExplicitGrav1DQuadratic.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav1DQuadratic.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav1DQuadratic.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,59 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/feassemble/TestElasticityExplicitGrav1DQuadratic.hh
+ *
+ * @brief C++ TestElasticityExplicit object
+ *
+ * C++ unit testing for ElasticityExplicit with 1-D quadratic cells and gravity.
+ */
+
+#if !defined(pylith_feassemble_testelasticityexplicitgrav1dquadratic_hh)
+#define pylith_feassemble_testelasticityexplicitgrav1dquadratic_hh
+
+#include "TestElasticityExplicit.hh" // ISA TestElasticityExplicit
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace feassemble {
+ class TestElasticityExplicitGrav1DQuadratic;
+ } // feassemble
+} // pylith
+
+/// C++ unit testing for ElasticityExplicit
+class pylith::feassemble::TestElasticityExplicitGrav1DQuadratic :
+ public TestElasticityExplicit
+{ // class TestElasticityExplicit1DQuadratic
+
+ // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+ CPPUNIT_TEST_SUITE( TestElasticityExplicitGrav1DQuadratic );
+
+ CPPUNIT_TEST( testInitialize );
+ CPPUNIT_TEST( testIntegrateResidual );
+ CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testUpdateStateVars );
+
+ CPPUNIT_TEST_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Setup testing data.
+ void setUp(void);
+
+}; // class TestElasticityExplicitGrav1DQuadratic
+
+#endif // pylith_feassemble_testelasticityexplicitgrav1dquadratic_hh
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav2DLinear.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityExplicitGrav2DLinear.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav2DLinear.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav2DLinear.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,56 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestElasticityExplicitGrav2DLinear.hh" // Implementation of class methods
+
+#include "data/ElasticityExplicitGravData2DLinear.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
+#include "spatialdata/spatialdb/GravityField.hh" // USES GravityField
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::feassemble::TestElasticityExplicitGrav2DLinear );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::feassemble::TestElasticityExplicitGrav2DLinear::setUp(void)
+{ // setUp
+ TestElasticityExplicit::setUp();
+
+ _data = new ElasticityExplicitGravData2DLinear();
+ _gravityField = new spatialdata::spatialdb::GravityField();
+ CPPUNIT_ASSERT(0 != _quadrature);
+ CPPUNIT_ASSERT(0 != _gravityField);
+ GeometryTri2D geometry;
+ _quadrature->refGeometry(&geometry);
+
+ const double g = 1.0e8;
+ const double gravityDir[] = { 0.0, -1.0, 0.0 };
+ _gravityField->gravAcceleration(g);
+ _gravityField->gravityDir(gravityDir[0], gravityDir[1], gravityDir[2]);
+
+ _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
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav2DLinear.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityExplicitGrav2DLinear.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav2DLinear.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav2DLinear.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,59 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/feassemble/TestElasticityExplicitGrav2DLinear.hh
+ *
+ * @brief C++ TestElasticityExplicit object
+ *
+ * C++ unit testing for ElasticityExplicit with 2-D linear cells and gravity.
+ */
+
+#if !defined(pylith_feassemble_testelasticityexplicitgrav2dlinear_hh)
+#define pylith_feassemble_testelasticityexplicitgrav2dlinear_hh
+
+#include "TestElasticityExplicit.hh" // ISA TestElasticityExplicit
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace feassemble {
+ class TestElasticityExplicitGrav2DLinear;
+ } // feassemble
+} // pylith
+
+/// C++ unit testing for ElasticityExplicit
+class pylith::feassemble::TestElasticityExplicitGrav2DLinear :
+ public TestElasticityExplicit
+{ // class TestElasticityExplicit2DLinear
+
+ // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+ CPPUNIT_TEST_SUITE( TestElasticityExplicitGrav2DLinear );
+
+ CPPUNIT_TEST( testInitialize );
+ CPPUNIT_TEST( testIntegrateResidual );
+ CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testUpdateStateVars );
+
+ CPPUNIT_TEST_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Setup testing data.
+ void setUp(void);
+
+}; // class TestElasticityExplicitGrav2DLinear
+
+#endif // pylith_feassemble_testelasticityexplicitgrav2dlinear_hh
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav2DQuadratic.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityExplicitGrav2DQuadratic.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav2DQuadratic.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav2DQuadratic.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,56 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestElasticityExplicitGrav2DQuadratic.hh" // Implementation of class methods
+
+#include "data/ElasticityExplicitGravData2DQuadratic.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
+#include "spatialdata/spatialdb/GravityField.hh" // USES GravityField
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::feassemble::TestElasticityExplicitGrav2DQuadratic );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::feassemble::TestElasticityExplicitGrav2DQuadratic::setUp(void)
+{ // setUp
+ TestElasticityExplicit::setUp();
+
+ _data = new ElasticityExplicitGravData2DQuadratic();
+ _gravityField = new spatialdata::spatialdb::GravityField();
+ CPPUNIT_ASSERT(0 != _quadrature);
+ CPPUNIT_ASSERT(0 != _gravityField);
+ GeometryTri2D geometry;
+ _quadrature->refGeometry(&geometry);
+
+ const double g = 1.0e8;
+ const double gravityDir[] = { 0.0, -1.0, 0.0 };
+ _gravityField->gravAcceleration(g);
+ _gravityField->gravityDir(gravityDir[0], gravityDir[1], gravityDir[2]);
+
+ _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
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav2DQuadratic.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityExplicitGrav2DQuadratic.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav2DQuadratic.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav2DQuadratic.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,59 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/feassemble/TestElasticityExplicitGrav2DQuadratic.hh
+ *
+ * @brief C++ TestElasticityExplicit object
+ *
+ * C++ unit testing for ElasticityExplicit with 2-D quadratic cells and gravity.
+ */
+
+#if !defined(pylith_feassemble_testelasticityexplicitgrav2dquadratic_hh)
+#define pylith_feassemble_testelasticityexplicitgrav2dquadratic_hh
+
+#include "TestElasticityExplicit.hh" // ISA TestElasticityExplicit
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace feassemble {
+ class TestElasticityExplicitGrav2DQuadratic;
+ } // feassemble
+} // pylith
+
+/// C++ unit testing for ElasticityExplicit
+class pylith::feassemble::TestElasticityExplicitGrav2DQuadratic :
+ public TestElasticityExplicit
+{ // class TestElasticityExplicit2DQuadratic
+
+ // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+ CPPUNIT_TEST_SUITE( TestElasticityExplicitGrav2DQuadratic );
+
+ CPPUNIT_TEST( testInitialize );
+ CPPUNIT_TEST( testIntegrateResidual );
+ CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testUpdateStateVars );
+
+ CPPUNIT_TEST_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Setup testing data.
+ void setUp(void);
+
+}; // class TestElasticityExplicitGrav2DQuadratic
+
+#endif // pylith_feassemble_testelasticityexplicitgrav2dquadratic_hh
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav3DLinear.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityExplicitGrav3DLinear.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav3DLinear.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav3DLinear.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,55 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestElasticityExplicitGrav3DLinear.hh" // Implementation of class methods
+
+#include "data/ElasticityExplicitGravData3DLinear.hh"
+
+#include "pylith/topology/Mesh.hh" // USES Quadrature<Mesh>
+#include "pylith/feassemble/Quadrature.hh" // USES Quadrature
+#include "pylith/feassemble/Quadrature3D.hh" // USES Quadrature3D
+#include "pylith/feassemble/GeometryTet3D.hh" // USES GeometryTet3D
+#include "pylith/materials/ElasticIsotropic3D.hh" // USES ElasticIsotropic3D
+#include "spatialdata/spatialdb/GravityField.hh" // USES GravityField
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::feassemble::TestElasticityExplicitGrav3DLinear );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::feassemble::TestElasticityExplicitGrav3DLinear::setUp(void)
+{ // setUp
+ TestElasticityExplicit::setUp();
+
+ _data = new ElasticityExplicitGravData3DLinear();
+ _gravityField = new spatialdata::spatialdb::GravityField();
+ CPPUNIT_ASSERT(0 != _quadrature);
+ CPPUNIT_ASSERT(0 != _gravityField);
+ GeometryTet3D geometry;
+ _quadrature->refGeometry(&geometry);
+
+ const double g = 1.0e8;
+ _gravityField->gravAcceleration(g);
+
+ _material = new materials::ElasticIsotropic3D;
+ CPPUNIT_ASSERT(0 != _material);
+
+ CPPUNIT_ASSERT(0 != _data);
+ CPPUNIT_ASSERT_EQUAL(std::string("ElasticIsotropic3D"),
+ std::string(_data->matType));
+} // setUp
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav3DLinear.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityExplicitGrav3DLinear.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav3DLinear.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav3DLinear.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,59 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/feassemble/TestElasticityExplicitGrav3DLinear.hh
+ *
+ * @brief C++ TestElasticityExplicit object
+ *
+ * C++ unit testing for ElasticityExplicit with 1-D linear cells and gravity.
+ */
+
+#if !defined(pylith_feassemble_testelasticityexplicitgrav3dlinear_hh)
+#define pylith_feassemble_testelasticityexplicitgrav3dlinear_hh
+
+#include "TestElasticityExplicit.hh" // ISA TestElasticityExplicit
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace feassemble {
+ class TestElasticityExplicitGrav3DLinear;
+ } // feassemble
+} // pylith
+
+/// C++ unit testing for ElasticityExplicit
+class pylith::feassemble::TestElasticityExplicitGrav3DLinear :
+ public TestElasticityExplicit
+{ // class TestElasticityExplicit3DLinear
+
+ // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+ CPPUNIT_TEST_SUITE( TestElasticityExplicitGrav3DLinear );
+
+ CPPUNIT_TEST( testInitialize );
+ CPPUNIT_TEST( testIntegrateResidual );
+ CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testUpdateStateVars );
+
+ CPPUNIT_TEST_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Setup testing data.
+ void setUp(void);
+
+}; // class TestElasticityExplicitGrav3DLinear
+
+#endif // pylith_feassemble_testelasticityexplicitgrav3dlinear_hh
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav3DQuadratic.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityExplicitGrav3DQuadratic.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav3DQuadratic.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav3DQuadratic.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,55 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestElasticityExplicitGrav3DQuadratic.hh" // Implementation of class methods
+
+#include "data/ElasticityExplicitGravData3DQuadratic.hh"
+
+#include "pylith/topology/Mesh.hh" // USES Quadrature<Mesh>
+#include "pylith/feassemble/Quadrature.hh" // USES Quadrature
+#include "pylith/feassemble/Quadrature3D.hh" // USES Quadrature3D
+#include "pylith/feassemble/GeometryTet3D.hh" // USES GeometryTet3D
+#include "pylith/materials/ElasticIsotropic3D.hh" // USES ElasticIsotropic3D
+#include "spatialdata/spatialdb/GravityField.hh" // USES GravityField
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::feassemble::TestElasticityExplicitGrav3DQuadratic );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::feassemble::TestElasticityExplicitGrav3DQuadratic::setUp(void)
+{ // setUp
+ TestElasticityExplicit::setUp();
+
+ _data = new ElasticityExplicitGravData3DQuadratic();
+ _gravityField = new spatialdata::spatialdb::GravityField();
+ CPPUNIT_ASSERT(0 != _quadrature);
+ CPPUNIT_ASSERT(0 != _gravityField);
+ GeometryTet3D geometry;
+ _quadrature->refGeometry(&geometry);
+
+ const double g = 1.0e8;
+ _gravityField->gravAcceleration(g);
+
+ _material = new materials::ElasticIsotropic3D;
+ CPPUNIT_ASSERT(0 != _material);
+
+ CPPUNIT_ASSERT(0 != _data);
+ CPPUNIT_ASSERT_EQUAL(std::string("ElasticIsotropic3D"),
+ std::string(_data->matType));
+} // setUp
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav3DQuadratic.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityExplicitGrav3DQuadratic.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav3DQuadratic.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitGrav3DQuadratic.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,59 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/feassemble/TestElasticityExplicitGrav3DQuadratic.hh
+ *
+ * @brief C++ TestElasticityExplicit object
+ *
+ * C++ unit testing for ElasticityExplicit with 1-D quadratic cells and gravity.
+ */
+
+#if !defined(pylith_feassemble_testelasticityexplicitgrav3dquadratic_hh)
+#define pylith_feassemble_testelasticityexplicitgrav3dquadratic_hh
+
+#include "TestElasticityExplicit.hh" // ISA TestElasticityExplicit
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace feassemble {
+ class TestElasticityExplicitGrav3DQuadratic;
+ } // feassemble
+} // pylith
+
+/// C++ unit testing for ElasticityExplicit
+class pylith::feassemble::TestElasticityExplicitGrav3DQuadratic :
+ public TestElasticityExplicit
+{ // class TestElasticityExplicit3DQuadratic
+
+ // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+ CPPUNIT_TEST_SUITE( TestElasticityExplicitGrav3DQuadratic );
+
+ CPPUNIT_TEST( testInitialize );
+ CPPUNIT_TEST( testIntegrateResidual );
+ CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testUpdateStateVars );
+
+ CPPUNIT_TEST_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Setup testing data.
+ void setUp(void);
+
+}; // class TestElasticityExplicitGrav3DQuadratic
+
+#endif // pylith_feassemble_testelasticityexplicitgrav3dquadratic_hh
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityExplicitLgDeform.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,319 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestElasticityExplicitLgDeform.hh" // Implementation of class methods
+
+#include "pylith/feassemble/ElasticityExplicitLgDeform.hh" // USES ElasticityExplicitLgDeform
+#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::TestElasticityExplicitLgDeform );
+
+// ----------------------------------------------------------------------
+typedef pylith::topology::Mesh::SieveMesh SieveMesh;
+typedef pylith::topology::Mesh::RealSection RealSection;
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::feassemble::TestElasticityExplicitLgDeform::setUp(void)
+{ // setUp
+ _quadrature = new Quadrature<topology::Mesh>();
+ _data = 0;
+ _material = 0;
+ _gravityField = 0;
+} // setUp
+
+// ----------------------------------------------------------------------
+// Tear down testing data.
+void
+pylith::feassemble::TestElasticityExplicitLgDeform::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::TestElasticityExplicitLgDeform::testConstructor(void)
+{ // testConstructor
+ ElasticityExplicitLgDeform integrator;
+} // testConstructor
+
+// ----------------------------------------------------------------------
+// Test initialize().
+void
+pylith::feassemble::TestElasticityExplicitLgDeform::testInitialize(void)
+{ // testInitialize
+ CPPUNIT_ASSERT(0 != _data);
+
+ topology::Mesh mesh;
+ ElasticityExplicitLgDeform integrator;
+ topology::SolutionFields fields(mesh);
+ _initialize(&mesh, &integrator, &fields);
+
+} // testInitialize
+
+// ----------------------------------------------------------------------
+// Test integrateResidual().
+void
+pylith::feassemble::TestElasticityExplicitLgDeform::testIntegrateResidual(void)
+{ // testIntegrateResidual
+ CPPUNIT_ASSERT(0 != _data);
+
+ topology::Mesh mesh;
+ ElasticityExplicitLgDeform 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;
+
+#if 0 // DEBUGGING
+ residual.view("RESIDUAL");
+ std::cout << "RESIDUAL EXPECTED\n";
+ for (int i=0; i < sizeE; ++i)
+ std::cout << " " << valsE[i] << "\n";
+#endif
+
+ 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::TestElasticityExplicitLgDeform::testIntegrateJacobian(void)
+{ // testIntegrateJacobian
+ CPPUNIT_ASSERT(0 != _data);
+
+ topology::Mesh mesh;
+ ElasticityExplicitLgDeform integrator;
+ topology::SolutionFields fields(mesh);
+ _initialize(&mesh, &integrator, &fields);
+ integrator._needNewJacobian = true;
+
+ topology::Jacobian jacobian(fields);
+
+ const double t = 1.0;
+ integrator.integrateJacobian(&jacobian, t, &fields);
+ CPPUNIT_ASSERT_EQUAL(false, integrator.needNewJacobian());
+ 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::TestElasticityExplicitLgDeform::testUpdateStateVars(void)
+{ // testUpdateStateVars
+ CPPUNIT_ASSERT(0 != _data);
+
+ topology::Mesh mesh;
+ ElasticityExplicitLgDeform integrator;
+ topology::SolutionFields fields(mesh);
+ _initialize(&mesh, &integrator, &fields);
+
+ const double t = 1.0;
+ integrator.updateStateVars(t, &fields);
+} // testUpdateStateVars
+
+// ----------------------------------------------------------------------
+// Initialize elasticity integrator.
+void
+pylith::feassemble::TestElasticityExplicitLgDeform::_initialize(
+ topology::Mesh* mesh,
+ ElasticityExplicitLgDeform* 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->add("disp(t-dt)", "displacement");
+ 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>& dispIncr = fields->get("dispIncr(t->t+dt)");
+ topology::Field<topology::Mesh>& dispT = fields->get("disp(t)");
+ topology::Field<topology::Mesh>& dispTmdt = fields->get("disp(t-dt)");
+ const ALE::Obj<RealSection>& dispIncrSection = dispIncr.section();
+ const ALE::Obj<RealSection>& dispTSection = dispT.section();
+ const ALE::Obj<RealSection>& dispTmdtSection = dispTmdt.section();
+ CPPUNIT_ASSERT(!dispIncrSection.isNull());
+ CPPUNIT_ASSERT(!dispTSection.isNull());
+ CPPUNIT_ASSERT(!dispTmdtSection.isNull());
+ const int offset = _data->numCells;
+ for (int iVertex=0; iVertex < _data->numVertices; ++iVertex) {
+ dispIncrSection->updatePoint(iVertex+offset,
+ &_data->fieldTIncr[iVertex*_data->spaceDim]);
+ dispTSection->updatePoint(iVertex+offset,
+ &_data->fieldT[iVertex*_data->spaceDim]);
+ dispTmdtSection->updatePoint(iVertex+offset,
+ &_data->fieldTmdt[iVertex*_data->spaceDim]);
+ } // for
+} // _initialize
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityExplicitLgDeform.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,105 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/feassemble/TestElasticityExplicitLgDeform.hh
+ *
+ * @brief C++ TestElasticityExplicitLgDeform object
+ *
+ * C++ unit testing for ElasticityExplicitLgDeform.
+ */
+
+#if !defined(pylith_feassemble_testelasticityexplicitlgdeform_hh)
+#define pylith_feassemble_testelasticityexplicitlgdeform_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 TestElasticityExplicitLgDeform;
+ class IntegratorData;
+ } // feassemble
+} // pylith
+
+/// C++ unit testing for ElasticityExplicitLgDeform
+class pylith::feassemble::TestElasticityExplicitLgDeform : public CppUnit::TestFixture
+{ // class TestElasticityExplicitLgDeform
+
+ // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+ CPPUNIT_TEST_SUITE( TestElasticityExplicitLgDeform );
+
+ CPPUNIT_TEST( testConstructor );
+
+ // 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 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,
+ ElasticityExplicitLgDeform* const integrator,
+ topology::SolutionFields* const fields);
+
+}; // class TestElasticityExplicitLgDeform
+
+#endif // pylith_feassemble_testelasticityexplicitlgdeform_hh
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform1DLinear.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityExplicitLgDeform1DLinear.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform1DLinear.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform1DLinear.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,47 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestElasticityExplicitLgDeform1DLinear.hh" // Implementation of class methods
+
+#include "data/ElasticityExplicitLgDeformData1DLinear.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::TestElasticityExplicitLgDeform1DLinear );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::feassemble::TestElasticityExplicitLgDeform1DLinear::setUp(void)
+{ // setUp
+ TestElasticityExplicitLgDeform::setUp();
+
+ _data = new ElasticityExplicitLgDeformData1DLinear();
+ _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
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform1DLinear.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityExplicitLgDeform1DLinear.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform1DLinear.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform1DLinear.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,59 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/feassemble/TestElasticityExplicitLgDeform1DLinear.hh
+ *
+ * @brief C++ TestElasticityExplicitLgDeform object
+ *
+ * C++ unit testing for ElasticityExplicitLgDeform with 1-D linear cells.
+ */
+
+#if !defined(pylith_feassemble_testelasticityexplicitlgdeform1dlinear_hh)
+#define pylith_feassemble_testelasticityexplicitlgdeform1dlinear_hh
+
+#include "TestElasticityExplicitLgDeform.hh" // ISA TestElasticityExplicitLgDeform
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace feassemble {
+ class TestElasticityExplicitLgDeform1DLinear;
+ } // feassemble
+} // pylith
+
+/// C++ unit testing for ElasticityExplicitLgDeform
+class pylith::feassemble::TestElasticityExplicitLgDeform1DLinear :
+ public TestElasticityExplicitLgDeform
+{ // class TestElasticityExplicitLgDeform1DLinear
+
+ // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+ CPPUNIT_TEST_SUITE( TestElasticityExplicitLgDeform1DLinear );
+
+ CPPUNIT_TEST( testInitialize );
+ CPPUNIT_TEST( testIntegrateResidual );
+ CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testUpdateStateVars );
+
+ CPPUNIT_TEST_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Setup testing data.
+ void setUp(void);
+
+}; // class TestElasticityExplicitLgDeform1DLinear
+
+#endif // pylith_feassemble_testelasticityexplicitlgdeform1dlinear_hh
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform1DQuadratic.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityExplicitLgDeform1DQuadratic.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform1DQuadratic.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform1DQuadratic.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,47 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestElasticityExplicitLgDeform1DQuadratic.hh" // Implementation of class methods
+
+#include "data/ElasticityExplicitLgDeformData1DQuadratic.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::TestElasticityExplicitLgDeform1DQuadratic );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::feassemble::TestElasticityExplicitLgDeform1DQuadratic::setUp(void)
+{ // setUp
+ TestElasticityExplicitLgDeform::setUp();
+
+ _data = new ElasticityExplicitLgDeformData1DQuadratic();
+ _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
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform1DQuadratic.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityExplicitLgDeform1DQuadratic.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform1DQuadratic.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform1DQuadratic.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,59 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/feassemble/TestElasticityExplicitLgDeform1DQuadratic.hh
+ *
+ * @brief C++ TestElasticityExplicitLgDeform object
+ *
+ * C++ unit testing for ElasticityExplicitLgDeform with 1-D quadratic cells.
+ */
+
+#if !defined(pylith_feassemble_testelasticityexplicitlgdeform1dquadratic_hh)
+#define pylith_feassemble_testelasticityexplicitlgdeform1dquadratic_hh
+
+#include "TestElasticityExplicitLgDeform.hh" // ISA TestElasticityExplicitLgDeform
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace feassemble {
+ class TestElasticityExplicitLgDeform1DQuadratic;
+ } // feassemble
+} // pylith
+
+/// C++ unit testing for ElasticityExplicitLgDeform
+class pylith::feassemble::TestElasticityExplicitLgDeform1DQuadratic :
+ public TestElasticityExplicitLgDeform
+{ // class TestElasticityExplicitLgDeform1DQuadratic
+
+ // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+ CPPUNIT_TEST_SUITE( TestElasticityExplicitLgDeform1DQuadratic );
+
+ CPPUNIT_TEST( testInitialize );
+ CPPUNIT_TEST( testIntegrateResidual );
+ CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testUpdateStateVars );
+
+ CPPUNIT_TEST_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Setup testing data.
+ void setUp(void);
+
+}; // class TestElasticityExplicitLgDeform1DQuadratic
+
+#endif // pylith_feassemble_testelasticityexplicitlgdeform1dquadratic_hh
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform2DLinear.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityExplicitLgDeform2DLinear.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform2DLinear.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform2DLinear.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,49 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestElasticityExplicitLgDeform2DLinear.hh" // Implementation of class methods
+
+#include "data/ElasticityExplicitLgDeformData2DLinear.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::TestElasticityExplicitLgDeform2DLinear );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::feassemble::TestElasticityExplicitLgDeform2DLinear::setUp(void)
+{ // setUp
+ TestElasticityExplicitLgDeform::setUp();
+
+ _data = new ElasticityExplicitLgDeformData2DLinear();
+ _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
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform2DLinear.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityExplicitLgDeform2DLinear.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform2DLinear.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform2DLinear.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,59 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/feassemble/TestElasticityExplicitLgDeform2DLinear.hh
+ *
+ * @brief C++ TestElasticityExplicitLgDeform object
+ *
+ * C++ unit testing for ElasticityExplicitLgDeform with 2-D linear cells.
+ */
+
+#if !defined(pylith_feassemble_testelasticityexplicitlgdeform2dlinear_hh)
+#define pylith_feassemble_testelasticityexplicitlgdeform2dlinear_hh
+
+#include "TestElasticityExplicitLgDeform.hh" // ISA TestElasticityExplicitLgDeform
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace feassemble {
+ class TestElasticityExplicitLgDeform2DLinear;
+ } // feassemble
+} // pylith
+
+/// C++ unit testing for ElasticityExplicitLgDeform
+class pylith::feassemble::TestElasticityExplicitLgDeform2DLinear :
+ public TestElasticityExplicitLgDeform
+{ // class TestElasticityExplicitLgDeform2DLinear
+
+ // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+ CPPUNIT_TEST_SUITE( TestElasticityExplicitLgDeform2DLinear );
+
+ CPPUNIT_TEST( testInitialize );
+ CPPUNIT_TEST( testIntegrateResidual );
+ CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testUpdateStateVars );
+
+ CPPUNIT_TEST_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Setup testing data.
+ void setUp(void);
+
+}; // class TestElasticityExplicitLgDeform2DLinear
+
+#endif // pylith_feassemble_testelasticityexplicitlgdeform2dlinear_hh
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform2DQuadratic.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityExplicitLgDeform2DQuadratic.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform2DQuadratic.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform2DQuadratic.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,49 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestElasticityExplicitLgDeform2DQuadratic.hh" // Implementation of class methods
+
+#include "data/ElasticityExplicitLgDeformData2DQuadratic.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::TestElasticityExplicitLgDeform2DQuadratic );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::feassemble::TestElasticityExplicitLgDeform2DQuadratic::setUp(void)
+{ // setUp
+ TestElasticityExplicitLgDeform::setUp();
+
+ _data = new ElasticityExplicitLgDeformData2DQuadratic();
+ _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
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform2DQuadratic.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityExplicitLgDeform2DQuadratic.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform2DQuadratic.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform2DQuadratic.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,59 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/feassemble/TestElasticityExplicitLgDeform2DQuadratic.hh
+ *
+ * @brief C++ TestElasticityExplicitLgDeform object
+ *
+ * C++ unit testing for ElasticityExplicitLgDeform with 2-D quadratic cells.
+ */
+
+#if !defined(pylith_feassemble_testelasticityexplicitlgdeform2dquadratic_hh)
+#define pylith_feassemble_testelasticityexplicitlgdeform2dquadratic_hh
+
+#include "TestElasticityExplicitLgDeform.hh" // ISA TestElasticityExplicitLgDeform
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace feassemble {
+ class TestElasticityExplicitLgDeform2DQuadratic;
+ } // feassemble
+} // pylith
+
+/// C++ unit testing for ElasticityExplicitLgDeform
+class pylith::feassemble::TestElasticityExplicitLgDeform2DQuadratic :
+ public TestElasticityExplicitLgDeform
+{ // class TestElasticityExplicitLgDeform2DQuadratic
+
+ // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+ CPPUNIT_TEST_SUITE( TestElasticityExplicitLgDeform2DQuadratic );
+
+ CPPUNIT_TEST( testInitialize );
+ CPPUNIT_TEST( testIntegrateResidual );
+ CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testUpdateStateVars );
+
+ CPPUNIT_TEST_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Setup testing data.
+ void setUp(void);
+
+}; // class TestElasticityExplicitLgDeform2DQuadratic
+
+#endif // pylith_feassemble_testelasticityexplicitlgdeform2dquadratic_hh
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform3DLinear.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityExplicitLgDeform3DLinear.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform3DLinear.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform3DLinear.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,49 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestElasticityExplicitLgDeform3DLinear.hh" // Implementation of class methods
+
+#include "data/ElasticityExplicitLgDeformData3DLinear.hh"
+
+#include "pylith/topology/Mesh.hh" // USES Quadrature<Mesh>
+#include "pylith/feassemble/Quadrature.hh" // USES Quadrature
+#include "pylith/feassemble/GeometryTet3D.hh" // USES GeometryTet3D
+#include "pylith/materials/ElasticIsotropic3D.hh" // USES ElasticIsotropic3D
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::feassemble::TestElasticityExplicitLgDeform3DLinear );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::feassemble::TestElasticityExplicitLgDeform3DLinear::setUp(void)
+{ // setUp
+ TestElasticityExplicitLgDeform::setUp();
+
+ _data = new ElasticityExplicitLgDeformData3DLinear();
+ _gravityField = 0;
+ CPPUNIT_ASSERT(0 != _quadrature);
+ GeometryTet3D geometry;
+ _quadrature->refGeometry(&geometry);
+
+ _material = new materials::ElasticIsotropic3D;
+ CPPUNIT_ASSERT(0 != _material);
+
+ CPPUNIT_ASSERT(0 != _data);
+ CPPUNIT_ASSERT_EQUAL(std::string("ElasticIsotropic3D"),
+ std::string(_data->matType));
+} // setUp
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform3DLinear.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityExplicitLgDeform3DLinear.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform3DLinear.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform3DLinear.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,59 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/feassemble/TestElasticityExplicitLgDeform3DLinear.hh
+ *
+ * @brief C++ TestElasticityExplicitLgDeform object
+ *
+ * C++ unit testing for ElasticityExplicitLgDeform with 1-D linear cells.
+ */
+
+#if !defined(pylith_feassemble_testelasticityexplicitlgdeform3dlinear_hh)
+#define pylith_feassemble_testelasticityexplicitlgdeform3dlinear_hh
+
+#include "TestElasticityExplicitLgDeform.hh" // ISA TestElasticityExplicitLgDeform
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace feassemble {
+ class TestElasticityExplicitLgDeform3DLinear;
+ } // feassemble
+} // pylith
+
+/// C++ unit testing for ElasticityExplicitLgDeform
+class pylith::feassemble::TestElasticityExplicitLgDeform3DLinear :
+ public TestElasticityExplicitLgDeform
+{ // class TestElasticityExplicitLgDeform3DLinear
+
+ // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+ CPPUNIT_TEST_SUITE( TestElasticityExplicitLgDeform3DLinear );
+
+ CPPUNIT_TEST( testInitialize );
+ CPPUNIT_TEST( testIntegrateResidual );
+ CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testUpdateStateVars );
+
+ CPPUNIT_TEST_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Setup testing data.
+ void setUp(void);
+
+}; // class TestElasticityExplicitLgDeform3DLinear
+
+#endif // pylith_feassemble_testelasticityexplicitlgdeform3dlinear_hh
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform3DQuadratic.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityExplicitLgDeform3DQuadratic.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform3DQuadratic.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform3DQuadratic.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,49 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestElasticityExplicitLgDeform3DQuadratic.hh" // Implementation of class methods
+
+#include "data/ElasticityExplicitLgDeformData3DQuadratic.hh"
+
+#include "pylith/topology/Mesh.hh" // USES Quadrature<Mesh>
+#include "pylith/feassemble/Quadrature.hh" // USES Quadrature
+#include "pylith/feassemble/GeometryTet3D.hh" // USES GeometryTet3D
+#include "pylith/materials/ElasticIsotropic3D.hh" // USES ElasticIsotropic3D
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::feassemble::TestElasticityExplicitLgDeform3DQuadratic );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::feassemble::TestElasticityExplicitLgDeform3DQuadratic::setUp(void)
+{ // setUp
+ TestElasticityExplicitLgDeform::setUp();
+
+ _data = new ElasticityExplicitLgDeformData3DQuadratic();
+ _gravityField = 0;
+ CPPUNIT_ASSERT(0 != _quadrature);
+ GeometryTet3D geometry;
+ _quadrature->refGeometry(&geometry);
+
+ _material = new materials::ElasticIsotropic3D;
+ CPPUNIT_ASSERT(0 != _material);
+
+ CPPUNIT_ASSERT(0 != _data);
+ CPPUNIT_ASSERT_EQUAL(std::string("ElasticIsotropic3D"),
+ std::string(_data->matType));
+} // setUp
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform3DQuadratic.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityExplicitLgDeform3DQuadratic.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform3DQuadratic.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeform3DQuadratic.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,59 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/feassemble/TestElasticityExplicitLgDeform3DQuadratic.hh
+ *
+ * @brief C++ TestElasticityExplicitLgDeform object
+ *
+ * C++ unit testing for ElasticityExplicitLgDeform with 1-D quadratic cells.
+ */
+
+#if !defined(pylith_feassemble_testelasticityexplicitlgdeform3dquadratic_hh)
+#define pylith_feassemble_testelasticityexplicitlgdeform3dquadratic_hh
+
+#include "TestElasticityExplicitLgDeform.hh" // ISA TestElasticityExplicitLgDeform
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace feassemble {
+ class TestElasticityExplicitLgDeform3DQuadratic;
+ } // feassemble
+} // pylith
+
+/// C++ unit testing for ElasticityExplicitLgDeform
+class pylith::feassemble::TestElasticityExplicitLgDeform3DQuadratic :
+ public TestElasticityExplicitLgDeform
+{ // class TestElasticityExplicitLgDeform3DQuadratic
+
+ // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+ CPPUNIT_TEST_SUITE( TestElasticityExplicitLgDeform3DQuadratic );
+
+ CPPUNIT_TEST( testInitialize );
+ CPPUNIT_TEST( testIntegrateResidual );
+ CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testUpdateStateVars );
+
+ CPPUNIT_TEST_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Setup testing data.
+ void setUp(void);
+
+}; // class TestElasticityExplicitLgDeform3DQuadratic
+
+#endif // pylith_feassemble_testelasticityexplicitlgdeform3dquadratic_hh
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav1DLinear.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav1DLinear.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav1DLinear.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav1DLinear.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,56 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestElasticityExplicitLgDeformGrav1DLinear.hh" // Implementation of class methods
+
+#include "data/ElasticityExplicitLgDeformGravData1DLinear.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
+#include "spatialdata/spatialdb/GravityField.hh" // USES GravityField
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::feassemble::TestElasticityExplicitLgDeformGrav1DLinear );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::feassemble::TestElasticityExplicitLgDeformGrav1DLinear::setUp(void)
+{ // setUp
+ TestElasticityExplicitLgDeform::setUp();
+
+ _data = new ElasticityExplicitLgDeformGravData1DLinear();
+ _gravityField = new spatialdata::spatialdb::GravityField();
+ CPPUNIT_ASSERT(0 != _quadrature);
+ CPPUNIT_ASSERT(0 != _gravityField);
+ GeometryLine1D geometry;
+ _quadrature->refGeometry(&geometry);
+
+ const double g = 1.0e8;
+ const double gravityDir[] = { -1.0, 0.0, 0.0};
+ _gravityField->gravAcceleration(g);
+ _gravityField->gravityDir(gravityDir[0], gravityDir[1], gravityDir[2]);
+
+ _material = new materials::ElasticStrain1D;
+ CPPUNIT_ASSERT(0 != _material);
+
+ CPPUNIT_ASSERT(0 != _data);
+ CPPUNIT_ASSERT_EQUAL(std::string("ElasticStrain1D"),
+ std::string(_data->matType));
+} // setUp
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav1DLinear.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav1DLinear.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav1DLinear.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav1DLinear.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,59 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav1DLinear.hh
+ *
+ * @brief C++ TestElasticityExplicitLgDeform object
+ *
+ * C++ unit testing for ElasticityExplicitLgDeform with 1-D linear cells and gravity.
+ */
+
+#if !defined(pylith_feassemble_testelasticityexplicitlgdeformgrav1dlinear_hh)
+#define pylith_feassemble_testelasticityexplicitlgdeformgrav1dlinear_hh
+
+#include "TestElasticityExplicitLgDeform.hh" // ISA TestElasticityExplicitLgDeform
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace feassemble {
+ class TestElasticityExplicitLgDeformGrav1DLinear;
+ } // feassemble
+} // pylith
+
+/// C++ unit testing for ElasticityExplicitLgDeform
+class pylith::feassemble::TestElasticityExplicitLgDeformGrav1DLinear :
+ public TestElasticityExplicitLgDeform
+{ // class TestElasticityExplicitLgDeform1DLinear
+
+ // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+ CPPUNIT_TEST_SUITE( TestElasticityExplicitLgDeformGrav1DLinear );
+
+ CPPUNIT_TEST( testInitialize );
+ CPPUNIT_TEST( testIntegrateResidual );
+ CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testUpdateStateVars );
+
+ CPPUNIT_TEST_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Setup testing data.
+ void setUp(void);
+
+}; // class TestElasticityExplicitLgDeformGrav1DLinear
+
+#endif // pylith_feassemble_testelasticityexplicitlgdeformgrav1dlinear_hh
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav1DQuadratic.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav1DQuadratic.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav1DQuadratic.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav1DQuadratic.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,56 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestElasticityExplicitLgDeformGrav1DQuadratic.hh" // Implementation of class methods
+
+#include "data/ElasticityExplicitLgDeformGravData1DQuadratic.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
+#include "spatialdata/spatialdb/GravityField.hh" // USES GravityField
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::feassemble::TestElasticityExplicitLgDeformGrav1DQuadratic );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::feassemble::TestElasticityExplicitLgDeformGrav1DQuadratic::setUp(void)
+{ // setUp
+ TestElasticityExplicitLgDeform::setUp();
+
+ _data = new ElasticityExplicitLgDeformGravData1DQuadratic();
+ _gravityField = new spatialdata::spatialdb::GravityField();
+ CPPUNIT_ASSERT(0 != _quadrature);
+ CPPUNIT_ASSERT(0 != _gravityField);
+ GeometryLine1D geometry;
+ _quadrature->refGeometry(&geometry);
+
+ const double g = 1.0e8;
+ const double gravityDir[] = { -1.0, 0.0, 0.0};
+ _gravityField->gravAcceleration(g);
+ _gravityField->gravityDir(gravityDir[0], gravityDir[1], gravityDir[2]);
+
+ _material = new materials::ElasticStrain1D;
+ CPPUNIT_ASSERT(0 != _material);
+
+ CPPUNIT_ASSERT(0 != _data);
+ CPPUNIT_ASSERT_EQUAL(std::string("ElasticStrain1D"),
+ std::string(_data->matType));
+} // setUp
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav1DQuadratic.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav1DQuadratic.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav1DQuadratic.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav1DQuadratic.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,59 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav1DQuadratic.hh
+ *
+ * @brief C++ TestElasticityExplicitLgDeform object
+ *
+ * C++ unit testing for ElasticityExplicitLgDeform with 1-D quadratic cells and gravity.
+ */
+
+#if !defined(pylith_feassemble_testelasticityexplicitlgdeformgrav1dquadratic_hh)
+#define pylith_feassemble_testelasticityexplicitlgdeformgrav1dquadratic_hh
+
+#include "TestElasticityExplicitLgDeform.hh" // ISA TestElasticityExplicitLgDeform
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace feassemble {
+ class TestElasticityExplicitLgDeformGrav1DQuadratic;
+ } // feassemble
+} // pylith
+
+/// C++ unit testing for ElasticityExplicitLgDeform
+class pylith::feassemble::TestElasticityExplicitLgDeformGrav1DQuadratic :
+ public TestElasticityExplicitLgDeform
+{ // class TestElasticityExplicitLgDeform1DQuadratic
+
+ // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+ CPPUNIT_TEST_SUITE( TestElasticityExplicitLgDeformGrav1DQuadratic );
+
+ CPPUNIT_TEST( testInitialize );
+ CPPUNIT_TEST( testIntegrateResidual );
+ CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testUpdateStateVars );
+
+ CPPUNIT_TEST_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Setup testing data.
+ void setUp(void);
+
+}; // class TestElasticityExplicitLgDeformGrav1DQuadratic
+
+#endif // pylith_feassemble_testelasticityexplicitlgdeformgrav1dquadratic_hh
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav2DLinear.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav2DLinear.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav2DLinear.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav2DLinear.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,56 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestElasticityExplicitLgDeformGrav2DLinear.hh" // Implementation of class methods
+
+#include "data/ElasticityExplicitLgDeformGravData2DLinear.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
+#include "spatialdata/spatialdb/GravityField.hh" // USES GravityField
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::feassemble::TestElasticityExplicitLgDeformGrav2DLinear );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::feassemble::TestElasticityExplicitLgDeformGrav2DLinear::setUp(void)
+{ // setUp
+ TestElasticityExplicitLgDeform::setUp();
+
+ _data = new ElasticityExplicitLgDeformGravData2DLinear();
+ _gravityField = new spatialdata::spatialdb::GravityField();
+ CPPUNIT_ASSERT(0 != _quadrature);
+ CPPUNIT_ASSERT(0 != _gravityField);
+ GeometryTri2D geometry;
+ _quadrature->refGeometry(&geometry);
+
+ const double g = 1.0e8;
+ const double gravityDir[] = { 0.0, -1.0, 0.0 };
+ _gravityField->gravAcceleration(g);
+ _gravityField->gravityDir(gravityDir[0], gravityDir[1], gravityDir[2]);
+
+ _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
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav2DLinear.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav2DLinear.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav2DLinear.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav2DLinear.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,59 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav2DLinear.hh
+ *
+ * @brief C++ TestElasticityExplicitLgDeform object
+ *
+ * C++ unit testing for ElasticityExplicitLgDeform with 2-D linear cells and gravity.
+ */
+
+#if !defined(pylith_feassemble_testelasticityexplicitlgdeformgrav2dlinear_hh)
+#define pylith_feassemble_testelasticityexplicitlgdeformgrav2dlinear_hh
+
+#include "TestElasticityExplicitLgDeform.hh" // ISA TestElasticityExplicitLgDeform
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace feassemble {
+ class TestElasticityExplicitLgDeformGrav2DLinear;
+ } // feassemble
+} // pylith
+
+/// C++ unit testing for ElasticityExplicitLgDeform
+class pylith::feassemble::TestElasticityExplicitLgDeformGrav2DLinear :
+ public TestElasticityExplicitLgDeform
+{ // class TestElasticityExplicitLgDeform2DLinear
+
+ // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+ CPPUNIT_TEST_SUITE( TestElasticityExplicitLgDeformGrav2DLinear );
+
+ CPPUNIT_TEST( testInitialize );
+ CPPUNIT_TEST( testIntegrateResidual );
+ CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testUpdateStateVars );
+
+ CPPUNIT_TEST_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Setup testing data.
+ void setUp(void);
+
+}; // class TestElasticityExplicitLgDeformGrav2DLinear
+
+#endif // pylith_feassemble_testelasticityexplicitlgdeformgrav2dlinear_hh
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav2DQuadratic.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav2DQuadratic.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav2DQuadratic.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav2DQuadratic.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,56 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestElasticityExplicitLgDeformGrav2DQuadratic.hh" // Implementation of class methods
+
+#include "data/ElasticityExplicitLgDeformGravData2DQuadratic.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
+#include "spatialdata/spatialdb/GravityField.hh" // USES GravityField
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::feassemble::TestElasticityExplicitLgDeformGrav2DQuadratic );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::feassemble::TestElasticityExplicitLgDeformGrav2DQuadratic::setUp(void)
+{ // setUp
+ TestElasticityExplicitLgDeform::setUp();
+
+ _data = new ElasticityExplicitLgDeformGravData2DQuadratic();
+ _gravityField = new spatialdata::spatialdb::GravityField();
+ CPPUNIT_ASSERT(0 != _quadrature);
+ CPPUNIT_ASSERT(0 != _gravityField);
+ GeometryTri2D geometry;
+ _quadrature->refGeometry(&geometry);
+
+ const double g = 1.0e8;
+ const double gravityDir[] = { 0.0, -1.0, 0.0 };
+ _gravityField->gravAcceleration(g);
+ _gravityField->gravityDir(gravityDir[0], gravityDir[1], gravityDir[2]);
+
+ _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
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav2DQuadratic.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav2DQuadratic.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav2DQuadratic.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav2DQuadratic.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,59 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav2DQuadratic.hh
+ *
+ * @brief C++ TestElasticityExplicitLgDeform object
+ *
+ * C++ unit testing for ElasticityExplicitLgDeform with 2-D quadratic cells and gravity.
+ */
+
+#if !defined(pylith_feassemble_testelasticityexplicitlgdeformgrav2dquadratic_hh)
+#define pylith_feassemble_testelasticityexplicitlgdeformgrav2dquadratic_hh
+
+#include "TestElasticityExplicitLgDeform.hh" // ISA TestElasticityExplicitLgDeform
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace feassemble {
+ class TestElasticityExplicitLgDeformGrav2DQuadratic;
+ } // feassemble
+} // pylith
+
+/// C++ unit testing for ElasticityExplicitLgDeform
+class pylith::feassemble::TestElasticityExplicitLgDeformGrav2DQuadratic :
+ public TestElasticityExplicitLgDeform
+{ // class TestElasticityExplicitLgDeform2DQuadratic
+
+ // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+ CPPUNIT_TEST_SUITE( TestElasticityExplicitLgDeformGrav2DQuadratic );
+
+ CPPUNIT_TEST( testInitialize );
+ CPPUNIT_TEST( testIntegrateResidual );
+ CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testUpdateStateVars );
+
+ CPPUNIT_TEST_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Setup testing data.
+ void setUp(void);
+
+}; // class TestElasticityExplicitLgDeformGrav2DQuadratic
+
+#endif // pylith_feassemble_testelasticityexplicitlgdeformgrav2dquadratic_hh
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav3DLinear.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav3DLinear.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav3DLinear.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav3DLinear.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,55 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestElasticityExplicitLgDeformGrav3DLinear.hh" // Implementation of class methods
+
+#include "data/ElasticityExplicitLgDeformGravData3DLinear.hh"
+
+#include "pylith/topology/Mesh.hh" // USES Quadrature<Mesh>
+#include "pylith/feassemble/Quadrature.hh" // USES Quadrature
+#include "pylith/feassemble/Quadrature3D.hh" // USES Quadrature3D
+#include "pylith/feassemble/GeometryTet3D.hh" // USES GeometryTet3D
+#include "pylith/materials/ElasticIsotropic3D.hh" // USES ElasticIsotropic3D
+#include "spatialdata/spatialdb/GravityField.hh" // USES GravityField
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::feassemble::TestElasticityExplicitLgDeformGrav3DLinear );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::feassemble::TestElasticityExplicitLgDeformGrav3DLinear::setUp(void)
+{ // setUp
+ TestElasticityExplicitLgDeform::setUp();
+
+ _data = new ElasticityExplicitLgDeformGravData3DLinear();
+ _gravityField = new spatialdata::spatialdb::GravityField();
+ CPPUNIT_ASSERT(0 != _quadrature);
+ CPPUNIT_ASSERT(0 != _gravityField);
+ GeometryTet3D geometry;
+ _quadrature->refGeometry(&geometry);
+
+ const double g = 1.0e8;
+ _gravityField->gravAcceleration(g);
+
+ _material = new materials::ElasticIsotropic3D;
+ CPPUNIT_ASSERT(0 != _material);
+
+ CPPUNIT_ASSERT(0 != _data);
+ CPPUNIT_ASSERT_EQUAL(std::string("ElasticIsotropic3D"),
+ std::string(_data->matType));
+} // setUp
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav3DLinear.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav3DLinear.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav3DLinear.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav3DLinear.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,59 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav3DLinear.hh
+ *
+ * @brief C++ TestElasticityExplicitLgDeform object
+ *
+ * C++ unit testing for ElasticityExplicitLgDeform with 1-D linear cells and gravity.
+ */
+
+#if !defined(pylith_feassemble_testelasticityexplicitlgdeformgrav3dlinear_hh)
+#define pylith_feassemble_testelasticityexplicitlgdeformgrav3dlinear_hh
+
+#include "TestElasticityExplicitLgDeform.hh" // ISA TestElasticityExplicitLgDeform
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace feassemble {
+ class TestElasticityExplicitLgDeformGrav3DLinear;
+ } // feassemble
+} // pylith
+
+/// C++ unit testing for ElasticityExplicitLgDeform
+class pylith::feassemble::TestElasticityExplicitLgDeformGrav3DLinear :
+ public TestElasticityExplicitLgDeform
+{ // class TestElasticityExplicitLgDeform3DLinear
+
+ // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+ CPPUNIT_TEST_SUITE( TestElasticityExplicitLgDeformGrav3DLinear );
+
+ CPPUNIT_TEST( testInitialize );
+ CPPUNIT_TEST( testIntegrateResidual );
+ CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testUpdateStateVars );
+
+ CPPUNIT_TEST_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Setup testing data.
+ void setUp(void);
+
+}; // class TestElasticityExplicitLgDeformGrav3DLinear
+
+#endif // pylith_feassemble_testelasticityexplicitlgdeformgrav3dlinear_hh
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav3DQuadratic.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav3DQuadratic.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav3DQuadratic.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav3DQuadratic.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,55 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestElasticityExplicitLgDeformGrav3DQuadratic.hh" // Implementation of class methods
+
+#include "data/ElasticityExplicitLgDeformGravData3DQuadratic.hh"
+
+#include "pylith/topology/Mesh.hh" // USES Quadrature<Mesh>
+#include "pylith/feassemble/Quadrature.hh" // USES Quadrature
+#include "pylith/feassemble/Quadrature3D.hh" // USES Quadrature3D
+#include "pylith/feassemble/GeometryTet3D.hh" // USES GeometryTet3D
+#include "pylith/materials/ElasticIsotropic3D.hh" // USES ElasticIsotropic3D
+#include "spatialdata/spatialdb/GravityField.hh" // USES GravityField
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::feassemble::TestElasticityExplicitLgDeformGrav3DQuadratic );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::feassemble::TestElasticityExplicitLgDeformGrav3DQuadratic::setUp(void)
+{ // setUp
+ TestElasticityExplicitLgDeform::setUp();
+
+ _data = new ElasticityExplicitLgDeformGravData3DQuadratic();
+ _gravityField = new spatialdata::spatialdb::GravityField();
+ CPPUNIT_ASSERT(0 != _quadrature);
+ CPPUNIT_ASSERT(0 != _gravityField);
+ GeometryTet3D geometry;
+ _quadrature->refGeometry(&geometry);
+
+ const double g = 1.0e8;
+ _gravityField->gravAcceleration(g);
+
+ _material = new materials::ElasticIsotropic3D;
+ CPPUNIT_ASSERT(0 != _material);
+
+ CPPUNIT_ASSERT(0 != _data);
+ CPPUNIT_ASSERT_EQUAL(std::string("ElasticIsotropic3D"),
+ std::string(_data->matType));
+} // setUp
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav3DQuadratic.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav3DQuadratic.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav3DQuadratic.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav3DQuadratic.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,59 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/feassemble/TestElasticityExplicitLgDeformGrav3DQuadratic.hh
+ *
+ * @brief C++ TestElasticityExplicitLgDeform object
+ *
+ * C++ unit testing for ElasticityExplicitLgDeform with 1-D quadratic cells and gravity.
+ */
+
+#if !defined(pylith_feassemble_testelasticityexplicitlgdeformgrav3dquadratic_hh)
+#define pylith_feassemble_testelasticityexplicitlgdeformgrav3dquadratic_hh
+
+#include "TestElasticityExplicitLgDeform.hh" // ISA TestElasticityExplicitLgDeform
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace feassemble {
+ class TestElasticityExplicitLgDeformGrav3DQuadratic;
+ } // feassemble
+} // pylith
+
+/// C++ unit testing for ElasticityExplicitLgDeform
+class pylith::feassemble::TestElasticityExplicitLgDeformGrav3DQuadratic :
+ public TestElasticityExplicitLgDeform
+{ // class TestElasticityExplicitLgDeform3DQuadratic
+
+ // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+ CPPUNIT_TEST_SUITE( TestElasticityExplicitLgDeformGrav3DQuadratic );
+
+ CPPUNIT_TEST( testInitialize );
+ CPPUNIT_TEST( testIntegrateResidual );
+ CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testUpdateStateVars );
+
+ CPPUNIT_TEST_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Setup testing data.
+ void setUp(void);
+
+}; // class TestElasticityExplicitLgDeformGrav3DQuadratic
+
+#endif // pylith_feassemble_testelasticityexplicitlgdeformgrav3dquadratic_hh
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,313 @@
+// -*- 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 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;
+
+#if 0 // DEBUGGING
+ residual.view("RESIDUAL");
+ std::cout << "RESIDUAL EXPECTED\n";
+ for (int i=0; i < sizeE; ++i)
+ std::cout << " " << valsE[i] << "\n";
+#endif
+
+ 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;
+ integrator.integrateJacobian(&jacobian, t, &fields);
+ CPPUNIT_ASSERT_EQUAL(false, integrator.needNewJacobian());
+ 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
+
+// ----------------------------------------------------------------------
+// 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
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,105 @@
+// -*- 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 );
+
+ // 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 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
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform1DLinear.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform1DLinear.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform1DLinear.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform1DLinear.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform1DLinear.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform1DLinear.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform1DLinear.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform1DLinear.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,59 @@
+// -*- 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_testelasticityimplicitlgdeform1dlinear_hh)
+#define pylith_feassemble_testelasticityimplicitlgdeform1dlinear_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_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Setup testing data.
+ void setUp(void);
+
+}; // class TestElasticityImplicitLgDeform1DLinear
+
+#endif // pylith_feassemble_testelasticityimplicitlgdeform1dlinear_hh
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform1DQuadratic.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform1DQuadratic.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform1DQuadratic.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform1DQuadratic.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform1DQuadratic.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform1DQuadratic.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform1DQuadratic.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform1DQuadratic.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,59 @@
+// -*- 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_testelasticityimplicitlgdeform1dquadratic_hh)
+#define pylith_feassemble_testelasticityimplicitlgdeform1dquadratic_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_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Setup testing data.
+ void setUp(void);
+
+}; // class TestElasticityImplicitLgDeform1DQuadratic
+
+#endif // pylith_feassemble_testelasticityimplicitlgdeform1dquadratic_hh
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DLinear.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DLinear.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DLinear.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DLinear.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DLinear.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DLinear.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DLinear.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DLinear.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,59 @@
+// -*- 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_testelasticityimplicitlgdeform2dlinear_hh)
+#define pylith_feassemble_testelasticityimplicitlgdeform2dlinear_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_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Setup testing data.
+ void setUp(void);
+
+}; // class TestElasticityImplicitLgDeform2DLinear
+
+#endif // pylith_feassemble_testelasticityimplicitlgdeform2dlinear_hh
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DQuadratic.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DQuadratic.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DQuadratic.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DQuadratic.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DQuadratic.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DQuadratic.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DQuadratic.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform2DQuadratic.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,59 @@
+// -*- 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_testelasticityimplicitlgdeform2dquadratic_hh)
+#define pylith_feassemble_testelasticityimplicitlgdeform2dquadratic_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_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Setup testing data.
+ void setUp(void);
+
+}; // class TestElasticityImplicitLgDeform2DQuadratic
+
+#endif // pylith_feassemble_testelasticityimplicitlgdeform2dquadratic_hh
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform3DLinear.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform3DLinear.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform3DLinear.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform3DLinear.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,49 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestElasticityImplicitLgDeform3DLinear.hh" // Implementation of class methods
+
+#include "data/ElasticityImplicitLgDeformData3DLinear.hh"
+
+#include "pylith/topology/Mesh.hh" // USES Quadrature<Mesh>
+#include "pylith/feassemble/Quadrature.hh" // USES Quadrature
+#include "pylith/feassemble/GeometryTet3D.hh" // USES GeometryTet3D
+#include "pylith/materials/ElasticIsotropic3D.hh" // USES ElasticIsotropic3D
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::feassemble::TestElasticityImplicitLgDeform3DLinear );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::feassemble::TestElasticityImplicitLgDeform3DLinear::setUp(void)
+{ // setUp
+ TestElasticityImplicitLgDeform::setUp();
+
+ _data = new ElasticityImplicitLgDeformData3DLinear();
+ _gravityField = 0;
+ CPPUNIT_ASSERT(0 != _quadrature);
+ GeometryTet3D geometry;
+ _quadrature->refGeometry(&geometry);
+
+ _material = new materials::ElasticIsotropic3D;
+ CPPUNIT_ASSERT(0 != _material);
+
+ CPPUNIT_ASSERT(0 != _data);
+ CPPUNIT_ASSERT_EQUAL(std::string("ElasticIsotropic3D"),
+ std::string(_data->matType));
+} // setUp
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform3DLinear.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform3DLinear.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform3DLinear.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform3DLinear.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,59 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/feassemble/TestElasticityImplicitLgDeform3DLinear.hh
+ *
+ * @brief C++ TestElasticityImplicitLgDeform object
+ *
+ * C++ unit testing for ElasticityImplicitLgDeform with 1-D linear cells.
+ */
+
+#if !defined(pylith_feassemble_testelasticityimplicitlgdeform3dlinear_hh)
+#define pylith_feassemble_testelasticityimplicitlgdeform3dlinear_hh
+
+#include "TestElasticityImplicitLgDeform.hh" // ISA TestElasticityImplicitLgDeform
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace feassemble {
+ class TestElasticityImplicitLgDeform3DLinear;
+ } // feassemble
+} // pylith
+
+/// C++ unit testing for ElasticityImplicitLgDeform
+class pylith::feassemble::TestElasticityImplicitLgDeform3DLinear :
+ public TestElasticityImplicitLgDeform
+{ // class TestElasticityImplicitLgDeform3DLinear
+
+ // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+ CPPUNIT_TEST_SUITE( TestElasticityImplicitLgDeform3DLinear );
+
+ CPPUNIT_TEST( testInitialize );
+ CPPUNIT_TEST( testIntegrateResidual );
+ CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testUpdateStateVars );
+
+ CPPUNIT_TEST_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Setup testing data.
+ void setUp(void);
+
+}; // class TestElasticityImplicitLgDeform3DLinear
+
+#endif // pylith_feassemble_testelasticityimplicitlgdeform3dlinear_hh
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform3DQuadratic.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform3DQuadratic.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform3DQuadratic.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform3DQuadratic.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,49 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestElasticityImplicitLgDeform3DQuadratic.hh" // Implementation of class methods
+
+#include "data/ElasticityImplicitLgDeformData3DQuadratic.hh"
+
+#include "pylith/topology/Mesh.hh" // USES Quadrature<Mesh>
+#include "pylith/feassemble/Quadrature.hh" // USES Quadrature
+#include "pylith/feassemble/GeometryTet3D.hh" // USES GeometryTet3D
+#include "pylith/materials/ElasticIsotropic3D.hh" // USES ElasticIsotropic3D
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::feassemble::TestElasticityImplicitLgDeform3DQuadratic );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::feassemble::TestElasticityImplicitLgDeform3DQuadratic::setUp(void)
+{ // setUp
+ TestElasticityImplicitLgDeform::setUp();
+
+ _data = new ElasticityImplicitLgDeformData3DQuadratic();
+ _gravityField = 0;
+ CPPUNIT_ASSERT(0 != _quadrature);
+ GeometryTet3D geometry;
+ _quadrature->refGeometry(&geometry);
+
+ _material = new materials::ElasticIsotropic3D;
+ CPPUNIT_ASSERT(0 != _material);
+
+ CPPUNIT_ASSERT(0 != _data);
+ CPPUNIT_ASSERT_EQUAL(std::string("ElasticIsotropic3D"),
+ std::string(_data->matType));
+} // setUp
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform3DQuadratic.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeform3DQuadratic.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform3DQuadratic.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeform3DQuadratic.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,59 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/feassemble/TestElasticityImplicitLgDeform3DQuadratic.hh
+ *
+ * @brief C++ TestElasticityImplicitLgDeform object
+ *
+ * C++ unit testing for ElasticityImplicitLgDeform with 1-D quadratic cells.
+ */
+
+#if !defined(pylith_feassemble_testelasticityimplicitlgdeform3dquadratic_hh)
+#define pylith_feassemble_testelasticityimplicitlgdeform3dquadratic_hh
+
+#include "TestElasticityImplicitLgDeform.hh" // ISA TestElasticityImplicitLgDeform
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace feassemble {
+ class TestElasticityImplicitLgDeform3DQuadratic;
+ } // feassemble
+} // pylith
+
+/// C++ unit testing for ElasticityImplicitLgDeform
+class pylith::feassemble::TestElasticityImplicitLgDeform3DQuadratic :
+ public TestElasticityImplicitLgDeform
+{ // class TestElasticityImplicitLgDeform3DQuadratic
+
+ // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+ CPPUNIT_TEST_SUITE( TestElasticityImplicitLgDeform3DQuadratic );
+
+ CPPUNIT_TEST( testInitialize );
+ CPPUNIT_TEST( testIntegrateResidual );
+ CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testUpdateStateVars );
+
+ CPPUNIT_TEST_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Setup testing data.
+ void setUp(void);
+
+}; // class TestElasticityImplicitLgDeform3DQuadratic
+
+#endif // pylith_feassemble_testelasticityimplicitlgdeform3dquadratic_hh
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav1DLinear.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav1DLinear.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav1DLinear.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav1DLinear.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,56 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestElasticityImplicitLgDeformGrav1DLinear.hh" // Implementation of class methods
+
+#include "data/ElasticityImplicitLgDeformGravData1DLinear.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
+#include "spatialdata/spatialdb/GravityField.hh" // USES GravityField
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::feassemble::TestElasticityImplicitLgDeformGrav1DLinear );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::feassemble::TestElasticityImplicitLgDeformGrav1DLinear::setUp(void)
+{ // setUp
+ TestElasticityImplicitLgDeform::setUp();
+
+ _data = new ElasticityImplicitLgDeformGravData1DLinear();
+ _gravityField = new spatialdata::spatialdb::GravityField();
+ CPPUNIT_ASSERT(0 != _quadrature);
+ CPPUNIT_ASSERT(0 != _gravityField);
+ GeometryLine1D geometry;
+ _quadrature->refGeometry(&geometry);
+
+ const double g = 1.0e8;
+ const double gravityDir[] = { -1.0, 0.0, 0.0};
+ _gravityField->gravAcceleration(g);
+ _gravityField->gravityDir(gravityDir[0], gravityDir[1], gravityDir[2]);
+
+ _material = new materials::ElasticStrain1D;
+ CPPUNIT_ASSERT(0 != _material);
+
+ CPPUNIT_ASSERT(0 != _data);
+ CPPUNIT_ASSERT_EQUAL(std::string("ElasticStrain1D"),
+ std::string(_data->matType));
+} // setUp
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav1DLinear.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav1DLinear.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav1DLinear.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav1DLinear.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,59 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav1DLinear.hh
+ *
+ * @brief C++ TestElasticityImplicitLgDeform object
+ *
+ * C++ unit testing for ElasticityImplicitLgDeform with 1-D linear cells and gravity.
+ */
+
+#if !defined(pylith_feassemble_testelasticityimplicitlgdeformgrav1dlinear_hh)
+#define pylith_feassemble_testelasticityimplicitlgdeformgrav1dlinear_hh
+
+#include "TestElasticityImplicitLgDeform.hh" // ISA TestElasticityImplicitLgDeform
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace feassemble {
+ class TestElasticityImplicitLgDeformGrav1DLinear;
+ } // feassemble
+} // pylith
+
+/// C++ unit testing for ElasticityImplicitLgDeform
+class pylith::feassemble::TestElasticityImplicitLgDeformGrav1DLinear :
+ public TestElasticityImplicitLgDeform
+{ // class TestElasticityImplicitLgDeform1DLinear
+
+ // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+ CPPUNIT_TEST_SUITE( TestElasticityImplicitLgDeformGrav1DLinear );
+
+ CPPUNIT_TEST( testInitialize );
+ CPPUNIT_TEST( testIntegrateResidual );
+ CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testUpdateStateVars );
+
+ CPPUNIT_TEST_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Setup testing data.
+ void setUp(void);
+
+}; // class TestElasticityImplicitLgDeformGrav1DLinear
+
+#endif // pylith_feassemble_testelasticityimplicitlgdeformgrav1dlinear_hh
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav1DQuadratic.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav1DQuadratic.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav1DQuadratic.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav1DQuadratic.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,56 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestElasticityImplicitLgDeformGrav1DQuadratic.hh" // Implementation of class methods
+
+#include "data/ElasticityImplicitLgDeformGravData1DQuadratic.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
+#include "spatialdata/spatialdb/GravityField.hh" // USES GravityField
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::feassemble::TestElasticityImplicitLgDeformGrav1DQuadratic );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::feassemble::TestElasticityImplicitLgDeformGrav1DQuadratic::setUp(void)
+{ // setUp
+ TestElasticityImplicitLgDeform::setUp();
+
+ _data = new ElasticityImplicitLgDeformGravData1DQuadratic();
+ _gravityField = new spatialdata::spatialdb::GravityField();
+ CPPUNIT_ASSERT(0 != _quadrature);
+ CPPUNIT_ASSERT(0 != _gravityField);
+ GeometryLine1D geometry;
+ _quadrature->refGeometry(&geometry);
+
+ const double g = 1.0e8;
+ const double gravityDir[] = { -1.0, 0.0, 0.0};
+ _gravityField->gravAcceleration(g);
+ _gravityField->gravityDir(gravityDir[0], gravityDir[1], gravityDir[2]);
+
+ _material = new materials::ElasticStrain1D;
+ CPPUNIT_ASSERT(0 != _material);
+
+ CPPUNIT_ASSERT(0 != _data);
+ CPPUNIT_ASSERT_EQUAL(std::string("ElasticStrain1D"),
+ std::string(_data->matType));
+} // setUp
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav1DQuadratic.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav1DQuadratic.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav1DQuadratic.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav1DQuadratic.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,59 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav1DQuadratic.hh
+ *
+ * @brief C++ TestElasticityImplicitLgDeform object
+ *
+ * C++ unit testing for ElasticityImplicitLgDeform with 1-D quadratic cells and gravity.
+ */
+
+#if !defined(pylith_feassemble_testelasticityimplicitlgdeformgrav1dquadratic_hh)
+#define pylith_feassemble_testelasticityimplicitlgdeformgrav1dquadratic_hh
+
+#include "TestElasticityImplicitLgDeform.hh" // ISA TestElasticityImplicitLgDeform
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace feassemble {
+ class TestElasticityImplicitLgDeformGrav1DQuadratic;
+ } // feassemble
+} // pylith
+
+/// C++ unit testing for ElasticityImplicitLgDeform
+class pylith::feassemble::TestElasticityImplicitLgDeformGrav1DQuadratic :
+ public TestElasticityImplicitLgDeform
+{ // class TestElasticityImplicitLgDeform1DQuadratic
+
+ // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+ CPPUNIT_TEST_SUITE( TestElasticityImplicitLgDeformGrav1DQuadratic );
+
+ CPPUNIT_TEST( testInitialize );
+ CPPUNIT_TEST( testIntegrateResidual );
+ CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testUpdateStateVars );
+
+ CPPUNIT_TEST_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Setup testing data.
+ void setUp(void);
+
+}; // class TestElasticityImplicitLgDeformGrav1DQuadratic
+
+#endif // pylith_feassemble_testelasticityimplicitlgdeformgrav1dquadratic_hh
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav2DLinear.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav2DLinear.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav2DLinear.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav2DLinear.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,56 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestElasticityImplicitLgDeformGrav2DLinear.hh" // Implementation of class methods
+
+#include "data/ElasticityImplicitLgDeformGravData2DLinear.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
+#include "spatialdata/spatialdb/GravityField.hh" // USES GravityField
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::feassemble::TestElasticityImplicitLgDeformGrav2DLinear );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::feassemble::TestElasticityImplicitLgDeformGrav2DLinear::setUp(void)
+{ // setUp
+ TestElasticityImplicitLgDeform::setUp();
+
+ _data = new ElasticityImplicitLgDeformGravData2DLinear();
+ _gravityField = new spatialdata::spatialdb::GravityField();
+ CPPUNIT_ASSERT(0 != _quadrature);
+ CPPUNIT_ASSERT(0 != _gravityField);
+ GeometryTri2D geometry;
+ _quadrature->refGeometry(&geometry);
+
+ const double g = 1.0e8;
+ const double gravityDir[] = { 0.0, -1.0, 0.0 };
+ _gravityField->gravAcceleration(g);
+ _gravityField->gravityDir(gravityDir[0], gravityDir[1], gravityDir[2]);
+
+ _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
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav2DLinear.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav2DLinear.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav2DLinear.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav2DLinear.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,59 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav2DLinear.hh
+ *
+ * @brief C++ TestElasticityImplicitLgDeform object
+ *
+ * C++ unit testing for ElasticityImplicitLgDeform with 2-D linear cells and gravity.
+ */
+
+#if !defined(pylith_feassemble_testelasticityimplicitlgdeformgrav2dlinear_hh)
+#define pylith_feassemble_testelasticityimplicitlgdeformgrav2dlinear_hh
+
+#include "TestElasticityImplicitLgDeform.hh" // ISA TestElasticityImplicitLgDeform
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace feassemble {
+ class TestElasticityImplicitLgDeformGrav2DLinear;
+ } // feassemble
+} // pylith
+
+/// C++ unit testing for ElasticityImplicitLgDeform
+class pylith::feassemble::TestElasticityImplicitLgDeformGrav2DLinear :
+ public TestElasticityImplicitLgDeform
+{ // class TestElasticityImplicitLgDeform2DLinear
+
+ // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+ CPPUNIT_TEST_SUITE( TestElasticityImplicitLgDeformGrav2DLinear );
+
+ CPPUNIT_TEST( testInitialize );
+ CPPUNIT_TEST( testIntegrateResidual );
+ CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testUpdateStateVars );
+
+ CPPUNIT_TEST_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Setup testing data.
+ void setUp(void);
+
+}; // class TestElasticityImplicitLgDeformGrav2DLinear
+
+#endif // pylith_feassemble_testelasticityimplicitlgdeformgrav2dlinear_hh
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav2DQuadratic.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav2DQuadratic.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav2DQuadratic.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav2DQuadratic.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,56 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestElasticityImplicitLgDeformGrav2DQuadratic.hh" // Implementation of class methods
+
+#include "data/ElasticityImplicitLgDeformGravData2DQuadratic.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
+#include "spatialdata/spatialdb/GravityField.hh" // USES GravityField
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::feassemble::TestElasticityImplicitLgDeformGrav2DQuadratic );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::feassemble::TestElasticityImplicitLgDeformGrav2DQuadratic::setUp(void)
+{ // setUp
+ TestElasticityImplicitLgDeform::setUp();
+
+ _data = new ElasticityImplicitLgDeformGravData2DQuadratic();
+ _gravityField = new spatialdata::spatialdb::GravityField();
+ CPPUNIT_ASSERT(0 != _quadrature);
+ CPPUNIT_ASSERT(0 != _gravityField);
+ GeometryTri2D geometry;
+ _quadrature->refGeometry(&geometry);
+
+ const double g = 1.0e8;
+ const double gravityDir[] = { 0.0, -1.0, 0.0 };
+ _gravityField->gravAcceleration(g);
+ _gravityField->gravityDir(gravityDir[0], gravityDir[1], gravityDir[2]);
+
+ _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
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav2DQuadratic.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav2DQuadratic.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav2DQuadratic.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav2DQuadratic.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,59 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav2DQuadratic.hh
+ *
+ * @brief C++ TestElasticityImplicitLgDeform object
+ *
+ * C++ unit testing for ElasticityImplicitLgDeform with 2-D quadratic cells and gravity.
+ */
+
+#if !defined(pylith_feassemble_testelasticityimplicitlgdeformgrav2dquadratic_hh)
+#define pylith_feassemble_testelasticityimplicitlgdeformgrav2dquadratic_hh
+
+#include "TestElasticityImplicitLgDeform.hh" // ISA TestElasticityImplicitLgDeform
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace feassemble {
+ class TestElasticityImplicitLgDeformGrav2DQuadratic;
+ } // feassemble
+} // pylith
+
+/// C++ unit testing for ElasticityImplicitLgDeform
+class pylith::feassemble::TestElasticityImplicitLgDeformGrav2DQuadratic :
+ public TestElasticityImplicitLgDeform
+{ // class TestElasticityImplicitLgDeform2DQuadratic
+
+ // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+ CPPUNIT_TEST_SUITE( TestElasticityImplicitLgDeformGrav2DQuadratic );
+
+ CPPUNIT_TEST( testInitialize );
+ CPPUNIT_TEST( testIntegrateResidual );
+ CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testUpdateStateVars );
+
+ CPPUNIT_TEST_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Setup testing data.
+ void setUp(void);
+
+}; // class TestElasticityImplicitLgDeformGrav2DQuadratic
+
+#endif // pylith_feassemble_testelasticityimplicitlgdeformgrav2dquadratic_hh
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav3DLinear.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav3DLinear.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav3DLinear.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav3DLinear.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,55 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestElasticityImplicitLgDeformGrav3DLinear.hh" // Implementation of class methods
+
+#include "data/ElasticityImplicitLgDeformGravData3DLinear.hh"
+
+#include "pylith/topology/Mesh.hh" // USES Quadrature<Mesh>
+#include "pylith/feassemble/Quadrature.hh" // USES Quadrature
+#include "pylith/feassemble/Quadrature3D.hh" // USES Quadrature3D
+#include "pylith/feassemble/GeometryTet3D.hh" // USES GeometryTet3D
+#include "pylith/materials/ElasticIsotropic3D.hh" // USES ElasticIsotropic3D
+#include "spatialdata/spatialdb/GravityField.hh" // USES GravityField
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::feassemble::TestElasticityImplicitLgDeformGrav3DLinear );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::feassemble::TestElasticityImplicitLgDeformGrav3DLinear::setUp(void)
+{ // setUp
+ TestElasticityImplicitLgDeform::setUp();
+
+ _data = new ElasticityImplicitLgDeformGravData3DLinear();
+ _gravityField = new spatialdata::spatialdb::GravityField();
+ CPPUNIT_ASSERT(0 != _quadrature);
+ CPPUNIT_ASSERT(0 != _gravityField);
+ GeometryTet3D geometry;
+ _quadrature->refGeometry(&geometry);
+
+ const double g = 1.0e8;
+ _gravityField->gravAcceleration(g);
+
+ _material = new materials::ElasticIsotropic3D;
+ CPPUNIT_ASSERT(0 != _material);
+
+ CPPUNIT_ASSERT(0 != _data);
+ CPPUNIT_ASSERT_EQUAL(std::string("ElasticIsotropic3D"),
+ std::string(_data->matType));
+} // setUp
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav3DLinear.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav3DLinear.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav3DLinear.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav3DLinear.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,59 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav3DLinear.hh
+ *
+ * @brief C++ TestElasticityImplicitLgDeform object
+ *
+ * C++ unit testing for ElasticityImplicitLgDeform with 1-D linear cells and gravity.
+ */
+
+#if !defined(pylith_feassemble_testelasticityimplicitlgdeformgrav3dlinear_hh)
+#define pylith_feassemble_testelasticityimplicitlgdeformgrav3dlinear_hh
+
+#include "TestElasticityImplicitLgDeform.hh" // ISA TestElasticityImplicitLgDeform
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace feassemble {
+ class TestElasticityImplicitLgDeformGrav3DLinear;
+ } // feassemble
+} // pylith
+
+/// C++ unit testing for ElasticityImplicitLgDeform
+class pylith::feassemble::TestElasticityImplicitLgDeformGrav3DLinear :
+ public TestElasticityImplicitLgDeform
+{ // class TestElasticityImplicitLgDeform3DLinear
+
+ // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+ CPPUNIT_TEST_SUITE( TestElasticityImplicitLgDeformGrav3DLinear );
+
+ CPPUNIT_TEST( testInitialize );
+ CPPUNIT_TEST( testIntegrateResidual );
+ CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testUpdateStateVars );
+
+ CPPUNIT_TEST_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Setup testing data.
+ void setUp(void);
+
+}; // class TestElasticityImplicitLgDeformGrav3DLinear
+
+#endif // pylith_feassemble_testelasticityimplicitlgdeformgrav3dlinear_hh
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav3DQuadratic.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav3DQuadratic.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav3DQuadratic.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav3DQuadratic.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,55 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestElasticityImplicitLgDeformGrav3DQuadratic.hh" // Implementation of class methods
+
+#include "data/ElasticityImplicitLgDeformGravData3DQuadratic.hh"
+
+#include "pylith/topology/Mesh.hh" // USES Quadrature<Mesh>
+#include "pylith/feassemble/Quadrature.hh" // USES Quadrature
+#include "pylith/feassemble/Quadrature3D.hh" // USES Quadrature3D
+#include "pylith/feassemble/GeometryTet3D.hh" // USES GeometryTet3D
+#include "pylith/materials/ElasticIsotropic3D.hh" // USES ElasticIsotropic3D
+#include "spatialdata/spatialdb/GravityField.hh" // USES GravityField
+
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::feassemble::TestElasticityImplicitLgDeformGrav3DQuadratic );
+
+// ----------------------------------------------------------------------
+// Setup testing data.
+void
+pylith::feassemble::TestElasticityImplicitLgDeformGrav3DQuadratic::setUp(void)
+{ // setUp
+ TestElasticityImplicitLgDeform::setUp();
+
+ _data = new ElasticityImplicitLgDeformGravData3DQuadratic();
+ _gravityField = new spatialdata::spatialdb::GravityField();
+ CPPUNIT_ASSERT(0 != _quadrature);
+ CPPUNIT_ASSERT(0 != _gravityField);
+ GeometryTet3D geometry;
+ _quadrature->refGeometry(&geometry);
+
+ const double g = 1.0e8;
+ _gravityField->gravAcceleration(g);
+
+ _material = new materials::ElasticIsotropic3D;
+ CPPUNIT_ASSERT(0 != _material);
+
+ CPPUNIT_ASSERT(0 != _data);
+ CPPUNIT_ASSERT_EQUAL(std::string("ElasticIsotropic3D"),
+ std::string(_data->matType));
+} // setUp
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav3DQuadratic.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav3DQuadratic.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav3DQuadratic.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav3DQuadratic.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,59 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/feassemble/TestElasticityImplicitLgDeformGrav3DQuadratic.hh
+ *
+ * @brief C++ TestElasticityImplicitLgDeform object
+ *
+ * C++ unit testing for ElasticityImplicitLgDeform with 1-D quadratic cells and gravity.
+ */
+
+#if !defined(pylith_feassemble_testelasticityimplicitlgdeformgrav3dquadratic_hh)
+#define pylith_feassemble_testelasticityimplicitlgdeformgrav3dquadratic_hh
+
+#include "TestElasticityImplicitLgDeform.hh" // ISA TestElasticityImplicitLgDeform
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace feassemble {
+ class TestElasticityImplicitLgDeformGrav3DQuadratic;
+ } // feassemble
+} // pylith
+
+/// C++ unit testing for ElasticityImplicitLgDeform
+class pylith::feassemble::TestElasticityImplicitLgDeformGrav3DQuadratic :
+ public TestElasticityImplicitLgDeform
+{ // class TestElasticityImplicitLgDeform3DQuadratic
+
+ // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+ CPPUNIT_TEST_SUITE( TestElasticityImplicitLgDeformGrav3DQuadratic );
+
+ CPPUNIT_TEST( testInitialize );
+ CPPUNIT_TEST( testIntegrateResidual );
+ CPPUNIT_TEST( testIntegrateJacobian );
+ CPPUNIT_TEST( testUpdateStateVars );
+
+ CPPUNIT_TEST_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Setup testing data.
+ void setUp(void);
+
+}; // class TestElasticityImplicitLgDeformGrav3DQuadratic
+
+#endif // pylith_feassemble_testelasticityimplicitlgdeformgrav3dquadratic_hh
+
+
+// End of file
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegrator.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegrator.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegrator.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -185,6 +185,40 @@
} // testResetCellMatrix
// ----------------------------------------------------------------------
+// Test _lumpCellMatrix()
+void
+pylith::feassemble::TestIntegrator::testLumpCellMatrix(void)
+{ // testLumpCellMatrix
+ Quadrature<topology::Mesh> quadrature;
+ _initQuadrature(&quadrature);
+
+ ElasticityExplicit integrator;
+ integrator.quadrature(&quadrature);
+
+ integrator._initCellMatrix();
+ integrator._initCellVector();
+
+ const size_t sizeM =
+ quadrature.spaceDim() * quadrature.numBasis() *
+ quadrature.spaceDim() * quadrature.numBasis();
+ CPPUNIT_ASSERT_EQUAL(sizeM, integrator._cellMatrix.size());
+ for (size_t i=0; i < sizeM; ++i)
+ integrator._cellMatrix[i] = 1.23 + 1.2*i;
+ integrator._lumpCellMatrix();
+
+ const int numBasis = quadrature.numBasis();
+ const int spaceDim = quadrature.spaceDim();
+ for (int iBasis=0; iBasis < numBasis; ++iBasis)
+ for (int iDim=0; iDim < spaceDim; ++iDim) {
+ double value = 0;
+ const int index = (iBasis*spaceDim+iDim)*numBasis*spaceDim;
+ for (int jBasis=0; jBasis < numBasis; ++jBasis)
+ value += 1.23 + 1.2*(index+jBasis*spaceDim+iDim);
+ CPPUNIT_ASSERT_EQUAL(value, integrator._cellVector[iBasis*spaceDim+iDim]);
+ } // for
+} // testLumpCellMatrix
+
+// ----------------------------------------------------------------------
// Test splitField().
void
pylith::feassemble::TestIntegrator::testSplitField(void)
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegrator.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegrator.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegrator.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -50,6 +50,7 @@
CPPUNIT_TEST( testResetCellVector );
CPPUNIT_TEST( testInitCellMatrix );
CPPUNIT_TEST( testResetCellMatrix );
+ CPPUNIT_TEST( testLumpCellMatrix );
CPPUNIT_TEST( testSplitField );
CPPUNIT_TEST_SUITE_END();
@@ -84,6 +85,9 @@
/// Test _resetCellMatrix().
void testResetCellMatrix(void);
+ /// Test _lumpCellMatrix().
+ void testLumpCellMatrix(void);
+
/// Test splitField().
void testSplitField(void);
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegratorElasticityLgDeform.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestIntegratorElasticityLgDeform.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegratorElasticityLgDeform.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegratorElasticityLgDeform.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,436 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+#include <portinfo>
+
+#include "TestIntegratorElasticityLgDeform.hh" // Implementation of class methods
+
+#include "pylith/feassemble/IntegratorElasticityLgDeform.hh" // USES IntegratorElasticityLgDeform
+
+#include <math.h> // USES fabs()
+
+#include <stdexcept>
+// ----------------------------------------------------------------------
+CPPUNIT_TEST_SUITE_REGISTRATION( pylith::feassemble::TestIntegratorElasticityLgDeform );
+
+// ----------------------------------------------------------------------
+// Test calcDeformation() for 1-D.
+void
+pylith::feassemble::TestIntegratorElasticityLgDeform::testCalcDeformation1D(void)
+{ // testCalcDeformation1D
+ // N0 = 0.5 * (1 - x)
+ // N1 = 0.5 * (1 + x)
+ // dN0/dx = -0.5
+ // dN1/dx = +0.5
+ const int dim = 1;
+ const int numBasis = 2;
+ const int numQuadPts = 2;
+ const double verticesVals[] = { -1.0, 1.0 };
+ const double basisDerivVals[] = {
+ -0.50, 0.50,
+ -0.50, 0.50 };
+ const int tensorSize = 1;
+
+ const int size = numQuadPts * dim*dim;
+ double_array deform(size);
+ double_array basisDeriv(basisDerivVals, numQuadPts*numBasis*dim);
+ double_array vertices(verticesVals, numBasis*dim);
+
+ const double tolerance = 1.0e-06;
+
+ { // Rigid body translation
+ // u(x) = 1.0
+ const double dispVals[] = { 1.0, 1.0 };
+ const double deformE[] = { 1.0, 1.0 };
+
+ double_array disp(dispVals, numBasis*dim);
+
+ IntegratorElasticityLgDeform::_calcDeformation(&deform,
+ basisDeriv, vertices, disp,
+ numBasis, numQuadPts, dim);
+
+ CPPUNIT_ASSERT_EQUAL(size, int(deform.size()));
+ for (int i=0; i < size; ++i)
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(deformE[i], deform[i], tolerance);
+ } // Rigid body translation
+
+ { // Uniform strain
+ // u(x) = 0.1*x
+ const double dispVals[] = { -0.1, 0.1 };
+ const double deformE[] = { 1.1, 1.1 };
+
+ double_array disp(dispVals, numBasis*dim);
+
+ IntegratorElasticityLgDeform::_calcDeformation(&deform,
+ basisDeriv, vertices, disp,
+ numBasis, numQuadPts, dim);
+
+ CPPUNIT_ASSERT_EQUAL(size, int(deform.size()));
+ for (int i=0; i < size; ++i)
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(deformE[i], deform[i], tolerance);
+ } // Uniform strain
+} // testCalcDeformation1D
+
+// ----------------------------------------------------------------------
+// Test calcDeformation() for 2-D.
+void
+pylith::feassemble::TestIntegratorElasticityLgDeform::testCalcDeformation2D(void)
+{ // testCalcDeformation2D
+ // N0 = x
+ // N1 = y
+ // N2 = 1 - x - y
+ // dN0/dx = +1.0, dN0/dy = 0.0
+ // dN1/dx = 0.0, dN1/dy = +1.0
+ // dN2/dx = -1.0, dN2/dy = -1.0
+ const int dim = 2;
+ const int numBasis = 3;
+ const int numQuadPts = 2;
+ const double verticesVals[] = {
+ 1.0, 0.0,
+ 0.0, 1.0,
+ 0.0, 0.0,
+ };
+ const double basisDerivVals[] = {
+ +1.0, 0.0, 0.0, +1.0, -1.0, -1.0,
+ +1.0, 0.0, 0.0, +1.0, -1.0, -1.0
+ };
+ const int tensorSize = 3;
+
+ const int size = numQuadPts * dim*dim;
+ double_array deform(size);
+ double_array basisDeriv(basisDerivVals, numQuadPts*numBasis*dim);
+ double_array vertices(verticesVals, numBasis*dim);
+
+ const double tolerance = 1.0e-06;
+
+ { // Rigid body translation
+ // ux(x,y) = 0.5
+ // uy(x,y) = 0.2
+ const double dispVals[] = {
+ 0.5, 0.2,
+ 0.5, 0.2,
+ 0.5, 0.2,
+ };
+ const double deformE[] = {
+ 1.0, 0.0, 0.0, 1.0,
+ 1.0, 0.0, 0.0, 1.0,
+ };
+
+ double_array disp(dispVals, numBasis*dim);
+
+ IntegratorElasticityLgDeform::_calcDeformation(&deform,
+ basisDeriv, vertices, disp,
+ numBasis, numQuadPts, dim);
+
+ CPPUNIT_ASSERT_EQUAL(size, int(deform.size()));
+ for (int i=0; i < size; ++i)
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(deformE[i], deform[i], tolerance);
+ } // Rigid body translation
+
+ { // Rigid body translation + rotation
+ // ux(x,y) = 0.5 + cos(theta)*x + sin(theta)*y - x0
+ // uy(x,y) = 0.2 - sin(theta)*x + cos(theta)*y - y0
+ // theta = pi/6
+ const double pi = 4.0*atan(1.0);
+ const double theta = pi / 6.0;
+ const double dispVals[] = {
+ 0.5+cos(theta)*1.0+sin(theta)*0.0-1.0,
+ 0.2-sin(theta)*1.0+cos(theta)*0.0-0.0,
+
+ 0.5+cos(theta)*0.0+sin(theta)*1.0-0.0,
+ 0.2-sin(theta)*0.0+cos(theta)*1.0-1.0,
+
+ 0.5+cos(theta)*0.0+sin(theta)*0.0-0.0,
+ 0.2-sin(theta)*0.0+cos(theta)*0.0-0.0,
+ };
+ const double deformE[] = {
+ cos(theta), sin(theta), -sin(theta), cos(theta),
+ cos(theta), sin(theta), -sin(theta), cos(theta),
+ };
+
+ double_array disp(dispVals, numBasis*dim);
+
+ IntegratorElasticityLgDeform::_calcDeformation(&deform,
+ basisDeriv, vertices, disp,
+ numBasis, numQuadPts, dim);
+
+ CPPUNIT_ASSERT_EQUAL(size, int(deform.size()));
+ for (int i=0; i < size; ++i)
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(deformE[i], deform[i], tolerance);
+ } // Rigid body translation + rotation
+
+ { // Uniform strain
+ // Let ux(x,y) = +0.4 + 0.3*x + 0.8*y
+ // Ley uy(x,y) = -2.0 + 0.5*x - 0.2*y
+ const double dispVals[] = {
+ 0.7, -1.5,
+ 1.2, -2.2,
+ 0.4, -2.0
+ };
+ const double deformE[] = {
+ 1.3, 0.8, 0.5, 0.8,
+ 1.3, 0.8, 0.5, 0.8,
+ };
+
+ double_array disp(dispVals, numBasis*dim);
+
+ IntegratorElasticityLgDeform::_calcDeformation(&deform,
+ basisDeriv, vertices, disp,
+ numBasis, numQuadPts, dim);
+
+ CPPUNIT_ASSERT_EQUAL(size, int(deform.size()));
+ for (int i=0; i < size; ++i)
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(deformE[i], deform[i], tolerance);
+ } // Uniform strain
+} // testCalcDeformation2D
+
+// ----------------------------------------------------------------------
+// Test calcDeformation() for 3-D.
+void
+pylith::feassemble::TestIntegratorElasticityLgDeform::testCalcDeformation3D(void)
+{ // testCalcDeformation3D
+ // N0 = 0.125 * (1-x) * (1-y) * (1-z)
+ // N1 = 0.125 * (1+x) * (1-y) * (1-z)
+ // N2 = 0.125 * (1+x) * (1+y) * (1-z)
+ // N3 = 0.125 * (1-x) * (1+y) * (1-z)
+ // N4 = 0.125 * (1-x) * (1-y) * (1+z)
+ // N5 = 0.125 * (1+x) * (1-y) * (1+z)
+ // N6 = 0.125 * (1+x) * (1+y) * (1+z)
+ // N7 = 0.125 * (1-x) * (1+y) * (1+z)
+ // dN0/dx=-0.125, dN0/dy=-0.125, dN0/dz=-0.125
+ // dN1/dx=+0.125, dN1/dy=-0.125, dN1/dz=-0.125
+ // dN2/dx=+0.125, dN2/dy=+0.125, dN2/dz=-0.125
+ // dN3/dx=-0.125, dN3/dy=+0.125, dN3/dz=-0.125
+ // dN4/dx=-0.125, dN0/dy=-0.125, dN0/dz=+0.125
+ // dN5/dx=+0.125, dN1/dy=-0.125, dN1/dz=+0.125
+ // dN6/dx=+0.125, dN2/dy=+0.125, dN2/dz=+0.125
+ // dN7/dx=-0.125, dN3/dy=+0.125, dN3/dz=+0.125
+ const int dim = 3;
+ const int numBasis = 8;
+ const int numQuadPts = 1;
+ const double verticesVals[] = {
+ -1.0, -1.0, -1.0,
+ +1.0, -1.0, -1.0,
+ +1.0, +1.0, -1.0,
+ -1.0, +1.0, -1.0,
+ -1.0, -1.0, +1.0,
+ +1.0, -1.0, +1.0,
+ +1.0, +1.0, +1.0,
+ -1.0, +1.0, +1.0,
+ };
+ const double basisDerivVals[] = {
+ -0.125, -0.125, -0.125,
+ +0.125, -0.125, -0.125,
+ +0.125, +0.125, -0.125,
+ -0.125, +0.125, -0.125,
+ -0.125, -0.125, +0.125,
+ +0.125, -0.125, +0.125,
+ +0.125, +0.125, +0.125,
+ -0.125, +0.125, +0.125,
+ };
+ const int tensorSize = 3;
+
+ const int size = numQuadPts * dim*dim;
+ double_array deform(size);
+ double_array basisDeriv(basisDerivVals, numQuadPts*numBasis*dim);
+ double_array vertices(verticesVals, numBasis*dim);
+
+ const double tolerance = 1.0e-06;
+
+ { // Rigid body translation
+ // ux(x,y,z) = 0.5
+ // uy(x,y,z) = 0.2
+ // uz(x,y,z) = 0.3
+ const double dispVals[] = {
+ 0.5, 0.2, 0.3,
+ 0.5, 0.2, 0.3,
+ 0.5, 0.2, 0.3,
+ 0.5, 0.2, 0.3,
+ 0.5, 0.2, 0.3,
+ 0.5, 0.2, 0.3,
+ 0.5, 0.2, 0.3,
+ 0.5, 0.2, 0.3,
+ };
+ const double deformE[] = {
+ 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0,
+ 1.0, 0.0, 0.0, 0.0, 1.0, 0.0, 0.0, 0.0, 1.0,
+ };
+
+ double_array disp(dispVals, numBasis*dim);
+
+ IntegratorElasticityLgDeform::_calcDeformation(&deform,
+ basisDeriv, vertices, disp,
+ numBasis, numQuadPts, dim);
+
+ CPPUNIT_ASSERT_EQUAL(size, int(deform.size()));
+ for (int i=0; i < size; ++i)
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(deformE[i], deform[i], tolerance);
+ } // Rigid body translation
+
+ { // Uniform strain
+ // Let ux(x,y,z) = +0.4 + 0.3*x + 0.8*y - 0.2*z
+ // Ley uy(x,y,z) = -2.0 + 0.5*x - 0.2*y + 0.6*z
+ // Ley uz(x,y,z) = +0.7 + 0.8*x - 0.9*y - 0.1*z
+ const double dispVals[] = {
+ +0.4+0.3*-1+0.8*-1-0.2*-1,
+ -2.0+0.5*-1-0.2*-1+0.6*-1,
+ +0.7+0.8*-1-0.9*-1-0.1*-1,
+
+ +0.4+0.3*+1+0.8*-1-0.2*-1,
+ -2.0+0.5*+1-0.2*-1+0.6*-1,
+ +0.7+0.8*+1-0.9*-1-0.1*-1,
+
+ +0.4+0.3*+1+0.8*+1-0.2*-1,
+ -2.0+0.5*+1-0.2*+1+0.6*-1,
+ +0.7+0.8*+1-0.9*+1-0.1*-1,
+
+ +0.4+0.3*-1+0.8*+1-0.2*-1,
+ -2.0+0.5*-1-0.2*+1+0.6*-1,
+ +0.7+0.8*-1-0.9*+1-0.1*-1,
+
+ +0.4+0.3*-1+0.8*-1-0.2*+1,
+ -2.0+0.5*-1-0.2*-1+0.6*+1,
+ +0.7+0.8*-1-0.9*-1-0.1*+1,
+
+ +0.4+0.3*+1+0.8*-1-0.2*+1,
+ -2.0+0.5*+1-0.2*-1+0.6*+1,
+ +0.7+0.8*+1-0.9*-1-0.1*+1,
+
+ +0.4+0.3*+1+0.8*+1-0.2*+1,
+ -2.0+0.5*+1-0.2*+1+0.6*+1,
+ +0.7+0.8*+1-0.9*+1-0.1*+1,
+
+ +0.4+0.3*-1+0.8*+1-0.2*+1,
+ -2.0+0.5*-1-0.2*+1+0.6*+1,
+ +0.7+0.8*-1-0.9*+1-0.1*+1,
+
+ };
+ const double deformE[] = {
+ 1.3, 0.8, -0.2,
+ 0.5, 0.8, 0.6,
+ 0.8, -0.9, 0.9,
+ };
+
+ double_array disp(dispVals, numBasis*dim);
+
+ IntegratorElasticityLgDeform::_calcDeformation(&deform,
+ basisDeriv, vertices, disp,
+ numBasis, numQuadPts, dim);
+
+ CPPUNIT_ASSERT_EQUAL(size, int(deform.size()));
+ for (int i=0; i < size; ++i)
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(deformE[i], deform[i], tolerance);
+ } // Uniform strain
+} // testCalcDeformation3D
+
+// ----------------------------------------------------------------------
+// Test calcTotalStrain1D().
+void
+pylith::feassemble::TestIntegratorElasticityLgDeform::testCalcTotalStrain1D(void)
+{ // testCalcTotalStrain1D
+ // Deformation tensor X
+ // X = [ 2.0 ], [ 0.4 ]
+ const int dim = 1;
+ const int numQuadPts = 2;
+ const double deformVals[] = {
+ 2.0, 0.4,
+ };
+ const double strainE[] = {
+ 0.5*(2.0*2.0-1.0), 0.5*(0.4*0.4-1.0),
+ };
+ const int tensorSize = 1;
+
+ const int size = numQuadPts * tensorSize;
+ double_array strain(size);
+
+ double_array deform(deformVals, numQuadPts*dim*dim);
+
+ IntegratorElasticityLgDeform::_calcTotalStrain1D(&strain,
+ deform, numQuadPts);
+
+ const double tolerance = 1.0e-06;
+ CPPUNIT_ASSERT_EQUAL(size, int(strain.size()));
+ for (int i=0; i < size; ++i)
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(strainE[i], strain[i], tolerance);
+} // testCalcTotalStrain1D
+
+// ----------------------------------------------------------------------
+// Test calcTotalStrain2D().
+void
+pylith::feassemble::TestIntegratorElasticityLgDeform::testCalcTotalStrain2D(void)
+{ // testCalcTotalStrain2D
+ // Deformation tensor X
+ // X = [ 2.0, 0.4 ] [ 1.5, 0.2 ]
+ // [ 0.6, 1.4 ], [ -0.9, 0.8 ]
+ const int dim = 2;
+ const int numQuadPts = 2;
+ const double deformVals[] = {
+ 2.0, 0.4, 0.6, 1.4,
+ 1.5, 0.2, -0.9, 0.8,
+ };
+ const double strainE[] = {
+ 1.68, 0.56, 0.82,
+ 1.03, -0.16, -0.21,
+ };
+ const int tensorSize = 3;
+
+ const int size = numQuadPts * tensorSize;
+ double_array strain(size);
+
+ double_array deform(deformVals, numQuadPts*dim*dim);
+
+ IntegratorElasticityLgDeform::_calcTotalStrain2D(&strain,
+ deform, numQuadPts);
+
+ const double tolerance = 1.0e-06;
+ CPPUNIT_ASSERT_EQUAL(size, int(strain.size()));
+ for (int i=0; i < size; ++i)
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(strainE[i], strain[i], tolerance);
+} // testCalcTotalStrain2D
+
+// ----------------------------------------------------------------------
+// Test calcTotalStrain3D().
+void
+pylith::feassemble::TestIntegratorElasticityLgDeform::testCalcTotalStrain3D(void)
+{ // testCalcTotalStrain3D
+ // Deformation tensor X
+ // X = [ 2.0, 0.4, 0.3 ] [ 1.5, 0.2, -0.1 ]
+ // [ 0.6, 1.4, -0.8 ] [ -0.9, 0.8, 0.3 ]
+ // [ -0.1, 0.6, 1.0 ], [ -0.8, 0.5, 1.2 ]
+ const int dim = 3;
+ const int numQuadPts = 2;
+ const double deformVals[] = {
+ 2.0, 0.4, 0.3, 0.6, 1.4, -0.8, -0.1, 0.6, 1.0,
+ 1.5, 0.2, -0.1, -0.9, 0.8, 0.3, -0.8, 0.5, 1.2,
+ };
+ const double strainE[] = {
+ 1.685, 0.74, 0.365, 0.79, -0.2, 0.01,
+ 1.35, -0.035, 0.27, -0.41, 0.41, -0.69,
+ };
+ const int tensorSize = 6;
+
+ const int size = numQuadPts * tensorSize;
+ double_array strain(size);
+
+ double_array deform(deformVals, numQuadPts*dim*dim);
+
+ IntegratorElasticityLgDeform::_calcTotalStrain3D(&strain,
+ deform, numQuadPts);
+
+ const double tolerance = 1.0e-06;
+ CPPUNIT_ASSERT_EQUAL(size, int(strain.size()));
+ for (int i=0; i < size; ++i)
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(strainE[i], strain[i], tolerance);
+} // testCalcTotalStrain3D
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegratorElasticityLgDeform.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/TestIntegratorElasticityLgDeform.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegratorElasticityLgDeform.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestIntegratorElasticityLgDeform.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,75 @@
+// -*- C++ -*-
+//
+// ----------------------------------------------------------------------
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ----------------------------------------------------------------------
+//
+
+/**
+ * @file unittests/libtests/feassemble/TestIntegratorElasticityLgDeform.hh
+ *
+ * @brief C++ TestIntegratorElasticityLgDeform object
+ *
+ * C++ unit testing for IntegratorElasticityLgDeform.
+ */
+
+#if !defined(pylith_feassemble_testintegratorelasticitylgdeform_hh)
+#define pylith_feassemble_testintegratorelasticitylgdeform_hh
+
+#include <cppunit/extensions/HelperMacros.h>
+
+/// Namespace for pylith package
+namespace pylith {
+ namespace feassemble {
+ class TestIntegratorElasticityLgDeform;
+ } // feassemble
+} // pylith
+
+/// C++ unit testing for Elasticity
+class pylith::feassemble::TestIntegratorElasticityLgDeform : public CppUnit::TestFixture
+{ // class TestIntegratorElasticityLgDeform
+
+ // CPPUNIT TEST SUITE /////////////////////////////////////////////////
+ CPPUNIT_TEST_SUITE( TestIntegratorElasticityLgDeform );
+
+ CPPUNIT_TEST( testCalcDeformation1D );
+ CPPUNIT_TEST( testCalcDeformation2D );
+ CPPUNIT_TEST( testCalcDeformation3D );
+ CPPUNIT_TEST( testCalcTotalStrain1D );
+ CPPUNIT_TEST( testCalcTotalStrain2D );
+ CPPUNIT_TEST( testCalcTotalStrain3D );
+
+ CPPUNIT_TEST_SUITE_END();
+
+ // PUBLIC METHODS /////////////////////////////////////////////////////
+public :
+
+ /// Test calcDeformation() for 1-D.
+ void testCalcDeformation1D(void);
+
+ /// Test calcDeformation() for 2-D.
+ void testCalcDeformation2D(void);
+
+ /// Test calcDeformation() for 3-D.
+ void testCalcDeformation3D(void);
+
+ /// Test calcTotalStrain1D().
+ void testCalcTotalStrain1D(void);
+
+ /// Test calcTotalStrain2D().
+ void testCalcTotalStrain2D(void);
+
+ /// Test calcTotalStrain3D().
+ void testCalcTotalStrain3D(void);
+
+}; // class TestIntegratorElasticityLgDeform
+
+#endif // pylith_feassemble_testintegratorelasticitylgdeform_hh
+
+
+// End of file
Property changes on: short/3D/PyLith/trunk/unittests/libtests/feassemble/data
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicit.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicit.py 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicit.py 2009-12-10 01:52:12 UTC (rev 16094)
@@ -15,14 +15,14 @@
## @brief Python application for generating C++ data files for testing
## C++ ElasticityExplicit object.
-from IntegratorElasticity import IntegratorElasticity
+from pyre.components.Component import Component
import numpy
# ----------------------------------------------------------------------
# ElasticityExplicit class
-class ElasticityExplicit(IntegratorElasticity):
+class ElasticityExplicit(Component):
"""
Python application for generating C++ data files for testing C++
ElasticityExplicit object.
@@ -34,45 +34,43 @@
"""
Constructor.
"""
- IntegratorElasticity.__init__(self, name)
+ Component.__init__(self, name, facility="formulation")
return
# PRIVATE METHODS ////////////////////////////////////////////////////
- def _calculateResidual(self):
+ def calculateResidual(self, integrator):
"""
Calculate contribution to residual of operator for integrator.
{r} = (1/dt**2)[M](-{u(t+dt)} + 2 {u(t)} - {u(t-dt)}) -
[K]{u(t)}
"""
- K = self._calculateStiffnessMat()
- M = self._calculateMassMat()
+ K = integrator._calculateStiffnessMat()
+ M = integrator._calculateMassMat()
- dispResult = self.fieldT - self.fieldTmdt
- self.valsResidual = 1.0/self.dt**2 * numpy.dot(M, dispResult) - \
- numpy.dot(K, self.fieldT)
- return
+ dispResult = integrator.fieldT - integrator.fieldTmdt
+ residual = 1.0/integrator.dt**2 * numpy.dot(M, dispResult) - \
+ numpy.dot(K, integrator.fieldT)
+ return residual.flatten()
- def _calculateJacobian(self):
+ def calculateJacobian(self, integrator):
"""
Calculate contribution to Jacobian matrix of operator for integrator.
[A] = (1/dt**2)[M]
"""
- M = self._calculateMassMat()
+ M = integrator._calculateMassMat()
- self.valsJacobian = 1.0/self.dt**2 * M
- return
+ jacobian = 1.0/integrator.dt**2 * M
+ return jacobian
-# MAIN /////////////////////////////////////////////////////////////////
-if __name__ == "__main__":
+# FACTORY //////////////////////////////////////////////////////////////
+def formulation():
+ return ElasticityExplicit()
- app = ElasticityExplicit()
- app.run()
-
# End of file
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application elasticityexplicit.
+// This file was generated from python application integratorelasticity.
#include "ElasticityExplicitData1DLinear.hh"
@@ -89,7 +89,7 @@
};
const double pylith::feassemble::ElasticityExplicitData1DLinear::_valsResidual[] = {
- 1.60042188e+10,
+ 1.60042187e+10,
-1.59957812e+10,
};
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DLinear.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application elasticityexplicit.
+// This file was generated from python application integratorelasticity.
#if !defined(pylith_feassemble_elasticityexplicitdata1dlinear_hh)
#define pylith_feassemble_elasticityexplicitdata1dlinear_hh
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DQuadratic.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DQuadratic.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application elasticityexplicit.
+// This file was generated from python application integratorelasticity.
#include "ElasticityExplicitData1DQuadratic.hh"
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DQuadratic.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData1DQuadratic.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application elasticityexplicit.
+// This file was generated from python application integratorelasticity.
#if !defined(pylith_feassemble_elasticityexplicitdata1dquadratic_hh)
#define pylith_feassemble_elasticityexplicitdata1dquadratic_hh
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DLinear.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DLinear.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application elasticityexplicit.
+// This file was generated from python application integratorelasticity.
#include "ElasticityExplicitData2DLinear.hh"
@@ -58,7 +58,7 @@
};
const double pylith::feassemble::ElasticityExplicitData2DLinear::_quadPts[] = {
- 3.33333333e-01, 3.33333333e-01,
+ -3.33333333e-01, -3.33333333e-01,
};
const double pylith::feassemble::ElasticityExplicitData2DLinear::_quadWts[] = {
@@ -66,8 +66,8 @@
};
const double pylith::feassemble::ElasticityExplicitData2DLinear::_basis[] = {
- -3.33333333e-01, 6.66666667e-01,
- 6.66666667e-01,};
+ 3.33333333e-01, 3.33333333e-01,
+ 3.33333333e-01,};
const double pylith::feassemble::ElasticityExplicitData2DLinear::_basisDerivRef[] = {
-5.00000000e-01, -5.00000000e-01,
@@ -94,30 +94,30 @@
};
const double pylith::feassemble::ElasticityExplicitData2DLinear::_valsResidual[] = {
- -1.66791140e+10, 3.09147184e+10,
- -2.30469823e+09, -2.72112551e+10,
- 1.89835830e+10, -3.70266130e+09,
+ -1.66787702e+10, 3.09146039e+10,
+ -2.30412532e+09, -2.72121717e+10,
+ 1.89841559e+10, -3.70357797e+09,
};
const double pylith::feassemble::ElasticityExplicitData2DLinear::_valsJacobian[] = {
3.81944444e+05, 0.00000000e+00,
- -7.63888889e+05, 0.00000000e+00,
- -7.63888889e+05, 0.00000000e+00,
+ 3.81944444e+05, 0.00000000e+00,
+ 3.81944444e+05, 0.00000000e+00,
0.00000000e+00, 3.81944444e+05,
- 0.00000000e+00, -7.63888889e+05,
- 0.00000000e+00, -7.63888889e+05,
- -7.63888889e+05, 0.00000000e+00,
- 1.52777778e+06, 0.00000000e+00,
- 1.52777778e+06, 0.00000000e+00,
- 0.00000000e+00, -7.63888889e+05,
- 0.00000000e+00, 1.52777778e+06,
- 0.00000000e+00, 1.52777778e+06,
- -7.63888889e+05, 0.00000000e+00,
- 1.52777778e+06, 0.00000000e+00,
- 1.52777778e+06, 0.00000000e+00,
- 0.00000000e+00, -7.63888889e+05,
- 0.00000000e+00, 1.52777778e+06,
- 0.00000000e+00, 1.52777778e+06,
+ 0.00000000e+00, 3.81944444e+05,
+ 0.00000000e+00, 3.81944444e+05,
+ 3.81944444e+05, 0.00000000e+00,
+ 3.81944444e+05, 0.00000000e+00,
+ 3.81944444e+05, 0.00000000e+00,
+ 0.00000000e+00, 3.81944444e+05,
+ 0.00000000e+00, 3.81944444e+05,
+ 0.00000000e+00, 3.81944444e+05,
+ 3.81944444e+05, 0.00000000e+00,
+ 3.81944444e+05, 0.00000000e+00,
+ 3.81944444e+05, 0.00000000e+00,
+ 0.00000000e+00, 3.81944444e+05,
+ 0.00000000e+00, 3.81944444e+05,
+ 0.00000000e+00, 3.81944444e+05,
};
pylith::feassemble::ElasticityExplicitData2DLinear::ElasticityExplicitData2DLinear(void)
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DLinear.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DLinear.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application elasticityexplicit.
+// This file was generated from python application integratorelasticity.
#if !defined(pylith_feassemble_elasticityexplicitdata2dlinear_hh)
#define pylith_feassemble_elasticityexplicitdata2dlinear_hh
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DQuadratic.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DQuadratic.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application elasticityexplicit.
+// This file was generated from python application integratorelasticity.
#include "ElasticityExplicitData2DQuadratic.hh"
@@ -25,7 +25,7 @@
const int pylith::feassemble::ElasticityExplicitData2DQuadratic::_numBasis = 6;
-const int pylith::feassemble::ElasticityExplicitData2DQuadratic::_numQuadPts = 3;
+const int pylith::feassemble::ElasticityExplicitData2DQuadratic::_numQuadPts = 6;
const char* pylith::feassemble::ElasticityExplicitData2DQuadratic::_matType = "ElasticPlaneStrain";
@@ -64,29 +64,59 @@
};
const double pylith::feassemble::ElasticityExplicitData2DQuadratic::_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,
- -7.50000000e-01, -7.50000000e-01,
+ 2.50000000e-01, 2.50000000e-01,
};
const double pylith::feassemble::ElasticityExplicitData2DQuadratic::_quadWts[] = {
- 6.66666667e-01, 6.66666667e-01, 6.66666667e-01,
+ 3.33333333e-01, 3.33333333e-01, 3.33333333e-01, 3.33333333e-01, 3.33333333e-01, 3.33333333e-01,
};
const double pylith::feassemble::ElasticityExplicitData2DQuadratic::_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, -9.37500000e-02,
- -9.37500000e-02, 6.25000000e-02,
- 3.75000000e-01, 3.75000000e-01,
+ 3.75000000e-01, 1.56250000e-01,
+ 1.56250000e-01, 1.56250000e+00,
+ -6.25000000e-01, -6.25000000e-01,
};
const double pylith::feassemble::ElasticityExplicitData2DQuadratic::_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,
@@ -98,12 +128,12 @@
1.00000000e+00, 2.50000000e-01,
-1.00000000e+00, -2.50000000e-01,
5.00000000e-01, -2.50000000e-01,
- -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,
+ 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::ElasticityExplicitData2DQuadratic::_fieldTIncr[] = {
@@ -134,87 +164,87 @@
};
const double pylith::feassemble::ElasticityExplicitData2DQuadratic::_valsResidual[] = {
- -5.90114822e+09, 4.71777415e+10,
- -1.39396421e+10, -6.36913623e+09,
- 4.56555501e+08, 1.65074214e+10,
- 2.42225720e+10, -8.30477279e+09,
- -2.84015238e+10, -6.85803760e+10,
- 2.35671240e+10, 1.95727783e+10,
+ 1.06595078e+10, 9.01579396e+10,
+ -2.93254295e+10, -4.67249883e+09,
+ 4.90758945e+09, 6.17199466e+10,
+ 6.30081264e+10, 1.02122281e+11,
+ -6.40775573e+10, -1.84807617e+11,
+ 1.48314194e+10, -6.45195820e+10,
};
const double pylith::feassemble::ElasticityExplicitData2DQuadratic::_valsJacobian[] = {
- 2.37304687e+06, 0.00000000e+00,
- -3.95507812e+05, 0.00000000e+00,
- -3.95507812e+05, 0.00000000e+00,
- -3.51562500e+05, 0.00000000e+00,
- 7.91015625e+05, 0.00000000e+00,
- 7.91015625e+05, 0.00000000e+00,
- 0.00000000e+00, 2.37304687e+06,
- 0.00000000e+00, -3.95507812e+05,
- 0.00000000e+00, -3.95507812e+05,
- 0.00000000e+00, -3.51562500e+05,
- 0.00000000e+00, 7.91015625e+05,
- 0.00000000e+00, 7.91015625e+05,
- -3.95507812e+05, 0.00000000e+00,
- 2.63671875e+05, 0.00000000e+00,
- 1.31835937e+05, 0.00000000e+00,
- -4.39453125e+05, 0.00000000e+00,
- -1.58203125e+06, 0.00000000e+00,
- -7.91015625e+05, 0.00000000e+00,
- 0.00000000e+00, -3.95507812e+05,
- 0.00000000e+00, 2.63671875e+05,
- 0.00000000e+00, 1.31835937e+05,
- 0.00000000e+00, -4.39453125e+05,
- 0.00000000e+00, -1.58203125e+06,
- 0.00000000e+00, -7.91015625e+05,
- -3.95507812e+05, 0.00000000e+00,
- 1.31835937e+05, 0.00000000e+00,
- 2.63671875e+05, 0.00000000e+00,
- -4.39453125e+05, 0.00000000e+00,
- -7.91015625e+05, 0.00000000e+00,
- -1.58203125e+06, 0.00000000e+00,
- 0.00000000e+00, -3.95507812e+05,
- 0.00000000e+00, 1.31835937e+05,
- 0.00000000e+00, 2.63671875e+05,
- 0.00000000e+00, -4.39453125e+05,
- 0.00000000e+00, -7.91015625e+05,
- 0.00000000e+00, -1.58203125e+06,
- -3.51562500e+05, 0.00000000e+00,
- -4.39453125e+05, 0.00000000e+00,
- -4.39453125e+05, 0.00000000e+00,
- 1.93359375e+06, 0.00000000e+00,
- 3.86718750e+06, 0.00000000e+00,
- 3.86718750e+06, 0.00000000e+00,
- 0.00000000e+00, -3.51562500e+05,
- 0.00000000e+00, -4.39453125e+05,
- 0.00000000e+00, -4.39453125e+05,
- 0.00000000e+00, 1.93359375e+06,
- 0.00000000e+00, 3.86718750e+06,
- 0.00000000e+00, 3.86718750e+06,
- 7.91015625e+05, 0.00000000e+00,
- -1.58203125e+06, 0.00000000e+00,
- -7.91015625e+05, 0.00000000e+00,
- 3.86718750e+06, 0.00000000e+00,
- 1.10742188e+07, 0.00000000e+00,
- 6.32812500e+06, 0.00000000e+00,
- 0.00000000e+00, 7.91015625e+05,
- 0.00000000e+00, -1.58203125e+06,
- 0.00000000e+00, -7.91015625e+05,
- 0.00000000e+00, 3.86718750e+06,
- 0.00000000e+00, 1.10742188e+07,
- 0.00000000e+00, 6.32812500e+06,
- 7.91015625e+05, 0.00000000e+00,
- -7.91015625e+05, 0.00000000e+00,
- -1.58203125e+06, 0.00000000e+00,
- 3.86718750e+06, 0.00000000e+00,
- 6.32812500e+06, 0.00000000e+00,
- 1.10742188e+07, 0.00000000e+00,
- 0.00000000e+00, 7.91015625e+05,
- 0.00000000e+00, -7.91015625e+05,
- 0.00000000e+00, -1.58203125e+06,
- 0.00000000e+00, 3.86718750e+06,
- 0.00000000e+00, 6.32812500e+06,
- 0.00000000e+00, 1.10742188e+07,
+ 2.24121094e+06, 0.00000000e+00,
+ 2.41699219e+05, 0.00000000e+00,
+ 2.41699219e+05, 0.00000000e+00,
+ 4.21875000e+06, 0.00000000e+00,
+ -1.36230469e+06, 0.00000000e+00,
+ -1.36230469e+06, 0.00000000e+00,
+ 0.00000000e+00, 2.24121094e+06,
+ 0.00000000e+00, 2.41699219e+05,
+ 0.00000000e+00, 2.41699219e+05,
+ 0.00000000e+00, 4.21875000e+06,
+ 0.00000000e+00, -1.36230469e+06,
+ 0.00000000e+00, -1.36230469e+06,
+ 2.41699219e+05, 0.00000000e+00,
+ 3.61083984e+06, 0.00000000e+00,
+ -6.73828125e+05, 0.00000000e+00,
+ 3.45703125e+06, 0.00000000e+00,
+ -1.52343750e+06, 0.00000000e+00,
+ -1.12792969e+06, 0.00000000e+00,
+ 0.00000000e+00, 2.41699219e+05,
+ 0.00000000e+00, 3.61083984e+06,
+ 0.00000000e+00, -6.73828125e+05,
+ 0.00000000e+00, 3.45703125e+06,
+ 0.00000000e+00, -1.52343750e+06,
+ 0.00000000e+00, -1.12792969e+06,
+ 2.41699219e+05, 0.00000000e+00,
+ -6.73828125e+05, 0.00000000e+00,
+ 3.61083984e+06, 0.00000000e+00,
+ 3.45703125e+06, 0.00000000e+00,
+ -1.12792969e+06, 0.00000000e+00,
+ -1.52343750e+06, 0.00000000e+00,
+ 0.00000000e+00, 2.41699219e+05,
+ 0.00000000e+00, -6.73828125e+05,
+ 0.00000000e+00, 3.61083984e+06,
+ 0.00000000e+00, 3.45703125e+06,
+ 0.00000000e+00, -1.12792969e+06,
+ 0.00000000e+00, -1.52343750e+06,
+ 4.21875000e+06, 0.00000000e+00,
+ 3.45703125e+06, 0.00000000e+00,
+ 3.45703125e+06, 0.00000000e+00,
+ 2.21484375e+07, 0.00000000e+00,
+ -5.39062500e+06, 0.00000000e+00,
+ -5.39062500e+06, 0.00000000e+00,
+ 0.00000000e+00, 4.21875000e+06,
+ 0.00000000e+00, 3.45703125e+06,
+ 0.00000000e+00, 3.45703125e+06,
+ 0.00000000e+00, 2.21484375e+07,
+ 0.00000000e+00, -5.39062500e+06,
+ 0.00000000e+00, -5.39062500e+06,
+ -1.36230469e+06, 0.00000000e+00,
+ -1.52343750e+06, 0.00000000e+00,
+ -1.12792969e+06, 0.00000000e+00,
+ -5.39062500e+06, 0.00000000e+00,
+ 8.46679688e+06, 0.00000000e+00,
+ 6.09375000e+06, 0.00000000e+00,
+ 0.00000000e+00, -1.36230469e+06,
+ 0.00000000e+00, -1.52343750e+06,
+ 0.00000000e+00, -1.12792969e+06,
+ 0.00000000e+00, -5.39062500e+06,
+ 0.00000000e+00, 8.46679688e+06,
+ 0.00000000e+00, 6.09375000e+06,
+ -1.36230469e+06, 0.00000000e+00,
+ -1.12792969e+06, 0.00000000e+00,
+ -1.52343750e+06, 0.00000000e+00,
+ -5.39062500e+06, 0.00000000e+00,
+ 6.09375000e+06, 0.00000000e+00,
+ 8.46679688e+06, 0.00000000e+00,
+ 0.00000000e+00, -1.36230469e+06,
+ 0.00000000e+00, -1.12792969e+06,
+ 0.00000000e+00, -1.52343750e+06,
+ 0.00000000e+00, -5.39062500e+06,
+ 0.00000000e+00, 6.09375000e+06,
+ 0.00000000e+00, 8.46679688e+06,
};
pylith::feassemble::ElasticityExplicitData2DQuadratic::ElasticityExplicitData2DQuadratic(void)
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DQuadratic.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData2DQuadratic.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application elasticityexplicit.
+// This file was generated from python application integratorelasticity.
#if !defined(pylith_feassemble_elasticityexplicitdata2dquadratic_hh)
#define pylith_feassemble_elasticityexplicitdata2dquadratic_hh
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DLinear.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DLinear.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application elasticityexplicit.
+// This file was generated from python application integratorelasticity.
#include "ElasticityExplicitData3DLinear.hh"
@@ -68,7 +68,7 @@
};
const double pylith::feassemble::ElasticityExplicitData3DLinear::_basis[] = {
- -2.50000000e-01, 2.50000000e-01, 2.50000000e-01,
+ 2.50000000e-01, 2.50000000e-01, 2.50000000e-01,
2.50000000e-01,};
const double pylith::feassemble::ElasticityExplicitData3DLinear::_basisDerivRef[] = {
@@ -100,61 +100,61 @@
};
const double pylith::feassemble::ElasticityExplicitData3DLinear::_valsResidual[] = {
- -6.07565959e+09, 3.62534033e+10, 3.19640209e+09,
- -4.01015205e+09, 6.66855682e+10, 2.19200477e+10,
- 6.67262366e+09, -1.05592747e+11, -3.14993761e+10,
- 3.41184299e+09, 2.65427945e+09, 6.38343063e+09,
+ -6.07582772e+09, 3.62539077e+10, 3.19640209e+09,
+ -4.00897518e+09, 6.66855682e+10, 2.19195434e+10,
+ 6.67380053e+09, -1.05592747e+11, -3.14998804e+10,
+ 3.41301986e+09, 2.65427945e+09, 6.38292625e+09,
};
const double pylith::feassemble::ElasticityExplicitData3DLinear::_valsJacobian[] = {
8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
- -8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
- -8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
- -8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
- 0.00000000e+00, -8.40625000e+05, 0.00000000e+00,
- 0.00000000e+00, -8.40625000e+05, 0.00000000e+00,
- 0.00000000e+00, -8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
- 0.00000000e+00, 0.00000000e+00, -8.40625000e+05,
- 0.00000000e+00, 0.00000000e+00, -8.40625000e+05,
- 0.00000000e+00, 0.00000000e+00, -8.40625000e+05,
- -8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
- 0.00000000e+00, -8.40625000e+05, 0.00000000e+00,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
- 0.00000000e+00, 0.00000000e+00, -8.40625000e+05,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
- -8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
- 0.00000000e+00, -8.40625000e+05, 0.00000000e+00,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
- 0.00000000e+00, 0.00000000e+00, -8.40625000e+05,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
- -8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
- 0.00000000e+00, -8.40625000e+05, 0.00000000e+00,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
- 0.00000000e+00, 0.00000000e+00, -8.40625000e+05,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
};
pylith::feassemble::ElasticityExplicitData3DLinear::ElasticityExplicitData3DLinear(void)
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DLinear.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DLinear.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application elasticityexplicit.
+// This file was generated from python application integratorelasticity.
#if !defined(pylith_feassemble_elasticityexplicitdata3dlinear_hh)
#define pylith_feassemble_elasticityexplicitdata3dlinear_hh
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DQuadratic.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DQuadratic.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application elasticityexplicit.
+// This file was generated from python application integratorelasticity.
#include "ElasticityExplicitData3DQuadratic.hh"
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DQuadratic.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitData3DQuadratic.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application elasticityexplicit.
+// This file was generated from python application integratorelasticity.
#if !defined(pylith_feassemble_elasticityexplicitdata3dquadratic_hh)
#define pylith_feassemble_elasticityexplicitdata3dquadratic_hh
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DLinear.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DLinear.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DLinear.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DLinear.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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 integratorelasticity.
+
+#include "ElasticityExplicitGravData1DLinear.hh"
+
+const int pylith::feassemble::ElasticityExplicitGravData1DLinear::_spaceDim = 1;
+
+const int pylith::feassemble::ElasticityExplicitGravData1DLinear::_cellDim = 1;
+
+const int pylith::feassemble::ElasticityExplicitGravData1DLinear::_numVertices = 2;
+
+const int pylith::feassemble::ElasticityExplicitGravData1DLinear::_numCells = 1;
+
+const int pylith::feassemble::ElasticityExplicitGravData1DLinear::_numBasis = 2;
+
+const int pylith::feassemble::ElasticityExplicitGravData1DLinear::_numQuadPts = 1;
+
+const char* pylith::feassemble::ElasticityExplicitGravData1DLinear::_matType = "ElasticStrain1D";
+
+const char* pylith::feassemble::ElasticityExplicitGravData1DLinear::_matDBFilename = "data/elasticstrain1d.spatialdb";
+
+const int pylith::feassemble::ElasticityExplicitGravData1DLinear::_matId = 0;
+
+const char* pylith::feassemble::ElasticityExplicitGravData1DLinear::_matLabel = "elastic strain 1-D";
+
+const double pylith::feassemble::ElasticityExplicitGravData1DLinear::_dt = 1.00000000e-02;
+
+const double pylith::feassemble::ElasticityExplicitGravData1DLinear::_gravityVec[] = {
+ -1.00000000e+08,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData1DLinear::_vertices[] = {
+ -2.50000000e-01,
+ 2.00000000e+00,
+};
+
+const int pylith::feassemble::ElasticityExplicitGravData1DLinear::_cells[] = {
+0,1,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData1DLinear::_verticesRef[] = {
+ -1.00000000e+00,
+ 1.00000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData1DLinear::_quadPts[] = {
+ 0.00000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData1DLinear::_quadWts[] = {
+ 2.00000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData1DLinear::_basis[] = {
+ 5.00000000e-01,
+ 5.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData1DLinear::_basisDerivRef[] = {
+ -5.00000000e-01,
+ 5.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData1DLinear::_fieldTIncr[] = {
+ 1.20000000e+00,
+ 1.70000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData1DLinear::_fieldT[] = {
+ 1.10000000e+00,
+ 1.50000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData1DLinear::_fieldTmdt[] = {
+ 1.00000000e+00,
+ 1.30000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData1DLinear::_valsResidual[] = {
+ -2.65245781e+11,
+ -2.97245781e+11,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData1DLinear::_valsJacobian[] = {
+ 1.40625000e+07,
+ 1.40625000e+07,
+ 1.40625000e+07,
+ 1.40625000e+07,
+};
+
+pylith::feassemble::ElasticityExplicitGravData1DLinear::ElasticityExplicitGravData1DLinear(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::ElasticityExplicitGravData1DLinear::~ElasticityExplicitGravData1DLinear(void)
+{}
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DLinear.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DLinear.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DLinear.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DLinear.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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 integratorelasticity.
+
+#if !defined(pylith_feassemble_elasticityexplicitgravdata1dlinear_hh)
+#define pylith_feassemble_elasticityexplicitgravdata1dlinear_hh
+
+#include "IntegratorData.hh"
+
+namespace pylith {
+ namespace feassemble {
+ class ElasticityExplicitGravData1DLinear;
+ } // pylith
+} // feassemble
+
+class pylith::feassemble::ElasticityExplicitGravData1DLinear : public IntegratorData
+{
+
+public:
+
+ /// Constructor
+ ElasticityExplicitGravData1DLinear(void);
+
+ /// Destructor
+ ~ElasticityExplicitGravData1DLinear(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_elasticityexplicitgravdata1dlinear_hh
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DQuadratic.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DQuadratic.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DQuadratic.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DQuadratic.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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 integratorelasticity.
+
+#include "ElasticityExplicitGravData1DQuadratic.hh"
+
+const int pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_spaceDim = 1;
+
+const int pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_cellDim = 1;
+
+const int pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_numVertices = 3;
+
+const int pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_numCells = 1;
+
+const int pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_numBasis = 3;
+
+const int pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_numQuadPts = 2;
+
+const char* pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_matType = "ElasticStrain1D";
+
+const char* pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_matDBFilename = "data/elasticstrain1d.spatialdb";
+
+const int pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_matId = 0;
+
+const char* pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_matLabel = "elastic strain 1-D";
+
+const double pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_dt = 1.00000000e-02;
+
+const double pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_gravityVec[] = {
+ -1.00000000e+08,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_vertices[] = {
+ -2.50000000e-01,
+ 2.00000000e+00,
+ 8.75000000e-01,
+};
+
+const int pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_cells[] = {
+0,1,2,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_verticesRef[] = {
+ -1.00000000e+00,
+ 1.00000000e+00,
+ 0.00000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_quadPts[] = {
+ -5.77350269e-01,
+ 5.77350269e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_quadWts[] = {
+ 1.00000000e+00, 1.00000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_basis[] = {
+ 4.55341801e-01,
+ -1.22008468e-01,
+ 6.66666667e-01,
+ -1.22008468e-01,
+ 4.55341801e-01,
+ 6.66666667e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_basisDerivRef[] = {
+ -1.07735027e+00,
+ -7.73502692e-02,
+ 1.15470054e+00,
+ 7.73502692e-02,
+ 1.07735027e+00,
+ -1.15470054e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_fieldTIncr[] = {
+ 1.20000000e+00,
+ 0.00000000e+00,
+ 1.70000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_fieldT[] = {
+ 1.10000000e+00,
+ 1.00000000e-01,
+ 1.50000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_fieldTmdt[] = {
+ 1.00000000e+00,
+ 1.00000000e-01,
+ 1.30000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_valsResidual[] = {
+ -3.77481250e+10,
+ 4.22509375e+10,
+ -5.66994375e+11,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData1DQuadratic::_valsJacobian[] = {
+ 6.25000000e+06,
+ -3.12500000e+06,
+ 6.25000000e+06,
+ -3.12500000e+06,
+ 6.25000000e+06,
+ 6.25000000e+06,
+ 6.25000000e+06,
+ 6.25000000e+06,
+ 2.50000000e+07,
+};
+
+pylith::feassemble::ElasticityExplicitGravData1DQuadratic::ElasticityExplicitGravData1DQuadratic(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::ElasticityExplicitGravData1DQuadratic::~ElasticityExplicitGravData1DQuadratic(void)
+{}
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DQuadratic.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DQuadratic.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DQuadratic.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData1DQuadratic.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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 integratorelasticity.
+
+#if !defined(pylith_feassemble_elasticityexplicitgravdata1dquadratic_hh)
+#define pylith_feassemble_elasticityexplicitgravdata1dquadratic_hh
+
+#include "IntegratorData.hh"
+
+namespace pylith {
+ namespace feassemble {
+ class ElasticityExplicitGravData1DQuadratic;
+ } // pylith
+} // feassemble
+
+class pylith::feassemble::ElasticityExplicitGravData1DQuadratic : public IntegratorData
+{
+
+public:
+
+ /// Constructor
+ ElasticityExplicitGravData1DQuadratic(void);
+
+ /// Destructor
+ ~ElasticityExplicitGravData1DQuadratic(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_elasticityexplicitgravdata1dquadratic_hh
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DLinear.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DLinear.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DLinear.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DLinear.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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 integratorelasticity.
+
+#include "ElasticityExplicitGravData2DLinear.hh"
+
+const int pylith::feassemble::ElasticityExplicitGravData2DLinear::_spaceDim = 2;
+
+const int pylith::feassemble::ElasticityExplicitGravData2DLinear::_cellDim = 2;
+
+const int pylith::feassemble::ElasticityExplicitGravData2DLinear::_numVertices = 3;
+
+const int pylith::feassemble::ElasticityExplicitGravData2DLinear::_numCells = 1;
+
+const int pylith::feassemble::ElasticityExplicitGravData2DLinear::_numBasis = 3;
+
+const int pylith::feassemble::ElasticityExplicitGravData2DLinear::_numQuadPts = 1;
+
+const char* pylith::feassemble::ElasticityExplicitGravData2DLinear::_matType = "ElasticPlaneStrain";
+
+const char* pylith::feassemble::ElasticityExplicitGravData2DLinear::_matDBFilename = "data/elasticplanestrain.spatialdb";
+
+const int pylith::feassemble::ElasticityExplicitGravData2DLinear::_matId = 0;
+
+const char* pylith::feassemble::ElasticityExplicitGravData2DLinear::_matLabel = "elastic strain 2-D";
+
+const double pylith::feassemble::ElasticityExplicitGravData2DLinear::_dt = 1.00000000e-02;
+
+const double pylith::feassemble::ElasticityExplicitGravData2DLinear::_gravityVec[] = {
+ 0.00000000e+00, -1.00000000e+08,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData2DLinear::_vertices[] = {
+ 2.00000000e-01, -4.00000000e-01,
+ 3.00000000e-01, 5.00000000e-01,
+ -1.00000000e+00, -2.00000000e-01,
+};
+
+const int pylith::feassemble::ElasticityExplicitGravData2DLinear::_cells[] = {
+0,1,2,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData2DLinear::_verticesRef[] = {
+ -1.00000000e+00, -1.00000000e+00,
+ 1.00000000e+00, -1.00000000e+00,
+ -1.00000000e+00, 1.00000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData2DLinear::_quadPts[] = {
+ -3.33333333e-01, -3.33333333e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData2DLinear::_quadWts[] = {
+ 5.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData2DLinear::_basis[] = {
+ 3.33333333e-01, 3.33333333e-01,
+ 3.33333333e-01,};
+
+const double pylith::feassemble::ElasticityExplicitGravData2DLinear::_basisDerivRef[] = {
+ -5.00000000e-01, -5.00000000e-01,
+ 5.00000000e-01, 0.00000000e+00,
+ 0.00000000e+00, 5.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData2DLinear::_fieldTIncr[] = {
+ 1.30000000e+00, -9.00000000e-01,
+ 1.40000000e+00, 1.50000000e+00,
+ 5.00000000e-01, -9.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData2DLinear::_fieldT[] = {
+ 1.60000000e+00, -8.00000000e-01,
+ 9.00000000e-01, 7.00000000e-01,
+ -2.00000000e-01, -1.10000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData2DLinear::_fieldTmdt[] = {
+ 8.00000000e-01, 1.00000000e-01,
+ 5.00000000e-01, 3.00000000e-01,
+ -1.00000000e-01, -6.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData2DLinear::_valsResidual[] = {
+ -1.66787702e+10, 1.94562705e+10,
+ -2.30412532e+09, -3.86705051e+10,
+ 1.89841559e+10, -1.51619113e+10,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData2DLinear::_valsJacobian[] = {
+ 3.81944444e+05, 0.00000000e+00,
+ 3.81944444e+05, 0.00000000e+00,
+ 3.81944444e+05, 0.00000000e+00,
+ 0.00000000e+00, 3.81944444e+05,
+ 0.00000000e+00, 3.81944444e+05,
+ 0.00000000e+00, 3.81944444e+05,
+ 3.81944444e+05, 0.00000000e+00,
+ 3.81944444e+05, 0.00000000e+00,
+ 3.81944444e+05, 0.00000000e+00,
+ 0.00000000e+00, 3.81944444e+05,
+ 0.00000000e+00, 3.81944444e+05,
+ 0.00000000e+00, 3.81944444e+05,
+ 3.81944444e+05, 0.00000000e+00,
+ 3.81944444e+05, 0.00000000e+00,
+ 3.81944444e+05, 0.00000000e+00,
+ 0.00000000e+00, 3.81944444e+05,
+ 0.00000000e+00, 3.81944444e+05,
+ 0.00000000e+00, 3.81944444e+05,
+};
+
+pylith::feassemble::ElasticityExplicitGravData2DLinear::ElasticityExplicitGravData2DLinear(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::ElasticityExplicitGravData2DLinear::~ElasticityExplicitGravData2DLinear(void)
+{}
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DLinear.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DLinear.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DLinear.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DLinear.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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 integratorelasticity.
+
+#if !defined(pylith_feassemble_elasticityexplicitgravdata2dlinear_hh)
+#define pylith_feassemble_elasticityexplicitgravdata2dlinear_hh
+
+#include "IntegratorData.hh"
+
+namespace pylith {
+ namespace feassemble {
+ class ElasticityExplicitGravData2DLinear;
+ } // pylith
+} // feassemble
+
+class pylith::feassemble::ElasticityExplicitGravData2DLinear : public IntegratorData
+{
+
+public:
+
+ /// Constructor
+ ElasticityExplicitGravData2DLinear(void);
+
+ /// Destructor
+ ~ElasticityExplicitGravData2DLinear(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_elasticityexplicitgravdata2dlinear_hh
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DQuadratic.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DQuadratic.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DQuadratic.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DQuadratic.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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 integratorelasticity.
+
+#include "ElasticityExplicitGravData2DQuadratic.hh"
+
+const int pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_spaceDim = 2;
+
+const int pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_cellDim = 2;
+
+const int pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_numVertices = 6;
+
+const int pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_numCells = 1;
+
+const int pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_numBasis = 6;
+
+const int pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_numQuadPts = 6;
+
+const char* pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_matType = "ElasticPlaneStrain";
+
+const char* pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_matDBFilename = "data/elasticplanestrain.spatialdb";
+
+const int pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_matId = 0;
+
+const char* pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_matLabel = "elastic strain 2-D";
+
+const double pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_dt = 1.00000000e-02;
+
+const double pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_gravityVec[] = {
+ 0.00000000e+00, -1.00000000e+08,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_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::ElasticityExplicitGravData2DQuadratic::_cells[] = {
+0,1,2,3,4,5,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_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::ElasticityExplicitGravData2DQuadratic::_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::ElasticityExplicitGravData2DQuadratic::_quadWts[] = {
+ 3.33333333e-01, 3.33333333e-01, 3.33333333e-01, 3.33333333e-01, 3.33333333e-01, 3.33333333e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_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::ElasticityExplicitGravData2DQuadratic::_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::ElasticityExplicitGravData2DQuadratic::_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::ElasticityExplicitGravData2DQuadratic::_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::ElasticityExplicitGravData2DQuadratic::_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::ElasticityExplicitGravData2DQuadratic::_valsResidual[] = {
+ 1.06595078e+10, 4.79704396e+10,
+ -2.93254295e+10, -4.45162488e+10,
+ 4.90758945e+09, 2.18761966e+10,
+ 6.30081264e+10, -1.22877719e+11,
+ -6.40775573e+10, -2.36370117e+11,
+ 1.48314194e+10, -1.16082082e+11,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData2DQuadratic::_valsJacobian[] = {
+ 2.24121094e+06, 0.00000000e+00,
+ 2.41699219e+05, 0.00000000e+00,
+ 2.41699219e+05, 0.00000000e+00,
+ 4.21875000e+06, 0.00000000e+00,
+ -1.36230469e+06, 0.00000000e+00,
+ -1.36230469e+06, 0.00000000e+00,
+ 0.00000000e+00, 2.24121094e+06,
+ 0.00000000e+00, 2.41699219e+05,
+ 0.00000000e+00, 2.41699219e+05,
+ 0.00000000e+00, 4.21875000e+06,
+ 0.00000000e+00, -1.36230469e+06,
+ 0.00000000e+00, -1.36230469e+06,
+ 2.41699219e+05, 0.00000000e+00,
+ 3.61083984e+06, 0.00000000e+00,
+ -6.73828125e+05, 0.00000000e+00,
+ 3.45703125e+06, 0.00000000e+00,
+ -1.52343750e+06, 0.00000000e+00,
+ -1.12792969e+06, 0.00000000e+00,
+ 0.00000000e+00, 2.41699219e+05,
+ 0.00000000e+00, 3.61083984e+06,
+ 0.00000000e+00, -6.73828125e+05,
+ 0.00000000e+00, 3.45703125e+06,
+ 0.00000000e+00, -1.52343750e+06,
+ 0.00000000e+00, -1.12792969e+06,
+ 2.41699219e+05, 0.00000000e+00,
+ -6.73828125e+05, 0.00000000e+00,
+ 3.61083984e+06, 0.00000000e+00,
+ 3.45703125e+06, 0.00000000e+00,
+ -1.12792969e+06, 0.00000000e+00,
+ -1.52343750e+06, 0.00000000e+00,
+ 0.00000000e+00, 2.41699219e+05,
+ 0.00000000e+00, -6.73828125e+05,
+ 0.00000000e+00, 3.61083984e+06,
+ 0.00000000e+00, 3.45703125e+06,
+ 0.00000000e+00, -1.12792969e+06,
+ 0.00000000e+00, -1.52343750e+06,
+ 4.21875000e+06, 0.00000000e+00,
+ 3.45703125e+06, 0.00000000e+00,
+ 3.45703125e+06, 0.00000000e+00,
+ 2.21484375e+07, 0.00000000e+00,
+ -5.39062500e+06, 0.00000000e+00,
+ -5.39062500e+06, 0.00000000e+00,
+ 0.00000000e+00, 4.21875000e+06,
+ 0.00000000e+00, 3.45703125e+06,
+ 0.00000000e+00, 3.45703125e+06,
+ 0.00000000e+00, 2.21484375e+07,
+ 0.00000000e+00, -5.39062500e+06,
+ 0.00000000e+00, -5.39062500e+06,
+ -1.36230469e+06, 0.00000000e+00,
+ -1.52343750e+06, 0.00000000e+00,
+ -1.12792969e+06, 0.00000000e+00,
+ -5.39062500e+06, 0.00000000e+00,
+ 8.46679688e+06, 0.00000000e+00,
+ 6.09375000e+06, 0.00000000e+00,
+ 0.00000000e+00, -1.36230469e+06,
+ 0.00000000e+00, -1.52343750e+06,
+ 0.00000000e+00, -1.12792969e+06,
+ 0.00000000e+00, -5.39062500e+06,
+ 0.00000000e+00, 8.46679688e+06,
+ 0.00000000e+00, 6.09375000e+06,
+ -1.36230469e+06, 0.00000000e+00,
+ -1.12792969e+06, 0.00000000e+00,
+ -1.52343750e+06, 0.00000000e+00,
+ -5.39062500e+06, 0.00000000e+00,
+ 6.09375000e+06, 0.00000000e+00,
+ 8.46679688e+06, 0.00000000e+00,
+ 0.00000000e+00, -1.36230469e+06,
+ 0.00000000e+00, -1.12792969e+06,
+ 0.00000000e+00, -1.52343750e+06,
+ 0.00000000e+00, -5.39062500e+06,
+ 0.00000000e+00, 6.09375000e+06,
+ 0.00000000e+00, 8.46679688e+06,
+};
+
+pylith::feassemble::ElasticityExplicitGravData2DQuadratic::ElasticityExplicitGravData2DQuadratic(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::ElasticityExplicitGravData2DQuadratic::~ElasticityExplicitGravData2DQuadratic(void)
+{}
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DQuadratic.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DQuadratic.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DQuadratic.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData2DQuadratic.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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 integratorelasticity.
+
+#if !defined(pylith_feassemble_elasticityexplicitgravdata2dquadratic_hh)
+#define pylith_feassemble_elasticityexplicitgravdata2dquadratic_hh
+
+#include "IntegratorData.hh"
+
+namespace pylith {
+ namespace feassemble {
+ class ElasticityExplicitGravData2DQuadratic;
+ } // pylith
+} // feassemble
+
+class pylith::feassemble::ElasticityExplicitGravData2DQuadratic : public IntegratorData
+{
+
+public:
+
+ /// Constructor
+ ElasticityExplicitGravData2DQuadratic(void);
+
+ /// Destructor
+ ~ElasticityExplicitGravData2DQuadratic(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_elasticityexplicitgravdata2dquadratic_hh
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DLinear.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DLinear.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DLinear.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DLinear.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,192 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+// DO NOT EDIT THIS FILE
+// This file was generated from python application integratorelasticity.
+
+#include "ElasticityExplicitGravData3DLinear.hh"
+
+const int pylith::feassemble::ElasticityExplicitGravData3DLinear::_spaceDim = 3;
+
+const int pylith::feassemble::ElasticityExplicitGravData3DLinear::_cellDim = 3;
+
+const int pylith::feassemble::ElasticityExplicitGravData3DLinear::_numVertices = 4;
+
+const int pylith::feassemble::ElasticityExplicitGravData3DLinear::_numCells = 1;
+
+const int pylith::feassemble::ElasticityExplicitGravData3DLinear::_numBasis = 4;
+
+const int pylith::feassemble::ElasticityExplicitGravData3DLinear::_numQuadPts = 1;
+
+const char* pylith::feassemble::ElasticityExplicitGravData3DLinear::_matType = "ElasticIsotropic3D";
+
+const char* pylith::feassemble::ElasticityExplicitGravData3DLinear::_matDBFilename = "data/elasticisotropic3d.spatialdb";
+
+const int pylith::feassemble::ElasticityExplicitGravData3DLinear::_matId = 0;
+
+const char* pylith::feassemble::ElasticityExplicitGravData3DLinear::_matLabel = "elastic isotropic 3-D";
+
+const double pylith::feassemble::ElasticityExplicitGravData3DLinear::_dt = 1.00000000e-02;
+
+const double pylith::feassemble::ElasticityExplicitGravData3DLinear::_gravityVec[] = {
+ 0.00000000e+00, 0.00000000e+00, -1.00000000e+08,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData3DLinear::_vertices[] = {
+ -5.00000000e-01, -1.00000000e+00, -5.00000000e-01,
+ 2.00000000e+00, -5.00000000e-01, -4.00000000e-01,
+ 1.00000000e+00, -1.00000000e-01, -3.00000000e-01,
+ -2.00000000e-01, 5.00000000e-01, 2.00000000e+00,
+};
+
+const int pylith::feassemble::ElasticityExplicitGravData3DLinear::_cells[] = {
+0,1,2,3,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData3DLinear::_verticesRef[] = {
+ -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
+ 1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
+ -1.00000000e+00, 1.00000000e+00, -1.00000000e+00,
+ -1.00000000e+00, -1.00000000e+00, 1.00000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData3DLinear::_quadPts[] = {
+ -5.00000000e-01, -5.00000000e-01, -5.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData3DLinear::_quadWts[] = {
+ 1.33333333e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData3DLinear::_basis[] = {
+ 2.50000000e-01, 2.50000000e-01, 2.50000000e-01,
+ 2.50000000e-01,};
+
+const double pylith::feassemble::ElasticityExplicitGravData3DLinear::_basisDerivRef[] = {
+ -5.00000000e-01, -5.00000000e-01, -5.00000000e-01,
+ 5.00000000e-01, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 5.00000000e-01, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 5.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData3DLinear::_fieldTIncr[] = {
+ 3.00000000e-01, 2.00000000e-01, -5.00000000e-01,
+ -3.00000000e-01, -4.00000000e-01, -6.00000000e-01,
+ 2.00000000e-01, 6.00000000e-01, 3.00000000e-01,
+ -6.00000000e-01, -1.00000000e-01, -3.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData3DLinear::_fieldT[] = {
+ 8.00000000e-01, 1.00000000e-01, -6.00000000e-01,
+ -1.00000000e-01, -2.00000000e-01, -5.00000000e-01,
+ 1.00000000e-01, 7.00000000e-01, 2.00000000e-01,
+ -5.00000000e-01, -0.00000000e+00, -2.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData3DLinear::_fieldTmdt[] = {
+ 1.00000000e-01, 1.00000000e-01, -3.00000000e-01,
+ -2.00000000e-01, -1.00000000e-01, -5.00000000e-01,
+ 2.00000000e-01, 4.00000000e-01, 1.00000000e-01,
+ -4.00000000e-01, -1.00000000e-01, -1.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData3DLinear::_valsResidual[] = {
+ -6.07582772e+09, 3.62539077e+10, -3.04285979e+10,
+ -4.00897518e+09, 6.66855682e+10, -1.17054566e+10,
+ 6.67380053e+09, -1.05592747e+11, -6.51248804e+10,
+ 3.41301986e+09, 2.65427945e+09, -2.72420737e+10,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData3DLinear::_valsJacobian[] = {
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+};
+
+pylith::feassemble::ElasticityExplicitGravData3DLinear::ElasticityExplicitGravData3DLinear(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::ElasticityExplicitGravData3DLinear::~ElasticityExplicitGravData3DLinear(void)
+{}
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DLinear.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DLinear.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DLinear.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DLinear.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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 integratorelasticity.
+
+#if !defined(pylith_feassemble_elasticityexplicitgravdata3dlinear_hh)
+#define pylith_feassemble_elasticityexplicitgravdata3dlinear_hh
+
+#include "IntegratorData.hh"
+
+namespace pylith {
+ namespace feassemble {
+ class ElasticityExplicitGravData3DLinear;
+ } // pylith
+} // feassemble
+
+class pylith::feassemble::ElasticityExplicitGravData3DLinear : public IntegratorData
+{
+
+public:
+
+ /// Constructor
+ ElasticityExplicitGravData3DLinear(void);
+
+ /// Destructor
+ ~ElasticityExplicitGravData3DLinear(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_elasticityexplicitgravdata3dlinear_hh
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DQuadratic.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DQuadratic.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DQuadratic.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DQuadratic.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,531 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+// DO NOT EDIT THIS FILE
+// This file was generated from python application integratorelasticity.
+
+#include "ElasticityExplicitGravData3DQuadratic.hh"
+
+const int pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_spaceDim = 3;
+
+const int pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_cellDim = 3;
+
+const int pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_numVertices = 10;
+
+const int pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_numCells = 1;
+
+const int pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_numBasis = 10;
+
+const int pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_numQuadPts = 4;
+
+const char* pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_matType = "ElasticIsotropic3D";
+
+const char* pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_matDBFilename = "data/elasticisotropic3d.spatialdb";
+
+const int pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_matId = 0;
+
+const char* pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_matLabel = "elastic isotropic 3-D";
+
+const double pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_dt = 1.00000000e-02;
+
+const double pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_gravityVec[] = {
+ 0.00000000e+00, 0.00000000e+00, -1.00000000e+08,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_vertices[] = {
+ -5.00000000e-01, -2.00000000e+00, -1.00000000e+00,
+ 2.00000000e+00, -2.00000000e+00, -5.00000000e-01,
+ 1.00000000e+00, 1.00000000e+00, 0.00000000e+00,
+ 2.00000000e-01, 5.00000000e-01, 2.00000000e+00,
+ 1.50000000e+00, -5.00000000e-01, -2.50000000e-01,
+ 2.50000000e-01, -5.00000000e-01, -5.00000000e-01,
+ 7.50000000e-01, -2.00000000e+00, -7.50000000e-01,
+ -1.50000000e-01, -7.50000000e-01, 5.00000000e-01,
+ 1.10000000e+00, -7.50000000e-01, 7.50000000e-01,
+ 6.00000000e-01, 7.50000000e-01, 1.00000000e+00,
+};
+
+const int pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_cells[] = {
+0,1,2,3,4,5,6,7,8,9,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_verticesRef[] = {
+ -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
+ 1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
+ -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,
+ -1.00000000e+00, 0.00000000e+00, -1.00000000e+00,
+ 0.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,
+ -1.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_quadPts[] = {
+ -8.00000000e-01, -8.00000000e-01, -8.00000000e-01,
+ 5.00000000e-01, -8.00000000e-01, -8.00000000e-01,
+ -8.00000000e-01, 5.00000000e-01, -8.00000000e-01,
+ -8.00000000e-01, -8.00000000e-01, 5.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_quadWts[] = {
+ 3.33333333e-01, 3.33333333e-01, 3.33333333e-01, 3.33333333e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_basis[] = {
+ 2.80000000e-01, -8.00000000e-02, -8.00000000e-02,
+ -8.00000000e-02, 4.00000000e-02, 2.80000000e-01,
+ 2.80000000e-01, 2.80000000e-01, 4.00000000e-02,
+ 4.00000000e-02, -4.50000000e-02, 3.75000000e-01,
+ -8.00000000e-02, -8.00000000e-02, 3.00000000e-01,
+ 2.00000000e-02, 1.50000000e-01, 2.00000000e-02,
+ 3.00000000e-01, 4.00000000e-02, -4.50000000e-02,
+ -8.00000000e-02, 3.75000000e-01, -8.00000000e-02,
+ 3.00000000e-01, 1.50000000e-01, 2.00000000e-02,
+ 2.00000000e-02, 4.00000000e-02, 3.00000000e-01,
+ -4.50000000e-02, -8.00000000e-02, -8.00000000e-02,
+ 3.75000000e-01, 4.00000000e-02, 2.00000000e-02,
+ 2.00000000e-02, 1.50000000e-01, 3.00000000e-01,
+ 3.00000000e-01,};
+
+const double pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_basisDerivRef[] = {
+ -9.00000000e-01, -9.00000000e-01, -9.00000000e-01,
+ -3.00000000e-01, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -3.00000000e-01, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, -3.00000000e-01,
+ 2.00000000e-01, 2.00000000e-01, 0.00000000e+00,
+ -2.00000000e-01, 1.20000000e+00, -2.00000000e-01,
+ 1.20000000e+00, -2.00000000e-01, -2.00000000e-01,
+ -2.00000000e-01, -2.00000000e-01, 1.20000000e+00,
+ 2.00000000e-01, 0.00000000e+00, 2.00000000e-01,
+ 0.00000000e+00, 2.00000000e-01, 2.00000000e-01,
+ 4.00000000e-01, 4.00000000e-01, 4.00000000e-01,
+ 1.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -3.00000000e-01, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, -3.00000000e-01,
+ 2.00000000e-01, 1.50000000e+00, 0.00000000e+00,
+ -2.00000000e-01, -1.00000000e-01, -2.00000000e-01,
+ -1.40000000e+00, -1.50000000e+00, -1.50000000e+00,
+ -2.00000000e-01, -2.00000000e-01, -1.00000000e-01,
+ 2.00000000e-01, 0.00000000e+00, 1.50000000e+00,
+ 0.00000000e+00, 2.00000000e-01, 2.00000000e-01,
+ 4.00000000e-01, 4.00000000e-01, 4.00000000e-01,
+ -3.00000000e-01, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, -3.00000000e-01,
+ 1.50000000e+00, 2.00000000e-01, 0.00000000e+00,
+ -1.50000000e+00, -1.40000000e+00, -1.50000000e+00,
+ -1.00000000e-01, -2.00000000e-01, -2.00000000e-01,
+ -2.00000000e-01, -2.00000000e-01, -1.00000000e-01,
+ 2.00000000e-01, 0.00000000e+00, 2.00000000e-01,
+ 0.00000000e+00, 2.00000000e-01, 1.50000000e+00,
+ 4.00000000e-01, 4.00000000e-01, 4.00000000e-01,
+ -3.00000000e-01, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -3.00000000e-01, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 1.00000000e+00,
+ 2.00000000e-01, 2.00000000e-01, 0.00000000e+00,
+ -2.00000000e-01, -1.00000000e-01, -2.00000000e-01,
+ -1.00000000e-01, -2.00000000e-01, -2.00000000e-01,
+ -1.50000000e+00, -1.50000000e+00, -1.40000000e+00,
+ 1.50000000e+00, 0.00000000e+00, 2.00000000e-01,
+ 0.00000000e+00, 1.50000000e+00, 2.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_fieldTIncr[] = {
+ 3.00000000e-01, -4.00000000e-01, -4.00000000e-01,
+ -6.00000000e-01, 8.00000000e-01, 2.00000000e-01,
+ 5.00000000e-01, 5.00000000e-01, 7.00000000e-01,
+ -7.00000000e-01, -5.00000000e-01, -7.00000000e-01,
+ -6.00000000e-01, -3.00000000e-01, 8.00000000e-01,
+ -4.00000000e-01, -8.00000000e-01, -5.00000000e-01,
+ 7.00000000e-01, 8.00000000e-01, -5.00000000e-01,
+ -5.00000000e-01, -5.00000000e-01, -7.00000000e-01,
+ -3.00000000e-01, -9.00000000e-01, 8.00000000e-01,
+ -1.00000000e-01, 5.00000000e-01, -9.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_fieldT[] = {
+ 1.00000000e-01, -2.00000000e-01, -6.00000000e-01,
+ -3.00000000e-01, 4.00000000e-01, 9.00000000e-01,
+ 6.00000000e-01, 8.00000000e-01, 5.00000000e-01,
+ -8.00000000e-01, -6.00000000e-01, -8.00000000e-01,
+ -0.00000000e+00, -2.00000000e-01, 6.00000000e-01,
+ -4.00000000e-01, -7.00000000e-01, -2.00000000e-01,
+ 7.00000000e-01, 6.00000000e-01, -1.00000000e-01,
+ -4.00000000e-01, -3.00000000e-01, -3.00000000e-01,
+ -7.00000000e-01, -6.00000000e-01, 1.00000000e-01,
+ -9.00000000e-01, 3.00000000e-01, -8.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_fieldTmdt[] = {
+ 2.00000000e-01, -3.00000000e-01, -1.00000000e-01,
+ -4.00000000e-01, 2.00000000e-01, 3.00000000e-01,
+ -5.00000000e-01, 2.00000000e-01, 2.00000000e-01,
+ -3.00000000e-01, -8.00000000e-01, -3.00000000e-01,
+ -5.00000000e-01, -9.00000000e-01, 4.00000000e-01,
+ -3.00000000e-01, -6.00000000e-01, -8.00000000e-01,
+ 9.00000000e-01, 5.00000000e-01, -2.00000000e-01,
+ -7.00000000e-01, -2.00000000e-01, -9.00000000e-01,
+ -5.00000000e-01, -8.00000000e-01, 4.00000000e-01,
+ -4.00000000e-01, 5.00000000e-01, -7.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_valsResidual[] = {
+ 2.17446982e+10, -9.08226289e+09, -5.09583471e+09,
+ 6.22338118e+10, -2.47879968e+10, -1.65884560e+10,
+ -4.60076154e+10, -5.34101030e+10, -5.55279242e+10,
+ -1.00555635e+10, 4.19850265e+10, -6.27466022e+10,
+ -8.43197122e+09, 6.33093784e+10, -1.24366385e+11,
+ 6.62258554e+10, 1.09239192e+11, -1.20877067e+11,
+ -9.59444688e+10, -5.29496681e+10, -1.08716467e+11,
+ -1.25318752e+10, -6.06765547e+10, -7.32262485e+10,
+ -3.24446843e+10, 5.14096428e+10, -1.13619631e+11,
+ 5.52108169e+10, -6.50263642e+10, -3.06855968e+10,
+};
+
+const double pylith::feassemble::ElasticityExplicitGravData3DQuadratic::_valsJacobian[] = {
+ 1.50251107e+06, 0.00000000e+00, 0.00000000e+00,
+ -5.70500651e+05, 0.00000000e+00, 0.00000000e+00,
+ -5.70500651e+05, 0.00000000e+00, 0.00000000e+00,
+ -5.70500651e+05, 0.00000000e+00, 0.00000000e+00,
+ -3.13041667e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.24238411e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.24238411e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.24238411e+06, 0.00000000e+00, 0.00000000e+00,
+ -3.13041667e+05, 0.00000000e+00, 0.00000000e+00,
+ -3.13041667e+05, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 1.50251107e+06, 0.00000000e+00,
+ 0.00000000e+00, -5.70500651e+05, 0.00000000e+00,
+ 0.00000000e+00, -5.70500651e+05, 0.00000000e+00,
+ 0.00000000e+00, -5.70500651e+05, 0.00000000e+00,
+ 0.00000000e+00, -3.13041667e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.24238411e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.24238411e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.24238411e+06, 0.00000000e+00,
+ 0.00000000e+00, -3.13041667e+05, 0.00000000e+00,
+ 0.00000000e+00, -3.13041667e+05, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 1.50251107e+06,
+ 0.00000000e+00, 0.00000000e+00, -5.70500651e+05,
+ 0.00000000e+00, 0.00000000e+00, -5.70500651e+05,
+ 0.00000000e+00, 0.00000000e+00, -5.70500651e+05,
+ 0.00000000e+00, 0.00000000e+00, -3.13041667e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.24238411e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.24238411e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.24238411e+06,
+ 0.00000000e+00, 0.00000000e+00, -3.13041667e+05,
+ 0.00000000e+00, 0.00000000e+00, -3.13041667e+05,
+ -5.70500651e+05, 0.00000000e+00, 0.00000000e+00,
+ 2.84272070e+06, 0.00000000e+00, 0.00000000e+00,
+ -8.39520833e+05, 0.00000000e+00, 0.00000000e+00,
+ -8.39520833e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.46026823e+06, 0.00000000e+00, 0.00000000e+00,
+ -5.06914062e+05, 0.00000000e+00, 0.00000000e+00,
+ 5.45154948e+05, 0.00000000e+00, 0.00000000e+00,
+ -5.06914062e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.46026823e+06, 0.00000000e+00, 0.00000000e+00,
+ -6.43869792e+05, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -5.70500651e+05, 0.00000000e+00,
+ 0.00000000e+00, 2.84272070e+06, 0.00000000e+00,
+ 0.00000000e+00, -8.39520833e+05, 0.00000000e+00,
+ 0.00000000e+00, -8.39520833e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.46026823e+06, 0.00000000e+00,
+ 0.00000000e+00, -5.06914062e+05, 0.00000000e+00,
+ 0.00000000e+00, 5.45154948e+05, 0.00000000e+00,
+ 0.00000000e+00, -5.06914062e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.46026823e+06, 0.00000000e+00,
+ 0.00000000e+00, -6.43869792e+05, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, -5.70500651e+05,
+ 0.00000000e+00, 0.00000000e+00, 2.84272070e+06,
+ 0.00000000e+00, 0.00000000e+00, -8.39520833e+05,
+ 0.00000000e+00, 0.00000000e+00, -8.39520833e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.46026823e+06,
+ 0.00000000e+00, 0.00000000e+00, -5.06914062e+05,
+ 0.00000000e+00, 0.00000000e+00, 5.45154948e+05,
+ 0.00000000e+00, 0.00000000e+00, -5.06914062e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.46026823e+06,
+ 0.00000000e+00, 0.00000000e+00, -6.43869792e+05,
+ -5.70500651e+05, 0.00000000e+00, 0.00000000e+00,
+ -8.39520833e+05, 0.00000000e+00, 0.00000000e+00,
+ 2.84272070e+06, 0.00000000e+00, 0.00000000e+00,
+ -8.39520833e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.46026823e+06, 0.00000000e+00, 0.00000000e+00,
+ 5.45154948e+05, 0.00000000e+00, 0.00000000e+00,
+ -5.06914062e+05, 0.00000000e+00, 0.00000000e+00,
+ -5.06914062e+05, 0.00000000e+00, 0.00000000e+00,
+ -6.43869792e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.46026823e+06, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -5.70500651e+05, 0.00000000e+00,
+ 0.00000000e+00, -8.39520833e+05, 0.00000000e+00,
+ 0.00000000e+00, 2.84272070e+06, 0.00000000e+00,
+ 0.00000000e+00, -8.39520833e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.46026823e+06, 0.00000000e+00,
+ 0.00000000e+00, 5.45154948e+05, 0.00000000e+00,
+ 0.00000000e+00, -5.06914062e+05, 0.00000000e+00,
+ 0.00000000e+00, -5.06914062e+05, 0.00000000e+00,
+ 0.00000000e+00, -6.43869792e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.46026823e+06, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, -5.70500651e+05,
+ 0.00000000e+00, 0.00000000e+00, -8.39520833e+05,
+ 0.00000000e+00, 0.00000000e+00, 2.84272070e+06,
+ 0.00000000e+00, 0.00000000e+00, -8.39520833e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.46026823e+06,
+ 0.00000000e+00, 0.00000000e+00, 5.45154948e+05,
+ 0.00000000e+00, 0.00000000e+00, -5.06914062e+05,
+ 0.00000000e+00, 0.00000000e+00, -5.06914062e+05,
+ 0.00000000e+00, 0.00000000e+00, -6.43869792e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.46026823e+06,
+ -5.70500651e+05, 0.00000000e+00, 0.00000000e+00,
+ -8.39520833e+05, 0.00000000e+00, 0.00000000e+00,
+ -8.39520833e+05, 0.00000000e+00, 0.00000000e+00,
+ 2.84272070e+06, 0.00000000e+00, 0.00000000e+00,
+ -6.43869792e+05, 0.00000000e+00, 0.00000000e+00,
+ -5.06914062e+05, 0.00000000e+00, 0.00000000e+00,
+ -5.06914062e+05, 0.00000000e+00, 0.00000000e+00,
+ 5.45154948e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.46026823e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.46026823e+06, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -5.70500651e+05, 0.00000000e+00,
+ 0.00000000e+00, -8.39520833e+05, 0.00000000e+00,
+ 0.00000000e+00, -8.39520833e+05, 0.00000000e+00,
+ 0.00000000e+00, 2.84272070e+06, 0.00000000e+00,
+ 0.00000000e+00, -6.43869792e+05, 0.00000000e+00,
+ 0.00000000e+00, -5.06914062e+05, 0.00000000e+00,
+ 0.00000000e+00, -5.06914062e+05, 0.00000000e+00,
+ 0.00000000e+00, 5.45154948e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.46026823e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.46026823e+06, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, -5.70500651e+05,
+ 0.00000000e+00, 0.00000000e+00, -8.39520833e+05,
+ 0.00000000e+00, 0.00000000e+00, -8.39520833e+05,
+ 0.00000000e+00, 0.00000000e+00, 2.84272070e+06,
+ 0.00000000e+00, 0.00000000e+00, -6.43869792e+05,
+ 0.00000000e+00, 0.00000000e+00, -5.06914062e+05,
+ 0.00000000e+00, 0.00000000e+00, -5.06914062e+05,
+ 0.00000000e+00, 0.00000000e+00, 5.45154948e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.46026823e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.46026823e+06,
+ -3.13041667e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.46026823e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.46026823e+06, 0.00000000e+00, 0.00000000e+00,
+ -6.43869792e+05, 0.00000000e+00, 0.00000000e+00,
+ 3.25847917e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.12054688e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.12054688e+06, 0.00000000e+00, 0.00000000e+00,
+ 5.19364583e+05, 0.00000000e+00, 0.00000000e+00,
+ 2.05611458e+06, 0.00000000e+00, 0.00000000e+00,
+ 2.05611458e+06, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -3.13041667e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.46026823e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.46026823e+06, 0.00000000e+00,
+ 0.00000000e+00, -6.43869792e+05, 0.00000000e+00,
+ 0.00000000e+00, 3.25847917e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.12054688e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.12054688e+06, 0.00000000e+00,
+ 0.00000000e+00, 5.19364583e+05, 0.00000000e+00,
+ 0.00000000e+00, 2.05611458e+06, 0.00000000e+00,
+ 0.00000000e+00, 2.05611458e+06, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, -3.13041667e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.46026823e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.46026823e+06,
+ 0.00000000e+00, 0.00000000e+00, -6.43869792e+05,
+ 0.00000000e+00, 0.00000000e+00, 3.25847917e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.12054688e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.12054688e+06,
+ 0.00000000e+00, 0.00000000e+00, 5.19364583e+05,
+ 0.00000000e+00, 0.00000000e+00, 2.05611458e+06,
+ 0.00000000e+00, 0.00000000e+00, 2.05611458e+06,
+ 1.24238411e+06, 0.00000000e+00, 0.00000000e+00,
+ -5.06914062e+05, 0.00000000e+00, 0.00000000e+00,
+ 5.45154948e+05, 0.00000000e+00, 0.00000000e+00,
+ -5.06914062e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.12054688e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.80888281e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.50829167e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.50829167e+06, 0.00000000e+00, 0.00000000e+00,
+ 5.19364583e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.12054688e+06, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 1.24238411e+06, 0.00000000e+00,
+ 0.00000000e+00, -5.06914062e+05, 0.00000000e+00,
+ 0.00000000e+00, 5.45154948e+05, 0.00000000e+00,
+ 0.00000000e+00, -5.06914062e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.12054688e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.80888281e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.50829167e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.50829167e+06, 0.00000000e+00,
+ 0.00000000e+00, 5.19364583e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.12054688e+06, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 1.24238411e+06,
+ 0.00000000e+00, 0.00000000e+00, -5.06914062e+05,
+ 0.00000000e+00, 0.00000000e+00, 5.45154948e+05,
+ 0.00000000e+00, 0.00000000e+00, -5.06914062e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.12054688e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.80888281e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.50829167e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.50829167e+06,
+ 0.00000000e+00, 0.00000000e+00, 5.19364583e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.12054688e+06,
+ 1.24238411e+06, 0.00000000e+00, 0.00000000e+00,
+ 5.45154948e+05, 0.00000000e+00, 0.00000000e+00,
+ -5.06914062e+05, 0.00000000e+00, 0.00000000e+00,
+ -5.06914062e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.12054688e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.50829167e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.80888281e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.50829167e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.12054688e+06, 0.00000000e+00, 0.00000000e+00,
+ 5.19364583e+05, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 1.24238411e+06, 0.00000000e+00,
+ 0.00000000e+00, 5.45154948e+05, 0.00000000e+00,
+ 0.00000000e+00, -5.06914062e+05, 0.00000000e+00,
+ 0.00000000e+00, -5.06914062e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.12054688e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.50829167e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.80888281e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.50829167e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.12054688e+06, 0.00000000e+00,
+ 0.00000000e+00, 5.19364583e+05, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 1.24238411e+06,
+ 0.00000000e+00, 0.00000000e+00, 5.45154948e+05,
+ 0.00000000e+00, 0.00000000e+00, -5.06914062e+05,
+ 0.00000000e+00, 0.00000000e+00, -5.06914062e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.12054688e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.50829167e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.80888281e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.50829167e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.12054688e+06,
+ 0.00000000e+00, 0.00000000e+00, 5.19364583e+05,
+ 1.24238411e+06, 0.00000000e+00, 0.00000000e+00,
+ -5.06914062e+05, 0.00000000e+00, 0.00000000e+00,
+ -5.06914062e+05, 0.00000000e+00, 0.00000000e+00,
+ 5.45154948e+05, 0.00000000e+00, 0.00000000e+00,
+ 5.19364583e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.50829167e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.50829167e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.80888281e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.12054688e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.12054688e+06, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 1.24238411e+06, 0.00000000e+00,
+ 0.00000000e+00, -5.06914062e+05, 0.00000000e+00,
+ 0.00000000e+00, -5.06914062e+05, 0.00000000e+00,
+ 0.00000000e+00, 5.45154948e+05, 0.00000000e+00,
+ 0.00000000e+00, 5.19364583e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.50829167e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.50829167e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.80888281e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.12054688e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.12054688e+06, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 1.24238411e+06,
+ 0.00000000e+00, 0.00000000e+00, -5.06914062e+05,
+ 0.00000000e+00, 0.00000000e+00, -5.06914062e+05,
+ 0.00000000e+00, 0.00000000e+00, 5.45154948e+05,
+ 0.00000000e+00, 0.00000000e+00, 5.19364583e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.50829167e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.50829167e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.80888281e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.12054688e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.12054688e+06,
+ -3.13041667e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.46026823e+06, 0.00000000e+00, 0.00000000e+00,
+ -6.43869792e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.46026823e+06, 0.00000000e+00, 0.00000000e+00,
+ 2.05611458e+06, 0.00000000e+00, 0.00000000e+00,
+ 5.19364583e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.12054688e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.12054688e+06, 0.00000000e+00, 0.00000000e+00,
+ 3.25847917e+06, 0.00000000e+00, 0.00000000e+00,
+ 2.05611458e+06, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -3.13041667e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.46026823e+06, 0.00000000e+00,
+ 0.00000000e+00, -6.43869792e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.46026823e+06, 0.00000000e+00,
+ 0.00000000e+00, 2.05611458e+06, 0.00000000e+00,
+ 0.00000000e+00, 5.19364583e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.12054688e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.12054688e+06, 0.00000000e+00,
+ 0.00000000e+00, 3.25847917e+06, 0.00000000e+00,
+ 0.00000000e+00, 2.05611458e+06, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, -3.13041667e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.46026823e+06,
+ 0.00000000e+00, 0.00000000e+00, -6.43869792e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.46026823e+06,
+ 0.00000000e+00, 0.00000000e+00, 2.05611458e+06,
+ 0.00000000e+00, 0.00000000e+00, 5.19364583e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.12054688e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.12054688e+06,
+ 0.00000000e+00, 0.00000000e+00, 3.25847917e+06,
+ 0.00000000e+00, 0.00000000e+00, 2.05611458e+06,
+ -3.13041667e+05, 0.00000000e+00, 0.00000000e+00,
+ -6.43869792e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.46026823e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.46026823e+06, 0.00000000e+00, 0.00000000e+00,
+ 2.05611458e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.12054688e+06, 0.00000000e+00, 0.00000000e+00,
+ 5.19364583e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.12054688e+06, 0.00000000e+00, 0.00000000e+00,
+ 2.05611458e+06, 0.00000000e+00, 0.00000000e+00,
+ 3.25847917e+06, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -3.13041667e+05, 0.00000000e+00,
+ 0.00000000e+00, -6.43869792e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.46026823e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.46026823e+06, 0.00000000e+00,
+ 0.00000000e+00, 2.05611458e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.12054688e+06, 0.00000000e+00,
+ 0.00000000e+00, 5.19364583e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.12054688e+06, 0.00000000e+00,
+ 0.00000000e+00, 2.05611458e+06, 0.00000000e+00,
+ 0.00000000e+00, 3.25847917e+06, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, -3.13041667e+05,
+ 0.00000000e+00, 0.00000000e+00, -6.43869792e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.46026823e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.46026823e+06,
+ 0.00000000e+00, 0.00000000e+00, 2.05611458e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.12054688e+06,
+ 0.00000000e+00, 0.00000000e+00, 5.19364583e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.12054688e+06,
+ 0.00000000e+00, 0.00000000e+00, 2.05611458e+06,
+ 0.00000000e+00, 0.00000000e+00, 3.25847917e+06,
+};
+
+pylith::feassemble::ElasticityExplicitGravData3DQuadratic::ElasticityExplicitGravData3DQuadratic(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::ElasticityExplicitGravData3DQuadratic::~ElasticityExplicitGravData3DQuadratic(void)
+{}
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DQuadratic.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DQuadratic.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DQuadratic.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitGravData3DQuadratic.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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 integratorelasticity.
+
+#if !defined(pylith_feassemble_elasticityexplicitgravdata3dquadratic_hh)
+#define pylith_feassemble_elasticityexplicitgravdata3dquadratic_hh
+
+#include "IntegratorData.hh"
+
+namespace pylith {
+ namespace feassemble {
+ class ElasticityExplicitGravData3DQuadratic;
+ } // pylith
+} // feassemble
+
+class pylith::feassemble::ElasticityExplicitGravData3DQuadratic : public IntegratorData
+{
+
+public:
+
+ /// Constructor
+ ElasticityExplicitGravData3DQuadratic(void);
+
+ /// Destructor
+ ~ElasticityExplicitGravData3DQuadratic(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_elasticityexplicitgravdata3dquadratic_hh
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeform.py (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityExplicitLgDeform.py)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeform.py (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeform.py 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,101 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+# Brad T. Aagaard
+# U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file unittests/libtests/feassemble/data/ElasticityExplicit.py
+
+## @brief Python application for generating C++ data files for testing
+## C++ ElasticityExplicit object.
+
+from pyre.components.Component import Component
+
+import numpy
+
+# ----------------------------------------------------------------------
+
+# ElasticityExplicit class
+class ElasticityExplicit(Component):
+ """
+ Python application for generating C++ data files for testing C++
+ ElasticityExplicit object.
+ """
+
+ # PUBLIC METHODS /////////////////////////////////////////////////////
+
+ def __init__(self, name="elasticityexplicit"):
+ """
+ Constructor.
+ """
+ Component.__init__(self, name, facility="formulation")
+ return
+
+
+ # PRIVATE METHODS ////////////////////////////////////////////////////
+
+ def calculateResidual(self, integrator):
+ """
+ Calculate contribution to residual of operator for integrator.
+
+ {r} = (1/dt**2)[M](-{u(t+dt)} + 2 {u(t)} - {u(t-dt)}) -
+ Sum(wt * [BL]^T [S])
+ """
+ import feutils
+
+ # Calculate action for inertia
+ M = integrator._calculateMassMat()
+ dispResult = integrator.fieldT - integrator.fieldTmdt
+ residual = 1.0/integrator.dt**2 * numpy.dot(M, dispResult)
+ residual = residual.flatten()
+
+ # Calculate action for elasticity
+
+ # Matrix of elasticity values
+ D = integrator._calculateElasticityMat()
+
+ for cell in integrator.cells:
+ cellR = numpy.zeros( (integrator.spaceDim*integrator.numBasis, 1),
+ dtype=numpy.float64)
+ vertices = integrator.vertices[cell, :]
+ (jacobian, jacobianInv, jacobianDet, basisDeriv) = \
+ feutils.calculateJacobian(integrator.quadrature, vertices)
+ fieldT = integrator.fieldT
+ for iQuad in xrange(integrator.numQuadPts):
+ wt = integrator.quadWts[iQuad] * jacobianDet[iQuad]
+ BL0 = integrator._calculateBasisDerivMatLinear0(basisDeriv, iQuad)
+ BL1 = integrator._calculateBasisDerivMatLinear1(basisDeriv, iQuad, fieldT)
+ BL = BL0 + BL1
+ strain = integrator._calculateStrain(basisDeriv, iQuad, fieldT)
+ S = numpy.dot(D, strain.transpose())
+ cellR -= wt * numpy.dot(BL.transpose(), S)
+
+ feutils.assembleVec(residual, cellR.flatten(), cell, integrator.spaceDim)
+
+ return residual
+
+
+ def calculateJacobian(self, integrator):
+ """
+ Calculate contribution to Jacobian matrix of operator for integrator.
+
+ [A] = (1/dt**2)[M]
+ """
+ M = integrator._calculateMassMat()
+
+ jacobian = 1.0/integrator.dt**2 * M
+ return jacobian
+
+
+# FACTORY //////////////////////////////////////////////////////////////
+def formulation():
+ return ElasticityExplicit()
+
+
+# End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData1DLinear.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData1DLinear.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData1DLinear.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData1DLinear.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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 "ElasticityExplicitLgDeformData1DLinear.hh"
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_spaceDim = 1;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_cellDim = 1;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_numVertices = 2;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_numCells = 1;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_numBasis = 2;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_numQuadPts = 1;
+
+const char* pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_matType = "ElasticStrain1D";
+
+const char* pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_matDBFilename = "data/elasticstrain1d.spatialdb";
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_matId = 0;
+
+const char* pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_matLabel = "elastic strain 1-D";
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_dt = 1.00000000e-02;
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_gravityVec[] = {
+ -1.00000000e+08,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_vertices[] = {
+ -2.50000000e-01,
+ 2.00000000e+00,
+};
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_cells[] = {
+0,1,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_verticesRef[] = {
+ -1.00000000e+00,
+ 1.00000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_quadPts[] = {
+ 0.00000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_quadWts[] = {
+ 2.00000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_basis[] = {
+ 5.00000000e-01,
+ 5.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_basisDerivRef[] = {
+ -5.00000000e-01,
+ 5.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_fieldTIncr[] = {
+ 1.20000000e+00,
+ 1.70000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_fieldT[] = {
+ 1.10000000e+00,
+ 1.50000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_fieldTmdt[] = {
+ 1.00000000e+00,
+ 1.30000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_valsResidual[] = {
+ 2.05237249e+10,
+ -2.05152874e+10,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::_valsJacobian[] = {
+ 1.40625000e+07,
+ 1.40625000e+07,
+ 1.40625000e+07,
+ 1.40625000e+07,
+};
+
+pylith::feassemble::ElasticityExplicitLgDeformData1DLinear::ElasticityExplicitLgDeformData1DLinear(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::ElasticityExplicitLgDeformData1DLinear::~ElasticityExplicitLgDeformData1DLinear(void)
+{}
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData1DLinear.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData1DLinear.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData1DLinear.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData1DLinear.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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_elasticityexplicitlgdeformdata1dlinear_hh)
+#define pylith_feassemble_elasticityexplicitlgdeformdata1dlinear_hh
+
+#include "IntegratorData.hh"
+
+namespace pylith {
+ namespace feassemble {
+ class ElasticityExplicitLgDeformData1DLinear;
+ } // pylith
+} // feassemble
+
+class pylith::feassemble::ElasticityExplicitLgDeformData1DLinear : public IntegratorData
+{
+
+public:
+
+ /// Constructor
+ ElasticityExplicitLgDeformData1DLinear(void);
+
+ /// Destructor
+ ~ElasticityExplicitLgDeformData1DLinear(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_elasticityexplicitlgdeformdata1dlinear_hh
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData1DQuadratic.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData1DQuadratic.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData1DQuadratic.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData1DQuadratic.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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 "ElasticityExplicitLgDeformData1DQuadratic.hh"
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_spaceDim = 1;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_cellDim = 1;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_numVertices = 3;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_numCells = 1;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_numBasis = 3;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_numQuadPts = 2;
+
+const char* pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_matType = "ElasticStrain1D";
+
+const char* pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_matDBFilename = "data/elasticstrain1d.spatialdb";
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_matId = 0;
+
+const char* pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_matLabel = "elastic strain 1-D";
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_dt = 1.00000000e-02;
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_gravityVec[] = {
+ -1.00000000e+08,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_vertices[] = {
+ -2.50000000e-01,
+ 2.00000000e+00,
+ 8.75000000e-01,
+};
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_cells[] = {
+0,1,2,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_verticesRef[] = {
+ -1.00000000e+00,
+ 1.00000000e+00,
+ 0.00000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_quadPts[] = {
+ -5.77350269e-01,
+ 5.77350269e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_quadWts[] = {
+ 1.00000000e+00, 1.00000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_basis[] = {
+ 4.55341801e-01,
+ -1.22008468e-01,
+ 6.66666667e-01,
+ -1.22008468e-01,
+ 4.55341801e-01,
+ 6.66666667e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_basisDerivRef[] = {
+ -1.07735027e+00,
+ -7.73502692e-02,
+ 1.15470054e+00,
+ 7.73502692e-02,
+ 1.07735027e+00,
+ -1.15470054e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_fieldTIncr[] = {
+ 1.20000000e+00,
+ 0.00000000e+00,
+ 1.70000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_fieldT[] = {
+ 1.10000000e+00,
+ 1.00000000e-01,
+ 1.50000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_fieldTmdt[] = {
+ 1.00000000e+00,
+ 1.00000000e-01,
+ 1.30000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_valsResidual[] = {
+ 8.41223688e+10,
+ -9.31066744e+09,
+ -7.48032639e+10,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::_valsJacobian[] = {
+ 6.25000000e+06,
+ -3.12500000e+06,
+ 6.25000000e+06,
+ -3.12500000e+06,
+ 6.25000000e+06,
+ 6.25000000e+06,
+ 6.25000000e+06,
+ 6.25000000e+06,
+ 2.50000000e+07,
+};
+
+pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic::ElasticityExplicitLgDeformData1DQuadratic(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::ElasticityExplicitLgDeformData1DQuadratic::~ElasticityExplicitLgDeformData1DQuadratic(void)
+{}
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData1DQuadratic.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData1DQuadratic.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData1DQuadratic.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData1DQuadratic.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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_elasticityexplicitlgdeformdata1dquadratic_hh)
+#define pylith_feassemble_elasticityexplicitlgdeformdata1dquadratic_hh
+
+#include "IntegratorData.hh"
+
+namespace pylith {
+ namespace feassemble {
+ class ElasticityExplicitLgDeformData1DQuadratic;
+ } // pylith
+} // feassemble
+
+class pylith::feassemble::ElasticityExplicitLgDeformData1DQuadratic : public IntegratorData
+{
+
+public:
+
+ /// Constructor
+ ElasticityExplicitLgDeformData1DQuadratic(void);
+
+ /// Destructor
+ ~ElasticityExplicitLgDeformData1DQuadratic(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_elasticityexplicitlgdeformdata1dquadratic_hh
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData2DLinear.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData2DLinear.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData2DLinear.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData2DLinear.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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 "ElasticityExplicitLgDeformData2DLinear.hh"
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_spaceDim = 2;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_cellDim = 2;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_numVertices = 3;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_numCells = 1;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_numBasis = 3;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_numQuadPts = 1;
+
+const char* pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_matType = "ElasticPlaneStrain";
+
+const char* pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_matDBFilename = "data/elasticplanestrain.spatialdb";
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_matId = 0;
+
+const char* pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_matLabel = "elastic strain 2-D";
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_dt = 1.00000000e-02;
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_gravityVec[] = {
+ 0.00000000e+00, -1.00000000e+08,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_vertices[] = {
+ 2.00000000e-01, -4.00000000e-01,
+ 3.00000000e-01, 5.00000000e-01,
+ -1.00000000e+00, -2.00000000e-01,
+};
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_cells[] = {
+0,1,2,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_verticesRef[] = {
+ -1.00000000e+00, -1.00000000e+00,
+ 1.00000000e+00, -1.00000000e+00,
+ -1.00000000e+00, 1.00000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_quadPts[] = {
+ -3.33333333e-01, -3.33333333e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_quadWts[] = {
+ 5.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_basis[] = {
+ 3.33333333e-01, 3.33333333e-01,
+ 3.33333333e-01,};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_basisDerivRef[] = {
+ -5.00000000e-01, -5.00000000e-01,
+ 5.00000000e-01, 0.00000000e+00,
+ 0.00000000e+00, 5.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_fieldTIncr[] = {
+ 1.30000000e+00, -9.00000000e-01,
+ 1.40000000e+00, 1.50000000e+00,
+ 5.00000000e-01, -9.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_fieldT[] = {
+ 1.60000000e+00, -8.00000000e-01,
+ 9.00000000e-01, 7.00000000e-01,
+ -2.00000000e-01, -1.10000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_fieldTmdt[] = {
+ 8.00000000e-01, 1.00000000e-01,
+ 5.00000000e-01, 3.00000000e-01,
+ -1.00000000e-01, -6.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_valsResidual[] = {
+ -1.30906935e+11, 1.45826347e+11,
+ 4.13444081e+10, -1.44671612e+11,
+ 8.95637877e+10, -1.15588068e+09,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::_valsJacobian[] = {
+ 3.81944444e+05, 0.00000000e+00,
+ 3.81944444e+05, 0.00000000e+00,
+ 3.81944444e+05, 0.00000000e+00,
+ 0.00000000e+00, 3.81944444e+05,
+ 0.00000000e+00, 3.81944444e+05,
+ 0.00000000e+00, 3.81944444e+05,
+ 3.81944444e+05, 0.00000000e+00,
+ 3.81944444e+05, 0.00000000e+00,
+ 3.81944444e+05, 0.00000000e+00,
+ 0.00000000e+00, 3.81944444e+05,
+ 0.00000000e+00, 3.81944444e+05,
+ 0.00000000e+00, 3.81944444e+05,
+ 3.81944444e+05, 0.00000000e+00,
+ 3.81944444e+05, 0.00000000e+00,
+ 3.81944444e+05, 0.00000000e+00,
+ 0.00000000e+00, 3.81944444e+05,
+ 0.00000000e+00, 3.81944444e+05,
+ 0.00000000e+00, 3.81944444e+05,
+};
+
+pylith::feassemble::ElasticityExplicitLgDeformData2DLinear::ElasticityExplicitLgDeformData2DLinear(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::ElasticityExplicitLgDeformData2DLinear::~ElasticityExplicitLgDeformData2DLinear(void)
+{}
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData2DLinear.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData2DLinear.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData2DLinear.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData2DLinear.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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_elasticityexplicitlgdeformdata2dlinear_hh)
+#define pylith_feassemble_elasticityexplicitlgdeformdata2dlinear_hh
+
+#include "IntegratorData.hh"
+
+namespace pylith {
+ namespace feassemble {
+ class ElasticityExplicitLgDeformData2DLinear;
+ } // pylith
+} // feassemble
+
+class pylith::feassemble::ElasticityExplicitLgDeformData2DLinear : public IntegratorData
+{
+
+public:
+
+ /// Constructor
+ ElasticityExplicitLgDeformData2DLinear(void);
+
+ /// Destructor
+ ~ElasticityExplicitLgDeformData2DLinear(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_elasticityexplicitlgdeformdata2dlinear_hh
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData2DQuadratic.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData2DQuadratic.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData2DQuadratic.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData2DQuadratic.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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 "ElasticityExplicitLgDeformData2DQuadratic.hh"
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_spaceDim = 2;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_cellDim = 2;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_numVertices = 6;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_numCells = 1;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_numBasis = 6;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_numQuadPts = 6;
+
+const char* pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_matType = "ElasticPlaneStrain";
+
+const char* pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_matDBFilename = "data/elasticplanestrain.spatialdb";
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_matId = 0;
+
+const char* pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_matLabel = "elastic strain 2-D";
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_dt = 1.00000000e-02;
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_gravityVec[] = {
+ 0.00000000e+00, -1.00000000e+08,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_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::ElasticityExplicitLgDeformData2DQuadratic::_cells[] = {
+0,1,2,3,4,5,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_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::ElasticityExplicitLgDeformData2DQuadratic::_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::ElasticityExplicitLgDeformData2DQuadratic::_quadWts[] = {
+ 3.33333333e-01, 3.33333333e-01, 3.33333333e-01, 3.33333333e-01, 3.33333333e-01, 3.33333333e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_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::ElasticityExplicitLgDeformData2DQuadratic::_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::ElasticityExplicitLgDeformData2DQuadratic::_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::ElasticityExplicitLgDeformData2DQuadratic::_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::ElasticityExplicitLgDeformData2DQuadratic::_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::ElasticityExplicitLgDeformData2DQuadratic::_valsResidual[] = {
+ 3.35158253e+10, 8.10161927e+10,
+ -7.94924298e+10, -4.37818288e+10,
+ 2.10014068e+10, 2.15146983e+10,
+ 7.31028066e+10, -6.35763747e+09,
+ -5.42559207e+10, -9.94886446e+10,
+ 6.13196816e+09, 4.70976886e+10,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::_valsJacobian[] = {
+ 2.24121094e+06, 0.00000000e+00,
+ 2.41699219e+05, 0.00000000e+00,
+ 2.41699219e+05, 0.00000000e+00,
+ 4.21875000e+06, 0.00000000e+00,
+ -1.36230469e+06, 0.00000000e+00,
+ -1.36230469e+06, 0.00000000e+00,
+ 0.00000000e+00, 2.24121094e+06,
+ 0.00000000e+00, 2.41699219e+05,
+ 0.00000000e+00, 2.41699219e+05,
+ 0.00000000e+00, 4.21875000e+06,
+ 0.00000000e+00, -1.36230469e+06,
+ 0.00000000e+00, -1.36230469e+06,
+ 2.41699219e+05, 0.00000000e+00,
+ 3.61083984e+06, 0.00000000e+00,
+ -6.73828125e+05, 0.00000000e+00,
+ 3.45703125e+06, 0.00000000e+00,
+ -1.52343750e+06, 0.00000000e+00,
+ -1.12792969e+06, 0.00000000e+00,
+ 0.00000000e+00, 2.41699219e+05,
+ 0.00000000e+00, 3.61083984e+06,
+ 0.00000000e+00, -6.73828125e+05,
+ 0.00000000e+00, 3.45703125e+06,
+ 0.00000000e+00, -1.52343750e+06,
+ 0.00000000e+00, -1.12792969e+06,
+ 2.41699219e+05, 0.00000000e+00,
+ -6.73828125e+05, 0.00000000e+00,
+ 3.61083984e+06, 0.00000000e+00,
+ 3.45703125e+06, 0.00000000e+00,
+ -1.12792969e+06, 0.00000000e+00,
+ -1.52343750e+06, 0.00000000e+00,
+ 0.00000000e+00, 2.41699219e+05,
+ 0.00000000e+00, -6.73828125e+05,
+ 0.00000000e+00, 3.61083984e+06,
+ 0.00000000e+00, 3.45703125e+06,
+ 0.00000000e+00, -1.12792969e+06,
+ 0.00000000e+00, -1.52343750e+06,
+ 4.21875000e+06, 0.00000000e+00,
+ 3.45703125e+06, 0.00000000e+00,
+ 3.45703125e+06, 0.00000000e+00,
+ 2.21484375e+07, 0.00000000e+00,
+ -5.39062500e+06, 0.00000000e+00,
+ -5.39062500e+06, 0.00000000e+00,
+ 0.00000000e+00, 4.21875000e+06,
+ 0.00000000e+00, 3.45703125e+06,
+ 0.00000000e+00, 3.45703125e+06,
+ 0.00000000e+00, 2.21484375e+07,
+ 0.00000000e+00, -5.39062500e+06,
+ 0.00000000e+00, -5.39062500e+06,
+ -1.36230469e+06, 0.00000000e+00,
+ -1.52343750e+06, 0.00000000e+00,
+ -1.12792969e+06, 0.00000000e+00,
+ -5.39062500e+06, 0.00000000e+00,
+ 8.46679688e+06, 0.00000000e+00,
+ 6.09375000e+06, 0.00000000e+00,
+ 0.00000000e+00, -1.36230469e+06,
+ 0.00000000e+00, -1.52343750e+06,
+ 0.00000000e+00, -1.12792969e+06,
+ 0.00000000e+00, -5.39062500e+06,
+ 0.00000000e+00, 8.46679688e+06,
+ 0.00000000e+00, 6.09375000e+06,
+ -1.36230469e+06, 0.00000000e+00,
+ -1.12792969e+06, 0.00000000e+00,
+ -1.52343750e+06, 0.00000000e+00,
+ -5.39062500e+06, 0.00000000e+00,
+ 6.09375000e+06, 0.00000000e+00,
+ 8.46679688e+06, 0.00000000e+00,
+ 0.00000000e+00, -1.36230469e+06,
+ 0.00000000e+00, -1.12792969e+06,
+ 0.00000000e+00, -1.52343750e+06,
+ 0.00000000e+00, -5.39062500e+06,
+ 0.00000000e+00, 6.09375000e+06,
+ 0.00000000e+00, 8.46679688e+06,
+};
+
+pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic::ElasticityExplicitLgDeformData2DQuadratic(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::ElasticityExplicitLgDeformData2DQuadratic::~ElasticityExplicitLgDeformData2DQuadratic(void)
+{}
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData2DQuadratic.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData2DQuadratic.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData2DQuadratic.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData2DQuadratic.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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_elasticityexplicitlgdeformdata2dquadratic_hh)
+#define pylith_feassemble_elasticityexplicitlgdeformdata2dquadratic_hh
+
+#include "IntegratorData.hh"
+
+namespace pylith {
+ namespace feassemble {
+ class ElasticityExplicitLgDeformData2DQuadratic;
+ } // pylith
+} // feassemble
+
+class pylith::feassemble::ElasticityExplicitLgDeformData2DQuadratic : public IntegratorData
+{
+
+public:
+
+ /// Constructor
+ ElasticityExplicitLgDeformData2DQuadratic(void);
+
+ /// Destructor
+ ~ElasticityExplicitLgDeformData2DQuadratic(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_elasticityexplicitlgdeformdata2dquadratic_hh
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData3DLinear.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData3DLinear.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData3DLinear.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData3DLinear.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,192 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+// DO NOT EDIT THIS FILE
+// This file was generated from python application integratorelasticitylgdeform.
+
+#include "ElasticityExplicitLgDeformData3DLinear.hh"
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_spaceDim = 3;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_cellDim = 3;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_numVertices = 4;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_numCells = 1;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_numBasis = 4;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_numQuadPts = 1;
+
+const char* pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_matType = "ElasticIsotropic3D";
+
+const char* pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_matDBFilename = "data/elasticisotropic3d.spatialdb";
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_matId = 0;
+
+const char* pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_matLabel = "elastic isotropic 3-D";
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_dt = 1.00000000e-02;
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_gravityVec[] = {
+ 0.00000000e+00, 0.00000000e+00, -1.00000000e+08,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_vertices[] = {
+ -5.00000000e-01, -1.00000000e+00, -5.00000000e-01,
+ 2.00000000e+00, -5.00000000e-01, -4.00000000e-01,
+ 1.00000000e+00, -1.00000000e-01, -3.00000000e-01,
+ -2.00000000e-01, 5.00000000e-01, 2.00000000e+00,
+};
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_cells[] = {
+0,1,2,3,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_verticesRef[] = {
+ -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
+ 1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
+ -1.00000000e+00, 1.00000000e+00, -1.00000000e+00,
+ -1.00000000e+00, -1.00000000e+00, 1.00000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_quadPts[] = {
+ -5.00000000e-01, -5.00000000e-01, -5.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_quadWts[] = {
+ 1.33333333e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_basis[] = {
+ 2.50000000e-01, 2.50000000e-01, 2.50000000e-01,
+ 2.50000000e-01,};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_basisDerivRef[] = {
+ -5.00000000e-01, -5.00000000e-01, -5.00000000e-01,
+ 5.00000000e-01, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 5.00000000e-01, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 5.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_fieldTIncr[] = {
+ 3.00000000e-01, 2.00000000e-01, -5.00000000e-01,
+ -3.00000000e-01, -4.00000000e-01, -6.00000000e-01,
+ 2.00000000e-01, 6.00000000e-01, 3.00000000e-01,
+ -6.00000000e-01, -1.00000000e-01, -3.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_fieldT[] = {
+ 8.00000000e-01, 1.00000000e-01, -6.00000000e-01,
+ -1.00000000e-01, -2.00000000e-01, -5.00000000e-01,
+ 1.00000000e-01, 7.00000000e-01, 2.00000000e-01,
+ -5.00000000e-01, -0.00000000e+00, -2.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_fieldTmdt[] = {
+ 1.00000000e-01, 1.00000000e-01, -3.00000000e-01,
+ -2.00000000e-01, -1.00000000e-01, -5.00000000e-01,
+ 2.00000000e-01, 4.00000000e-01, 1.00000000e-01,
+ -4.00000000e-01, -1.00000000e-01, -1.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_valsResidual[] = {
+ -1.33662714e+10, 3.00655673e+11, 1.48220308e+11,
+ -5.48903846e+10, 6.55599973e+11, 3.04460040e+11,
+ 6.45906661e+10, -1.06342926e+12, -4.86427795e+11,
+ 3.66800744e+09, 1.07174625e+11, 3.37464384e+10,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::_valsJacobian[] = {
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+};
+
+pylith::feassemble::ElasticityExplicitLgDeformData3DLinear::ElasticityExplicitLgDeformData3DLinear(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::ElasticityExplicitLgDeformData3DLinear::~ElasticityExplicitLgDeformData3DLinear(void)
+{}
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData3DLinear.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData3DLinear.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData3DLinear.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData3DLinear.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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_elasticityexplicitlgdeformdata3dlinear_hh)
+#define pylith_feassemble_elasticityexplicitlgdeformdata3dlinear_hh
+
+#include "IntegratorData.hh"
+
+namespace pylith {
+ namespace feassemble {
+ class ElasticityExplicitLgDeformData3DLinear;
+ } // pylith
+} // feassemble
+
+class pylith::feassemble::ElasticityExplicitLgDeformData3DLinear : public IntegratorData
+{
+
+public:
+
+ /// Constructor
+ ElasticityExplicitLgDeformData3DLinear(void);
+
+ /// Destructor
+ ~ElasticityExplicitLgDeformData3DLinear(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_elasticityexplicitlgdeformdata3dlinear_hh
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData3DQuadratic.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData3DQuadratic.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData3DQuadratic.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData3DQuadratic.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,531 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+// DO NOT EDIT THIS FILE
+// This file was generated from python application integratorelasticitylgdeform.
+
+#include "ElasticityExplicitLgDeformData3DQuadratic.hh"
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_spaceDim = 3;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_cellDim = 3;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_numVertices = 10;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_numCells = 1;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_numBasis = 10;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_numQuadPts = 4;
+
+const char* pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_matType = "ElasticIsotropic3D";
+
+const char* pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_matDBFilename = "data/elasticisotropic3d.spatialdb";
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_matId = 0;
+
+const char* pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_matLabel = "elastic isotropic 3-D";
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_dt = 1.00000000e-02;
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_gravityVec[] = {
+ 0.00000000e+00, 0.00000000e+00, -1.00000000e+08,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_vertices[] = {
+ -5.00000000e-01, -2.00000000e+00, -1.00000000e+00,
+ 2.00000000e+00, -2.00000000e+00, -5.00000000e-01,
+ 1.00000000e+00, 1.00000000e+00, 0.00000000e+00,
+ 2.00000000e-01, 5.00000000e-01, 2.00000000e+00,
+ 1.50000000e+00, -5.00000000e-01, -2.50000000e-01,
+ 2.50000000e-01, -5.00000000e-01, -5.00000000e-01,
+ 7.50000000e-01, -2.00000000e+00, -7.50000000e-01,
+ -1.50000000e-01, -7.50000000e-01, 5.00000000e-01,
+ 1.10000000e+00, -7.50000000e-01, 7.50000000e-01,
+ 6.00000000e-01, 7.50000000e-01, 1.00000000e+00,
+};
+
+const int pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_cells[] = {
+0,1,2,3,4,5,6,7,8,9,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_verticesRef[] = {
+ -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
+ 1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
+ -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,
+ -1.00000000e+00, 0.00000000e+00, -1.00000000e+00,
+ 0.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,
+ -1.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_quadPts[] = {
+ -8.00000000e-01, -8.00000000e-01, -8.00000000e-01,
+ 5.00000000e-01, -8.00000000e-01, -8.00000000e-01,
+ -8.00000000e-01, 5.00000000e-01, -8.00000000e-01,
+ -8.00000000e-01, -8.00000000e-01, 5.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_quadWts[] = {
+ 3.33333333e-01, 3.33333333e-01, 3.33333333e-01, 3.33333333e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_basis[] = {
+ 2.80000000e-01, -8.00000000e-02, -8.00000000e-02,
+ -8.00000000e-02, 4.00000000e-02, 2.80000000e-01,
+ 2.80000000e-01, 2.80000000e-01, 4.00000000e-02,
+ 4.00000000e-02, -4.50000000e-02, 3.75000000e-01,
+ -8.00000000e-02, -8.00000000e-02, 3.00000000e-01,
+ 2.00000000e-02, 1.50000000e-01, 2.00000000e-02,
+ 3.00000000e-01, 4.00000000e-02, -4.50000000e-02,
+ -8.00000000e-02, 3.75000000e-01, -8.00000000e-02,
+ 3.00000000e-01, 1.50000000e-01, 2.00000000e-02,
+ 2.00000000e-02, 4.00000000e-02, 3.00000000e-01,
+ -4.50000000e-02, -8.00000000e-02, -8.00000000e-02,
+ 3.75000000e-01, 4.00000000e-02, 2.00000000e-02,
+ 2.00000000e-02, 1.50000000e-01, 3.00000000e-01,
+ 3.00000000e-01,};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_basisDerivRef[] = {
+ -9.00000000e-01, -9.00000000e-01, -9.00000000e-01,
+ -3.00000000e-01, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -3.00000000e-01, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, -3.00000000e-01,
+ 2.00000000e-01, 2.00000000e-01, 0.00000000e+00,
+ -2.00000000e-01, 1.20000000e+00, -2.00000000e-01,
+ 1.20000000e+00, -2.00000000e-01, -2.00000000e-01,
+ -2.00000000e-01, -2.00000000e-01, 1.20000000e+00,
+ 2.00000000e-01, 0.00000000e+00, 2.00000000e-01,
+ 0.00000000e+00, 2.00000000e-01, 2.00000000e-01,
+ 4.00000000e-01, 4.00000000e-01, 4.00000000e-01,
+ 1.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -3.00000000e-01, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, -3.00000000e-01,
+ 2.00000000e-01, 1.50000000e+00, 0.00000000e+00,
+ -2.00000000e-01, -1.00000000e-01, -2.00000000e-01,
+ -1.40000000e+00, -1.50000000e+00, -1.50000000e+00,
+ -2.00000000e-01, -2.00000000e-01, -1.00000000e-01,
+ 2.00000000e-01, 0.00000000e+00, 1.50000000e+00,
+ 0.00000000e+00, 2.00000000e-01, 2.00000000e-01,
+ 4.00000000e-01, 4.00000000e-01, 4.00000000e-01,
+ -3.00000000e-01, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, -3.00000000e-01,
+ 1.50000000e+00, 2.00000000e-01, 0.00000000e+00,
+ -1.50000000e+00, -1.40000000e+00, -1.50000000e+00,
+ -1.00000000e-01, -2.00000000e-01, -2.00000000e-01,
+ -2.00000000e-01, -2.00000000e-01, -1.00000000e-01,
+ 2.00000000e-01, 0.00000000e+00, 2.00000000e-01,
+ 0.00000000e+00, 2.00000000e-01, 1.50000000e+00,
+ 4.00000000e-01, 4.00000000e-01, 4.00000000e-01,
+ -3.00000000e-01, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -3.00000000e-01, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 1.00000000e+00,
+ 2.00000000e-01, 2.00000000e-01, 0.00000000e+00,
+ -2.00000000e-01, -1.00000000e-01, -2.00000000e-01,
+ -1.00000000e-01, -2.00000000e-01, -2.00000000e-01,
+ -1.50000000e+00, -1.50000000e+00, -1.40000000e+00,
+ 1.50000000e+00, 0.00000000e+00, 2.00000000e-01,
+ 0.00000000e+00, 1.50000000e+00, 2.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_fieldTIncr[] = {
+ 3.00000000e-01, -4.00000000e-01, -4.00000000e-01,
+ -6.00000000e-01, 8.00000000e-01, 2.00000000e-01,
+ 5.00000000e-01, 5.00000000e-01, 7.00000000e-01,
+ -7.00000000e-01, -5.00000000e-01, -7.00000000e-01,
+ -6.00000000e-01, -3.00000000e-01, 8.00000000e-01,
+ -4.00000000e-01, -8.00000000e-01, -5.00000000e-01,
+ 7.00000000e-01, 8.00000000e-01, -5.00000000e-01,
+ -5.00000000e-01, -5.00000000e-01, -7.00000000e-01,
+ -3.00000000e-01, -9.00000000e-01, 8.00000000e-01,
+ -1.00000000e-01, 5.00000000e-01, -9.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_fieldT[] = {
+ 1.00000000e-01, -2.00000000e-01, -6.00000000e-01,
+ -3.00000000e-01, 4.00000000e-01, 9.00000000e-01,
+ 6.00000000e-01, 8.00000000e-01, 5.00000000e-01,
+ -8.00000000e-01, -6.00000000e-01, -8.00000000e-01,
+ -0.00000000e+00, -2.00000000e-01, 6.00000000e-01,
+ -4.00000000e-01, -7.00000000e-01, -2.00000000e-01,
+ 7.00000000e-01, 6.00000000e-01, -1.00000000e-01,
+ -4.00000000e-01, -3.00000000e-01, -3.00000000e-01,
+ -7.00000000e-01, -6.00000000e-01, 1.00000000e-01,
+ -9.00000000e-01, 3.00000000e-01, -8.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_fieldTmdt[] = {
+ 2.00000000e-01, -3.00000000e-01, -1.00000000e-01,
+ -4.00000000e-01, 2.00000000e-01, 3.00000000e-01,
+ -5.00000000e-01, 2.00000000e-01, 2.00000000e-01,
+ -3.00000000e-01, -8.00000000e-01, -3.00000000e-01,
+ -5.00000000e-01, -9.00000000e-01, 4.00000000e-01,
+ -3.00000000e-01, -6.00000000e-01, -8.00000000e-01,
+ 9.00000000e-01, 5.00000000e-01, -2.00000000e-01,
+ -7.00000000e-01, -2.00000000e-01, -9.00000000e-01,
+ -5.00000000e-01, -8.00000000e-01, 4.00000000e-01,
+ -4.00000000e-01, 5.00000000e-01, -7.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_valsResidual[] = {
+ 3.68914019e+10, 2.89140041e+10, -8.37349483e+08,
+ 1.31656837e+11, -3.38172944e+10, 5.13325670e+10,
+ -3.92908518e+11, -2.10628710e+11, -2.01772556e+11,
+ -1.14271876e+11, 1.30714284e+11, -1.07976362e+11,
+ -2.64261066e+11, -2.85532868e+10, -4.02044235e+10,
+ 4.59398298e+11, 2.32374884e+11, 2.74961419e+11,
+ -2.46995439e+11, -7.38540882e+10, -4.79777811e+10,
+ 5.25207525e+10, -8.35311020e+10, -1.48217553e+10,
+ -1.20397414e+11, 3.07705881e+11, -2.63722698e+11,
+ 4.58366027e+11, -2.69314282e+11, 3.51027060e+11,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::_valsJacobian[] = {
+ 1.50251107e+06, 0.00000000e+00, 0.00000000e+00,
+ -5.70500651e+05, 0.00000000e+00, 0.00000000e+00,
+ -5.70500651e+05, 0.00000000e+00, 0.00000000e+00,
+ -5.70500651e+05, 0.00000000e+00, 0.00000000e+00,
+ -3.13041667e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.24238411e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.24238411e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.24238411e+06, 0.00000000e+00, 0.00000000e+00,
+ -3.13041667e+05, 0.00000000e+00, 0.00000000e+00,
+ -3.13041667e+05, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 1.50251107e+06, 0.00000000e+00,
+ 0.00000000e+00, -5.70500651e+05, 0.00000000e+00,
+ 0.00000000e+00, -5.70500651e+05, 0.00000000e+00,
+ 0.00000000e+00, -5.70500651e+05, 0.00000000e+00,
+ 0.00000000e+00, -3.13041667e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.24238411e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.24238411e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.24238411e+06, 0.00000000e+00,
+ 0.00000000e+00, -3.13041667e+05, 0.00000000e+00,
+ 0.00000000e+00, -3.13041667e+05, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 1.50251107e+06,
+ 0.00000000e+00, 0.00000000e+00, -5.70500651e+05,
+ 0.00000000e+00, 0.00000000e+00, -5.70500651e+05,
+ 0.00000000e+00, 0.00000000e+00, -5.70500651e+05,
+ 0.00000000e+00, 0.00000000e+00, -3.13041667e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.24238411e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.24238411e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.24238411e+06,
+ 0.00000000e+00, 0.00000000e+00, -3.13041667e+05,
+ 0.00000000e+00, 0.00000000e+00, -3.13041667e+05,
+ -5.70500651e+05, 0.00000000e+00, 0.00000000e+00,
+ 2.84272070e+06, 0.00000000e+00, 0.00000000e+00,
+ -8.39520833e+05, 0.00000000e+00, 0.00000000e+00,
+ -8.39520833e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.46026823e+06, 0.00000000e+00, 0.00000000e+00,
+ -5.06914062e+05, 0.00000000e+00, 0.00000000e+00,
+ 5.45154948e+05, 0.00000000e+00, 0.00000000e+00,
+ -5.06914062e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.46026823e+06, 0.00000000e+00, 0.00000000e+00,
+ -6.43869792e+05, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -5.70500651e+05, 0.00000000e+00,
+ 0.00000000e+00, 2.84272070e+06, 0.00000000e+00,
+ 0.00000000e+00, -8.39520833e+05, 0.00000000e+00,
+ 0.00000000e+00, -8.39520833e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.46026823e+06, 0.00000000e+00,
+ 0.00000000e+00, -5.06914062e+05, 0.00000000e+00,
+ 0.00000000e+00, 5.45154948e+05, 0.00000000e+00,
+ 0.00000000e+00, -5.06914062e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.46026823e+06, 0.00000000e+00,
+ 0.00000000e+00, -6.43869792e+05, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, -5.70500651e+05,
+ 0.00000000e+00, 0.00000000e+00, 2.84272070e+06,
+ 0.00000000e+00, 0.00000000e+00, -8.39520833e+05,
+ 0.00000000e+00, 0.00000000e+00, -8.39520833e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.46026823e+06,
+ 0.00000000e+00, 0.00000000e+00, -5.06914062e+05,
+ 0.00000000e+00, 0.00000000e+00, 5.45154948e+05,
+ 0.00000000e+00, 0.00000000e+00, -5.06914062e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.46026823e+06,
+ 0.00000000e+00, 0.00000000e+00, -6.43869792e+05,
+ -5.70500651e+05, 0.00000000e+00, 0.00000000e+00,
+ -8.39520833e+05, 0.00000000e+00, 0.00000000e+00,
+ 2.84272070e+06, 0.00000000e+00, 0.00000000e+00,
+ -8.39520833e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.46026823e+06, 0.00000000e+00, 0.00000000e+00,
+ 5.45154948e+05, 0.00000000e+00, 0.00000000e+00,
+ -5.06914062e+05, 0.00000000e+00, 0.00000000e+00,
+ -5.06914062e+05, 0.00000000e+00, 0.00000000e+00,
+ -6.43869792e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.46026823e+06, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -5.70500651e+05, 0.00000000e+00,
+ 0.00000000e+00, -8.39520833e+05, 0.00000000e+00,
+ 0.00000000e+00, 2.84272070e+06, 0.00000000e+00,
+ 0.00000000e+00, -8.39520833e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.46026823e+06, 0.00000000e+00,
+ 0.00000000e+00, 5.45154948e+05, 0.00000000e+00,
+ 0.00000000e+00, -5.06914062e+05, 0.00000000e+00,
+ 0.00000000e+00, -5.06914062e+05, 0.00000000e+00,
+ 0.00000000e+00, -6.43869792e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.46026823e+06, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, -5.70500651e+05,
+ 0.00000000e+00, 0.00000000e+00, -8.39520833e+05,
+ 0.00000000e+00, 0.00000000e+00, 2.84272070e+06,
+ 0.00000000e+00, 0.00000000e+00, -8.39520833e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.46026823e+06,
+ 0.00000000e+00, 0.00000000e+00, 5.45154948e+05,
+ 0.00000000e+00, 0.00000000e+00, -5.06914062e+05,
+ 0.00000000e+00, 0.00000000e+00, -5.06914062e+05,
+ 0.00000000e+00, 0.00000000e+00, -6.43869792e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.46026823e+06,
+ -5.70500651e+05, 0.00000000e+00, 0.00000000e+00,
+ -8.39520833e+05, 0.00000000e+00, 0.00000000e+00,
+ -8.39520833e+05, 0.00000000e+00, 0.00000000e+00,
+ 2.84272070e+06, 0.00000000e+00, 0.00000000e+00,
+ -6.43869792e+05, 0.00000000e+00, 0.00000000e+00,
+ -5.06914062e+05, 0.00000000e+00, 0.00000000e+00,
+ -5.06914062e+05, 0.00000000e+00, 0.00000000e+00,
+ 5.45154948e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.46026823e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.46026823e+06, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -5.70500651e+05, 0.00000000e+00,
+ 0.00000000e+00, -8.39520833e+05, 0.00000000e+00,
+ 0.00000000e+00, -8.39520833e+05, 0.00000000e+00,
+ 0.00000000e+00, 2.84272070e+06, 0.00000000e+00,
+ 0.00000000e+00, -6.43869792e+05, 0.00000000e+00,
+ 0.00000000e+00, -5.06914062e+05, 0.00000000e+00,
+ 0.00000000e+00, -5.06914062e+05, 0.00000000e+00,
+ 0.00000000e+00, 5.45154948e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.46026823e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.46026823e+06, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, -5.70500651e+05,
+ 0.00000000e+00, 0.00000000e+00, -8.39520833e+05,
+ 0.00000000e+00, 0.00000000e+00, -8.39520833e+05,
+ 0.00000000e+00, 0.00000000e+00, 2.84272070e+06,
+ 0.00000000e+00, 0.00000000e+00, -6.43869792e+05,
+ 0.00000000e+00, 0.00000000e+00, -5.06914062e+05,
+ 0.00000000e+00, 0.00000000e+00, -5.06914062e+05,
+ 0.00000000e+00, 0.00000000e+00, 5.45154948e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.46026823e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.46026823e+06,
+ -3.13041667e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.46026823e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.46026823e+06, 0.00000000e+00, 0.00000000e+00,
+ -6.43869792e+05, 0.00000000e+00, 0.00000000e+00,
+ 3.25847917e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.12054688e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.12054688e+06, 0.00000000e+00, 0.00000000e+00,
+ 5.19364583e+05, 0.00000000e+00, 0.00000000e+00,
+ 2.05611458e+06, 0.00000000e+00, 0.00000000e+00,
+ 2.05611458e+06, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -3.13041667e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.46026823e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.46026823e+06, 0.00000000e+00,
+ 0.00000000e+00, -6.43869792e+05, 0.00000000e+00,
+ 0.00000000e+00, 3.25847917e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.12054688e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.12054688e+06, 0.00000000e+00,
+ 0.00000000e+00, 5.19364583e+05, 0.00000000e+00,
+ 0.00000000e+00, 2.05611458e+06, 0.00000000e+00,
+ 0.00000000e+00, 2.05611458e+06, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, -3.13041667e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.46026823e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.46026823e+06,
+ 0.00000000e+00, 0.00000000e+00, -6.43869792e+05,
+ 0.00000000e+00, 0.00000000e+00, 3.25847917e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.12054688e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.12054688e+06,
+ 0.00000000e+00, 0.00000000e+00, 5.19364583e+05,
+ 0.00000000e+00, 0.00000000e+00, 2.05611458e+06,
+ 0.00000000e+00, 0.00000000e+00, 2.05611458e+06,
+ 1.24238411e+06, 0.00000000e+00, 0.00000000e+00,
+ -5.06914062e+05, 0.00000000e+00, 0.00000000e+00,
+ 5.45154948e+05, 0.00000000e+00, 0.00000000e+00,
+ -5.06914062e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.12054688e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.80888281e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.50829167e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.50829167e+06, 0.00000000e+00, 0.00000000e+00,
+ 5.19364583e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.12054688e+06, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 1.24238411e+06, 0.00000000e+00,
+ 0.00000000e+00, -5.06914062e+05, 0.00000000e+00,
+ 0.00000000e+00, 5.45154948e+05, 0.00000000e+00,
+ 0.00000000e+00, -5.06914062e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.12054688e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.80888281e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.50829167e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.50829167e+06, 0.00000000e+00,
+ 0.00000000e+00, 5.19364583e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.12054688e+06, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 1.24238411e+06,
+ 0.00000000e+00, 0.00000000e+00, -5.06914062e+05,
+ 0.00000000e+00, 0.00000000e+00, 5.45154948e+05,
+ 0.00000000e+00, 0.00000000e+00, -5.06914062e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.12054688e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.80888281e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.50829167e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.50829167e+06,
+ 0.00000000e+00, 0.00000000e+00, 5.19364583e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.12054688e+06,
+ 1.24238411e+06, 0.00000000e+00, 0.00000000e+00,
+ 5.45154948e+05, 0.00000000e+00, 0.00000000e+00,
+ -5.06914062e+05, 0.00000000e+00, 0.00000000e+00,
+ -5.06914062e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.12054688e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.50829167e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.80888281e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.50829167e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.12054688e+06, 0.00000000e+00, 0.00000000e+00,
+ 5.19364583e+05, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 1.24238411e+06, 0.00000000e+00,
+ 0.00000000e+00, 5.45154948e+05, 0.00000000e+00,
+ 0.00000000e+00, -5.06914062e+05, 0.00000000e+00,
+ 0.00000000e+00, -5.06914062e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.12054688e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.50829167e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.80888281e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.50829167e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.12054688e+06, 0.00000000e+00,
+ 0.00000000e+00, 5.19364583e+05, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 1.24238411e+06,
+ 0.00000000e+00, 0.00000000e+00, 5.45154948e+05,
+ 0.00000000e+00, 0.00000000e+00, -5.06914062e+05,
+ 0.00000000e+00, 0.00000000e+00, -5.06914062e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.12054688e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.50829167e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.80888281e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.50829167e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.12054688e+06,
+ 0.00000000e+00, 0.00000000e+00, 5.19364583e+05,
+ 1.24238411e+06, 0.00000000e+00, 0.00000000e+00,
+ -5.06914062e+05, 0.00000000e+00, 0.00000000e+00,
+ -5.06914062e+05, 0.00000000e+00, 0.00000000e+00,
+ 5.45154948e+05, 0.00000000e+00, 0.00000000e+00,
+ 5.19364583e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.50829167e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.50829167e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.80888281e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.12054688e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.12054688e+06, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 1.24238411e+06, 0.00000000e+00,
+ 0.00000000e+00, -5.06914062e+05, 0.00000000e+00,
+ 0.00000000e+00, -5.06914062e+05, 0.00000000e+00,
+ 0.00000000e+00, 5.45154948e+05, 0.00000000e+00,
+ 0.00000000e+00, 5.19364583e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.50829167e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.50829167e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.80888281e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.12054688e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.12054688e+06, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 1.24238411e+06,
+ 0.00000000e+00, 0.00000000e+00, -5.06914062e+05,
+ 0.00000000e+00, 0.00000000e+00, -5.06914062e+05,
+ 0.00000000e+00, 0.00000000e+00, 5.45154948e+05,
+ 0.00000000e+00, 0.00000000e+00, 5.19364583e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.50829167e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.50829167e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.80888281e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.12054688e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.12054688e+06,
+ -3.13041667e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.46026823e+06, 0.00000000e+00, 0.00000000e+00,
+ -6.43869792e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.46026823e+06, 0.00000000e+00, 0.00000000e+00,
+ 2.05611458e+06, 0.00000000e+00, 0.00000000e+00,
+ 5.19364583e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.12054688e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.12054688e+06, 0.00000000e+00, 0.00000000e+00,
+ 3.25847917e+06, 0.00000000e+00, 0.00000000e+00,
+ 2.05611458e+06, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -3.13041667e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.46026823e+06, 0.00000000e+00,
+ 0.00000000e+00, -6.43869792e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.46026823e+06, 0.00000000e+00,
+ 0.00000000e+00, 2.05611458e+06, 0.00000000e+00,
+ 0.00000000e+00, 5.19364583e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.12054688e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.12054688e+06, 0.00000000e+00,
+ 0.00000000e+00, 3.25847917e+06, 0.00000000e+00,
+ 0.00000000e+00, 2.05611458e+06, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, -3.13041667e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.46026823e+06,
+ 0.00000000e+00, 0.00000000e+00, -6.43869792e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.46026823e+06,
+ 0.00000000e+00, 0.00000000e+00, 2.05611458e+06,
+ 0.00000000e+00, 0.00000000e+00, 5.19364583e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.12054688e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.12054688e+06,
+ 0.00000000e+00, 0.00000000e+00, 3.25847917e+06,
+ 0.00000000e+00, 0.00000000e+00, 2.05611458e+06,
+ -3.13041667e+05, 0.00000000e+00, 0.00000000e+00,
+ -6.43869792e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.46026823e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.46026823e+06, 0.00000000e+00, 0.00000000e+00,
+ 2.05611458e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.12054688e+06, 0.00000000e+00, 0.00000000e+00,
+ 5.19364583e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.12054688e+06, 0.00000000e+00, 0.00000000e+00,
+ 2.05611458e+06, 0.00000000e+00, 0.00000000e+00,
+ 3.25847917e+06, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -3.13041667e+05, 0.00000000e+00,
+ 0.00000000e+00, -6.43869792e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.46026823e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.46026823e+06, 0.00000000e+00,
+ 0.00000000e+00, 2.05611458e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.12054688e+06, 0.00000000e+00,
+ 0.00000000e+00, 5.19364583e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.12054688e+06, 0.00000000e+00,
+ 0.00000000e+00, 2.05611458e+06, 0.00000000e+00,
+ 0.00000000e+00, 3.25847917e+06, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, -3.13041667e+05,
+ 0.00000000e+00, 0.00000000e+00, -6.43869792e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.46026823e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.46026823e+06,
+ 0.00000000e+00, 0.00000000e+00, 2.05611458e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.12054688e+06,
+ 0.00000000e+00, 0.00000000e+00, 5.19364583e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.12054688e+06,
+ 0.00000000e+00, 0.00000000e+00, 2.05611458e+06,
+ 0.00000000e+00, 0.00000000e+00, 3.25847917e+06,
+};
+
+pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic::ElasticityExplicitLgDeformData3DQuadratic(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::ElasticityExplicitLgDeformData3DQuadratic::~ElasticityExplicitLgDeformData3DQuadratic(void)
+{}
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData3DQuadratic.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData3DQuadratic.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData3DQuadratic.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformData3DQuadratic.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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_elasticityexplicitlgdeformdata3dquadratic_hh)
+#define pylith_feassemble_elasticityexplicitlgdeformdata3dquadratic_hh
+
+#include "IntegratorData.hh"
+
+namespace pylith {
+ namespace feassemble {
+ class ElasticityExplicitLgDeformData3DQuadratic;
+ } // pylith
+} // feassemble
+
+class pylith::feassemble::ElasticityExplicitLgDeformData3DQuadratic : public IntegratorData
+{
+
+public:
+
+ /// Constructor
+ ElasticityExplicitLgDeformData3DQuadratic(void);
+
+ /// Destructor
+ ~ElasticityExplicitLgDeformData3DQuadratic(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_elasticityexplicitlgdeformdata3dquadratic_hh
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData1DLinear.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData1DLinear.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData1DLinear.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData1DLinear.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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 "ElasticityExplicitLgDeformGravData1DLinear.hh"
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_spaceDim = 1;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_cellDim = 1;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_numVertices = 2;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_numCells = 1;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_numBasis = 2;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_numQuadPts = 1;
+
+const char* pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_matType = "ElasticStrain1D";
+
+const char* pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_matDBFilename = "data/elasticstrain1d.spatialdb";
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_matId = 0;
+
+const char* pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_matLabel = "elastic strain 1-D";
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_dt = 1.00000000e-02;
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_gravityVec[] = {
+ -1.00000000e+08,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_vertices[] = {
+ -2.50000000e-01,
+ 2.00000000e+00,
+};
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_cells[] = {
+0,1,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_verticesRef[] = {
+ -1.00000000e+00,
+ 1.00000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_quadPts[] = {
+ 0.00000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_quadWts[] = {
+ 2.00000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_basis[] = {
+ 5.00000000e-01,
+ 5.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_basisDerivRef[] = {
+ -5.00000000e-01,
+ 5.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_fieldTIncr[] = {
+ 1.20000000e+00,
+ 1.70000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_fieldT[] = {
+ 1.10000000e+00,
+ 1.50000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_fieldTmdt[] = {
+ 1.00000000e+00,
+ 1.30000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_valsResidual[] = {
+ -2.60726275e+11,
+ -3.01765287e+11,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::_valsJacobian[] = {
+ 1.40625000e+07,
+ 1.40625000e+07,
+ 1.40625000e+07,
+ 1.40625000e+07,
+};
+
+pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear::ElasticityExplicitLgDeformGravData1DLinear(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::ElasticityExplicitLgDeformGravData1DLinear::~ElasticityExplicitLgDeformGravData1DLinear(void)
+{}
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData1DLinear.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData1DLinear.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData1DLinear.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData1DLinear.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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_elasticityexplicitlgdeformgravdata1dlinear_hh)
+#define pylith_feassemble_elasticityexplicitlgdeformgravdata1dlinear_hh
+
+#include "IntegratorData.hh"
+
+namespace pylith {
+ namespace feassemble {
+ class ElasticityExplicitLgDeformGravData1DLinear;
+ } // pylith
+} // feassemble
+
+class pylith::feassemble::ElasticityExplicitLgDeformGravData1DLinear : public IntegratorData
+{
+
+public:
+
+ /// Constructor
+ ElasticityExplicitLgDeformGravData1DLinear(void);
+
+ /// Destructor
+ ~ElasticityExplicitLgDeformGravData1DLinear(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_elasticityexplicitlgdeformgravdata1dlinear_hh
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData1DQuadratic.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData1DQuadratic.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData1DQuadratic.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData1DQuadratic.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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 "ElasticityExplicitLgDeformGravData1DQuadratic.hh"
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_spaceDim = 1;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_cellDim = 1;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_numVertices = 3;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_numCells = 1;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_numBasis = 3;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_numQuadPts = 2;
+
+const char* pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_matType = "ElasticStrain1D";
+
+const char* pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_matDBFilename = "data/elasticstrain1d.spatialdb";
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_matId = 0;
+
+const char* pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_matLabel = "elastic strain 1-D";
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_dt = 1.00000000e-02;
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_gravityVec[] = {
+ -1.00000000e+08,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_vertices[] = {
+ -2.50000000e-01,
+ 2.00000000e+00,
+ 8.75000000e-01,
+};
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_cells[] = {
+0,1,2,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_verticesRef[] = {
+ -1.00000000e+00,
+ 1.00000000e+00,
+ 0.00000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_quadPts[] = {
+ -5.77350269e-01,
+ 5.77350269e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_quadWts[] = {
+ 1.00000000e+00, 1.00000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_basis[] = {
+ 4.55341801e-01,
+ -1.22008468e-01,
+ 6.66666667e-01,
+ -1.22008468e-01,
+ 4.55341801e-01,
+ 6.66666667e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_basisDerivRef[] = {
+ -1.07735027e+00,
+ -7.73502692e-02,
+ 1.15470054e+00,
+ 7.73502692e-02,
+ 1.07735027e+00,
+ -1.15470054e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_fieldTIncr[] = {
+ 1.20000000e+00,
+ 0.00000000e+00,
+ 1.70000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_fieldT[] = {
+ 1.10000000e+00,
+ 1.00000000e-01,
+ 1.50000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_fieldTmdt[] = {
+ 1.00000000e+00,
+ 1.00000000e-01,
+ 1.30000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_valsResidual[] = {
+ -9.62763117e+09,
+ -1.03060667e+11,
+ -4.49803264e+11,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::_valsJacobian[] = {
+ 6.25000000e+06,
+ -3.12500000e+06,
+ 6.25000000e+06,
+ -3.12500000e+06,
+ 6.25000000e+06,
+ 6.25000000e+06,
+ 6.25000000e+06,
+ 6.25000000e+06,
+ 2.50000000e+07,
+};
+
+pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic::ElasticityExplicitLgDeformGravData1DQuadratic(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::ElasticityExplicitLgDeformGravData1DQuadratic::~ElasticityExplicitLgDeformGravData1DQuadratic(void)
+{}
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData1DQuadratic.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData1DQuadratic.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData1DQuadratic.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData1DQuadratic.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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_elasticityexplicitlgdeformgravdata1dquadratic_hh)
+#define pylith_feassemble_elasticityexplicitlgdeformgravdata1dquadratic_hh
+
+#include "IntegratorData.hh"
+
+namespace pylith {
+ namespace feassemble {
+ class ElasticityExplicitLgDeformGravData1DQuadratic;
+ } // pylith
+} // feassemble
+
+class pylith::feassemble::ElasticityExplicitLgDeformGravData1DQuadratic : public IntegratorData
+{
+
+public:
+
+ /// Constructor
+ ElasticityExplicitLgDeformGravData1DQuadratic(void);
+
+ /// Destructor
+ ~ElasticityExplicitLgDeformGravData1DQuadratic(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_elasticityexplicitlgdeformgravdata1dquadratic_hh
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData2DLinear.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData2DLinear.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData2DLinear.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData2DLinear.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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 "ElasticityExplicitLgDeformGravData2DLinear.hh"
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_spaceDim = 2;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_cellDim = 2;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_numVertices = 3;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_numCells = 1;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_numBasis = 3;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_numQuadPts = 1;
+
+const char* pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_matType = "ElasticPlaneStrain";
+
+const char* pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_matDBFilename = "data/elasticplanestrain.spatialdb";
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_matId = 0;
+
+const char* pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_matLabel = "elastic strain 2-D";
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_dt = 1.00000000e-02;
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_gravityVec[] = {
+ 0.00000000e+00, -1.00000000e+08,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_vertices[] = {
+ 2.00000000e-01, -4.00000000e-01,
+ 3.00000000e-01, 5.00000000e-01,
+ -1.00000000e+00, -2.00000000e-01,
+};
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_cells[] = {
+0,1,2,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_verticesRef[] = {
+ -1.00000000e+00, -1.00000000e+00,
+ 1.00000000e+00, -1.00000000e+00,
+ -1.00000000e+00, 1.00000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_quadPts[] = {
+ -3.33333333e-01, -3.33333333e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_quadWts[] = {
+ 5.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_basis[] = {
+ 3.33333333e-01, 3.33333333e-01,
+ 3.33333333e-01,};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_basisDerivRef[] = {
+ -5.00000000e-01, -5.00000000e-01,
+ 5.00000000e-01, 0.00000000e+00,
+ 0.00000000e+00, 5.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_fieldTIncr[] = {
+ 1.30000000e+00, -9.00000000e-01,
+ 1.40000000e+00, 1.50000000e+00,
+ 5.00000000e-01, -9.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_fieldT[] = {
+ 1.60000000e+00, -8.00000000e-01,
+ 9.00000000e-01, 7.00000000e-01,
+ -2.00000000e-01, -1.10000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_fieldTmdt[] = {
+ 8.00000000e-01, 1.00000000e-01,
+ 5.00000000e-01, 3.00000000e-01,
+ -1.00000000e-01, -6.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_valsResidual[] = {
+ -1.30906935e+11, 1.34368014e+11,
+ 4.13444081e+10, -1.56129945e+11,
+ 8.95637877e+10, -1.26142140e+10,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::_valsJacobian[] = {
+ 3.81944444e+05, 0.00000000e+00,
+ 3.81944444e+05, 0.00000000e+00,
+ 3.81944444e+05, 0.00000000e+00,
+ 0.00000000e+00, 3.81944444e+05,
+ 0.00000000e+00, 3.81944444e+05,
+ 0.00000000e+00, 3.81944444e+05,
+ 3.81944444e+05, 0.00000000e+00,
+ 3.81944444e+05, 0.00000000e+00,
+ 3.81944444e+05, 0.00000000e+00,
+ 0.00000000e+00, 3.81944444e+05,
+ 0.00000000e+00, 3.81944444e+05,
+ 0.00000000e+00, 3.81944444e+05,
+ 3.81944444e+05, 0.00000000e+00,
+ 3.81944444e+05, 0.00000000e+00,
+ 3.81944444e+05, 0.00000000e+00,
+ 0.00000000e+00, 3.81944444e+05,
+ 0.00000000e+00, 3.81944444e+05,
+ 0.00000000e+00, 3.81944444e+05,
+};
+
+pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear::ElasticityExplicitLgDeformGravData2DLinear(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::ElasticityExplicitLgDeformGravData2DLinear::~ElasticityExplicitLgDeformGravData2DLinear(void)
+{}
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData2DLinear.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData2DLinear.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData2DLinear.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData2DLinear.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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_elasticityexplicitlgdeformgravdata2dlinear_hh)
+#define pylith_feassemble_elasticityexplicitlgdeformgravdata2dlinear_hh
+
+#include "IntegratorData.hh"
+
+namespace pylith {
+ namespace feassemble {
+ class ElasticityExplicitLgDeformGravData2DLinear;
+ } // pylith
+} // feassemble
+
+class pylith::feassemble::ElasticityExplicitLgDeformGravData2DLinear : public IntegratorData
+{
+
+public:
+
+ /// Constructor
+ ElasticityExplicitLgDeformGravData2DLinear(void);
+
+ /// Destructor
+ ~ElasticityExplicitLgDeformGravData2DLinear(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_elasticityexplicitlgdeformgravdata2dlinear_hh
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData2DQuadratic.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData2DQuadratic.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData2DQuadratic.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData2DQuadratic.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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 "ElasticityExplicitLgDeformGravData2DQuadratic.hh"
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_spaceDim = 2;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_cellDim = 2;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_numVertices = 6;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_numCells = 1;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_numBasis = 6;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_numQuadPts = 6;
+
+const char* pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_matType = "ElasticPlaneStrain";
+
+const char* pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_matDBFilename = "data/elasticplanestrain.spatialdb";
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_matId = 0;
+
+const char* pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_matLabel = "elastic strain 2-D";
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_dt = 1.00000000e-02;
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_gravityVec[] = {
+ 0.00000000e+00, -1.00000000e+08,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_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::ElasticityExplicitLgDeformGravData2DQuadratic::_cells[] = {
+0,1,2,3,4,5,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_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::ElasticityExplicitLgDeformGravData2DQuadratic::_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::ElasticityExplicitLgDeformGravData2DQuadratic::_quadWts[] = {
+ 3.33333333e-01, 3.33333333e-01, 3.33333333e-01, 3.33333333e-01, 3.33333333e-01, 3.33333333e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_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::ElasticityExplicitLgDeformGravData2DQuadratic::_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::ElasticityExplicitLgDeformGravData2DQuadratic::_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::ElasticityExplicitLgDeformGravData2DQuadratic::_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::ElasticityExplicitLgDeformGravData2DQuadratic::_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::ElasticityExplicitLgDeformGravData2DQuadratic::_valsResidual[] = {
+ 3.35158253e+10, 3.88286927e+10,
+ -7.94924298e+10, -8.36255788e+10,
+ 2.10014068e+10, -1.83290517e+10,
+ 7.31028066e+10, -2.31357637e+11,
+ -5.42559207e+10, -1.51051145e+11,
+ 6.13196816e+09, -4.46481142e+09,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::_valsJacobian[] = {
+ 2.24121094e+06, 0.00000000e+00,
+ 2.41699219e+05, 0.00000000e+00,
+ 2.41699219e+05, 0.00000000e+00,
+ 4.21875000e+06, 0.00000000e+00,
+ -1.36230469e+06, 0.00000000e+00,
+ -1.36230469e+06, 0.00000000e+00,
+ 0.00000000e+00, 2.24121094e+06,
+ 0.00000000e+00, 2.41699219e+05,
+ 0.00000000e+00, 2.41699219e+05,
+ 0.00000000e+00, 4.21875000e+06,
+ 0.00000000e+00, -1.36230469e+06,
+ 0.00000000e+00, -1.36230469e+06,
+ 2.41699219e+05, 0.00000000e+00,
+ 3.61083984e+06, 0.00000000e+00,
+ -6.73828125e+05, 0.00000000e+00,
+ 3.45703125e+06, 0.00000000e+00,
+ -1.52343750e+06, 0.00000000e+00,
+ -1.12792969e+06, 0.00000000e+00,
+ 0.00000000e+00, 2.41699219e+05,
+ 0.00000000e+00, 3.61083984e+06,
+ 0.00000000e+00, -6.73828125e+05,
+ 0.00000000e+00, 3.45703125e+06,
+ 0.00000000e+00, -1.52343750e+06,
+ 0.00000000e+00, -1.12792969e+06,
+ 2.41699219e+05, 0.00000000e+00,
+ -6.73828125e+05, 0.00000000e+00,
+ 3.61083984e+06, 0.00000000e+00,
+ 3.45703125e+06, 0.00000000e+00,
+ -1.12792969e+06, 0.00000000e+00,
+ -1.52343750e+06, 0.00000000e+00,
+ 0.00000000e+00, 2.41699219e+05,
+ 0.00000000e+00, -6.73828125e+05,
+ 0.00000000e+00, 3.61083984e+06,
+ 0.00000000e+00, 3.45703125e+06,
+ 0.00000000e+00, -1.12792969e+06,
+ 0.00000000e+00, -1.52343750e+06,
+ 4.21875000e+06, 0.00000000e+00,
+ 3.45703125e+06, 0.00000000e+00,
+ 3.45703125e+06, 0.00000000e+00,
+ 2.21484375e+07, 0.00000000e+00,
+ -5.39062500e+06, 0.00000000e+00,
+ -5.39062500e+06, 0.00000000e+00,
+ 0.00000000e+00, 4.21875000e+06,
+ 0.00000000e+00, 3.45703125e+06,
+ 0.00000000e+00, 3.45703125e+06,
+ 0.00000000e+00, 2.21484375e+07,
+ 0.00000000e+00, -5.39062500e+06,
+ 0.00000000e+00, -5.39062500e+06,
+ -1.36230469e+06, 0.00000000e+00,
+ -1.52343750e+06, 0.00000000e+00,
+ -1.12792969e+06, 0.00000000e+00,
+ -5.39062500e+06, 0.00000000e+00,
+ 8.46679688e+06, 0.00000000e+00,
+ 6.09375000e+06, 0.00000000e+00,
+ 0.00000000e+00, -1.36230469e+06,
+ 0.00000000e+00, -1.52343750e+06,
+ 0.00000000e+00, -1.12792969e+06,
+ 0.00000000e+00, -5.39062500e+06,
+ 0.00000000e+00, 8.46679688e+06,
+ 0.00000000e+00, 6.09375000e+06,
+ -1.36230469e+06, 0.00000000e+00,
+ -1.12792969e+06, 0.00000000e+00,
+ -1.52343750e+06, 0.00000000e+00,
+ -5.39062500e+06, 0.00000000e+00,
+ 6.09375000e+06, 0.00000000e+00,
+ 8.46679688e+06, 0.00000000e+00,
+ 0.00000000e+00, -1.36230469e+06,
+ 0.00000000e+00, -1.12792969e+06,
+ 0.00000000e+00, -1.52343750e+06,
+ 0.00000000e+00, -5.39062500e+06,
+ 0.00000000e+00, 6.09375000e+06,
+ 0.00000000e+00, 8.46679688e+06,
+};
+
+pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic::ElasticityExplicitLgDeformGravData2DQuadratic(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::ElasticityExplicitLgDeformGravData2DQuadratic::~ElasticityExplicitLgDeformGravData2DQuadratic(void)
+{}
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData2DQuadratic.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData2DQuadratic.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData2DQuadratic.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData2DQuadratic.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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_elasticityexplicitlgdeformgravdata2dquadratic_hh)
+#define pylith_feassemble_elasticityexplicitlgdeformgravdata2dquadratic_hh
+
+#include "IntegratorData.hh"
+
+namespace pylith {
+ namespace feassemble {
+ class ElasticityExplicitLgDeformGravData2DQuadratic;
+ } // pylith
+} // feassemble
+
+class pylith::feassemble::ElasticityExplicitLgDeformGravData2DQuadratic : public IntegratorData
+{
+
+public:
+
+ /// Constructor
+ ElasticityExplicitLgDeformGravData2DQuadratic(void);
+
+ /// Destructor
+ ~ElasticityExplicitLgDeformGravData2DQuadratic(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_elasticityexplicitlgdeformgravdata2dquadratic_hh
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData3DLinear.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData3DLinear.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData3DLinear.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData3DLinear.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,192 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+// DO NOT EDIT THIS FILE
+// This file was generated from python application integratorelasticitylgdeform.
+
+#include "ElasticityExplicitLgDeformGravData3DLinear.hh"
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_spaceDim = 3;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_cellDim = 3;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_numVertices = 4;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_numCells = 1;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_numBasis = 4;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_numQuadPts = 1;
+
+const char* pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_matType = "ElasticIsotropic3D";
+
+const char* pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_matDBFilename = "data/elasticisotropic3d.spatialdb";
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_matId = 0;
+
+const char* pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_matLabel = "elastic isotropic 3-D";
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_dt = 1.00000000e-02;
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_gravityVec[] = {
+ 0.00000000e+00, 0.00000000e+00, -1.00000000e+08,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_vertices[] = {
+ -5.00000000e-01, -1.00000000e+00, -5.00000000e-01,
+ 2.00000000e+00, -5.00000000e-01, -4.00000000e-01,
+ 1.00000000e+00, -1.00000000e-01, -3.00000000e-01,
+ -2.00000000e-01, 5.00000000e-01, 2.00000000e+00,
+};
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_cells[] = {
+0,1,2,3,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_verticesRef[] = {
+ -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
+ 1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
+ -1.00000000e+00, 1.00000000e+00, -1.00000000e+00,
+ -1.00000000e+00, -1.00000000e+00, 1.00000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_quadPts[] = {
+ -5.00000000e-01, -5.00000000e-01, -5.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_quadWts[] = {
+ 1.33333333e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_basis[] = {
+ 2.50000000e-01, 2.50000000e-01, 2.50000000e-01,
+ 2.50000000e-01,};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_basisDerivRef[] = {
+ -5.00000000e-01, -5.00000000e-01, -5.00000000e-01,
+ 5.00000000e-01, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 5.00000000e-01, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 5.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_fieldTIncr[] = {
+ 3.00000000e-01, 2.00000000e-01, -5.00000000e-01,
+ -3.00000000e-01, -4.00000000e-01, -6.00000000e-01,
+ 2.00000000e-01, 6.00000000e-01, 3.00000000e-01,
+ -6.00000000e-01, -1.00000000e-01, -3.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_fieldT[] = {
+ 8.00000000e-01, 1.00000000e-01, -6.00000000e-01,
+ -1.00000000e-01, -2.00000000e-01, -5.00000000e-01,
+ 1.00000000e-01, 7.00000000e-01, 2.00000000e-01,
+ -5.00000000e-01, -0.00000000e+00, -2.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_fieldTmdt[] = {
+ 1.00000000e-01, 1.00000000e-01, -3.00000000e-01,
+ -2.00000000e-01, -1.00000000e-01, -5.00000000e-01,
+ 2.00000000e-01, 4.00000000e-01, 1.00000000e-01,
+ -4.00000000e-01, -1.00000000e-01, -1.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_valsResidual[] = {
+ -1.33662714e+10, 3.00655673e+11, 1.14595308e+11,
+ -5.48903846e+10, 6.55599973e+11, 2.70835040e+11,
+ 6.45906661e+10, -1.06342926e+12, -5.20052795e+11,
+ 3.66800744e+09, 1.07174625e+11, 1.21438352e+08,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::_valsJacobian[] = {
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 8.40625000e+05, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 8.40625000e+05, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+ 0.00000000e+00, 0.00000000e+00, 8.40625000e+05,
+};
+
+pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear::ElasticityExplicitLgDeformGravData3DLinear(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::ElasticityExplicitLgDeformGravData3DLinear::~ElasticityExplicitLgDeformGravData3DLinear(void)
+{}
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData3DLinear.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData3DLinear.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData3DLinear.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData3DLinear.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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_elasticityexplicitlgdeformgravdata3dlinear_hh)
+#define pylith_feassemble_elasticityexplicitlgdeformgravdata3dlinear_hh
+
+#include "IntegratorData.hh"
+
+namespace pylith {
+ namespace feassemble {
+ class ElasticityExplicitLgDeformGravData3DLinear;
+ } // pylith
+} // feassemble
+
+class pylith::feassemble::ElasticityExplicitLgDeformGravData3DLinear : public IntegratorData
+{
+
+public:
+
+ /// Constructor
+ ElasticityExplicitLgDeformGravData3DLinear(void);
+
+ /// Destructor
+ ~ElasticityExplicitLgDeformGravData3DLinear(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_elasticityexplicitlgdeformgravdata3dlinear_hh
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData3DQuadratic.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData3DQuadratic.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData3DQuadratic.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData3DQuadratic.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,531 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+// DO NOT EDIT THIS FILE
+// This file was generated from python application integratorelasticitylgdeform.
+
+#include "ElasticityExplicitLgDeformGravData3DQuadratic.hh"
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_spaceDim = 3;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_cellDim = 3;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_numVertices = 10;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_numCells = 1;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_numBasis = 10;
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_numQuadPts = 4;
+
+const char* pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_matType = "ElasticIsotropic3D";
+
+const char* pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_matDBFilename = "data/elasticisotropic3d.spatialdb";
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_matId = 0;
+
+const char* pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_matLabel = "elastic isotropic 3-D";
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_dt = 1.00000000e-02;
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_gravityVec[] = {
+ 0.00000000e+00, 0.00000000e+00, -1.00000000e+08,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_vertices[] = {
+ -5.00000000e-01, -2.00000000e+00, -1.00000000e+00,
+ 2.00000000e+00, -2.00000000e+00, -5.00000000e-01,
+ 1.00000000e+00, 1.00000000e+00, 0.00000000e+00,
+ 2.00000000e-01, 5.00000000e-01, 2.00000000e+00,
+ 1.50000000e+00, -5.00000000e-01, -2.50000000e-01,
+ 2.50000000e-01, -5.00000000e-01, -5.00000000e-01,
+ 7.50000000e-01, -2.00000000e+00, -7.50000000e-01,
+ -1.50000000e-01, -7.50000000e-01, 5.00000000e-01,
+ 1.10000000e+00, -7.50000000e-01, 7.50000000e-01,
+ 6.00000000e-01, 7.50000000e-01, 1.00000000e+00,
+};
+
+const int pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_cells[] = {
+0,1,2,3,4,5,6,7,8,9,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_verticesRef[] = {
+ -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
+ 1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
+ -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,
+ -1.00000000e+00, 0.00000000e+00, -1.00000000e+00,
+ 0.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,
+ -1.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_quadPts[] = {
+ -8.00000000e-01, -8.00000000e-01, -8.00000000e-01,
+ 5.00000000e-01, -8.00000000e-01, -8.00000000e-01,
+ -8.00000000e-01, 5.00000000e-01, -8.00000000e-01,
+ -8.00000000e-01, -8.00000000e-01, 5.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_quadWts[] = {
+ 3.33333333e-01, 3.33333333e-01, 3.33333333e-01, 3.33333333e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_basis[] = {
+ 2.80000000e-01, -8.00000000e-02, -8.00000000e-02,
+ -8.00000000e-02, 4.00000000e-02, 2.80000000e-01,
+ 2.80000000e-01, 2.80000000e-01, 4.00000000e-02,
+ 4.00000000e-02, -4.50000000e-02, 3.75000000e-01,
+ -8.00000000e-02, -8.00000000e-02, 3.00000000e-01,
+ 2.00000000e-02, 1.50000000e-01, 2.00000000e-02,
+ 3.00000000e-01, 4.00000000e-02, -4.50000000e-02,
+ -8.00000000e-02, 3.75000000e-01, -8.00000000e-02,
+ 3.00000000e-01, 1.50000000e-01, 2.00000000e-02,
+ 2.00000000e-02, 4.00000000e-02, 3.00000000e-01,
+ -4.50000000e-02, -8.00000000e-02, -8.00000000e-02,
+ 3.75000000e-01, 4.00000000e-02, 2.00000000e-02,
+ 2.00000000e-02, 1.50000000e-01, 3.00000000e-01,
+ 3.00000000e-01,};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_basisDerivRef[] = {
+ -9.00000000e-01, -9.00000000e-01, -9.00000000e-01,
+ -3.00000000e-01, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -3.00000000e-01, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, -3.00000000e-01,
+ 2.00000000e-01, 2.00000000e-01, 0.00000000e+00,
+ -2.00000000e-01, 1.20000000e+00, -2.00000000e-01,
+ 1.20000000e+00, -2.00000000e-01, -2.00000000e-01,
+ -2.00000000e-01, -2.00000000e-01, 1.20000000e+00,
+ 2.00000000e-01, 0.00000000e+00, 2.00000000e-01,
+ 0.00000000e+00, 2.00000000e-01, 2.00000000e-01,
+ 4.00000000e-01, 4.00000000e-01, 4.00000000e-01,
+ 1.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -3.00000000e-01, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, -3.00000000e-01,
+ 2.00000000e-01, 1.50000000e+00, 0.00000000e+00,
+ -2.00000000e-01, -1.00000000e-01, -2.00000000e-01,
+ -1.40000000e+00, -1.50000000e+00, -1.50000000e+00,
+ -2.00000000e-01, -2.00000000e-01, -1.00000000e-01,
+ 2.00000000e-01, 0.00000000e+00, 1.50000000e+00,
+ 0.00000000e+00, 2.00000000e-01, 2.00000000e-01,
+ 4.00000000e-01, 4.00000000e-01, 4.00000000e-01,
+ -3.00000000e-01, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, -3.00000000e-01,
+ 1.50000000e+00, 2.00000000e-01, 0.00000000e+00,
+ -1.50000000e+00, -1.40000000e+00, -1.50000000e+00,
+ -1.00000000e-01, -2.00000000e-01, -2.00000000e-01,
+ -2.00000000e-01, -2.00000000e-01, -1.00000000e-01,
+ 2.00000000e-01, 0.00000000e+00, 2.00000000e-01,
+ 0.00000000e+00, 2.00000000e-01, 1.50000000e+00,
+ 4.00000000e-01, 4.00000000e-01, 4.00000000e-01,
+ -3.00000000e-01, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -3.00000000e-01, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 1.00000000e+00,
+ 2.00000000e-01, 2.00000000e-01, 0.00000000e+00,
+ -2.00000000e-01, -1.00000000e-01, -2.00000000e-01,
+ -1.00000000e-01, -2.00000000e-01, -2.00000000e-01,
+ -1.50000000e+00, -1.50000000e+00, -1.40000000e+00,
+ 1.50000000e+00, 0.00000000e+00, 2.00000000e-01,
+ 0.00000000e+00, 1.50000000e+00, 2.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_fieldTIncr[] = {
+ 3.00000000e-01, -4.00000000e-01, -4.00000000e-01,
+ -6.00000000e-01, 8.00000000e-01, 2.00000000e-01,
+ 5.00000000e-01, 5.00000000e-01, 7.00000000e-01,
+ -7.00000000e-01, -5.00000000e-01, -7.00000000e-01,
+ -6.00000000e-01, -3.00000000e-01, 8.00000000e-01,
+ -4.00000000e-01, -8.00000000e-01, -5.00000000e-01,
+ 7.00000000e-01, 8.00000000e-01, -5.00000000e-01,
+ -5.00000000e-01, -5.00000000e-01, -7.00000000e-01,
+ -3.00000000e-01, -9.00000000e-01, 8.00000000e-01,
+ -1.00000000e-01, 5.00000000e-01, -9.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_fieldT[] = {
+ 1.00000000e-01, -2.00000000e-01, -6.00000000e-01,
+ -3.00000000e-01, 4.00000000e-01, 9.00000000e-01,
+ 6.00000000e-01, 8.00000000e-01, 5.00000000e-01,
+ -8.00000000e-01, -6.00000000e-01, -8.00000000e-01,
+ -0.00000000e+00, -2.00000000e-01, 6.00000000e-01,
+ -4.00000000e-01, -7.00000000e-01, -2.00000000e-01,
+ 7.00000000e-01, 6.00000000e-01, -1.00000000e-01,
+ -4.00000000e-01, -3.00000000e-01, -3.00000000e-01,
+ -7.00000000e-01, -6.00000000e-01, 1.00000000e-01,
+ -9.00000000e-01, 3.00000000e-01, -8.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_fieldTmdt[] = {
+ 2.00000000e-01, -3.00000000e-01, -1.00000000e-01,
+ -4.00000000e-01, 2.00000000e-01, 3.00000000e-01,
+ -5.00000000e-01, 2.00000000e-01, 2.00000000e-01,
+ -3.00000000e-01, -8.00000000e-01, -3.00000000e-01,
+ -5.00000000e-01, -9.00000000e-01, 4.00000000e-01,
+ -3.00000000e-01, -6.00000000e-01, -8.00000000e-01,
+ 9.00000000e-01, 5.00000000e-01, -2.00000000e-01,
+ -7.00000000e-01, -2.00000000e-01, -9.00000000e-01,
+ -5.00000000e-01, -8.00000000e-01, 4.00000000e-01,
+ -4.00000000e-01, 5.00000000e-01, -7.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_valsResidual[] = {
+ 3.68914019e+10, 2.89140041e+10, -2.66277141e+10,
+ 1.31656837e+11, -3.38172944e+10, 2.73208483e+10,
+ -3.92908518e+11, -2.10628710e+11, -2.25784275e+11,
+ -1.14271876e+11, 1.30714284e+11, -1.31988081e+11,
+ -2.64261066e+11, -2.85532868e+10, -1.61152340e+11,
+ 4.59398298e+11, 2.32374884e+11, 1.91365064e+11,
+ -2.46995439e+11, -7.38540882e+10, -1.31574135e+11,
+ 5.25207525e+10, -8.35311020e+10, -9.84181095e+10,
+ -1.20397414e+11, 3.07705881e+11, -3.84670615e+11,
+ 4.58366027e+11, -2.69314282e+11, 2.30079143e+11,
+};
+
+const double pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::_valsJacobian[] = {
+ 1.50251107e+06, 0.00000000e+00, 0.00000000e+00,
+ -5.70500651e+05, 0.00000000e+00, 0.00000000e+00,
+ -5.70500651e+05, 0.00000000e+00, 0.00000000e+00,
+ -5.70500651e+05, 0.00000000e+00, 0.00000000e+00,
+ -3.13041667e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.24238411e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.24238411e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.24238411e+06, 0.00000000e+00, 0.00000000e+00,
+ -3.13041667e+05, 0.00000000e+00, 0.00000000e+00,
+ -3.13041667e+05, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 1.50251107e+06, 0.00000000e+00,
+ 0.00000000e+00, -5.70500651e+05, 0.00000000e+00,
+ 0.00000000e+00, -5.70500651e+05, 0.00000000e+00,
+ 0.00000000e+00, -5.70500651e+05, 0.00000000e+00,
+ 0.00000000e+00, -3.13041667e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.24238411e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.24238411e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.24238411e+06, 0.00000000e+00,
+ 0.00000000e+00, -3.13041667e+05, 0.00000000e+00,
+ 0.00000000e+00, -3.13041667e+05, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 1.50251107e+06,
+ 0.00000000e+00, 0.00000000e+00, -5.70500651e+05,
+ 0.00000000e+00, 0.00000000e+00, -5.70500651e+05,
+ 0.00000000e+00, 0.00000000e+00, -5.70500651e+05,
+ 0.00000000e+00, 0.00000000e+00, -3.13041667e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.24238411e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.24238411e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.24238411e+06,
+ 0.00000000e+00, 0.00000000e+00, -3.13041667e+05,
+ 0.00000000e+00, 0.00000000e+00, -3.13041667e+05,
+ -5.70500651e+05, 0.00000000e+00, 0.00000000e+00,
+ 2.84272070e+06, 0.00000000e+00, 0.00000000e+00,
+ -8.39520833e+05, 0.00000000e+00, 0.00000000e+00,
+ -8.39520833e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.46026823e+06, 0.00000000e+00, 0.00000000e+00,
+ -5.06914062e+05, 0.00000000e+00, 0.00000000e+00,
+ 5.45154948e+05, 0.00000000e+00, 0.00000000e+00,
+ -5.06914062e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.46026823e+06, 0.00000000e+00, 0.00000000e+00,
+ -6.43869792e+05, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -5.70500651e+05, 0.00000000e+00,
+ 0.00000000e+00, 2.84272070e+06, 0.00000000e+00,
+ 0.00000000e+00, -8.39520833e+05, 0.00000000e+00,
+ 0.00000000e+00, -8.39520833e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.46026823e+06, 0.00000000e+00,
+ 0.00000000e+00, -5.06914062e+05, 0.00000000e+00,
+ 0.00000000e+00, 5.45154948e+05, 0.00000000e+00,
+ 0.00000000e+00, -5.06914062e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.46026823e+06, 0.00000000e+00,
+ 0.00000000e+00, -6.43869792e+05, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, -5.70500651e+05,
+ 0.00000000e+00, 0.00000000e+00, 2.84272070e+06,
+ 0.00000000e+00, 0.00000000e+00, -8.39520833e+05,
+ 0.00000000e+00, 0.00000000e+00, -8.39520833e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.46026823e+06,
+ 0.00000000e+00, 0.00000000e+00, -5.06914062e+05,
+ 0.00000000e+00, 0.00000000e+00, 5.45154948e+05,
+ 0.00000000e+00, 0.00000000e+00, -5.06914062e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.46026823e+06,
+ 0.00000000e+00, 0.00000000e+00, -6.43869792e+05,
+ -5.70500651e+05, 0.00000000e+00, 0.00000000e+00,
+ -8.39520833e+05, 0.00000000e+00, 0.00000000e+00,
+ 2.84272070e+06, 0.00000000e+00, 0.00000000e+00,
+ -8.39520833e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.46026823e+06, 0.00000000e+00, 0.00000000e+00,
+ 5.45154948e+05, 0.00000000e+00, 0.00000000e+00,
+ -5.06914062e+05, 0.00000000e+00, 0.00000000e+00,
+ -5.06914062e+05, 0.00000000e+00, 0.00000000e+00,
+ -6.43869792e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.46026823e+06, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -5.70500651e+05, 0.00000000e+00,
+ 0.00000000e+00, -8.39520833e+05, 0.00000000e+00,
+ 0.00000000e+00, 2.84272070e+06, 0.00000000e+00,
+ 0.00000000e+00, -8.39520833e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.46026823e+06, 0.00000000e+00,
+ 0.00000000e+00, 5.45154948e+05, 0.00000000e+00,
+ 0.00000000e+00, -5.06914062e+05, 0.00000000e+00,
+ 0.00000000e+00, -5.06914062e+05, 0.00000000e+00,
+ 0.00000000e+00, -6.43869792e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.46026823e+06, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, -5.70500651e+05,
+ 0.00000000e+00, 0.00000000e+00, -8.39520833e+05,
+ 0.00000000e+00, 0.00000000e+00, 2.84272070e+06,
+ 0.00000000e+00, 0.00000000e+00, -8.39520833e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.46026823e+06,
+ 0.00000000e+00, 0.00000000e+00, 5.45154948e+05,
+ 0.00000000e+00, 0.00000000e+00, -5.06914062e+05,
+ 0.00000000e+00, 0.00000000e+00, -5.06914062e+05,
+ 0.00000000e+00, 0.00000000e+00, -6.43869792e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.46026823e+06,
+ -5.70500651e+05, 0.00000000e+00, 0.00000000e+00,
+ -8.39520833e+05, 0.00000000e+00, 0.00000000e+00,
+ -8.39520833e+05, 0.00000000e+00, 0.00000000e+00,
+ 2.84272070e+06, 0.00000000e+00, 0.00000000e+00,
+ -6.43869792e+05, 0.00000000e+00, 0.00000000e+00,
+ -5.06914062e+05, 0.00000000e+00, 0.00000000e+00,
+ -5.06914062e+05, 0.00000000e+00, 0.00000000e+00,
+ 5.45154948e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.46026823e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.46026823e+06, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -5.70500651e+05, 0.00000000e+00,
+ 0.00000000e+00, -8.39520833e+05, 0.00000000e+00,
+ 0.00000000e+00, -8.39520833e+05, 0.00000000e+00,
+ 0.00000000e+00, 2.84272070e+06, 0.00000000e+00,
+ 0.00000000e+00, -6.43869792e+05, 0.00000000e+00,
+ 0.00000000e+00, -5.06914062e+05, 0.00000000e+00,
+ 0.00000000e+00, -5.06914062e+05, 0.00000000e+00,
+ 0.00000000e+00, 5.45154948e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.46026823e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.46026823e+06, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, -5.70500651e+05,
+ 0.00000000e+00, 0.00000000e+00, -8.39520833e+05,
+ 0.00000000e+00, 0.00000000e+00, -8.39520833e+05,
+ 0.00000000e+00, 0.00000000e+00, 2.84272070e+06,
+ 0.00000000e+00, 0.00000000e+00, -6.43869792e+05,
+ 0.00000000e+00, 0.00000000e+00, -5.06914062e+05,
+ 0.00000000e+00, 0.00000000e+00, -5.06914062e+05,
+ 0.00000000e+00, 0.00000000e+00, 5.45154948e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.46026823e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.46026823e+06,
+ -3.13041667e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.46026823e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.46026823e+06, 0.00000000e+00, 0.00000000e+00,
+ -6.43869792e+05, 0.00000000e+00, 0.00000000e+00,
+ 3.25847917e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.12054688e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.12054688e+06, 0.00000000e+00, 0.00000000e+00,
+ 5.19364583e+05, 0.00000000e+00, 0.00000000e+00,
+ 2.05611458e+06, 0.00000000e+00, 0.00000000e+00,
+ 2.05611458e+06, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -3.13041667e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.46026823e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.46026823e+06, 0.00000000e+00,
+ 0.00000000e+00, -6.43869792e+05, 0.00000000e+00,
+ 0.00000000e+00, 3.25847917e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.12054688e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.12054688e+06, 0.00000000e+00,
+ 0.00000000e+00, 5.19364583e+05, 0.00000000e+00,
+ 0.00000000e+00, 2.05611458e+06, 0.00000000e+00,
+ 0.00000000e+00, 2.05611458e+06, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, -3.13041667e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.46026823e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.46026823e+06,
+ 0.00000000e+00, 0.00000000e+00, -6.43869792e+05,
+ 0.00000000e+00, 0.00000000e+00, 3.25847917e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.12054688e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.12054688e+06,
+ 0.00000000e+00, 0.00000000e+00, 5.19364583e+05,
+ 0.00000000e+00, 0.00000000e+00, 2.05611458e+06,
+ 0.00000000e+00, 0.00000000e+00, 2.05611458e+06,
+ 1.24238411e+06, 0.00000000e+00, 0.00000000e+00,
+ -5.06914062e+05, 0.00000000e+00, 0.00000000e+00,
+ 5.45154948e+05, 0.00000000e+00, 0.00000000e+00,
+ -5.06914062e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.12054688e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.80888281e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.50829167e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.50829167e+06, 0.00000000e+00, 0.00000000e+00,
+ 5.19364583e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.12054688e+06, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 1.24238411e+06, 0.00000000e+00,
+ 0.00000000e+00, -5.06914062e+05, 0.00000000e+00,
+ 0.00000000e+00, 5.45154948e+05, 0.00000000e+00,
+ 0.00000000e+00, -5.06914062e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.12054688e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.80888281e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.50829167e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.50829167e+06, 0.00000000e+00,
+ 0.00000000e+00, 5.19364583e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.12054688e+06, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 1.24238411e+06,
+ 0.00000000e+00, 0.00000000e+00, -5.06914062e+05,
+ 0.00000000e+00, 0.00000000e+00, 5.45154948e+05,
+ 0.00000000e+00, 0.00000000e+00, -5.06914062e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.12054688e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.80888281e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.50829167e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.50829167e+06,
+ 0.00000000e+00, 0.00000000e+00, 5.19364583e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.12054688e+06,
+ 1.24238411e+06, 0.00000000e+00, 0.00000000e+00,
+ 5.45154948e+05, 0.00000000e+00, 0.00000000e+00,
+ -5.06914062e+05, 0.00000000e+00, 0.00000000e+00,
+ -5.06914062e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.12054688e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.50829167e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.80888281e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.50829167e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.12054688e+06, 0.00000000e+00, 0.00000000e+00,
+ 5.19364583e+05, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 1.24238411e+06, 0.00000000e+00,
+ 0.00000000e+00, 5.45154948e+05, 0.00000000e+00,
+ 0.00000000e+00, -5.06914062e+05, 0.00000000e+00,
+ 0.00000000e+00, -5.06914062e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.12054688e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.50829167e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.80888281e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.50829167e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.12054688e+06, 0.00000000e+00,
+ 0.00000000e+00, 5.19364583e+05, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 1.24238411e+06,
+ 0.00000000e+00, 0.00000000e+00, 5.45154948e+05,
+ 0.00000000e+00, 0.00000000e+00, -5.06914062e+05,
+ 0.00000000e+00, 0.00000000e+00, -5.06914062e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.12054688e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.50829167e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.80888281e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.50829167e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.12054688e+06,
+ 0.00000000e+00, 0.00000000e+00, 5.19364583e+05,
+ 1.24238411e+06, 0.00000000e+00, 0.00000000e+00,
+ -5.06914062e+05, 0.00000000e+00, 0.00000000e+00,
+ -5.06914062e+05, 0.00000000e+00, 0.00000000e+00,
+ 5.45154948e+05, 0.00000000e+00, 0.00000000e+00,
+ 5.19364583e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.50829167e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.50829167e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.80888281e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.12054688e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.12054688e+06, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 1.24238411e+06, 0.00000000e+00,
+ 0.00000000e+00, -5.06914062e+05, 0.00000000e+00,
+ 0.00000000e+00, -5.06914062e+05, 0.00000000e+00,
+ 0.00000000e+00, 5.45154948e+05, 0.00000000e+00,
+ 0.00000000e+00, 5.19364583e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.50829167e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.50829167e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.80888281e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.12054688e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.12054688e+06, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 1.24238411e+06,
+ 0.00000000e+00, 0.00000000e+00, -5.06914062e+05,
+ 0.00000000e+00, 0.00000000e+00, -5.06914062e+05,
+ 0.00000000e+00, 0.00000000e+00, 5.45154948e+05,
+ 0.00000000e+00, 0.00000000e+00, 5.19364583e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.50829167e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.50829167e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.80888281e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.12054688e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.12054688e+06,
+ -3.13041667e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.46026823e+06, 0.00000000e+00, 0.00000000e+00,
+ -6.43869792e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.46026823e+06, 0.00000000e+00, 0.00000000e+00,
+ 2.05611458e+06, 0.00000000e+00, 0.00000000e+00,
+ 5.19364583e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.12054688e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.12054688e+06, 0.00000000e+00, 0.00000000e+00,
+ 3.25847917e+06, 0.00000000e+00, 0.00000000e+00,
+ 2.05611458e+06, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -3.13041667e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.46026823e+06, 0.00000000e+00,
+ 0.00000000e+00, -6.43869792e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.46026823e+06, 0.00000000e+00,
+ 0.00000000e+00, 2.05611458e+06, 0.00000000e+00,
+ 0.00000000e+00, 5.19364583e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.12054688e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.12054688e+06, 0.00000000e+00,
+ 0.00000000e+00, 3.25847917e+06, 0.00000000e+00,
+ 0.00000000e+00, 2.05611458e+06, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, -3.13041667e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.46026823e+06,
+ 0.00000000e+00, 0.00000000e+00, -6.43869792e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.46026823e+06,
+ 0.00000000e+00, 0.00000000e+00, 2.05611458e+06,
+ 0.00000000e+00, 0.00000000e+00, 5.19364583e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.12054688e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.12054688e+06,
+ 0.00000000e+00, 0.00000000e+00, 3.25847917e+06,
+ 0.00000000e+00, 0.00000000e+00, 2.05611458e+06,
+ -3.13041667e+05, 0.00000000e+00, 0.00000000e+00,
+ -6.43869792e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.46026823e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.46026823e+06, 0.00000000e+00, 0.00000000e+00,
+ 2.05611458e+06, 0.00000000e+00, 0.00000000e+00,
+ 1.12054688e+06, 0.00000000e+00, 0.00000000e+00,
+ 5.19364583e+05, 0.00000000e+00, 0.00000000e+00,
+ 1.12054688e+06, 0.00000000e+00, 0.00000000e+00,
+ 2.05611458e+06, 0.00000000e+00, 0.00000000e+00,
+ 3.25847917e+06, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -3.13041667e+05, 0.00000000e+00,
+ 0.00000000e+00, -6.43869792e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.46026823e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.46026823e+06, 0.00000000e+00,
+ 0.00000000e+00, 2.05611458e+06, 0.00000000e+00,
+ 0.00000000e+00, 1.12054688e+06, 0.00000000e+00,
+ 0.00000000e+00, 5.19364583e+05, 0.00000000e+00,
+ 0.00000000e+00, 1.12054688e+06, 0.00000000e+00,
+ 0.00000000e+00, 2.05611458e+06, 0.00000000e+00,
+ 0.00000000e+00, 3.25847917e+06, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, -3.13041667e+05,
+ 0.00000000e+00, 0.00000000e+00, -6.43869792e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.46026823e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.46026823e+06,
+ 0.00000000e+00, 0.00000000e+00, 2.05611458e+06,
+ 0.00000000e+00, 0.00000000e+00, 1.12054688e+06,
+ 0.00000000e+00, 0.00000000e+00, 5.19364583e+05,
+ 0.00000000e+00, 0.00000000e+00, 1.12054688e+06,
+ 0.00000000e+00, 0.00000000e+00, 2.05611458e+06,
+ 0.00000000e+00, 0.00000000e+00, 3.25847917e+06,
+};
+
+pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic::ElasticityExplicitLgDeformGravData3DQuadratic(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::ElasticityExplicitLgDeformGravData3DQuadratic::~ElasticityExplicitLgDeformGravData3DQuadratic(void)
+{}
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData3DQuadratic.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData3DQuadratic.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData3DQuadratic.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityExplicitLgDeformGravData3DQuadratic.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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_elasticityexplicitlgdeformgravdata3dquadratic_hh)
+#define pylith_feassemble_elasticityexplicitlgdeformgravdata3dquadratic_hh
+
+#include "IntegratorData.hh"
+
+namespace pylith {
+ namespace feassemble {
+ class ElasticityExplicitLgDeformGravData3DQuadratic;
+ } // pylith
+} // feassemble
+
+class pylith::feassemble::ElasticityExplicitLgDeformGravData3DQuadratic : public IntegratorData
+{
+
+public:
+
+ /// Constructor
+ ElasticityExplicitLgDeformGravData3DQuadratic(void);
+
+ /// Destructor
+ ~ElasticityExplicitLgDeformGravData3DQuadratic(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_elasticityexplicitlgdeformgravdata3dquadratic_hh
+
+// End of file
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicit.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicit.py 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicit.py 2009-12-10 01:52:12 UTC (rev 16094)
@@ -15,14 +15,14 @@
## @brief Python application for generating C++ data files for testing
## C++ ElasticityImplicit object.
-from IntegratorElasticity import IntegratorElasticity
+from pyre.components.Component import Component
import numpy
# ----------------------------------------------------------------------
# ElasticityImplicit class
-class ElasticityImplicit(IntegratorElasticity):
+class ElasticityImplicit(Component):
"""
Python application for generating C++ data files for testing C++
ElasticityImplicit object.
@@ -34,41 +34,39 @@
"""
Constructor.
"""
- IntegratorElasticity.__init__(self, name)
+ Component.__init__(self, name, facility="formulation")
return
# PRIVATE METHODS ////////////////////////////////////////////////////
- def _calculateResidual(self):
+ def calculateResidual(self, integrator):
"""
Calculate contribution to residual of operator for integrator.
{r} = -[K]{u(t)}
"""
- K = self._calculateStiffnessMat()
+ K = integrator._calculateStiffnessMat()
- self.valsResidual = -numpy.dot(K, self.fieldT+self.fieldTIncr)
- return
+ residual = -numpy.dot(K, integrator.fieldT+integrator.fieldTIncr)
+ return residual.flatten()
- def _calculateJacobian(self):
+ def calculateJacobian(self, integrator):
"""
Calculate contribution to Jacobian matrix of operator for integrator.
[A] = [K]
"""
- K = self._calculateStiffnessMat()
+ K = integrator._calculateStiffnessMat()
- self.valsJacobian = K
- return
+ jacobian = K
+ return jacobian
-# MAIN /////////////////////////////////////////////////////////////////
-if __name__ == "__main__":
+# FACTORY //////////////////////////////////////////////////////////////
+def formulation():
+ return ElasticityImplicit()
- app = ElasticityImplicit()
- app.run()
-
# End of file
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DLinear.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DLinear.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application elasticityimplicit.
+// This file was generated from python application integratorelasticity.
#include "ElasticityImplicitData1DLinear.hh"
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DLinear.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DLinear.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application elasticityimplicit.
+// This file was generated from python application integratorelasticity.
#if !defined(pylith_feassemble_elasticityimplicitdata1dlinear_hh)
#define pylith_feassemble_elasticityimplicitdata1dlinear_hh
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DQuadratic.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DQuadratic.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application elasticityimplicit.
+// This file was generated from python application integratorelasticity.
#include "ElasticityImplicitData1DQuadratic.hh"
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DQuadratic.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData1DQuadratic.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application elasticityimplicit.
+// This file was generated from python application integratorelasticity.
#if !defined(pylith_feassemble_elasticityimplicitdata1dquadratic_hh)
#define pylith_feassemble_elasticityimplicitdata1dquadratic_hh
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DLinear.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DLinear.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application elasticityimplicit.
+// This file was generated from python application integratorelasticity.
#include "ElasticityImplicitData2DLinear.hh"
@@ -58,7 +58,7 @@
};
const double pylith::feassemble::ElasticityImplicitData2DLinear::_quadPts[] = {
- 3.33333333e-01, 3.33333333e-01,
+ -3.33333333e-01, -3.33333333e-01,
};
const double pylith::feassemble::ElasticityImplicitData2DLinear::_quadWts[] = {
@@ -66,8 +66,8 @@
};
const double pylith::feassemble::ElasticityImplicitData2DLinear::_basis[] = {
- -3.33333333e-01, 6.66666667e-01,
- 6.66666667e-01,};
+ 3.33333333e-01, 3.33333333e-01,
+ 3.33333333e-01,};
const double pylith::feassemble::ElasticityImplicitData2DLinear::_basisDerivRef[] = {
-5.00000000e-01, -5.00000000e-01,
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DLinear.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DLinear.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application elasticityimplicit.
+// This file was generated from python application integratorelasticity.
#if !defined(pylith_feassemble_elasticityimplicitdata2dlinear_hh)
#define pylith_feassemble_elasticityimplicitdata2dlinear_hh
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DQuadratic.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DQuadratic.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application elasticityimplicit.
+// This file was generated from python application integratorelasticity.
#include "ElasticityImplicitData2DQuadratic.hh"
@@ -25,7 +25,7 @@
const int pylith::feassemble::ElasticityImplicitData2DQuadratic::_numBasis = 6;
-const int pylith::feassemble::ElasticityImplicitData2DQuadratic::_numQuadPts = 3;
+const int pylith::feassemble::ElasticityImplicitData2DQuadratic::_numQuadPts = 6;
const char* pylith::feassemble::ElasticityImplicitData2DQuadratic::_matType = "ElasticPlaneStrain";
@@ -64,29 +64,59 @@
};
const double pylith::feassemble::ElasticityImplicitData2DQuadratic::_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,
- -7.50000000e-01, -7.50000000e-01,
+ 2.50000000e-01, 2.50000000e-01,
};
const double pylith::feassemble::ElasticityImplicitData2DQuadratic::_quadWts[] = {
- 6.66666667e-01, 6.66666667e-01, 6.66666667e-01,
+ 3.33333333e-01, 3.33333333e-01, 3.33333333e-01, 3.33333333e-01, 3.33333333e-01, 3.33333333e-01,
};
const double pylith::feassemble::ElasticityImplicitData2DQuadratic::_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, -9.37500000e-02,
- -9.37500000e-02, 6.25000000e-02,
- 3.75000000e-01, 3.75000000e-01,
+ 3.75000000e-01, 1.56250000e-01,
+ 1.56250000e-01, 1.56250000e+00,
+ -6.25000000e-01, -6.25000000e-01,
};
const double pylith::feassemble::ElasticityImplicitData2DQuadratic::_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,
@@ -98,12 +128,12 @@
1.00000000e+00, 2.50000000e-01,
-1.00000000e+00, -2.50000000e-01,
5.00000000e-01, -2.50000000e-01,
- -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,
+ 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::ElasticityImplicitData2DQuadratic::_fieldTIncr[] = {
@@ -134,87 +164,87 @@
};
const double pylith::feassemble::ElasticityImplicitData2DQuadratic::_valsResidual[] = {
- -5.68494358e+10, 1.65323307e+11,
- -4.54933811e+10, -2.45823568e+10,
- -8.68914931e+09, 6.99783854e+10,
- 1.06940907e+11, -8.18836589e+10,
- -4.10563585e+10, -2.77954362e+11,
- 4.51474175e+10, 1.49118685e+11,
+ 1.29278791e+09, 2.30117470e+11,
+ -1.01094274e+11, -3.41937391e+10,
+ -6.14324363e+09, 2.06921658e+11,
+ 2.08592314e+11, 1.56195193e+11,
+ -1.44154554e+11, -5.45281912e+11,
+ 4.15069698e+10, -1.37586697e+10,
};
const double pylith::feassemble::ElasticityImplicitData2DQuadratic::_valsJacobian[] = {
- 4.15638021e+10, 9.27734375e+09,
- 2.73546007e+09, 4.13736979e+09,
- 4.19184028e+09, -2.59114583e+09,
- -2.07819010e+10, -4.63867188e+09,
- -2.11365017e+10, 3.05501302e+10,
- -6.57269965e+09, -3.67350260e+10,
- 9.27734375e+09, 1.17761719e+11,
- 3.90299479e+09, 4.38476562e+09,
- -2.35677083e+09, 1.52421875e+10,
- -4.63867188e+09, -5.88808594e+10,
- 2.82063802e+10, -9.35410156e+10,
- -3.43912760e+10, 1.50332031e+10,
- 2.73546007e+09, 3.90299479e+09,
- 1.45941840e+10, 3.09244792e+09,
- 4.56163194e+09, -2.35677083e+09,
- -1.64203559e+10, 3.16731771e+09,
- 7.29709201e+09, 1.54622396e+09,
- -1.27680122e+10, -9.35221354e+09,
- 4.13736979e+09, 4.38476562e+09,
- 3.09244792e+09, 6.34765625e+09,
- -2.59114583e+09, -1.21093750e+09,
- 3.63606771e+09, -7.51953125e+08,
- 1.54622396e+09, 3.17382812e+09,
- -9.82096354e+09, -1.19433594e+10,
- 4.19184028e+09, -2.35677083e+09,
- 4.56163194e+09, -2.59114583e+09,
- 1.75069444e+10, -9.89583333e+09,
- -1.78767361e+10, 1.01302083e+10,
- -1.71371528e+10, 9.66145833e+09,
- 8.75347222e+09, -4.94791667e+09,
- -2.59114583e+09, 1.52421875e+10,
- -2.35677083e+09, -1.21093750e+09,
- -9.89583333e+09, 2.80625000e+10,
- 9.66145833e+09, -1.16093750e+10,
- 1.01302083e+10, -4.45156250e+10,
- -4.94791667e+09, 1.40312500e+10,
- -2.07819010e+10, -4.63867188e+09,
- -1.64203559e+10, 3.63606771e+09,
- -1.78767361e+10, 9.66145833e+09,
- 6.89335937e+10, -5.56640625e+09,
- 3.54600694e+08, -3.44856771e+10,
- -1.42092014e+10, 3.13932292e+10,
- -4.63867188e+09, -5.88808594e+10,
- 3.16731771e+09, -7.51953125e+08,
- 1.01302083e+10, -1.16093750e+10,
- -5.56640625e+09, 1.10496094e+11,
- -3.35481771e+10, 3.46601562e+10,
- 3.04557292e+10, -7.39140625e+10,
- -2.11365017e+10, 2.82063802e+10,
- 7.29709201e+09, 1.54622396e+09,
- -1.71371528e+10, 1.01302083e+10,
- 3.54600694e+08, -3.35481771e+10,
- 1.40440538e+11, -4.51497396e+10,
- -1.09818576e+11, 3.88151042e+10,
- 3.05501302e+10, -9.35410156e+10,
- 1.54622396e+09, 3.17382812e+09,
- 9.66145833e+09, -4.45156250e+10,
- -3.44856771e+10, 3.46601562e+10,
- -4.51497396e+10, 1.56933594e+11,
- 3.78776042e+10, -5.67109375e+10,
- -6.57269965e+09, -3.43912760e+10,
- -1.27680122e+10, -9.82096354e+09,
- 8.75347222e+09, -4.94791667e+09,
- -1.42092014e+10, 3.04557292e+10,
- -1.09818576e+11, 3.78776042e+10,
- 1.34615017e+11, -1.91731771e+10,
- -3.67350260e+10, 1.50332031e+10,
- -9.35221354e+09, -1.19433594e+10,
- -4.94791667e+09, 1.40312500e+10,
- 3.13932292e+10, -7.39140625e+10,
- 3.88151042e+10, -5.67109375e+10,
- -1.91731771e+10, 1.13503906e+11,
+ 4.84911024e+10, 1.08235677e+10,
+ 1.04859303e+10, 1.58599175e+10,
+ 1.60687211e+10, -9.93272569e+09,
+ 3.11728516e+10, 6.95800781e+09,
+ -5.77211733e+10, 9.45258247e+09,
+ -4.84974320e+10, -3.31613498e+10,
+ 1.08235677e+10, 1.37388672e+11,
+ 1.49614800e+10, 1.68082682e+10,
+ -9.03428819e+09, 5.84283854e+10,
+ 6.95800781e+09, 8.83212891e+10,
+ 7.96820747e+09, -1.84855143e+11,
+ -3.16769748e+10, -1.16091471e+11,
+ 1.04859303e+10, 1.49614800e+10,
+ 4.98634621e+10, 1.05658637e+10,
+ 3.04108796e+09, -1.57118056e+09,
+ -2.96531395e+10, 2.41807726e+10,
+ 2.28334780e+09, -1.00401476e+10,
+ -3.60206887e+10, -3.80967882e+10,
+ 1.58599175e+10, 1.68082682e+10,
+ 1.05658637e+10, 2.16878255e+10,
+ -1.72743056e+09, -8.07291667e+08,
+ 2.63292101e+10, 1.63899740e+10,
+ -1.07823351e+10, -9.12434896e+09,
+ -4.02452257e+10, -4.49544271e+10,
+ 1.60687211e+10, -9.03428819e+09,
+ 3.04108796e+09, -1.72743056e+09,
+ 5.98153935e+10, -3.38107639e+10,
+ -2.72258391e+10, 1.55056424e+10,
+ -5.15554109e+10, 2.90256076e+10,
+ -1.43952546e+08, 4.12326389e+07,
+ -9.93272569e+09, 5.84283854e+10,
+ -1.57118056e+09, -8.07291667e+08,
+ -3.38107639e+10, 9.58802083e+10,
+ 1.33572049e+10, 3.44856771e+10,
+ 3.11740451e+10, -1.60766927e+11,
+ 7.83420139e+08, -2.72200521e+10,
+ 3.11728516e+10, 6.95800781e+09,
+ -2.96531395e+10, 2.63292101e+10,
+ -2.72258391e+10, 1.33572049e+10,
+ 1.75797635e+11, -1.31429036e+10,
+ -6.82493128e+10, -4.63926866e+10,
+ -8.18421947e+10, 1.28911675e+10,
+ 6.95800781e+09, 8.83212891e+10,
+ 2.41807726e+10, 1.63899740e+10,
+ 1.55056424e+10, 3.44856771e+10,
+ -1.31429036e+10, 2.86053711e+11,
+ -4.77208116e+10, -1.61957357e+11,
+ 1.42192925e+10, -2.63293294e+11,
+ -5.77211733e+10, 7.96820747e+09,
+ 2.28334780e+09, -1.07823351e+10,
+ -5.15554109e+10, 3.11740451e+10,
+ -6.82493128e+10, -4.77208116e+10,
+ 1.76619973e+11, -1.47922092e+10,
+ -1.37742332e+09, 3.41531033e+10,
+ 9.45258247e+09, -1.84855143e+11,
+ -1.00401476e+10, -9.12434896e+09,
+ 2.90256076e+10, -1.60766927e+11,
+ -4.63926866e+10, -1.61957357e+11,
+ -1.47922092e+10, 3.83965169e+11,
+ 3.27468533e+10, 1.32738607e+11,
+ -4.84974320e+10, -3.16769748e+10,
+ -3.60206887e+10, -4.02452257e+10,
+ -1.43952546e+08, 7.83420139e+08,
+ -8.18421947e+10, 1.42192925e+10,
+ -1.37742332e+09, 3.27468533e+10,
+ 1.67881691e+11, 2.41726345e+10,
+ -3.31613498e+10, -1.16091471e+11,
+ -3.80967882e+10, -4.49544271e+10,
+ 4.12326389e+07, -2.72200521e+10,
+ 1.28911675e+10, -2.63293294e+11,
+ 3.41531033e+10, 1.32738607e+11,
+ 2.41726345e+10, 3.18820638e+11,
};
pylith::feassemble::ElasticityImplicitData2DQuadratic::ElasticityImplicitData2DQuadratic(void)
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DQuadratic.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData2DQuadratic.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application elasticityimplicit.
+// This file was generated from python application integratorelasticity.
#if !defined(pylith_feassemble_elasticityimplicitdata2dquadratic_hh)
#define pylith_feassemble_elasticityimplicitdata2dquadratic_hh
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DLinear.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DLinear.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application elasticityimplicit.
+// This file was generated from python application integratorelasticity.
#include "ElasticityImplicitData3DLinear.hh"
@@ -68,7 +68,7 @@
};
const double pylith::feassemble::ElasticityImplicitData3DLinear::_basis[] = {
- -2.50000000e-01, 2.50000000e-01, 2.50000000e-01,
+ 2.50000000e-01, 2.50000000e-01, 2.50000000e-01,
2.50000000e-01,};
const double pylith::feassemble::ElasticityImplicitData3DLinear::_basisDerivRef[] = {
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DLinear.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DLinear.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application elasticityimplicit.
+// This file was generated from python application integratorelasticity.
#if !defined(pylith_feassemble_elasticityimplicitdata3dlinear_hh)
#define pylith_feassemble_elasticityimplicitdata3dlinear_hh
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DQuadratic.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DQuadratic.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application elasticityimplicit.
+// This file was generated from python application integratorelasticity.
#include "ElasticityImplicitData3DQuadratic.hh"
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DQuadratic.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitData3DQuadratic.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application elasticityimplicit.
+// This file was generated from python application integratorelasticity.
#if !defined(pylith_feassemble_elasticityimplicitdata3dquadratic_hh)
#define pylith_feassemble_elasticityimplicitdata3dquadratic_hh
Deleted: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGrav.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGrav.py 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGrav.py 2009-12-10 01:52:12 UTC (rev 16094)
@@ -1,104 +0,0 @@
-#!/usr/bin/env python
-#
-# ----------------------------------------------------------------------
-#
-# Brad T. Aagaard
-# U.S. Geological Survey
-#
-# <LicenseText>
-#
-# ----------------------------------------------------------------------
-#
-
-## @file unittests/libtests/feassemble/data/ElasticityImplicitGrav.py
-
-## @brief Python application for generating C++ data files for testing
-## C++ ElasticityImplicitGrav object.
-
-from IntegratorElasticity import IntegratorElasticity
-
-import numpy
-import feutils
-# import pdb
-
-# ----------------------------------------------------------------------
-
-# ElasticityImplicitGrav class
-class ElasticityImplicitGrav(IntegratorElasticity):
- """
- Python application for generating C++ data files for testing C++
- ElasticityImplicitGrav object.
- """
-
- # PUBLIC METHODS /////////////////////////////////////////////////////
-
- def __init__(self, name="elasticityimplicitgrav"):
- """
- Constructor.
- """
- # pdb.set_trace()
- IntegratorElasticity.__init__(self, name)
- return
-
-
- # PRIVATE METHODS ////////////////////////////////////////////////////
-
- def _calculateResidual(self):
- """
- Calculate contribution to residual of operator for integrator.
-
- {r} = -[K]{u(t)}
- """
- # pdb.set_trace()
- K = self._calculateStiffnessMat()
- gravityGlobal = self._calculateGravity()
-
- self.valsResidual = -numpy.dot(K, self.fieldT+self.fieldTIncr) + \
- gravityGlobal.reshape(self.fieldT.shape)
- return
-
-
- def _calculateJacobian(self):
- """
- Calculate contribution to Jacobian matrix of operator for integrator.
-
- [A] = [K]
- """
- K = self._calculateStiffnessMat()
-
- self.valsJacobian = K
- return
-
-
- def _calculateGravity(self):
- """
- Calculate body force vector.
- """
- # pdb.set_trace()
- gravityGlobal = numpy.zeros(( self.numVertices*self.spaceDim ),
- dtype=numpy.float64)
- for cell in self.cells:
- gravityCell = numpy.zeros(self.spaceDim*self.numBasis)
- vertices = self.vertices[cell, :]
- (jacobian, jacobianInv, jacobianDet, basisDeriv) = \
- feutils.calculateJacobian(self.quadrature, vertices)
- for iQuad in xrange(self.numQuadPts):
- wt = self.quadWts[iQuad] * jacobianDet[iQuad] * self.density
- for iBasis in xrange(self.numBasis):
- valI = wt * self.basis[iQuad, iBasis]
- for iDim in xrange(self.spaceDim):
- gravityCell[iDim + iBasis * self.spaceDim] += \
- valI * self.gravityVec[iDim]
- feutils.assembleVec(gravityGlobal, gravityCell, cell, self.spaceDim)
- return gravityGlobal
-
-
-
-# MAIN /////////////////////////////////////////////////////////////////
-if __name__ == "__main__":
-
- app = ElasticityImplicitGrav()
- app.run()
-
-
-# End of file
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData1DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData1DLinear.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData1DLinear.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application elasticityimplicitgrav.
+// This file was generated from python application integratorelasticity.
#include "ElasticityImplicitGravData1DLinear.hh"
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData1DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData1DLinear.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData1DLinear.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application elasticityimplicitgrav.
+// This file was generated from python application integratorelasticity.
#if !defined(pylith_feassemble_elasticityimplicitgravdata1dlinear_hh)
#define pylith_feassemble_elasticityimplicitgravdata1dlinear_hh
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData1DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData1DQuadratic.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData1DQuadratic.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application elasticityimplicitgrav.
+// This file was generated from python application integratorelasticity.
#include "ElasticityImplicitGravData1DQuadratic.hh"
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData1DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData1DQuadratic.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData1DQuadratic.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application elasticityimplicitgrav.
+// This file was generated from python application integratorelasticity.
#if !defined(pylith_feassemble_elasticityimplicitgravdata1dquadratic_hh)
#define pylith_feassemble_elasticityimplicitgravdata1dquadratic_hh
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData2DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData2DLinear.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData2DLinear.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application elasticityimplicitgrav.
+// This file was generated from python application integratorelasticity.
#include "ElasticityImplicitGravData2DLinear.hh"
@@ -58,7 +58,7 @@
};
const double pylith::feassemble::ElasticityImplicitGravData2DLinear::_quadPts[] = {
- 3.33333333e-01, 3.33333333e-01,
+ -3.33333333e-01, -3.33333333e-01,
};
const double pylith::feassemble::ElasticityImplicitGravData2DLinear::_quadWts[] = {
@@ -66,8 +66,8 @@
};
const double pylith::feassemble::ElasticityImplicitGravData2DLinear::_basis[] = {
- -3.33333333e-01, 6.66666667e-01,
- 6.66666667e-01,};
+ 3.33333333e-01, 3.33333333e-01,
+ 3.33333333e-01,};
const double pylith::feassemble::ElasticityImplicitGravData2DLinear::_basisDerivRef[] = {
-5.00000000e-01, -5.00000000e-01,
@@ -94,9 +94,9 @@
};
const double pylith::feassemble::ElasticityImplicitGravData2DLinear::_valsResidual[] = {
- -2.62107244e+10, 8.25403646e+10,
- -7.87159091e+09, -8.87369792e+10,
- 3.40823153e+10, -2.81783854e+10,
+ -2.62107244e+10, 5.96236979e+10,
+ -7.87159091e+09, -7.72786458e+10,
+ 3.40823153e+10, -1.67200521e+10,
};
const double pylith::feassemble::ElasticityImplicitGravData2DLinear::_valsJacobian[] = {
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData2DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData2DLinear.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData2DLinear.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application elasticityimplicitgrav.
+// This file was generated from python application integratorelasticity.
#if !defined(pylith_feassemble_elasticityimplicitgravdata2dlinear_hh)
#define pylith_feassemble_elasticityimplicitgravdata2dlinear_hh
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData2DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData2DQuadratic.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData2DQuadratic.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application elasticityimplicitgrav.
+// This file was generated from python application integratorelasticity.
#include "ElasticityImplicitGravData2DQuadratic.hh"
@@ -25,7 +25,7 @@
const int pylith::feassemble::ElasticityImplicitGravData2DQuadratic::_numBasis = 6;
-const int pylith::feassemble::ElasticityImplicitGravData2DQuadratic::_numQuadPts = 3;
+const int pylith::feassemble::ElasticityImplicitGravData2DQuadratic::_numQuadPts = 6;
const char* pylith::feassemble::ElasticityImplicitGravData2DQuadratic::_matType = "ElasticPlaneStrain";
@@ -64,29 +64,59 @@
};
const double pylith::feassemble::ElasticityImplicitGravData2DQuadratic::_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,
- -7.50000000e-01, -7.50000000e-01,
+ 2.50000000e-01, 2.50000000e-01,
};
const double pylith::feassemble::ElasticityImplicitGravData2DQuadratic::_quadWts[] = {
- 6.66666667e-01, 6.66666667e-01, 6.66666667e-01,
+ 3.33333333e-01, 3.33333333e-01, 3.33333333e-01, 3.33333333e-01, 3.33333333e-01, 3.33333333e-01,
};
const double pylith::feassemble::ElasticityImplicitGravData2DQuadratic::_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, -9.37500000e-02,
- -9.37500000e-02, 6.25000000e-02,
- 3.75000000e-01, 3.75000000e-01,
+ 3.75000000e-01, 1.56250000e-01,
+ 1.56250000e-01, 1.56250000e+00,
+ -6.25000000e-01, -6.25000000e-01,
};
const double pylith::feassemble::ElasticityImplicitGravData2DQuadratic::_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,
@@ -98,12 +128,12 @@
1.00000000e+00, 2.50000000e-01,
-1.00000000e+00, -2.50000000e-01,
5.00000000e-01, -2.50000000e-01,
- -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,
+ 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::ElasticityImplicitGravData2DQuadratic::_fieldTIncr[] = {
@@ -134,87 +164,87 @@
};
const double pylith::feassemble::ElasticityImplicitGravData2DQuadratic::_valsResidual[] = {
- -5.68494358e+10, 1.37198307e+11,
- -4.54933811e+10, 3.54264323e+09,
- -8.68914931e+09, 9.81033854e+10,
- 1.06940907e+11, -1.66258659e+11,
- -4.10563585e+10, -4.74829362e+11,
- 4.51474175e+10, -4.77563151e+10,
+ 1.29278791e+09, 1.87929970e+11,
+ -1.01094274e+11, -7.40374891e+10,
+ -6.14324363e+09, 1.67077908e+11,
+ 2.08592314e+11, -6.88048069e+10,
+ -1.44154554e+11, -5.96844412e+11,
+ 4.15069698e+10, -6.53211697e+10,
};
const double pylith::feassemble::ElasticityImplicitGravData2DQuadratic::_valsJacobian[] = {
- 4.15638021e+10, 9.27734375e+09,
- 2.73546007e+09, 4.13736979e+09,
- 4.19184028e+09, -2.59114583e+09,
- -2.07819010e+10, -4.63867188e+09,
- -2.11365017e+10, 3.05501302e+10,
- -6.57269965e+09, -3.67350260e+10,
- 9.27734375e+09, 1.17761719e+11,
- 3.90299479e+09, 4.38476562e+09,
- -2.35677083e+09, 1.52421875e+10,
- -4.63867188e+09, -5.88808594e+10,
- 2.82063802e+10, -9.35410156e+10,
- -3.43912760e+10, 1.50332031e+10,
- 2.73546007e+09, 3.90299479e+09,
- 1.45941840e+10, 3.09244792e+09,
- 4.56163194e+09, -2.35677083e+09,
- -1.64203559e+10, 3.16731771e+09,
- 7.29709201e+09, 1.54622396e+09,
- -1.27680122e+10, -9.35221354e+09,
- 4.13736979e+09, 4.38476562e+09,
- 3.09244792e+09, 6.34765625e+09,
- -2.59114583e+09, -1.21093750e+09,
- 3.63606771e+09, -7.51953125e+08,
- 1.54622396e+09, 3.17382812e+09,
- -9.82096354e+09, -1.19433594e+10,
- 4.19184028e+09, -2.35677083e+09,
- 4.56163194e+09, -2.59114583e+09,
- 1.75069444e+10, -9.89583333e+09,
- -1.78767361e+10, 1.01302083e+10,
- -1.71371528e+10, 9.66145833e+09,
- 8.75347222e+09, -4.94791667e+09,
- -2.59114583e+09, 1.52421875e+10,
- -2.35677083e+09, -1.21093750e+09,
- -9.89583333e+09, 2.80625000e+10,
- 9.66145833e+09, -1.16093750e+10,
- 1.01302083e+10, -4.45156250e+10,
- -4.94791667e+09, 1.40312500e+10,
- -2.07819010e+10, -4.63867188e+09,
- -1.64203559e+10, 3.63606771e+09,
- -1.78767361e+10, 9.66145833e+09,
- 6.89335937e+10, -5.56640625e+09,
- 3.54600694e+08, -3.44856771e+10,
- -1.42092014e+10, 3.13932292e+10,
- -4.63867188e+09, -5.88808594e+10,
- 3.16731771e+09, -7.51953125e+08,
- 1.01302083e+10, -1.16093750e+10,
- -5.56640625e+09, 1.10496094e+11,
- -3.35481771e+10, 3.46601562e+10,
- 3.04557292e+10, -7.39140625e+10,
- -2.11365017e+10, 2.82063802e+10,
- 7.29709201e+09, 1.54622396e+09,
- -1.71371528e+10, 1.01302083e+10,
- 3.54600694e+08, -3.35481771e+10,
- 1.40440538e+11, -4.51497396e+10,
- -1.09818576e+11, 3.88151042e+10,
- 3.05501302e+10, -9.35410156e+10,
- 1.54622396e+09, 3.17382812e+09,
- 9.66145833e+09, -4.45156250e+10,
- -3.44856771e+10, 3.46601562e+10,
- -4.51497396e+10, 1.56933594e+11,
- 3.78776042e+10, -5.67109375e+10,
- -6.57269965e+09, -3.43912760e+10,
- -1.27680122e+10, -9.82096354e+09,
- 8.75347222e+09, -4.94791667e+09,
- -1.42092014e+10, 3.04557292e+10,
- -1.09818576e+11, 3.78776042e+10,
- 1.34615017e+11, -1.91731771e+10,
- -3.67350260e+10, 1.50332031e+10,
- -9.35221354e+09, -1.19433594e+10,
- -4.94791667e+09, 1.40312500e+10,
- 3.13932292e+10, -7.39140625e+10,
- 3.88151042e+10, -5.67109375e+10,
- -1.91731771e+10, 1.13503906e+11,
+ 4.84911024e+10, 1.08235677e+10,
+ 1.04859303e+10, 1.58599175e+10,
+ 1.60687211e+10, -9.93272569e+09,
+ 3.11728516e+10, 6.95800781e+09,
+ -5.77211733e+10, 9.45258247e+09,
+ -4.84974320e+10, -3.31613498e+10,
+ 1.08235677e+10, 1.37388672e+11,
+ 1.49614800e+10, 1.68082682e+10,
+ -9.03428819e+09, 5.84283854e+10,
+ 6.95800781e+09, 8.83212891e+10,
+ 7.96820747e+09, -1.84855143e+11,
+ -3.16769748e+10, -1.16091471e+11,
+ 1.04859303e+10, 1.49614800e+10,
+ 4.98634621e+10, 1.05658637e+10,
+ 3.04108796e+09, -1.57118056e+09,
+ -2.96531395e+10, 2.41807726e+10,
+ 2.28334780e+09, -1.00401476e+10,
+ -3.60206887e+10, -3.80967882e+10,
+ 1.58599175e+10, 1.68082682e+10,
+ 1.05658637e+10, 2.16878255e+10,
+ -1.72743056e+09, -8.07291667e+08,
+ 2.63292101e+10, 1.63899740e+10,
+ -1.07823351e+10, -9.12434896e+09,
+ -4.02452257e+10, -4.49544271e+10,
+ 1.60687211e+10, -9.03428819e+09,
+ 3.04108796e+09, -1.72743056e+09,
+ 5.98153935e+10, -3.38107639e+10,
+ -2.72258391e+10, 1.55056424e+10,
+ -5.15554109e+10, 2.90256076e+10,
+ -1.43952546e+08, 4.12326389e+07,
+ -9.93272569e+09, 5.84283854e+10,
+ -1.57118056e+09, -8.07291667e+08,
+ -3.38107639e+10, 9.58802083e+10,
+ 1.33572049e+10, 3.44856771e+10,
+ 3.11740451e+10, -1.60766927e+11,
+ 7.83420139e+08, -2.72200521e+10,
+ 3.11728516e+10, 6.95800781e+09,
+ -2.96531395e+10, 2.63292101e+10,
+ -2.72258391e+10, 1.33572049e+10,
+ 1.75797635e+11, -1.31429036e+10,
+ -6.82493128e+10, -4.63926866e+10,
+ -8.18421947e+10, 1.28911675e+10,
+ 6.95800781e+09, 8.83212891e+10,
+ 2.41807726e+10, 1.63899740e+10,
+ 1.55056424e+10, 3.44856771e+10,
+ -1.31429036e+10, 2.86053711e+11,
+ -4.77208116e+10, -1.61957357e+11,
+ 1.42192925e+10, -2.63293294e+11,
+ -5.77211733e+10, 7.96820747e+09,
+ 2.28334780e+09, -1.07823351e+10,
+ -5.15554109e+10, 3.11740451e+10,
+ -6.82493128e+10, -4.77208116e+10,
+ 1.76619973e+11, -1.47922092e+10,
+ -1.37742332e+09, 3.41531033e+10,
+ 9.45258247e+09, -1.84855143e+11,
+ -1.00401476e+10, -9.12434896e+09,
+ 2.90256076e+10, -1.60766927e+11,
+ -4.63926866e+10, -1.61957357e+11,
+ -1.47922092e+10, 3.83965169e+11,
+ 3.27468533e+10, 1.32738607e+11,
+ -4.84974320e+10, -3.16769748e+10,
+ -3.60206887e+10, -4.02452257e+10,
+ -1.43952546e+08, 7.83420139e+08,
+ -8.18421947e+10, 1.42192925e+10,
+ -1.37742332e+09, 3.27468533e+10,
+ 1.67881691e+11, 2.41726345e+10,
+ -3.31613498e+10, -1.16091471e+11,
+ -3.80967882e+10, -4.49544271e+10,
+ 4.12326389e+07, -2.72200521e+10,
+ 1.28911675e+10, -2.63293294e+11,
+ 3.41531033e+10, 1.32738607e+11,
+ 2.41726345e+10, 3.18820638e+11,
};
pylith::feassemble::ElasticityImplicitGravData2DQuadratic::ElasticityImplicitGravData2DQuadratic(void)
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData2DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData2DQuadratic.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData2DQuadratic.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application elasticityimplicitgrav.
+// This file was generated from python application integratorelasticity.
#if !defined(pylith_feassemble_elasticityimplicitgravdata2dquadratic_hh)
#define pylith_feassemble_elasticityimplicitgravdata2dquadratic_hh
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData3DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData3DLinear.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData3DLinear.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application elasticityimplicitgrav.
+// This file was generated from python application integratorelasticity.
#include "ElasticityImplicitGravData3DLinear.hh"
@@ -68,7 +68,7 @@
};
const double pylith::feassemble::ElasticityImplicitGravData3DLinear::_basis[] = {
- -2.50000000e-01, 2.50000000e-01, 2.50000000e-01,
+ 2.50000000e-01, 2.50000000e-01, 2.50000000e-01,
2.50000000e-01,};
const double pylith::feassemble::ElasticityImplicitGravData3DLinear::_basisDerivRef[] = {
@@ -100,7 +100,7 @@
};
const double pylith::feassemble::ElasticityImplicitGravData3DLinear::_valsResidual[] = {
- -6.04851301e+09, 7.19421933e+10, 4.07639095e+10,
+ -6.04851301e+09, 7.19421933e+10, -2.64860905e+10,
1.11995353e+10, 1.19496190e+11, 2.47670074e+10,
-1.62946097e+10, -1.94715799e+11, -1.17458953e+11,
1.11435874e+10, 3.27741636e+09, -1.53219641e+10,
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData3DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData3DLinear.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData3DLinear.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application elasticityimplicitgrav.
+// This file was generated from python application integratorelasticity.
#if !defined(pylith_feassemble_elasticityimplicitgravdata3dlinear_hh)
#define pylith_feassemble_elasticityimplicitgravdata3dlinear_hh
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData3DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData3DQuadratic.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData3DQuadratic.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application elasticityimplicitgrav.
+// This file was generated from python application integratorelasticity.
#include "ElasticityImplicitGravData3DQuadratic.hh"
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData3DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData3DQuadratic.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitGravData3DQuadratic.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -11,7 +11,7 @@
//
// DO NOT EDIT THIS FILE
-// This file was generated from python application elasticityimplicitgrav.
+// This file was generated from python application integratorelasticity.
#if !defined(pylith_feassemble_elasticityimplicitgravdata3dquadratic_hh)
#define pylith_feassemble_elasticityimplicitgravdata3dquadratic_hh
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeform.py (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeform.py)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeform.py (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeform.py 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,83 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+# Brad T. Aagaard
+# U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file unittests/libtests/feassemble/data/ElasticityImplicitLgDeform.py
+
+## @brief Python application for generating C++ data files for testing
+## C++ ElasticityImplicitLgDeform object.
+
+from ElasticityImplicit import ElasticityImplicit
+
+import numpy
+
+# ----------------------------------------------------------------------
+
+# ElasticityImplicitLgDeform class
+class ElasticityImplicitLgDeform(ElasticityImplicit):
+ """
+ Python application for generating C++ data files for testing C++
+ ElasticityImplicitLgDeform object.
+ """
+
+ # PUBLIC METHODS /////////////////////////////////////////////////////
+
+ def __init__(self, name="elasticityimplicitlgdeform"):
+ """
+ Constructor.
+ """
+ ElasticityImplicit.__init__(self, name)
+ return
+
+
+ # PRIVATE METHODS ////////////////////////////////////////////////////
+
+ def calculateResidual(self, integrator):
+ """
+ Calculate contribution to residual of operator for integrator.
+
+ {r} = -Sum(wt * [BL]^T [S})
+ """
+ import feutils
+
+ residual = numpy.zeros( (integrator.spaceDim*integrator.numVertices),
+ dtype=numpy.float64)
+
+ # Matrix of elasticity values
+ D = integrator._calculateElasticityMat()
+
+ for cell in integrator.cells:
+ cellR = numpy.zeros( (integrator.spaceDim*integrator.numBasis, 1),
+ dtype=numpy.float64)
+ vertices = integrator.vertices[cell, :]
+ (jacobian, jacobianInv, jacobianDet, basisDeriv) = \
+ feutils.calculateJacobian(integrator.quadrature, vertices)
+ fieldTpdt = integrator.fieldT + integrator.fieldTIncr
+ for iQuad in xrange(integrator.numQuadPts):
+ wt = integrator.quadWts[iQuad] * jacobianDet[iQuad]
+ BL0 = integrator._calculateBasisDerivMatLinear0(basisDeriv, iQuad)
+ BL1 = integrator._calculateBasisDerivMatLinear1(basisDeriv, iQuad, fieldTpdt)
+ BL = BL0 + BL1
+ strain = integrator._calculateStrain(basisDeriv, iQuad, fieldTpdt)
+ S = numpy.dot(D, strain.transpose())
+ cellR -= wt * numpy.dot(BL.transpose(), S)
+
+ feutils.assembleVec(residual, cellR.flatten(), cell, integrator.spaceDim)
+
+ return residual
+
+
+# FACTORY //////////////////////////////////////////////////////////////
+def formulation():
+ return ElasticityImplicitLgDeform()
+
+
+# End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DLinear.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DLinear.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DLinear.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DLinear.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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.04800000e+10,
+ -6.04800000e+10,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData1DLinear::_valsJacobian[] = {
+ 9.76000000e+10,
+ -9.76000000e+10,
+ -9.76000000e+10,
+ 9.76000000e+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
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DLinear.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DLinear.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DLinear.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DLinear.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DQuadratic.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DQuadratic.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DQuadratic.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DQuadratic.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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[] = {
+ 3.54626283e+11,
+ 3.31341344e+11,
+ -6.85967627e+11,
+};
+
+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
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DQuadratic.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DQuadratic.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DQuadratic.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData1DQuadratic.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DLinear.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DLinear.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DLinear.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DLinear.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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[] = {
+ -3.65540787e+11, 1.05895913e+12,
+ 9.00343192e+10, -1.09679715e+12,
+ 2.75506468e+11, 3.78380237e+10,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DLinear::_valsJacobian[] = {
+ 4.36313261e+11, -1.48699027e+11,
+ -2.81223194e+11, 8.77736676e+10,
+ -1.55090067e+11, 6.09253592e+10,
+ -1.48699027e+11, 7.56519651e+11,
+ 9.16706846e+10, -6.28762859e+11,
+ 5.70283422e+10, -1.27756792e+11,
+ -2.81223194e+11, 9.16706846e+10,
+ 2.80835568e+11, -2.94466026e+10,
+ 3.87626315e+08, -6.22240820e+10,
+ 8.77736676e+10, -6.28762859e+11,
+ -2.94466026e+10, 6.55682896e+11,
+ -5.83270649e+10, -2.69200376e+10,
+ -1.55090067e+11, 5.70283422e+10,
+ 3.87626315e+08, -5.83270649e+10,
+ 1.54702440e+11, 1.29872276e+09,
+ 6.09253592e+10, -1.27756792e+11,
+ -6.22240820e+10, -2.69200376e+10,
+ 1.29872276e+09, 1.54676830e+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
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DLinear.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DLinear.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DLinear.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DLinear.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DQuadratic.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DQuadratic.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DQuadratic.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DQuadratic.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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[] = {
+ 1.03829775e+12, 1.76362384e+12,
+ -7.52244241e+11, -8.27609561e+11,
+ 8.03865887e+11, 1.06221366e+12,
+ 1.48071362e+12, 7.67069459e+11,
+ -2.20475628e+12, -3.81077823e+12,
+ -3.65876743e+11, 1.04548083e+12,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData2DQuadratic::_valsJacobian[] = {
+ 1.18059576e+12, 5.56624427e+11,
+ 2.17020537e+10, 2.82688919e+10,
+ 7.03170548e+11, 3.46233237e+11,
+ 9.30815156e+11, 3.73904122e+11,
+ -1.97360381e+12, -9.41768992e+11,
+ -8.62679703e+11, -3.63261686e+11,
+ 5.56624427e+11, 1.72905310e+12,
+ 2.55818801e+10, 7.57022146e+10,
+ 3.45077232e+11, 7.84996129e+11,
+ 3.77747140e+11, 6.31931179e+11,
+ -9.44649933e+11, -2.68111294e+12,
+ -3.60380746e+11, -5.40569680e+11,
+ 2.17020537e+10, 2.55818801e+10,
+ 5.70555199e+11, 2.59713039e+11,
+ -2.96119462e+10, -2.59165131e+10,
+ -4.24956826e+11, -1.36798725e+11,
+ 1.42337474e+11, 6.73297341e+10,
+ -2.80025954e+11, -1.89909415e+11,
+ 2.82688919e+10, 7.57022146e+10,
+ 2.59713039e+11, 5.77356324e+11,
+ -2.66709077e+10, -5.44779112e+10,
+ -1.27273335e+11, -2.04209092e+11,
+ 6.53971169e+10, 2.26338676e+11,
+ -1.99434806e+11, -6.20710212e+11,
+ 7.03170548e+11, 3.45077232e+11,
+ -2.96119462e+10, -2.66709077e+10,
+ 9.20384196e+11, 4.11776807e+11,
+ 4.71950241e+11, 3.08031050e+11,
+ -1.68844719e+12, -8.05938575e+11,
+ -3.77445853e+11, -2.32275605e+11,
+ 3.46233237e+11, 7.84996129e+11,
+ -2.59165131e+10, -5.44779112e+10,
+ 4.11776807e+11, 9.45887355e+11,
+ 3.13343794e+11, 3.21137311e+11,
+ -8.11251320e+11, -1.83366211e+12,
+ -2.34186006e+11, -1.63880774e+11,
+ 9.30815156e+11, 3.77747140e+11,
+ -4.24956826e+11, -1.27273335e+11,
+ 4.71950241e+11, 3.13343794e+11,
+ 2.66933376e+12, 8.66541719e+11,
+ -1.81944099e+12, -9.28979272e+11,
+ -1.82770134e+12, -5.01380046e+11,
+ 3.73904122e+11, 6.31931179e+11,
+ -1.36798725e+11, -2.04209092e+11,
+ 3.08031050e+11, 3.21137311e+11,
+ 8.66541719e+11, 2.75153025e+12,
+ -9.20742130e+11, -1.64708940e+12,
+ -4.90936036e+11, -1.85330024e+12,
+ -1.97360381e+12, -9.44649933e+11,
+ 1.42337474e+11, 6.53971169e+10,
+ -1.68844719e+12, -8.11251320e+11,
+ -1.81944099e+12, -9.20742130e+11,
+ 4.26074832e+12, 2.04726998e+12,
+ 1.07840620e+12, 5.63976291e+11,
+ -9.41768992e+11, -2.68111294e+12,
+ 6.73297341e+10, 2.26338676e+11,
+ -8.05938575e+11, -1.83366211e+12,
+ -9.28979272e+11, -1.64708940e+12,
+ 2.04726998e+12, 5.76761534e+12,
+ 5.62087130e+11, 1.67910439e+11,
+ -8.62679703e+11, -3.60380746e+11,
+ -2.80025954e+11, -1.99434806e+11,
+ -3.77445853e+11, -2.34186006e+11,
+ -1.82770134e+12, -4.90936036e+11,
+ 1.07840620e+12, 5.62087130e+11,
+ 2.26944665e+12, 7.22850462e+11,
+ -3.63261686e+11, -5.40569680e+11,
+ -1.89909415e+11, -6.20710212e+11,
+ -2.32275605e+11, -1.63880774e+11,
+ -5.01380046e+11, -1.85330024e+12,
+ 5.63976291e+11, 1.67910439e+11,
+ 7.22850462e+11, 3.01055047e+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
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DQuadratic.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DQuadratic.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DQuadratic.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData2DQuadratic.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData3DLinear.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData3DLinear.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData3DLinear.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData3DLinear.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,192 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+// DO NOT EDIT THIS FILE
+// This file was generated from python application integratorelasticitylgdeform.
+
+#include "ElasticityImplicitLgDeformData3DLinear.hh"
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_spaceDim = 3;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_cellDim = 3;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_numVertices = 4;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_numCells = 1;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_numBasis = 4;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_numQuadPts = 1;
+
+const char* pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_matType = "ElasticIsotropic3D";
+
+const char* pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_matDBFilename = "data/elasticisotropic3d.spatialdb";
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_matId = 0;
+
+const char* pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_matLabel = "elastic isotropic 3-D";
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_dt = 1.00000000e-02;
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_gravityVec[] = {
+ 0.00000000e+00, 0.00000000e+00, -1.00000000e+08,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_vertices[] = {
+ -5.00000000e-01, -1.00000000e+00, -5.00000000e-01,
+ 2.00000000e+00, -5.00000000e-01, -4.00000000e-01,
+ 1.00000000e+00, -1.00000000e-01, -3.00000000e-01,
+ -2.00000000e-01, 5.00000000e-01, 2.00000000e+00,
+};
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_cells[] = {
+0,1,2,3,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_verticesRef[] = {
+ -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
+ 1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
+ -1.00000000e+00, 1.00000000e+00, -1.00000000e+00,
+ -1.00000000e+00, -1.00000000e+00, 1.00000000e+00,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_quadPts[] = {
+ -5.00000000e-01, -5.00000000e-01, -5.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_quadWts[] = {
+ 1.33333333e+00,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_basis[] = {
+ 2.50000000e-01, 2.50000000e-01, 2.50000000e-01,
+ 2.50000000e-01,};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_basisDerivRef[] = {
+ -5.00000000e-01, -5.00000000e-01, -5.00000000e-01,
+ 5.00000000e-01, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 5.00000000e-01, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 5.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_fieldTIncr[] = {
+ 3.00000000e-01, 2.00000000e-01, -5.00000000e-01,
+ -3.00000000e-01, -4.00000000e-01, -6.00000000e-01,
+ 2.00000000e-01, 6.00000000e-01, 3.00000000e-01,
+ -6.00000000e-01, -1.00000000e-01, -3.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_fieldT[] = {
+ 8.00000000e-01, 1.00000000e-01, -6.00000000e-01,
+ -1.00000000e-01, -2.00000000e-01, -5.00000000e-01,
+ 1.00000000e-01, 7.00000000e-01, 2.00000000e-01,
+ -5.00000000e-01, -0.00000000e+00, -2.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_fieldTmdt[] = {
+ 1.00000000e-01, 1.00000000e-01, -3.00000000e-01,
+ -2.00000000e-01, -1.00000000e-01, -5.00000000e-01,
+ 2.00000000e-01, 4.00000000e-01, 1.00000000e-01,
+ -4.00000000e-01, -1.00000000e-01, -1.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_valsResidual[] = {
+ 2.79474210e+11, 1.80174876e+12, 1.26556850e+12,
+ 6.44632598e+11, 4.29759382e+12, 2.88601168e+12,
+ -1.13174893e+12, -6.94850554e+12, -4.65500318e+12,
+ 2.07642124e+11, 8.49162957e+11, 5.03422995e+11,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::_valsJacobian[] = {
+ 2.94874367e+11, 6.16951570e+10, 3.89461610e+10,
+ 5.48150595e+11, 1.11804684e+11, 7.10898629e+10,
+ -9.45152856e+11, -2.08621385e+11, -1.32482083e+11,
+ 1.02127894e+11, 3.51215443e+10, 2.24460592e+10,
+ 6.16951570e+10, 6.57018660e+11, 2.71425583e+11,
+ 1.11804684e+11, 1.23922444e+12, 4.97844328e+11,
+ -2.08621385e+11, -2.12462667e+12, -8.51891691e+11,
+ 3.51215443e+10, 2.28383572e+11, 8.26217801e+10,
+ 3.89461610e+10, 2.71425583e+11, 4.77828353e+11,
+ 7.10898629e+10, 4.97844328e+11, 8.73012939e+11,
+ -1.32482083e+11, -8.51891691e+11, -1.49263907e+12,
+ 2.24460592e+10, 8.26217801e+10, 1.41797778e+11,
+ 5.48150595e+11, 1.11804684e+11, 7.10898629e+10,
+ 1.41837229e+12, 2.89096417e+11, 1.70605497e+11,
+ -2.25396787e+12, -4.94966564e+11, -2.95400181e+11,
+ 2.87444987e+11, 9.40654624e+10, 5.37048209e+10,
+ 1.11804684e+11, 1.23922444e+12, 4.97844328e+11,
+ 2.89096417e+11, 3.27225597e+12, 1.26969767e+12,
+ -4.94966564e+11, -5.16973245e+12, -1.99940566e+12,
+ 9.40654624e+10, 6.58252043e+11, 2.31863658e+11,
+ 7.10898629e+10, 4.97844328e+11, 8.73012939e+11,
+ 1.70605497e+11, 1.26969767e+12, 2.20481950e+12,
+ -2.95400181e+11, -1.99940566e+12, -3.47904176e+12,
+ 5.37048209e+10, 2.31863658e+11, 4.01209317e+11,
+ -9.45152856e+11, -2.08621385e+11, -1.32482083e+11,
+ -2.25396787e+12, -4.94966564e+11, -2.95400181e+11,
+ 3.68810232e+12, 8.67069202e+11, 5.19506826e+11,
+ -4.88981593e+11, -1.63481253e+11, -9.16245619e+10,
+ -2.08621385e+11, -2.12462667e+12, -8.51891691e+11,
+ -4.94966564e+11, -5.16973245e+12, -1.99940566e+12,
+ 8.67069202e+11, 8.39475093e+12, 3.23896409e+12,
+ -1.63481253e+11, -1.10039182e+12, -3.87666745e+11,
+ -1.32482083e+11, -8.51891691e+11, -1.49263907e+12,
+ -2.95400181e+11, -1.99940566e+12, -3.47904176e+12,
+ 5.19506826e+11, 3.23896409e+12, 5.64558477e+12,
+ -9.16245619e+10, -3.87666745e+11, -6.73903937e+11,
+ 1.02127894e+11, 3.51215443e+10, 2.24460592e+10,
+ 2.87444987e+11, 9.40654624e+10, 5.37048209e+10,
+ -4.88981593e+11, -1.63481253e+11, -9.16245619e+10,
+ 9.94087115e+10, 3.42942460e+10, 1.54736818e+10,
+ 3.51215443e+10, 2.28383572e+11, 8.26217801e+10,
+ 9.40654624e+10, 6.58252043e+11, 2.31863658e+11,
+ -1.63481253e+11, -1.10039182e+12, -3.87666745e+11,
+ 3.42942460e+10, 2.13756204e+11, 7.31813067e+10,
+ 2.24460592e+10, 8.26217801e+10, 1.41797778e+11,
+ 5.37048209e+10, 2.31863658e+11, 4.01209317e+11,
+ -9.16245619e+10, -3.87666745e+11, -6.73903937e+11,
+ 1.54736818e+10, 7.31813067e+10, 1.30896842e+11,
+};
+
+pylith::feassemble::ElasticityImplicitLgDeformData3DLinear::ElasticityImplicitLgDeformData3DLinear(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::ElasticityImplicitLgDeformData3DLinear::~ElasticityImplicitLgDeformData3DLinear(void)
+{}
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData3DLinear.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData3DLinear.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData3DLinear.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData3DLinear.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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_elasticityimplicitlgdeformdata3dlinear_hh)
+#define pylith_feassemble_elasticityimplicitlgdeformdata3dlinear_hh
+
+#include "IntegratorData.hh"
+
+namespace pylith {
+ namespace feassemble {
+ class ElasticityImplicitLgDeformData3DLinear;
+ } // pylith
+} // feassemble
+
+class pylith::feassemble::ElasticityImplicitLgDeformData3DLinear : public IntegratorData
+{
+
+public:
+
+ /// Constructor
+ ElasticityImplicitLgDeformData3DLinear(void);
+
+ /// Destructor
+ ~ElasticityImplicitLgDeformData3DLinear(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_elasticityimplicitlgdeformdata3dlinear_hh
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData3DQuadratic.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData3DQuadratic.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData3DQuadratic.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData3DQuadratic.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,531 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+// DO NOT EDIT THIS FILE
+// This file was generated from python application integratorelasticitylgdeform.
+
+#include "ElasticityImplicitLgDeformData3DQuadratic.hh"
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_spaceDim = 3;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_cellDim = 3;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_numVertices = 10;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_numCells = 1;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_numBasis = 10;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_numQuadPts = 4;
+
+const char* pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_matType = "ElasticIsotropic3D";
+
+const char* pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_matDBFilename = "data/elasticisotropic3d.spatialdb";
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_matId = 0;
+
+const char* pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_matLabel = "elastic isotropic 3-D";
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_dt = 1.00000000e-02;
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_gravityVec[] = {
+ 0.00000000e+00, 0.00000000e+00, -1.00000000e+08,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_vertices[] = {
+ -5.00000000e-01, -2.00000000e+00, -1.00000000e+00,
+ 2.00000000e+00, -2.00000000e+00, -5.00000000e-01,
+ 1.00000000e+00, 1.00000000e+00, 0.00000000e+00,
+ 2.00000000e-01, 5.00000000e-01, 2.00000000e+00,
+ 1.50000000e+00, -5.00000000e-01, -2.50000000e-01,
+ 2.50000000e-01, -5.00000000e-01, -5.00000000e-01,
+ 7.50000000e-01, -2.00000000e+00, -7.50000000e-01,
+ -1.50000000e-01, -7.50000000e-01, 5.00000000e-01,
+ 1.10000000e+00, -7.50000000e-01, 7.50000000e-01,
+ 6.00000000e-01, 7.50000000e-01, 1.00000000e+00,
+};
+
+const int pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_cells[] = {
+0,1,2,3,4,5,6,7,8,9,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_verticesRef[] = {
+ -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
+ 1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
+ -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,
+ -1.00000000e+00, 0.00000000e+00, -1.00000000e+00,
+ 0.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,
+ -1.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_quadPts[] = {
+ -8.00000000e-01, -8.00000000e-01, -8.00000000e-01,
+ 5.00000000e-01, -8.00000000e-01, -8.00000000e-01,
+ -8.00000000e-01, 5.00000000e-01, -8.00000000e-01,
+ -8.00000000e-01, -8.00000000e-01, 5.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_quadWts[] = {
+ 3.33333333e-01, 3.33333333e-01, 3.33333333e-01, 3.33333333e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_basis[] = {
+ 2.80000000e-01, -8.00000000e-02, -8.00000000e-02,
+ -8.00000000e-02, 4.00000000e-02, 2.80000000e-01,
+ 2.80000000e-01, 2.80000000e-01, 4.00000000e-02,
+ 4.00000000e-02, -4.50000000e-02, 3.75000000e-01,
+ -8.00000000e-02, -8.00000000e-02, 3.00000000e-01,
+ 2.00000000e-02, 1.50000000e-01, 2.00000000e-02,
+ 3.00000000e-01, 4.00000000e-02, -4.50000000e-02,
+ -8.00000000e-02, 3.75000000e-01, -8.00000000e-02,
+ 3.00000000e-01, 1.50000000e-01, 2.00000000e-02,
+ 2.00000000e-02, 4.00000000e-02, 3.00000000e-01,
+ -4.50000000e-02, -8.00000000e-02, -8.00000000e-02,
+ 3.75000000e-01, 4.00000000e-02, 2.00000000e-02,
+ 2.00000000e-02, 1.50000000e-01, 3.00000000e-01,
+ 3.00000000e-01,};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_basisDerivRef[] = {
+ -9.00000000e-01, -9.00000000e-01, -9.00000000e-01,
+ -3.00000000e-01, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -3.00000000e-01, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, -3.00000000e-01,
+ 2.00000000e-01, 2.00000000e-01, 0.00000000e+00,
+ -2.00000000e-01, 1.20000000e+00, -2.00000000e-01,
+ 1.20000000e+00, -2.00000000e-01, -2.00000000e-01,
+ -2.00000000e-01, -2.00000000e-01, 1.20000000e+00,
+ 2.00000000e-01, 0.00000000e+00, 2.00000000e-01,
+ 0.00000000e+00, 2.00000000e-01, 2.00000000e-01,
+ 4.00000000e-01, 4.00000000e-01, 4.00000000e-01,
+ 1.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -3.00000000e-01, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, -3.00000000e-01,
+ 2.00000000e-01, 1.50000000e+00, 0.00000000e+00,
+ -2.00000000e-01, -1.00000000e-01, -2.00000000e-01,
+ -1.40000000e+00, -1.50000000e+00, -1.50000000e+00,
+ -2.00000000e-01, -2.00000000e-01, -1.00000000e-01,
+ 2.00000000e-01, 0.00000000e+00, 1.50000000e+00,
+ 0.00000000e+00, 2.00000000e-01, 2.00000000e-01,
+ 4.00000000e-01, 4.00000000e-01, 4.00000000e-01,
+ -3.00000000e-01, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, -3.00000000e-01,
+ 1.50000000e+00, 2.00000000e-01, 0.00000000e+00,
+ -1.50000000e+00, -1.40000000e+00, -1.50000000e+00,
+ -1.00000000e-01, -2.00000000e-01, -2.00000000e-01,
+ -2.00000000e-01, -2.00000000e-01, -1.00000000e-01,
+ 2.00000000e-01, 0.00000000e+00, 2.00000000e-01,
+ 0.00000000e+00, 2.00000000e-01, 1.50000000e+00,
+ 4.00000000e-01, 4.00000000e-01, 4.00000000e-01,
+ -3.00000000e-01, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -3.00000000e-01, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 1.00000000e+00,
+ 2.00000000e-01, 2.00000000e-01, 0.00000000e+00,
+ -2.00000000e-01, -1.00000000e-01, -2.00000000e-01,
+ -1.00000000e-01, -2.00000000e-01, -2.00000000e-01,
+ -1.50000000e+00, -1.50000000e+00, -1.40000000e+00,
+ 1.50000000e+00, 0.00000000e+00, 2.00000000e-01,
+ 0.00000000e+00, 1.50000000e+00, 2.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_fieldTIncr[] = {
+ 3.00000000e-01, -4.00000000e-01, -4.00000000e-01,
+ -6.00000000e-01, 8.00000000e-01, 2.00000000e-01,
+ 5.00000000e-01, 5.00000000e-01, 7.00000000e-01,
+ -7.00000000e-01, -5.00000000e-01, -7.00000000e-01,
+ -6.00000000e-01, -3.00000000e-01, 8.00000000e-01,
+ -4.00000000e-01, -8.00000000e-01, -5.00000000e-01,
+ 7.00000000e-01, 8.00000000e-01, -5.00000000e-01,
+ -5.00000000e-01, -5.00000000e-01, -7.00000000e-01,
+ -3.00000000e-01, -9.00000000e-01, 8.00000000e-01,
+ -1.00000000e-01, 5.00000000e-01, -9.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_fieldT[] = {
+ 1.00000000e-01, -2.00000000e-01, -6.00000000e-01,
+ -3.00000000e-01, 4.00000000e-01, 9.00000000e-01,
+ 6.00000000e-01, 8.00000000e-01, 5.00000000e-01,
+ -8.00000000e-01, -6.00000000e-01, -8.00000000e-01,
+ -0.00000000e+00, -2.00000000e-01, 6.00000000e-01,
+ -4.00000000e-01, -7.00000000e-01, -2.00000000e-01,
+ 7.00000000e-01, 6.00000000e-01, -1.00000000e-01,
+ -4.00000000e-01, -3.00000000e-01, -3.00000000e-01,
+ -7.00000000e-01, -6.00000000e-01, 1.00000000e-01,
+ -9.00000000e-01, 3.00000000e-01, -8.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_fieldTmdt[] = {
+ 2.00000000e-01, -3.00000000e-01, -1.00000000e-01,
+ -4.00000000e-01, 2.00000000e-01, 3.00000000e-01,
+ -5.00000000e-01, 2.00000000e-01, 2.00000000e-01,
+ -3.00000000e-01, -8.00000000e-01, -3.00000000e-01,
+ -5.00000000e-01, -9.00000000e-01, 4.00000000e-01,
+ -3.00000000e-01, -6.00000000e-01, -8.00000000e-01,
+ 9.00000000e-01, 5.00000000e-01, -2.00000000e-01,
+ -7.00000000e-01, -2.00000000e-01, -9.00000000e-01,
+ -5.00000000e-01, -8.00000000e-01, 4.00000000e-01,
+ -4.00000000e-01, 5.00000000e-01, -7.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_valsResidual[] = {
+ 2.83531193e+11, 6.85360097e+11, -7.35048936e+11,
+ 8.17609945e+11, -2.46059924e+11, 5.76994362e+11,
+ -1.61369461e+12, -3.33728123e+11, -1.98412259e+12,
+ -3.86612970e+11, 1.55209617e+12, -1.57307404e+12,
+ -8.25945978e+11, -2.06081757e+11, -8.11681780e+11,
+ 2.39916408e+12, 1.36233180e+12, 2.44278998e+12,
+ -1.83049591e+12, -1.27565741e+12, 3.52648635e+11,
+ 2.60556997e+11, -1.53217232e+12, 1.40244034e+12,
+ -8.95741060e+11, 3.53530714e+12, -4.18558562e+12,
+ 1.79162831e+12, -3.54139567e+12, 4.51463965e+12,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::_valsJacobian[] = {
+ 4.65661925e+11, 1.45207670e+11, 8.48382894e+10,
+ 1.24772472e+11, 7.41894782e+10, -4.42698676e+10,
+ 7.18213188e+10, 5.09242305e+09, 4.05530373e+10,
+ 9.25950209e+10, 3.01383081e+09, 4.41940539e+10,
+ 1.40659877e+11, 7.81646933e+09, 8.55770103e+10,
+ 7.55814313e+10, 1.00158408e+11, -5.39884553e+09,
+ -7.04119227e+11, -2.55717104e+11, -3.23748072e+10,
+ -3.27406977e+11, -3.58266405e+10, -1.14846242e+11,
+ 1.90099476e+11, -7.46675761e+10, 1.18407263e+10,
+ -1.29665315e+11, 3.07330418e+10, -7.01133548e+10,
+ 1.45207670e+11, 4.17879082e+11, 2.69285551e+10,
+ 7.41894782e+10, 7.12501045e+10, 1.69326571e+10,
+ 5.09242305e+09, 7.79843128e+10, 1.24078373e+09,
+ 3.01383081e+09, 1.26067202e+11, -2.62782048e+10,
+ 7.81646933e+09, 1.18102474e+11, 2.96832254e+10,
+ 1.00158408e+11, 2.69890946e+10, 6.52474095e+10,
+ -2.55717104e+11, -5.58070068e+11, -2.09279922e+10,
+ -3.58266405e+10, -4.64117178e+11, 6.84864638e+10,
+ -7.46675761e+10, 3.28253126e+11, -2.44433188e+11,
+ 3.07330418e+10, -1.44338150e+11, 8.31202909e+10,
+ 8.48382894e+10, 2.69285551e+10, 4.15301734e+11,
+ -4.42698676e+10, 1.69326571e+10, 7.33047953e+10,
+ 4.05530373e+10, 1.24078373e+09, 1.27489728e+11,
+ 4.41940539e+10, -2.62782048e+10, 1.51395370e+11,
+ 8.55770103e+10, 2.96832254e+10, 2.11321369e+11,
+ -5.39884553e+09, 6.52474095e+10, -1.46463462e+11,
+ -3.23748072e+10, -2.09279922e+10, -5.59853491e+11,
+ -1.14846242e+11, 6.84864638e+10, -5.09095160e+11,
+ 1.18407263e+10, -2.44433188e+11, 4.97279724e+11,
+ -7.01133548e+10, 8.31202909e+10, -2.60680607e+11,
+ 1.24772472e+11, 7.41894782e+10, -4.42698676e+10,
+ 3.18994605e+11, 6.08636475e+10, -5.28381253e+10,
+ -5.95541375e+10, 1.26084960e+10, -4.24114682e+10,
+ -8.37120894e+10, 2.17101919e+10, -9.24436085e+08,
+ -2.46254169e+11, -4.29845346e+10, -4.41618213e+10,
+ 3.69282312e+11, 1.07296224e+11, 1.48157570e+11,
+ -5.47553983e+11, -1.78849586e+11, 9.36194643e+10,
+ 7.95730371e+10, -7.67652780e+10, 4.79024142e+10,
+ -2.15276680e+11, 8.00666055e+10, -1.77270676e+11,
+ 2.59728633e+11, -5.81352446e+10, 7.21969464e+10,
+ 7.41894782e+10, 7.12501045e+10, 1.69326571e+10,
+ 6.08636475e+10, 3.25267756e+11, -1.22309091e+11,
+ 1.26084960e+10, -5.31861531e+10, 1.29709419e+10,
+ 2.17101919e+10, -1.52532444e+11, 1.00603438e+11,
+ -4.29845346e+10, -2.62321656e+11, 6.79528717e+10,
+ 1.07296224e+11, 3.27288566e+11, 5.30178659e+10,
+ -1.78849586e+11, -4.32757567e+11, 7.65998486e+10,
+ -7.67652780e+10, 1.29553761e+11, -1.26591592e+11,
+ 8.00666055e+10, -3.89057716e+11, 1.34140735e+11,
+ -5.81352446e+10, 4.36495348e+11, -2.13317675e+11,
+ -4.42698676e+10, 1.69326571e+10, 7.33047953e+10,
+ -5.28381253e+10, -1.22309091e+11, 4.88759132e+11,
+ -4.24114682e+10, 1.29709419e+10, -6.74464625e+10,
+ -9.24436085e+08, 1.00603438e+11, -1.98419387e+11,
+ -4.41618213e+10, 6.79528717e+10, -3.98133382e+11,
+ 1.48157570e+11, 5.30178659e+10, 3.01368983e+11,
+ 9.36194643e+10, 7.65998486e+10, -5.77601119e+11,
+ 4.79024142e+10, -1.26591592e+11, 1.94445962e+11,
+ -1.77270676e+11, 1.34140735e+11, -2.74232321e+11,
+ 7.21969464e+10, -2.13317675e+11, 4.57953800e+11,
+ 7.18213188e+10, 5.09242305e+09, 4.05530373e+10,
+ -5.95541375e+10, 1.26084960e+10, -4.24114682e+10,
+ 1.10135125e+12, 3.25720553e+11, 3.62390508e+11,
+ 2.94017649e+11, 1.23894657e+10, 8.94735240e+10,
+ 1.34408493e+10, -4.81163047e+10, 1.60257602e+11,
+ -6.81749121e+11, -2.46273575e+11, -2.38131042e+11,
+ 1.52813392e+11, 6.38089974e+10, 2.92728877e+10,
+ -1.19071391e+10, 6.22561142e+10, -3.62572653e+10,
+ 2.38104621e+11, -5.73710641e+10, -4.42540169e+09,
+ -1.11833868e+12, -1.30115106e+11, -3.60722383e+11,
+ 5.09242305e+09, 7.79843128e+10, 1.24078373e+09,
+ 1.26084960e+10, -5.31861531e+10, 1.29709419e+10,
+ 3.25720553e+11, 1.09654928e+12, 1.25558927e+11,
+ 1.23894657e+10, 4.02203557e+11, -1.25992638e+11,
+ -4.81163047e+10, -2.03145182e+11, 1.24652000e+11,
+ -2.46273575e+11, -6.32348620e+11, -1.80580051e+11,
+ 6.38089974e+10, 9.79869768e+10, 3.14800157e+10,
+ 6.22561142e+10, -2.38293966e+10, 8.52080054e+10,
+ -5.73710641e+10, 4.92506284e+11, -2.94720961e+11,
+ -1.30115106e+11, -1.25472106e+12, 2.20182976e+11,
+ 4.05530373e+10, 1.24078373e+09, 1.27489728e+11,
+ -4.24114682e+10, 1.29709419e+10, -6.74464625e+10,
+ 3.62390508e+11, 1.25558927e+11, 1.03669910e+12,
+ 8.94735240e+10, -1.25992638e+11, 4.11450418e+11,
+ 1.60257602e+11, 1.24652000e+11, -3.17810955e+09,
+ -2.38131042e+11, -1.80580051e+11, -6.28819588e+11,
+ 2.92728877e+10, 3.14800157e+10, 3.14543861e+10,
+ -3.62572653e+10, 8.52080054e+10, -1.29228969e+11,
+ -4.42540169e+09, -2.94720961e+11, 5.35392012e+11,
+ -3.60722383e+11, 2.20182976e+11, -1.31381251e+12,
+ 9.25950209e+10, 3.01383081e+09, 4.41940539e+10,
+ -8.37120894e+10, 2.17101919e+10, -9.24436085e+08,
+ 2.94017649e+11, 1.23894657e+10, 8.94735240e+10,
+ 4.97528833e+11, -1.14626728e+10, 6.59882894e+10,
+ 6.65491224e+10, 8.47757035e+09, 1.31257632e+10,
+ 7.66331934e+10, 8.55959553e+10, -3.73685357e+07,
+ -3.56709943e+10, -2.76429617e+10, -6.19572817e+10,
+ -3.22925718e+11, -5.74029189e+09, -8.83327493e+10,
+ 3.17445492e+11, -1.22169413e+11, 1.00263616e+11,
+ -9.02460510e+11, 3.58283248e+10, -1.61793411e+11,
+ 3.01383081e+09, 1.26067202e+11, -2.62782048e+10,
+ 2.17101919e+10, -1.52532444e+11, 1.00603438e+11,
+ 1.23894657e+10, 4.02203557e+11, -1.25992638e+11,
+ -1.14626728e+10, 8.65931363e+11, -3.82661325e+11,
+ 8.47757035e+09, -1.28217470e+10, 1.35369129e+10,
+ 8.55959553e+10, 3.26503144e+10, 1.22944799e+11,
+ -2.76429617e+10, -3.20097931e+10, -5.88793091e+10,
+ -5.74029189e+09, -4.10305623e+11, 1.11266648e+11,
+ -1.22169413e+11, 7.48622075e+11, -4.24857358e+11,
+ 3.58283248e+10, -1.56780490e+12, 6.70317037e+11,
+ 4.41940539e+10, -2.62782048e+10, 1.51395370e+11,
+ -9.24436085e+08, 1.00603438e+11, -1.98419387e+11,
+ 8.94735240e+10, -1.25992638e+11, 4.11450418e+11,
+ 6.59882894e+10, -3.82661325e+11, 8.70711287e+11,
+ 1.31257632e+10, 1.35369129e+10, 9.07016473e+10,
+ -3.73685357e+07, 1.22944799e+11, -5.25010034e+10,
+ -6.19572817e+10, -5.88793091e+10, 1.08121328e+10,
+ -8.83327493e+10, 1.11266648e+11, -5.16970075e+11,
+ 1.00263616e+11, -4.24857358e+11, 7.55013813e+11,
+ -1.61793411e+11, 6.70317037e+11, -1.52219420e+12,
+ 1.40659877e+11, 7.81646933e+09, 8.55770103e+10,
+ -2.46254169e+11, -4.29845346e+10, -4.41618213e+10,
+ 1.34408493e+10, -4.81163047e+10, 1.60257602e+11,
+ 6.65491224e+10, 8.47757035e+09, 1.31257632e+10,
+ 1.16270901e+12, 1.84156516e+11, 1.94618725e+11,
+ -5.72995180e+11, -7.97684286e+10, -3.20409939e+11,
+ 2.64947735e+10, 1.68329992e+10, -9.87964535e+09,
+ -2.49889410e+11, -3.10663177e+10, -7.33658238e+10,
+ -1.71088244e+11, -6.30056465e+10, 1.74314405e+11,
+ -1.69626626e+11, 4.76576773e+10, -1.80076276e+11,
+ 7.81646933e+09, 1.18102474e+11, 2.96832254e+10,
+ -4.29845346e+10, -2.62321656e+11, 6.79528717e+10,
+ -4.81163047e+10, -2.03145182e+11, 1.24652000e+11,
+ 8.47757035e+09, -1.28217470e+10, 1.35369129e+10,
+ 1.84156516e+11, 1.16609381e+12, -2.28629589e+11,
+ -7.97684286e+10, -4.65673799e+11, -9.51163063e+10,
+ 1.68329992e+10, 7.30677747e+10, -6.02206307e+10,
+ -3.10663177e+10, -2.30487506e+11, 7.81937180e+09,
+ -6.30056465e+10, -2.28430845e+11, 1.98763507e+11,
+ 4.76576773e+10, 4.56166756e+10, -5.84413625e+10,
+ 8.55770103e+10, 2.96832254e+10, 2.11321369e+11,
+ -4.41618213e+10, 6.79528717e+10, -3.98133382e+11,
+ 1.60257602e+11, 1.24652000e+11, -3.17810955e+09,
+ 1.31257632e+10, 1.35369129e+10, 9.07016473e+10,
+ 1.94618725e+11, -2.28629589e+11, 1.70825144e+12,
+ -3.20409939e+11, -9.51163063e+10, -7.97801243e+11,
+ -9.87964535e+09, -6.02206307e+10, 7.70360435e+10,
+ -7.33658238e+10, 7.81937180e+09, -2.93644299e+11,
+ 1.74314405e+11, 1.98763507e+11, -4.10328847e+11,
+ -1.80076276e+11, -5.84413625e+10, -1.84224621e+11,
+ 7.55814313e+10, 1.00158408e+11, -5.39884553e+09,
+ 3.69282312e+11, 1.07296224e+11, 1.48157570e+11,
+ -6.81749121e+11, -2.46273575e+11, -2.38131042e+11,
+ 7.66331934e+10, 8.55959553e+10, -3.73685357e+07,
+ -5.72995180e+11, -7.97684286e+10, -3.20409939e+11,
+ 2.45592464e+12, 8.72069906e+11, 7.29084849e+11,
+ -9.75215619e+11, -4.34128069e+11, -2.56910788e+11,
+ -5.51910015e+11, -3.31945132e+11, -1.04698326e+11,
+ -5.96253782e+11, -1.03426849e+11, -1.13624994e+11,
+ 4.00702141e+11, 3.04215606e+10, 1.61968884e+11,
+ 1.00158408e+11, 2.69890946e+10, 6.52474095e+10,
+ 1.07296224e+11, 3.27288566e+11, 5.30178659e+10,
+ -2.46273575e+11, -6.32348620e+11, -1.80580051e+11,
+ 8.55959553e+10, 3.26503144e+10, 1.22944799e+11,
+ -7.97684286e+10, -4.65673799e+11, -9.51163063e+10,
+ 8.72069906e+11, 2.27130607e+12, 5.76476353e+11,
+ -4.34128069e+11, -7.36984695e+11, -2.23203143e+11,
+ -3.31945132e+11, -4.91827419e+11, -3.22783678e+11,
+ -1.03426849e+11, -7.11586437e+11, 1.31379586e+11,
+ 3.04215606e+10, 3.80186919e+11, -1.27382836e+11,
+ -5.39884553e+09, 6.52474095e+10, -1.46463462e+11,
+ 1.48157570e+11, 5.30178659e+10, 3.01368983e+11,
+ -2.38131042e+11, -1.80580051e+11, -6.28819588e+11,
+ -3.73685357e+07, 1.22944799e+11, -5.25010034e+10,
+ -3.20409939e+11, -9.51163063e+10, -7.97801243e+11,
+ 7.29084849e+11, 5.76476353e+11, 2.14357815e+12,
+ -2.56910788e+11, -2.23203143e+11, -4.02976629e+11,
+ -1.04698326e+11, -3.22783678e+11, -2.22817271e+11,
+ -1.13624994e+11, 1.31379586e+11, -7.44361231e+11,
+ 1.61968884e+11, -1.27382836e+11, 5.50793300e+11,
+ -7.04119227e+11, -2.55717104e+11, -3.23748072e+10,
+ -5.47553983e+11, -1.78849586e+11, 9.36194643e+10,
+ 1.52813392e+11, 6.38089974e+10, 2.92728877e+10,
+ -3.56709943e+10, -2.76429617e+10, -6.19572817e+10,
+ 2.64947735e+10, 1.68329992e+10, -9.87964535e+09,
+ -9.75215619e+11, -4.34128069e+11, -2.56910788e+11,
+ 1.89896017e+12, 6.56740815e+11, -8.16178375e+10,
+ 3.38393444e+11, 1.64966431e+11, 1.12967809e+11,
+ -3.12949675e+10, 2.44157356e+10, 1.92718403e+11,
+ -1.22806992e+11, -3.04272562e+10, 1.41617951e+10,
+ -2.55717104e+11, -5.58070068e+11, -2.09279922e+10,
+ -1.78849586e+11, -4.32757567e+11, 7.65998486e+10,
+ 6.38089974e+10, 9.79869768e+10, 3.14800157e+10,
+ -2.76429617e+10, -3.20097931e+10, -5.88793091e+10,
+ 1.68329992e+10, 7.30677747e+10, -6.02206307e+10,
+ -4.34128069e+11, -7.36984695e+11, -2.23203143e+11,
+ 6.56740815e+11, 1.40195492e+12, -6.50991546e+10,
+ 1.64966431e+11, 4.34421272e+11, 6.47670884e+10,
+ 2.44157356e+10, -1.07992730e+11, 2.24564280e+11,
+ -3.04272562e+10, -1.39616091e+11, 3.09189976e+10,
+ -3.23748072e+10, -2.09279922e+10, -5.59853491e+11,
+ 9.36194643e+10, 7.65998486e+10, -5.77601119e+11,
+ 2.92728877e+10, 3.14800157e+10, 3.14543861e+10,
+ -6.19572817e+10, -5.88793091e+10, 1.08121328e+10,
+ -9.87964535e+09, -6.02206307e+10, 7.70360435e+10,
+ -2.56910788e+11, -2.23203143e+11, -4.02976629e+11,
+ -8.16178375e+10, -6.50991546e+10, 1.51957659e+12,
+ 1.12967809e+11, 6.47670884e+10, 3.90219017e+11,
+ 1.92718403e+11, 2.24564280e+11, -4.04297886e+11,
+ 1.41617951e+10, 3.09189976e+10, -8.43690419e+10,
+ -3.27406977e+11, -3.58266405e+10, -1.14846242e+11,
+ 7.95730371e+10, -7.67652780e+10, 4.79024142e+10,
+ -1.19071391e+10, 6.22561142e+10, -3.62572653e+10,
+ -3.22925718e+11, -5.74029189e+09, -8.83327493e+10,
+ -2.49889410e+11, -3.10663177e+10, -7.33658238e+10,
+ -5.51910015e+11, -3.31945132e+11, -1.04698326e+11,
+ 3.38393444e+11, 1.64966431e+11, 1.12967809e+11,
+ 1.31141204e+12, 1.23926458e+11, 3.32914096e+11,
+ -6.26226600e+11, 2.47475905e+11, -2.25050603e+11,
+ 3.60887342e+11, -1.17281247e+11, 1.48766690e+11,
+ -3.58266405e+10, -4.64117178e+11, 6.84864638e+10,
+ -7.67652780e+10, 1.29553761e+11, -1.26591592e+11,
+ 6.22561142e+10, -2.38293966e+10, 8.52080054e+10,
+ -5.74029189e+09, -4.10305623e+11, 1.11266648e+11,
+ -3.10663177e+10, -2.30487506e+11, 7.81937180e+09,
+ -3.31945132e+11, -4.91827419e+11, -3.22783678e+11,
+ 1.64966431e+11, 4.34421272e+11, 6.47670884e+10,
+ 1.23926458e+11, 1.60701662e+12, -2.64550313e+11,
+ 2.47475905e+11, -9.92458260e+11, 6.53136619e+11,
+ -1.17281247e+11, 4.42033730e+11, -2.76758613e+11,
+ -1.14846242e+11, 6.84864638e+10, -5.09095160e+11,
+ 4.79024142e+10, -1.26591592e+11, 1.94445962e+11,
+ -3.62572653e+10, 8.52080054e+10, -1.29228969e+11,
+ -8.83327493e+10, 1.11266648e+11, -5.16970075e+11,
+ -7.33658238e+10, 7.81937180e+09, -2.93644299e+11,
+ -1.04698326e+11, -3.22783678e+11, -2.22817271e+11,
+ 1.12967809e+11, 6.47670884e+10, 3.90219017e+11,
+ 3.32914096e+11, -2.64550313e+11, 1.69650893e+12,
+ -2.25050603e+11, 6.53136619e+11, -1.33623672e+12,
+ 1.48766690e+11, -2.76758613e+11, 7.26818588e+11,
+ 1.90099476e+11, -7.46675761e+10, 1.18407263e+10,
+ -2.15276680e+11, 8.00666055e+10, -1.77270676e+11,
+ 2.38104621e+11, -5.73710641e+10, -4.42540169e+09,
+ 3.17445492e+11, -1.22169413e+11, 1.00263616e+11,
+ -1.71088244e+11, -6.30056465e+10, 1.74314405e+11,
+ -5.96253782e+11, -1.03426849e+11, -1.13624994e+11,
+ -3.12949675e+10, 2.44157356e+10, 1.92718403e+11,
+ -6.26226600e+11, 2.47475905e+11, -2.25050603e+11,
+ 1.97967373e+12, -2.24128696e+11, 2.63978666e+11,
+ -1.08518305e+12, 2.92810999e+11, -2.22744142e+11,
+ -7.46675761e+10, 3.28253126e+11, -2.44433188e+11,
+ 8.00666055e+10, -3.89057716e+11, 1.34140735e+11,
+ -5.73710641e+10, 4.92506284e+11, -2.94720961e+11,
+ -1.22169413e+11, 7.48622075e+11, -4.24857358e+11,
+ -6.30056465e+10, -2.28430845e+11, 1.98763507e+11,
+ -1.03426849e+11, -7.11586437e+11, 1.31379586e+11,
+ 2.44157356e+10, -1.07992730e+11, 2.24564280e+11,
+ 2.47475905e+11, -9.92458260e+11, 6.53136619e+11,
+ -2.24128696e+11, 3.09010212e+12, -1.54522896e+12,
+ 2.92810999e+11, -2.22995762e+12, 1.16725574e+12,
+ 1.18407263e+10, -2.44433188e+11, 4.97279724e+11,
+ -1.77270676e+11, 1.34140735e+11, -2.74232321e+11,
+ -4.42540169e+09, -2.94720961e+11, 5.35392012e+11,
+ 1.00263616e+11, -4.24857358e+11, 7.55013813e+11,
+ 1.74314405e+11, 1.98763507e+11, -4.10328847e+11,
+ -1.13624994e+11, 1.31379586e+11, -7.44361231e+11,
+ 1.92718403e+11, 2.24564280e+11, -4.04297886e+11,
+ -2.25050603e+11, 6.53136619e+11, -1.33623672e+12,
+ 2.63978666e+11, -1.54522896e+12, 3.55709452e+12,
+ -2.22744142e+11, 1.16725574e+12, -2.17532306e+12,
+ -1.29665315e+11, 3.07330418e+10, -7.01133548e+10,
+ 2.59728633e+11, -5.81352446e+10, 7.21969464e+10,
+ -1.11833868e+12, -1.30115106e+11, -3.60722383e+11,
+ -9.02460510e+11, 3.58283248e+10, -1.61793411e+11,
+ -1.69626626e+11, 4.76576773e+10, -1.80076276e+11,
+ 4.00702141e+11, 3.04215606e+10, 1.61968884e+11,
+ -1.22806992e+11, -3.04272562e+10, 1.41617951e+10,
+ 3.60887342e+11, -1.17281247e+11, 1.48766690e+11,
+ -1.08518305e+12, 2.92810999e+11, -2.22744142e+11,
+ 2.50676306e+12, -1.01492749e+11, 5.98355251e+11,
+ 3.07330418e+10, -1.44338150e+11, 8.31202909e+10,
+ -5.81352446e+10, 4.36495348e+11, -2.13317675e+11,
+ -1.30115106e+11, -1.25472106e+12, 2.20182976e+11,
+ 3.58283248e+10, -1.56780490e+12, 6.70317037e+11,
+ 4.76576773e+10, 4.56166756e+10, -5.84413625e+10,
+ 3.04215606e+10, 3.80186919e+11, -1.27382836e+11,
+ -3.04272562e+10, -1.39616091e+11, 3.09189976e+10,
+ -1.17281247e+11, 4.42033730e+11, -2.76758613e+11,
+ 2.92810999e+11, -2.22995762e+12, 1.16725574e+12,
+ -1.01492749e+11, 4.03210515e+12, -1.49589456e+12,
+ -7.01133548e+10, 8.31202909e+10, -2.60680607e+11,
+ 7.21969464e+10, -2.13317675e+11, 4.57953800e+11,
+ -3.60722383e+11, 2.20182976e+11, -1.31381251e+12,
+ -1.61793411e+11, 6.70317037e+11, -1.52219420e+12,
+ -1.80076276e+11, -5.84413625e+10, -1.84224621e+11,
+ 1.61968884e+11, -1.27382836e+11, 5.50793300e+11,
+ 1.41617951e+10, 3.09189976e+10, -8.43690419e+10,
+ 1.48766690e+11, -2.76758613e+11, 7.26818588e+11,
+ -2.22744142e+11, 1.16725574e+12, -2.17532306e+12,
+ 5.98355251e+11, -1.49589456e+12, 3.80503835e+12,
+};
+
+pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic::ElasticityImplicitLgDeformData3DQuadratic(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::ElasticityImplicitLgDeformData3DQuadratic::~ElasticityImplicitLgDeformData3DQuadratic(void)
+{}
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData3DQuadratic.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData3DQuadratic.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData3DQuadratic.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformData3DQuadratic.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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_elasticityimplicitlgdeformdata3dquadratic_hh)
+#define pylith_feassemble_elasticityimplicitlgdeformdata3dquadratic_hh
+
+#include "IntegratorData.hh"
+
+namespace pylith {
+ namespace feassemble {
+ class ElasticityImplicitLgDeformData3DQuadratic;
+ } // pylith
+} // feassemble
+
+class pylith::feassemble::ElasticityImplicitLgDeformData3DQuadratic : public IntegratorData
+{
+
+public:
+
+ /// Constructor
+ ElasticityImplicitLgDeformData3DQuadratic(void);
+
+ /// Destructor
+ ~ElasticityImplicitLgDeformData3DQuadratic(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_elasticityimplicitlgdeformdata3dquadratic_hh
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData1DLinear.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData1DLinear.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData1DLinear.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData1DLinear.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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 "ElasticityImplicitLgDeformGravData1DLinear.hh"
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_spaceDim = 1;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_cellDim = 1;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_numVertices = 2;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_numCells = 1;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_numBasis = 2;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_numQuadPts = 1;
+
+const char* pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_matType = "ElasticStrain1D";
+
+const char* pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_matDBFilename = "data/elasticstrain1d.spatialdb";
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_matId = 0;
+
+const char* pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_matLabel = "elastic strain 1-D";
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_dt = 1.00000000e-02;
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_gravityVec[] = {
+ -1.00000000e+08,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_vertices[] = {
+ -2.50000000e-01,
+ 2.00000000e+00,
+};
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_cells[] = {
+0,1,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_verticesRef[] = {
+ -1.00000000e+00,
+ 1.00000000e+00,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_quadPts[] = {
+ 0.00000000e+00,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_quadWts[] = {
+ 2.00000000e+00,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_basis[] = {
+ 5.00000000e-01,
+ 5.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_basisDerivRef[] = {
+ -5.00000000e-01,
+ 5.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_fieldTIncr[] = {
+ 1.20000000e+00,
+ 1.70000000e+00,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_fieldT[] = {
+ 1.10000000e+00,
+ 1.50000000e+00,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_fieldTmdt[] = {
+ 1.00000000e+00,
+ 1.30000000e+00,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_valsResidual[] = {
+ -2.20770000e+11,
+ -3.41730000e+11,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::_valsJacobian[] = {
+ 9.76000000e+10,
+ -9.76000000e+10,
+ -9.76000000e+10,
+ 9.76000000e+10,
+};
+
+pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear::ElasticityImplicitLgDeformGravData1DLinear(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::ElasticityImplicitLgDeformGravData1DLinear::~ElasticityImplicitLgDeformGravData1DLinear(void)
+{}
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData1DLinear.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData1DLinear.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData1DLinear.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData1DLinear.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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_elasticityimplicitlgdeformgravdata1dlinear_hh)
+#define pylith_feassemble_elasticityimplicitlgdeformgravdata1dlinear_hh
+
+#include "IntegratorData.hh"
+
+namespace pylith {
+ namespace feassemble {
+ class ElasticityImplicitLgDeformGravData1DLinear;
+ } // pylith
+} // feassemble
+
+class pylith::feassemble::ElasticityImplicitLgDeformGravData1DLinear : public IntegratorData
+{
+
+public:
+
+ /// Constructor
+ ElasticityImplicitLgDeformGravData1DLinear(void);
+
+ /// Destructor
+ ~ElasticityImplicitLgDeformGravData1DLinear(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_elasticityimplicitlgdeformgravdata1dlinear_hh
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData1DQuadratic.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData1DQuadratic.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData1DQuadratic.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData1DQuadratic.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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 "ElasticityImplicitLgDeformGravData1DQuadratic.hh"
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_spaceDim = 1;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_cellDim = 1;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_numVertices = 3;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_numCells = 1;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_numBasis = 3;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_numQuadPts = 2;
+
+const char* pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_matType = "ElasticStrain1D";
+
+const char* pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_matDBFilename = "data/elasticstrain1d.spatialdb";
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_matId = 0;
+
+const char* pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_matLabel = "elastic strain 1-D";
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_dt = 1.00000000e-02;
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_gravityVec[] = {
+ -1.00000000e+08,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_vertices[] = {
+ -2.50000000e-01,
+ 2.00000000e+00,
+ 8.75000000e-01,
+};
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_cells[] = {
+0,1,2,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_verticesRef[] = {
+ -1.00000000e+00,
+ 1.00000000e+00,
+ 0.00000000e+00,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_quadPts[] = {
+ -5.77350269e-01,
+ 5.77350269e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_quadWts[] = {
+ 1.00000000e+00, 1.00000000e+00,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_basis[] = {
+ 4.55341801e-01,
+ -1.22008468e-01,
+ 6.66666667e-01,
+ -1.22008468e-01,
+ 4.55341801e-01,
+ 6.66666667e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_basisDerivRef[] = {
+ -1.07735027e+00,
+ -7.73502692e-02,
+ 1.15470054e+00,
+ 7.73502692e-02,
+ 1.07735027e+00,
+ -1.15470054e+00,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_fieldTIncr[] = {
+ 1.20000000e+00,
+ 0.00000000e+00,
+ 1.70000000e+00,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_fieldT[] = {
+ 1.10000000e+00,
+ 1.00000000e-01,
+ 1.50000000e+00,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_fieldTmdt[] = {
+ 1.00000000e+00,
+ 1.00000000e-01,
+ 1.30000000e+00,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_valsResidual[] = {
+ 2.60876283e+11,
+ 2.37591344e+11,
+ -1.06096763e+12,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic::_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::ElasticityImplicitLgDeformGravData1DQuadratic::ElasticityImplicitLgDeformGravData1DQuadratic(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::ElasticityImplicitLgDeformGravData1DQuadratic::~ElasticityImplicitLgDeformGravData1DQuadratic(void)
+{}
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData1DQuadratic.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData1DQuadratic.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData1DQuadratic.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData1DQuadratic.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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_elasticityimplicitlgdeformgravdata1dquadratic_hh)
+#define pylith_feassemble_elasticityimplicitlgdeformgravdata1dquadratic_hh
+
+#include "IntegratorData.hh"
+
+namespace pylith {
+ namespace feassemble {
+ class ElasticityImplicitLgDeformGravData1DQuadratic;
+ } // pylith
+} // feassemble
+
+class pylith::feassemble::ElasticityImplicitLgDeformGravData1DQuadratic : public IntegratorData
+{
+
+public:
+
+ /// Constructor
+ ElasticityImplicitLgDeformGravData1DQuadratic(void);
+
+ /// Destructor
+ ~ElasticityImplicitLgDeformGravData1DQuadratic(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_elasticityimplicitlgdeformgravdata1dquadratic_hh
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData2DLinear.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData2DLinear.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData2DLinear.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData2DLinear.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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 "ElasticityImplicitLgDeformGravData2DLinear.hh"
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_spaceDim = 2;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_cellDim = 2;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_numVertices = 3;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_numCells = 1;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_numBasis = 3;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_numQuadPts = 1;
+
+const char* pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_matType = "ElasticPlaneStrain";
+
+const char* pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_matDBFilename = "data/elasticplanestrain.spatialdb";
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_matId = 0;
+
+const char* pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_matLabel = "elastic strain 2-D";
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_dt = 1.00000000e-02;
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_gravityVec[] = {
+ 0.00000000e+00, -1.00000000e+08,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_vertices[] = {
+ 2.00000000e-01, -4.00000000e-01,
+ 3.00000000e-01, 5.00000000e-01,
+ -1.00000000e+00, -2.00000000e-01,
+};
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_cells[] = {
+0,1,2,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_verticesRef[] = {
+ -1.00000000e+00, -1.00000000e+00,
+ 1.00000000e+00, -1.00000000e+00,
+ -1.00000000e+00, 1.00000000e+00,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_quadPts[] = {
+ -3.33333333e-01, -3.33333333e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_quadWts[] = {
+ 5.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_basis[] = {
+ 3.33333333e-01, 3.33333333e-01,
+ 3.33333333e-01,};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_basisDerivRef[] = {
+ -5.00000000e-01, -5.00000000e-01,
+ 5.00000000e-01, 0.00000000e+00,
+ 0.00000000e+00, 5.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_fieldTIncr[] = {
+ 1.30000000e+00, -9.00000000e-01,
+ 1.40000000e+00, 1.50000000e+00,
+ 5.00000000e-01, -9.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_fieldT[] = {
+ 1.60000000e+00, -8.00000000e-01,
+ 9.00000000e-01, 7.00000000e-01,
+ -2.00000000e-01, -1.10000000e+00,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_fieldTmdt[] = {
+ 8.00000000e-01, 1.00000000e-01,
+ 5.00000000e-01, 3.00000000e-01,
+ -1.00000000e-01, -6.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_valsResidual[] = {
+ -3.65540787e+11, 1.04750079e+12,
+ 9.00343192e+10, -1.10825548e+12,
+ 2.75506468e+11, 2.63796904e+10,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::_valsJacobian[] = {
+ 4.36313261e+11, -1.48699027e+11,
+ -2.81223194e+11, 8.77736676e+10,
+ -1.55090067e+11, 6.09253592e+10,
+ -1.48699027e+11, 7.56519651e+11,
+ 9.16706846e+10, -6.28762859e+11,
+ 5.70283422e+10, -1.27756792e+11,
+ -2.81223194e+11, 9.16706846e+10,
+ 2.80835568e+11, -2.94466026e+10,
+ 3.87626315e+08, -6.22240820e+10,
+ 8.77736676e+10, -6.28762859e+11,
+ -2.94466026e+10, 6.55682896e+11,
+ -5.83270649e+10, -2.69200376e+10,
+ -1.55090067e+11, 5.70283422e+10,
+ 3.87626315e+08, -5.83270649e+10,
+ 1.54702440e+11, 1.29872276e+09,
+ 6.09253592e+10, -1.27756792e+11,
+ -6.22240820e+10, -2.69200376e+10,
+ 1.29872276e+09, 1.54676830e+11,
+};
+
+pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear::ElasticityImplicitLgDeformGravData2DLinear(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::ElasticityImplicitLgDeformGravData2DLinear::~ElasticityImplicitLgDeformGravData2DLinear(void)
+{}
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData2DLinear.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData2DLinear.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData2DLinear.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData2DLinear.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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_elasticityimplicitlgdeformgravdata2dlinear_hh)
+#define pylith_feassemble_elasticityimplicitlgdeformgravdata2dlinear_hh
+
+#include "IntegratorData.hh"
+
+namespace pylith {
+ namespace feassemble {
+ class ElasticityImplicitLgDeformGravData2DLinear;
+ } // pylith
+} // feassemble
+
+class pylith::feassemble::ElasticityImplicitLgDeformGravData2DLinear : public IntegratorData
+{
+
+public:
+
+ /// Constructor
+ ElasticityImplicitLgDeformGravData2DLinear(void);
+
+ /// Destructor
+ ~ElasticityImplicitLgDeformGravData2DLinear(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_elasticityimplicitlgdeformgravdata2dlinear_hh
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData2DQuadratic.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData2DQuadratic.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData2DQuadratic.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData2DQuadratic.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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 "ElasticityImplicitLgDeformGravData2DQuadratic.hh"
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData2DQuadratic::_spaceDim = 2;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData2DQuadratic::_cellDim = 2;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData2DQuadratic::_numVertices = 6;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData2DQuadratic::_numCells = 1;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData2DQuadratic::_numBasis = 6;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData2DQuadratic::_numQuadPts = 6;
+
+const char* pylith::feassemble::ElasticityImplicitLgDeformGravData2DQuadratic::_matType = "ElasticPlaneStrain";
+
+const char* pylith::feassemble::ElasticityImplicitLgDeformGravData2DQuadratic::_matDBFilename = "data/elasticplanestrain.spatialdb";
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData2DQuadratic::_matId = 0;
+
+const char* pylith::feassemble::ElasticityImplicitLgDeformGravData2DQuadratic::_matLabel = "elastic strain 2-D";
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData2DQuadratic::_dt = 1.00000000e-02;
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData2DQuadratic::_gravityVec[] = {
+ 0.00000000e+00, -1.00000000e+08,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData2DQuadratic::_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::ElasticityImplicitLgDeformGravData2DQuadratic::_cells[] = {
+0,1,2,3,4,5,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData2DQuadratic::_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::ElasticityImplicitLgDeformGravData2DQuadratic::_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::ElasticityImplicitLgDeformGravData2DQuadratic::_quadWts[] = {
+ 3.33333333e-01, 3.33333333e-01, 3.33333333e-01, 3.33333333e-01, 3.33333333e-01, 3.33333333e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData2DQuadratic::_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::ElasticityImplicitLgDeformGravData2DQuadratic::_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::ElasticityImplicitLgDeformGravData2DQuadratic::_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::ElasticityImplicitLgDeformGravData2DQuadratic::_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::ElasticityImplicitLgDeformGravData2DQuadratic::_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::ElasticityImplicitLgDeformGravData2DQuadratic::_valsResidual[] = {
+ 1.03829775e+12, 1.72143634e+12,
+ -7.52244241e+11, -8.67453311e+11,
+ 8.03865887e+11, 1.02236991e+12,
+ 1.48071362e+12, 5.42069459e+11,
+ -2.20475628e+12, -3.86234073e+12,
+ -3.65876743e+11, 9.93918331e+11,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData2DQuadratic::_valsJacobian[] = {
+ 1.18059576e+12, 5.56624427e+11,
+ 2.17020537e+10, 2.82688919e+10,
+ 7.03170548e+11, 3.46233237e+11,
+ 9.30815156e+11, 3.73904122e+11,
+ -1.97360381e+12, -9.41768992e+11,
+ -8.62679703e+11, -3.63261686e+11,
+ 5.56624427e+11, 1.72905310e+12,
+ 2.55818801e+10, 7.57022146e+10,
+ 3.45077232e+11, 7.84996129e+11,
+ 3.77747140e+11, 6.31931179e+11,
+ -9.44649933e+11, -2.68111294e+12,
+ -3.60380746e+11, -5.40569680e+11,
+ 2.17020537e+10, 2.55818801e+10,
+ 5.70555199e+11, 2.59713039e+11,
+ -2.96119462e+10, -2.59165131e+10,
+ -4.24956826e+11, -1.36798725e+11,
+ 1.42337474e+11, 6.73297341e+10,
+ -2.80025954e+11, -1.89909415e+11,
+ 2.82688919e+10, 7.57022146e+10,
+ 2.59713039e+11, 5.77356324e+11,
+ -2.66709077e+10, -5.44779112e+10,
+ -1.27273335e+11, -2.04209092e+11,
+ 6.53971169e+10, 2.26338676e+11,
+ -1.99434806e+11, -6.20710212e+11,
+ 7.03170548e+11, 3.45077232e+11,
+ -2.96119462e+10, -2.66709077e+10,
+ 9.20384196e+11, 4.11776807e+11,
+ 4.71950241e+11, 3.08031050e+11,
+ -1.68844719e+12, -8.05938575e+11,
+ -3.77445853e+11, -2.32275605e+11,
+ 3.46233237e+11, 7.84996129e+11,
+ -2.59165131e+10, -5.44779112e+10,
+ 4.11776807e+11, 9.45887355e+11,
+ 3.13343794e+11, 3.21137311e+11,
+ -8.11251320e+11, -1.83366211e+12,
+ -2.34186006e+11, -1.63880774e+11,
+ 9.30815156e+11, 3.77747140e+11,
+ -4.24956826e+11, -1.27273335e+11,
+ 4.71950241e+11, 3.13343794e+11,
+ 2.66933376e+12, 8.66541719e+11,
+ -1.81944099e+12, -9.28979272e+11,
+ -1.82770134e+12, -5.01380046e+11,
+ 3.73904122e+11, 6.31931179e+11,
+ -1.36798725e+11, -2.04209092e+11,
+ 3.08031050e+11, 3.21137311e+11,
+ 8.66541719e+11, 2.75153025e+12,
+ -9.20742130e+11, -1.64708940e+12,
+ -4.90936036e+11, -1.85330024e+12,
+ -1.97360381e+12, -9.44649933e+11,
+ 1.42337474e+11, 6.53971169e+10,
+ -1.68844719e+12, -8.11251320e+11,
+ -1.81944099e+12, -9.20742130e+11,
+ 4.26074832e+12, 2.04726998e+12,
+ 1.07840620e+12, 5.63976291e+11,
+ -9.41768992e+11, -2.68111294e+12,
+ 6.73297341e+10, 2.26338676e+11,
+ -8.05938575e+11, -1.83366211e+12,
+ -9.28979272e+11, -1.64708940e+12,
+ 2.04726998e+12, 5.76761534e+12,
+ 5.62087130e+11, 1.67910439e+11,
+ -8.62679703e+11, -3.60380746e+11,
+ -2.80025954e+11, -1.99434806e+11,
+ -3.77445853e+11, -2.34186006e+11,
+ -1.82770134e+12, -4.90936036e+11,
+ 1.07840620e+12, 5.62087130e+11,
+ 2.26944665e+12, 7.22850462e+11,
+ -3.63261686e+11, -5.40569680e+11,
+ -1.89909415e+11, -6.20710212e+11,
+ -2.32275605e+11, -1.63880774e+11,
+ -5.01380046e+11, -1.85330024e+12,
+ 5.63976291e+11, 1.67910439e+11,
+ 7.22850462e+11, 3.01055047e+12,
+};
+
+pylith::feassemble::ElasticityImplicitLgDeformGravData2DQuadratic::ElasticityImplicitLgDeformGravData2DQuadratic(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::ElasticityImplicitLgDeformGravData2DQuadratic::~ElasticityImplicitLgDeformGravData2DQuadratic(void)
+{}
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData2DQuadratic.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData2DQuadratic.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData2DQuadratic.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData2DQuadratic.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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_elasticityimplicitlgdeformgravdata2dquadratic_hh)
+#define pylith_feassemble_elasticityimplicitlgdeformgravdata2dquadratic_hh
+
+#include "IntegratorData.hh"
+
+namespace pylith {
+ namespace feassemble {
+ class ElasticityImplicitLgDeformGravData2DQuadratic;
+ } // pylith
+} // feassemble
+
+class pylith::feassemble::ElasticityImplicitLgDeformGravData2DQuadratic : public IntegratorData
+{
+
+public:
+
+ /// Constructor
+ ElasticityImplicitLgDeformGravData2DQuadratic(void);
+
+ /// Destructor
+ ~ElasticityImplicitLgDeformGravData2DQuadratic(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_elasticityimplicitlgdeformgravdata2dquadratic_hh
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData3DLinear.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData3DLinear.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData3DLinear.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData3DLinear.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,192 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+// DO NOT EDIT THIS FILE
+// This file was generated from python application integratorelasticitylgdeform.
+
+#include "ElasticityImplicitLgDeformGravData3DLinear.hh"
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_spaceDim = 3;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_cellDim = 3;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_numVertices = 4;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_numCells = 1;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_numBasis = 4;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_numQuadPts = 1;
+
+const char* pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_matType = "ElasticIsotropic3D";
+
+const char* pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_matDBFilename = "data/elasticisotropic3d.spatialdb";
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_matId = 0;
+
+const char* pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_matLabel = "elastic isotropic 3-D";
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_dt = 1.00000000e-02;
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_gravityVec[] = {
+ 0.00000000e+00, 0.00000000e+00, -1.00000000e+08,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_vertices[] = {
+ -5.00000000e-01, -1.00000000e+00, -5.00000000e-01,
+ 2.00000000e+00, -5.00000000e-01, -4.00000000e-01,
+ 1.00000000e+00, -1.00000000e-01, -3.00000000e-01,
+ -2.00000000e-01, 5.00000000e-01, 2.00000000e+00,
+};
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_cells[] = {
+0,1,2,3,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_verticesRef[] = {
+ -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
+ 1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
+ -1.00000000e+00, 1.00000000e+00, -1.00000000e+00,
+ -1.00000000e+00, -1.00000000e+00, 1.00000000e+00,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_quadPts[] = {
+ -5.00000000e-01, -5.00000000e-01, -5.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_quadWts[] = {
+ 1.33333333e+00,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_basis[] = {
+ 2.50000000e-01, 2.50000000e-01, 2.50000000e-01,
+ 2.50000000e-01,};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_basisDerivRef[] = {
+ -5.00000000e-01, -5.00000000e-01, -5.00000000e-01,
+ 5.00000000e-01, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 5.00000000e-01, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 5.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_fieldTIncr[] = {
+ 3.00000000e-01, 2.00000000e-01, -5.00000000e-01,
+ -3.00000000e-01, -4.00000000e-01, -6.00000000e-01,
+ 2.00000000e-01, 6.00000000e-01, 3.00000000e-01,
+ -6.00000000e-01, -1.00000000e-01, -3.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_fieldT[] = {
+ 8.00000000e-01, 1.00000000e-01, -6.00000000e-01,
+ -1.00000000e-01, -2.00000000e-01, -5.00000000e-01,
+ 1.00000000e-01, 7.00000000e-01, 2.00000000e-01,
+ -5.00000000e-01, -0.00000000e+00, -2.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_fieldTmdt[] = {
+ 1.00000000e-01, 1.00000000e-01, -3.00000000e-01,
+ -2.00000000e-01, -1.00000000e-01, -5.00000000e-01,
+ 2.00000000e-01, 4.00000000e-01, 1.00000000e-01,
+ -4.00000000e-01, -1.00000000e-01, -1.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_valsResidual[] = {
+ 2.79474210e+11, 1.80174876e+12, 1.23194350e+12,
+ 6.44632598e+11, 4.29759382e+12, 2.85238668e+12,
+ -1.13174893e+12, -6.94850554e+12, -4.68862818e+12,
+ 2.07642124e+11, 8.49162957e+11, 4.69797995e+11,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::_valsJacobian[] = {
+ 2.94874367e+11, 6.16951570e+10, 3.89461610e+10,
+ 5.48150595e+11, 1.11804684e+11, 7.10898629e+10,
+ -9.45152856e+11, -2.08621385e+11, -1.32482083e+11,
+ 1.02127894e+11, 3.51215443e+10, 2.24460592e+10,
+ 6.16951570e+10, 6.57018660e+11, 2.71425583e+11,
+ 1.11804684e+11, 1.23922444e+12, 4.97844328e+11,
+ -2.08621385e+11, -2.12462667e+12, -8.51891691e+11,
+ 3.51215443e+10, 2.28383572e+11, 8.26217801e+10,
+ 3.89461610e+10, 2.71425583e+11, 4.77828353e+11,
+ 7.10898629e+10, 4.97844328e+11, 8.73012939e+11,
+ -1.32482083e+11, -8.51891691e+11, -1.49263907e+12,
+ 2.24460592e+10, 8.26217801e+10, 1.41797778e+11,
+ 5.48150595e+11, 1.11804684e+11, 7.10898629e+10,
+ 1.41837229e+12, 2.89096417e+11, 1.70605497e+11,
+ -2.25396787e+12, -4.94966564e+11, -2.95400181e+11,
+ 2.87444987e+11, 9.40654624e+10, 5.37048209e+10,
+ 1.11804684e+11, 1.23922444e+12, 4.97844328e+11,
+ 2.89096417e+11, 3.27225597e+12, 1.26969767e+12,
+ -4.94966564e+11, -5.16973245e+12, -1.99940566e+12,
+ 9.40654624e+10, 6.58252043e+11, 2.31863658e+11,
+ 7.10898629e+10, 4.97844328e+11, 8.73012939e+11,
+ 1.70605497e+11, 1.26969767e+12, 2.20481950e+12,
+ -2.95400181e+11, -1.99940566e+12, -3.47904176e+12,
+ 5.37048209e+10, 2.31863658e+11, 4.01209317e+11,
+ -9.45152856e+11, -2.08621385e+11, -1.32482083e+11,
+ -2.25396787e+12, -4.94966564e+11, -2.95400181e+11,
+ 3.68810232e+12, 8.67069202e+11, 5.19506826e+11,
+ -4.88981593e+11, -1.63481253e+11, -9.16245619e+10,
+ -2.08621385e+11, -2.12462667e+12, -8.51891691e+11,
+ -4.94966564e+11, -5.16973245e+12, -1.99940566e+12,
+ 8.67069202e+11, 8.39475093e+12, 3.23896409e+12,
+ -1.63481253e+11, -1.10039182e+12, -3.87666745e+11,
+ -1.32482083e+11, -8.51891691e+11, -1.49263907e+12,
+ -2.95400181e+11, -1.99940566e+12, -3.47904176e+12,
+ 5.19506826e+11, 3.23896409e+12, 5.64558477e+12,
+ -9.16245619e+10, -3.87666745e+11, -6.73903937e+11,
+ 1.02127894e+11, 3.51215443e+10, 2.24460592e+10,
+ 2.87444987e+11, 9.40654624e+10, 5.37048209e+10,
+ -4.88981593e+11, -1.63481253e+11, -9.16245619e+10,
+ 9.94087115e+10, 3.42942460e+10, 1.54736818e+10,
+ 3.51215443e+10, 2.28383572e+11, 8.26217801e+10,
+ 9.40654624e+10, 6.58252043e+11, 2.31863658e+11,
+ -1.63481253e+11, -1.10039182e+12, -3.87666745e+11,
+ 3.42942460e+10, 2.13756204e+11, 7.31813067e+10,
+ 2.24460592e+10, 8.26217801e+10, 1.41797778e+11,
+ 5.37048209e+10, 2.31863658e+11, 4.01209317e+11,
+ -9.16245619e+10, -3.87666745e+11, -6.73903937e+11,
+ 1.54736818e+10, 7.31813067e+10, 1.30896842e+11,
+};
+
+pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear::ElasticityImplicitLgDeformGravData3DLinear(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::ElasticityImplicitLgDeformGravData3DLinear::~ElasticityImplicitLgDeformGravData3DLinear(void)
+{}
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData3DLinear.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData3DLinear.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData3DLinear.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData3DLinear.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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_elasticityimplicitlgdeformgravdata3dlinear_hh)
+#define pylith_feassemble_elasticityimplicitlgdeformgravdata3dlinear_hh
+
+#include "IntegratorData.hh"
+
+namespace pylith {
+ namespace feassemble {
+ class ElasticityImplicitLgDeformGravData3DLinear;
+ } // pylith
+} // feassemble
+
+class pylith::feassemble::ElasticityImplicitLgDeformGravData3DLinear : public IntegratorData
+{
+
+public:
+
+ /// Constructor
+ ElasticityImplicitLgDeformGravData3DLinear(void);
+
+ /// Destructor
+ ~ElasticityImplicitLgDeformGravData3DLinear(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_elasticityimplicitlgdeformgravdata3dlinear_hh
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData3DQuadratic.cc (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData3DQuadratic.cc)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData3DQuadratic.cc (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData3DQuadratic.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,531 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+// DO NOT EDIT THIS FILE
+// This file was generated from python application integratorelasticitylgdeform.
+
+#include "ElasticityImplicitLgDeformGravData3DQuadratic.hh"
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_spaceDim = 3;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_cellDim = 3;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_numVertices = 10;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_numCells = 1;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_numBasis = 10;
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_numQuadPts = 4;
+
+const char* pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_matType = "ElasticIsotropic3D";
+
+const char* pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_matDBFilename = "data/elasticisotropic3d.spatialdb";
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_matId = 0;
+
+const char* pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_matLabel = "elastic isotropic 3-D";
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_dt = 1.00000000e-02;
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_gravityVec[] = {
+ 0.00000000e+00, 0.00000000e+00, -1.00000000e+08,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_vertices[] = {
+ -5.00000000e-01, -2.00000000e+00, -1.00000000e+00,
+ 2.00000000e+00, -2.00000000e+00, -5.00000000e-01,
+ 1.00000000e+00, 1.00000000e+00, 0.00000000e+00,
+ 2.00000000e-01, 5.00000000e-01, 2.00000000e+00,
+ 1.50000000e+00, -5.00000000e-01, -2.50000000e-01,
+ 2.50000000e-01, -5.00000000e-01, -5.00000000e-01,
+ 7.50000000e-01, -2.00000000e+00, -7.50000000e-01,
+ -1.50000000e-01, -7.50000000e-01, 5.00000000e-01,
+ 1.10000000e+00, -7.50000000e-01, 7.50000000e-01,
+ 6.00000000e-01, 7.50000000e-01, 1.00000000e+00,
+};
+
+const int pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_cells[] = {
+0,1,2,3,4,5,6,7,8,9,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_verticesRef[] = {
+ -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
+ 1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
+ -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,
+ -1.00000000e+00, 0.00000000e+00, -1.00000000e+00,
+ 0.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,
+ -1.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_quadPts[] = {
+ -8.00000000e-01, -8.00000000e-01, -8.00000000e-01,
+ 5.00000000e-01, -8.00000000e-01, -8.00000000e-01,
+ -8.00000000e-01, 5.00000000e-01, -8.00000000e-01,
+ -8.00000000e-01, -8.00000000e-01, 5.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_quadWts[] = {
+ 3.33333333e-01, 3.33333333e-01, 3.33333333e-01, 3.33333333e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_basis[] = {
+ 2.80000000e-01, -8.00000000e-02, -8.00000000e-02,
+ -8.00000000e-02, 4.00000000e-02, 2.80000000e-01,
+ 2.80000000e-01, 2.80000000e-01, 4.00000000e-02,
+ 4.00000000e-02, -4.50000000e-02, 3.75000000e-01,
+ -8.00000000e-02, -8.00000000e-02, 3.00000000e-01,
+ 2.00000000e-02, 1.50000000e-01, 2.00000000e-02,
+ 3.00000000e-01, 4.00000000e-02, -4.50000000e-02,
+ -8.00000000e-02, 3.75000000e-01, -8.00000000e-02,
+ 3.00000000e-01, 1.50000000e-01, 2.00000000e-02,
+ 2.00000000e-02, 4.00000000e-02, 3.00000000e-01,
+ -4.50000000e-02, -8.00000000e-02, -8.00000000e-02,
+ 3.75000000e-01, 4.00000000e-02, 2.00000000e-02,
+ 2.00000000e-02, 1.50000000e-01, 3.00000000e-01,
+ 3.00000000e-01,};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_basisDerivRef[] = {
+ -9.00000000e-01, -9.00000000e-01, -9.00000000e-01,
+ -3.00000000e-01, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -3.00000000e-01, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, -3.00000000e-01,
+ 2.00000000e-01, 2.00000000e-01, 0.00000000e+00,
+ -2.00000000e-01, 1.20000000e+00, -2.00000000e-01,
+ 1.20000000e+00, -2.00000000e-01, -2.00000000e-01,
+ -2.00000000e-01, -2.00000000e-01, 1.20000000e+00,
+ 2.00000000e-01, 0.00000000e+00, 2.00000000e-01,
+ 0.00000000e+00, 2.00000000e-01, 2.00000000e-01,
+ 4.00000000e-01, 4.00000000e-01, 4.00000000e-01,
+ 1.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -3.00000000e-01, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, -3.00000000e-01,
+ 2.00000000e-01, 1.50000000e+00, 0.00000000e+00,
+ -2.00000000e-01, -1.00000000e-01, -2.00000000e-01,
+ -1.40000000e+00, -1.50000000e+00, -1.50000000e+00,
+ -2.00000000e-01, -2.00000000e-01, -1.00000000e-01,
+ 2.00000000e-01, 0.00000000e+00, 1.50000000e+00,
+ 0.00000000e+00, 2.00000000e-01, 2.00000000e-01,
+ 4.00000000e-01, 4.00000000e-01, 4.00000000e-01,
+ -3.00000000e-01, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, -3.00000000e-01,
+ 1.50000000e+00, 2.00000000e-01, 0.00000000e+00,
+ -1.50000000e+00, -1.40000000e+00, -1.50000000e+00,
+ -1.00000000e-01, -2.00000000e-01, -2.00000000e-01,
+ -2.00000000e-01, -2.00000000e-01, -1.00000000e-01,
+ 2.00000000e-01, 0.00000000e+00, 2.00000000e-01,
+ 0.00000000e+00, 2.00000000e-01, 1.50000000e+00,
+ 4.00000000e-01, 4.00000000e-01, 4.00000000e-01,
+ -3.00000000e-01, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -3.00000000e-01, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 1.00000000e+00,
+ 2.00000000e-01, 2.00000000e-01, 0.00000000e+00,
+ -2.00000000e-01, -1.00000000e-01, -2.00000000e-01,
+ -1.00000000e-01, -2.00000000e-01, -2.00000000e-01,
+ -1.50000000e+00, -1.50000000e+00, -1.40000000e+00,
+ 1.50000000e+00, 0.00000000e+00, 2.00000000e-01,
+ 0.00000000e+00, 1.50000000e+00, 2.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_fieldTIncr[] = {
+ 3.00000000e-01, -4.00000000e-01, -4.00000000e-01,
+ -6.00000000e-01, 8.00000000e-01, 2.00000000e-01,
+ 5.00000000e-01, 5.00000000e-01, 7.00000000e-01,
+ -7.00000000e-01, -5.00000000e-01, -7.00000000e-01,
+ -6.00000000e-01, -3.00000000e-01, 8.00000000e-01,
+ -4.00000000e-01, -8.00000000e-01, -5.00000000e-01,
+ 7.00000000e-01, 8.00000000e-01, -5.00000000e-01,
+ -5.00000000e-01, -5.00000000e-01, -7.00000000e-01,
+ -3.00000000e-01, -9.00000000e-01, 8.00000000e-01,
+ -1.00000000e-01, 5.00000000e-01, -9.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_fieldT[] = {
+ 1.00000000e-01, -2.00000000e-01, -6.00000000e-01,
+ -3.00000000e-01, 4.00000000e-01, 9.00000000e-01,
+ 6.00000000e-01, 8.00000000e-01, 5.00000000e-01,
+ -8.00000000e-01, -6.00000000e-01, -8.00000000e-01,
+ -0.00000000e+00, -2.00000000e-01, 6.00000000e-01,
+ -4.00000000e-01, -7.00000000e-01, -2.00000000e-01,
+ 7.00000000e-01, 6.00000000e-01, -1.00000000e-01,
+ -4.00000000e-01, -3.00000000e-01, -3.00000000e-01,
+ -7.00000000e-01, -6.00000000e-01, 1.00000000e-01,
+ -9.00000000e-01, 3.00000000e-01, -8.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_fieldTmdt[] = {
+ 2.00000000e-01, -3.00000000e-01, -1.00000000e-01,
+ -4.00000000e-01, 2.00000000e-01, 3.00000000e-01,
+ -5.00000000e-01, 2.00000000e-01, 2.00000000e-01,
+ -3.00000000e-01, -8.00000000e-01, -3.00000000e-01,
+ -5.00000000e-01, -9.00000000e-01, 4.00000000e-01,
+ -3.00000000e-01, -6.00000000e-01, -8.00000000e-01,
+ 9.00000000e-01, 5.00000000e-01, -2.00000000e-01,
+ -7.00000000e-01, -2.00000000e-01, -9.00000000e-01,
+ -5.00000000e-01, -8.00000000e-01, 4.00000000e-01,
+ -4.00000000e-01, 5.00000000e-01, -7.00000000e-01,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_valsResidual[] = {
+ 2.83531193e+11, 6.85360097e+11, -7.60839301e+11,
+ 8.17609945e+11, -2.46059924e+11, 5.52982643e+11,
+ -1.61369461e+12, -3.33728123e+11, -2.00813431e+12,
+ -3.86612970e+11, 1.55209617e+12, -1.59708576e+12,
+ -8.25945978e+11, -2.06081757e+11, -9.32629697e+11,
+ 2.39916408e+12, 1.36233180e+12, 2.35919362e+12,
+ -1.83049591e+12, -1.27565741e+12, 2.69052281e+11,
+ 2.60556997e+11, -1.53217232e+12, 1.31884398e+12,
+ -8.95741060e+11, 3.53530714e+12, -4.30653354e+12,
+ 1.79162831e+12, -3.54139567e+12, 4.39369174e+12,
+};
+
+const double pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::_valsJacobian[] = {
+ 4.65661925e+11, 1.45207670e+11, 8.48382894e+10,
+ 1.24772472e+11, 7.41894782e+10, -4.42698676e+10,
+ 7.18213188e+10, 5.09242305e+09, 4.05530373e+10,
+ 9.25950209e+10, 3.01383081e+09, 4.41940539e+10,
+ 1.40659877e+11, 7.81646933e+09, 8.55770103e+10,
+ 7.55814313e+10, 1.00158408e+11, -5.39884553e+09,
+ -7.04119227e+11, -2.55717104e+11, -3.23748072e+10,
+ -3.27406977e+11, -3.58266405e+10, -1.14846242e+11,
+ 1.90099476e+11, -7.46675761e+10, 1.18407263e+10,
+ -1.29665315e+11, 3.07330418e+10, -7.01133548e+10,
+ 1.45207670e+11, 4.17879082e+11, 2.69285551e+10,
+ 7.41894782e+10, 7.12501045e+10, 1.69326571e+10,
+ 5.09242305e+09, 7.79843128e+10, 1.24078373e+09,
+ 3.01383081e+09, 1.26067202e+11, -2.62782048e+10,
+ 7.81646933e+09, 1.18102474e+11, 2.96832254e+10,
+ 1.00158408e+11, 2.69890946e+10, 6.52474095e+10,
+ -2.55717104e+11, -5.58070068e+11, -2.09279922e+10,
+ -3.58266405e+10, -4.64117178e+11, 6.84864638e+10,
+ -7.46675761e+10, 3.28253126e+11, -2.44433188e+11,
+ 3.07330418e+10, -1.44338150e+11, 8.31202909e+10,
+ 8.48382894e+10, 2.69285551e+10, 4.15301734e+11,
+ -4.42698676e+10, 1.69326571e+10, 7.33047953e+10,
+ 4.05530373e+10, 1.24078373e+09, 1.27489728e+11,
+ 4.41940539e+10, -2.62782048e+10, 1.51395370e+11,
+ 8.55770103e+10, 2.96832254e+10, 2.11321369e+11,
+ -5.39884553e+09, 6.52474095e+10, -1.46463462e+11,
+ -3.23748072e+10, -2.09279922e+10, -5.59853491e+11,
+ -1.14846242e+11, 6.84864638e+10, -5.09095160e+11,
+ 1.18407263e+10, -2.44433188e+11, 4.97279724e+11,
+ -7.01133548e+10, 8.31202909e+10, -2.60680607e+11,
+ 1.24772472e+11, 7.41894782e+10, -4.42698676e+10,
+ 3.18994605e+11, 6.08636475e+10, -5.28381253e+10,
+ -5.95541375e+10, 1.26084960e+10, -4.24114682e+10,
+ -8.37120894e+10, 2.17101919e+10, -9.24436085e+08,
+ -2.46254169e+11, -4.29845346e+10, -4.41618213e+10,
+ 3.69282312e+11, 1.07296224e+11, 1.48157570e+11,
+ -5.47553983e+11, -1.78849586e+11, 9.36194643e+10,
+ 7.95730371e+10, -7.67652780e+10, 4.79024142e+10,
+ -2.15276680e+11, 8.00666055e+10, -1.77270676e+11,
+ 2.59728633e+11, -5.81352446e+10, 7.21969464e+10,
+ 7.41894782e+10, 7.12501045e+10, 1.69326571e+10,
+ 6.08636475e+10, 3.25267756e+11, -1.22309091e+11,
+ 1.26084960e+10, -5.31861531e+10, 1.29709419e+10,
+ 2.17101919e+10, -1.52532444e+11, 1.00603438e+11,
+ -4.29845346e+10, -2.62321656e+11, 6.79528717e+10,
+ 1.07296224e+11, 3.27288566e+11, 5.30178659e+10,
+ -1.78849586e+11, -4.32757567e+11, 7.65998486e+10,
+ -7.67652780e+10, 1.29553761e+11, -1.26591592e+11,
+ 8.00666055e+10, -3.89057716e+11, 1.34140735e+11,
+ -5.81352446e+10, 4.36495348e+11, -2.13317675e+11,
+ -4.42698676e+10, 1.69326571e+10, 7.33047953e+10,
+ -5.28381253e+10, -1.22309091e+11, 4.88759132e+11,
+ -4.24114682e+10, 1.29709419e+10, -6.74464625e+10,
+ -9.24436085e+08, 1.00603438e+11, -1.98419387e+11,
+ -4.41618213e+10, 6.79528717e+10, -3.98133382e+11,
+ 1.48157570e+11, 5.30178659e+10, 3.01368983e+11,
+ 9.36194643e+10, 7.65998486e+10, -5.77601119e+11,
+ 4.79024142e+10, -1.26591592e+11, 1.94445962e+11,
+ -1.77270676e+11, 1.34140735e+11, -2.74232321e+11,
+ 7.21969464e+10, -2.13317675e+11, 4.57953800e+11,
+ 7.18213188e+10, 5.09242305e+09, 4.05530373e+10,
+ -5.95541375e+10, 1.26084960e+10, -4.24114682e+10,
+ 1.10135125e+12, 3.25720553e+11, 3.62390508e+11,
+ 2.94017649e+11, 1.23894657e+10, 8.94735240e+10,
+ 1.34408493e+10, -4.81163047e+10, 1.60257602e+11,
+ -6.81749121e+11, -2.46273575e+11, -2.38131042e+11,
+ 1.52813392e+11, 6.38089974e+10, 2.92728877e+10,
+ -1.19071391e+10, 6.22561142e+10, -3.62572653e+10,
+ 2.38104621e+11, -5.73710641e+10, -4.42540169e+09,
+ -1.11833868e+12, -1.30115106e+11, -3.60722383e+11,
+ 5.09242305e+09, 7.79843128e+10, 1.24078373e+09,
+ 1.26084960e+10, -5.31861531e+10, 1.29709419e+10,
+ 3.25720553e+11, 1.09654928e+12, 1.25558927e+11,
+ 1.23894657e+10, 4.02203557e+11, -1.25992638e+11,
+ -4.81163047e+10, -2.03145182e+11, 1.24652000e+11,
+ -2.46273575e+11, -6.32348620e+11, -1.80580051e+11,
+ 6.38089974e+10, 9.79869768e+10, 3.14800157e+10,
+ 6.22561142e+10, -2.38293966e+10, 8.52080054e+10,
+ -5.73710641e+10, 4.92506284e+11, -2.94720961e+11,
+ -1.30115106e+11, -1.25472106e+12, 2.20182976e+11,
+ 4.05530373e+10, 1.24078373e+09, 1.27489728e+11,
+ -4.24114682e+10, 1.29709419e+10, -6.74464625e+10,
+ 3.62390508e+11, 1.25558927e+11, 1.03669910e+12,
+ 8.94735240e+10, -1.25992638e+11, 4.11450418e+11,
+ 1.60257602e+11, 1.24652000e+11, -3.17810955e+09,
+ -2.38131042e+11, -1.80580051e+11, -6.28819588e+11,
+ 2.92728877e+10, 3.14800157e+10, 3.14543861e+10,
+ -3.62572653e+10, 8.52080054e+10, -1.29228969e+11,
+ -4.42540169e+09, -2.94720961e+11, 5.35392012e+11,
+ -3.60722383e+11, 2.20182976e+11, -1.31381251e+12,
+ 9.25950209e+10, 3.01383081e+09, 4.41940539e+10,
+ -8.37120894e+10, 2.17101919e+10, -9.24436085e+08,
+ 2.94017649e+11, 1.23894657e+10, 8.94735240e+10,
+ 4.97528833e+11, -1.14626728e+10, 6.59882894e+10,
+ 6.65491224e+10, 8.47757035e+09, 1.31257632e+10,
+ 7.66331934e+10, 8.55959553e+10, -3.73685357e+07,
+ -3.56709943e+10, -2.76429617e+10, -6.19572817e+10,
+ -3.22925718e+11, -5.74029189e+09, -8.83327493e+10,
+ 3.17445492e+11, -1.22169413e+11, 1.00263616e+11,
+ -9.02460510e+11, 3.58283248e+10, -1.61793411e+11,
+ 3.01383081e+09, 1.26067202e+11, -2.62782048e+10,
+ 2.17101919e+10, -1.52532444e+11, 1.00603438e+11,
+ 1.23894657e+10, 4.02203557e+11, -1.25992638e+11,
+ -1.14626728e+10, 8.65931363e+11, -3.82661325e+11,
+ 8.47757035e+09, -1.28217470e+10, 1.35369129e+10,
+ 8.55959553e+10, 3.26503144e+10, 1.22944799e+11,
+ -2.76429617e+10, -3.20097931e+10, -5.88793091e+10,
+ -5.74029189e+09, -4.10305623e+11, 1.11266648e+11,
+ -1.22169413e+11, 7.48622075e+11, -4.24857358e+11,
+ 3.58283248e+10, -1.56780490e+12, 6.70317037e+11,
+ 4.41940539e+10, -2.62782048e+10, 1.51395370e+11,
+ -9.24436085e+08, 1.00603438e+11, -1.98419387e+11,
+ 8.94735240e+10, -1.25992638e+11, 4.11450418e+11,
+ 6.59882894e+10, -3.82661325e+11, 8.70711287e+11,
+ 1.31257632e+10, 1.35369129e+10, 9.07016473e+10,
+ -3.73685357e+07, 1.22944799e+11, -5.25010034e+10,
+ -6.19572817e+10, -5.88793091e+10, 1.08121328e+10,
+ -8.83327493e+10, 1.11266648e+11, -5.16970075e+11,
+ 1.00263616e+11, -4.24857358e+11, 7.55013813e+11,
+ -1.61793411e+11, 6.70317037e+11, -1.52219420e+12,
+ 1.40659877e+11, 7.81646933e+09, 8.55770103e+10,
+ -2.46254169e+11, -4.29845346e+10, -4.41618213e+10,
+ 1.34408493e+10, -4.81163047e+10, 1.60257602e+11,
+ 6.65491224e+10, 8.47757035e+09, 1.31257632e+10,
+ 1.16270901e+12, 1.84156516e+11, 1.94618725e+11,
+ -5.72995180e+11, -7.97684286e+10, -3.20409939e+11,
+ 2.64947735e+10, 1.68329992e+10, -9.87964535e+09,
+ -2.49889410e+11, -3.10663177e+10, -7.33658238e+10,
+ -1.71088244e+11, -6.30056465e+10, 1.74314405e+11,
+ -1.69626626e+11, 4.76576773e+10, -1.80076276e+11,
+ 7.81646933e+09, 1.18102474e+11, 2.96832254e+10,
+ -4.29845346e+10, -2.62321656e+11, 6.79528717e+10,
+ -4.81163047e+10, -2.03145182e+11, 1.24652000e+11,
+ 8.47757035e+09, -1.28217470e+10, 1.35369129e+10,
+ 1.84156516e+11, 1.16609381e+12, -2.28629589e+11,
+ -7.97684286e+10, -4.65673799e+11, -9.51163063e+10,
+ 1.68329992e+10, 7.30677747e+10, -6.02206307e+10,
+ -3.10663177e+10, -2.30487506e+11, 7.81937180e+09,
+ -6.30056465e+10, -2.28430845e+11, 1.98763507e+11,
+ 4.76576773e+10, 4.56166756e+10, -5.84413625e+10,
+ 8.55770103e+10, 2.96832254e+10, 2.11321369e+11,
+ -4.41618213e+10, 6.79528717e+10, -3.98133382e+11,
+ 1.60257602e+11, 1.24652000e+11, -3.17810955e+09,
+ 1.31257632e+10, 1.35369129e+10, 9.07016473e+10,
+ 1.94618725e+11, -2.28629589e+11, 1.70825144e+12,
+ -3.20409939e+11, -9.51163063e+10, -7.97801243e+11,
+ -9.87964535e+09, -6.02206307e+10, 7.70360435e+10,
+ -7.33658238e+10, 7.81937180e+09, -2.93644299e+11,
+ 1.74314405e+11, 1.98763507e+11, -4.10328847e+11,
+ -1.80076276e+11, -5.84413625e+10, -1.84224621e+11,
+ 7.55814313e+10, 1.00158408e+11, -5.39884553e+09,
+ 3.69282312e+11, 1.07296224e+11, 1.48157570e+11,
+ -6.81749121e+11, -2.46273575e+11, -2.38131042e+11,
+ 7.66331934e+10, 8.55959553e+10, -3.73685357e+07,
+ -5.72995180e+11, -7.97684286e+10, -3.20409939e+11,
+ 2.45592464e+12, 8.72069906e+11, 7.29084849e+11,
+ -9.75215619e+11, -4.34128069e+11, -2.56910788e+11,
+ -5.51910015e+11, -3.31945132e+11, -1.04698326e+11,
+ -5.96253782e+11, -1.03426849e+11, -1.13624994e+11,
+ 4.00702141e+11, 3.04215606e+10, 1.61968884e+11,
+ 1.00158408e+11, 2.69890946e+10, 6.52474095e+10,
+ 1.07296224e+11, 3.27288566e+11, 5.30178659e+10,
+ -2.46273575e+11, -6.32348620e+11, -1.80580051e+11,
+ 8.55959553e+10, 3.26503144e+10, 1.22944799e+11,
+ -7.97684286e+10, -4.65673799e+11, -9.51163063e+10,
+ 8.72069906e+11, 2.27130607e+12, 5.76476353e+11,
+ -4.34128069e+11, -7.36984695e+11, -2.23203143e+11,
+ -3.31945132e+11, -4.91827419e+11, -3.22783678e+11,
+ -1.03426849e+11, -7.11586437e+11, 1.31379586e+11,
+ 3.04215606e+10, 3.80186919e+11, -1.27382836e+11,
+ -5.39884553e+09, 6.52474095e+10, -1.46463462e+11,
+ 1.48157570e+11, 5.30178659e+10, 3.01368983e+11,
+ -2.38131042e+11, -1.80580051e+11, -6.28819588e+11,
+ -3.73685357e+07, 1.22944799e+11, -5.25010034e+10,
+ -3.20409939e+11, -9.51163063e+10, -7.97801243e+11,
+ 7.29084849e+11, 5.76476353e+11, 2.14357815e+12,
+ -2.56910788e+11, -2.23203143e+11, -4.02976629e+11,
+ -1.04698326e+11, -3.22783678e+11, -2.22817271e+11,
+ -1.13624994e+11, 1.31379586e+11, -7.44361231e+11,
+ 1.61968884e+11, -1.27382836e+11, 5.50793300e+11,
+ -7.04119227e+11, -2.55717104e+11, -3.23748072e+10,
+ -5.47553983e+11, -1.78849586e+11, 9.36194643e+10,
+ 1.52813392e+11, 6.38089974e+10, 2.92728877e+10,
+ -3.56709943e+10, -2.76429617e+10, -6.19572817e+10,
+ 2.64947735e+10, 1.68329992e+10, -9.87964535e+09,
+ -9.75215619e+11, -4.34128069e+11, -2.56910788e+11,
+ 1.89896017e+12, 6.56740815e+11, -8.16178375e+10,
+ 3.38393444e+11, 1.64966431e+11, 1.12967809e+11,
+ -3.12949675e+10, 2.44157356e+10, 1.92718403e+11,
+ -1.22806992e+11, -3.04272562e+10, 1.41617951e+10,
+ -2.55717104e+11, -5.58070068e+11, -2.09279922e+10,
+ -1.78849586e+11, -4.32757567e+11, 7.65998486e+10,
+ 6.38089974e+10, 9.79869768e+10, 3.14800157e+10,
+ -2.76429617e+10, -3.20097931e+10, -5.88793091e+10,
+ 1.68329992e+10, 7.30677747e+10, -6.02206307e+10,
+ -4.34128069e+11, -7.36984695e+11, -2.23203143e+11,
+ 6.56740815e+11, 1.40195492e+12, -6.50991546e+10,
+ 1.64966431e+11, 4.34421272e+11, 6.47670884e+10,
+ 2.44157356e+10, -1.07992730e+11, 2.24564280e+11,
+ -3.04272562e+10, -1.39616091e+11, 3.09189976e+10,
+ -3.23748072e+10, -2.09279922e+10, -5.59853491e+11,
+ 9.36194643e+10, 7.65998486e+10, -5.77601119e+11,
+ 2.92728877e+10, 3.14800157e+10, 3.14543861e+10,
+ -6.19572817e+10, -5.88793091e+10, 1.08121328e+10,
+ -9.87964535e+09, -6.02206307e+10, 7.70360435e+10,
+ -2.56910788e+11, -2.23203143e+11, -4.02976629e+11,
+ -8.16178375e+10, -6.50991546e+10, 1.51957659e+12,
+ 1.12967809e+11, 6.47670884e+10, 3.90219017e+11,
+ 1.92718403e+11, 2.24564280e+11, -4.04297886e+11,
+ 1.41617951e+10, 3.09189976e+10, -8.43690419e+10,
+ -3.27406977e+11, -3.58266405e+10, -1.14846242e+11,
+ 7.95730371e+10, -7.67652780e+10, 4.79024142e+10,
+ -1.19071391e+10, 6.22561142e+10, -3.62572653e+10,
+ -3.22925718e+11, -5.74029189e+09, -8.83327493e+10,
+ -2.49889410e+11, -3.10663177e+10, -7.33658238e+10,
+ -5.51910015e+11, -3.31945132e+11, -1.04698326e+11,
+ 3.38393444e+11, 1.64966431e+11, 1.12967809e+11,
+ 1.31141204e+12, 1.23926458e+11, 3.32914096e+11,
+ -6.26226600e+11, 2.47475905e+11, -2.25050603e+11,
+ 3.60887342e+11, -1.17281247e+11, 1.48766690e+11,
+ -3.58266405e+10, -4.64117178e+11, 6.84864638e+10,
+ -7.67652780e+10, 1.29553761e+11, -1.26591592e+11,
+ 6.22561142e+10, -2.38293966e+10, 8.52080054e+10,
+ -5.74029189e+09, -4.10305623e+11, 1.11266648e+11,
+ -3.10663177e+10, -2.30487506e+11, 7.81937180e+09,
+ -3.31945132e+11, -4.91827419e+11, -3.22783678e+11,
+ 1.64966431e+11, 4.34421272e+11, 6.47670884e+10,
+ 1.23926458e+11, 1.60701662e+12, -2.64550313e+11,
+ 2.47475905e+11, -9.92458260e+11, 6.53136619e+11,
+ -1.17281247e+11, 4.42033730e+11, -2.76758613e+11,
+ -1.14846242e+11, 6.84864638e+10, -5.09095160e+11,
+ 4.79024142e+10, -1.26591592e+11, 1.94445962e+11,
+ -3.62572653e+10, 8.52080054e+10, -1.29228969e+11,
+ -8.83327493e+10, 1.11266648e+11, -5.16970075e+11,
+ -7.33658238e+10, 7.81937180e+09, -2.93644299e+11,
+ -1.04698326e+11, -3.22783678e+11, -2.22817271e+11,
+ 1.12967809e+11, 6.47670884e+10, 3.90219017e+11,
+ 3.32914096e+11, -2.64550313e+11, 1.69650893e+12,
+ -2.25050603e+11, 6.53136619e+11, -1.33623672e+12,
+ 1.48766690e+11, -2.76758613e+11, 7.26818588e+11,
+ 1.90099476e+11, -7.46675761e+10, 1.18407263e+10,
+ -2.15276680e+11, 8.00666055e+10, -1.77270676e+11,
+ 2.38104621e+11, -5.73710641e+10, -4.42540169e+09,
+ 3.17445492e+11, -1.22169413e+11, 1.00263616e+11,
+ -1.71088244e+11, -6.30056465e+10, 1.74314405e+11,
+ -5.96253782e+11, -1.03426849e+11, -1.13624994e+11,
+ -3.12949675e+10, 2.44157356e+10, 1.92718403e+11,
+ -6.26226600e+11, 2.47475905e+11, -2.25050603e+11,
+ 1.97967373e+12, -2.24128696e+11, 2.63978666e+11,
+ -1.08518305e+12, 2.92810999e+11, -2.22744142e+11,
+ -7.46675761e+10, 3.28253126e+11, -2.44433188e+11,
+ 8.00666055e+10, -3.89057716e+11, 1.34140735e+11,
+ -5.73710641e+10, 4.92506284e+11, -2.94720961e+11,
+ -1.22169413e+11, 7.48622075e+11, -4.24857358e+11,
+ -6.30056465e+10, -2.28430845e+11, 1.98763507e+11,
+ -1.03426849e+11, -7.11586437e+11, 1.31379586e+11,
+ 2.44157356e+10, -1.07992730e+11, 2.24564280e+11,
+ 2.47475905e+11, -9.92458260e+11, 6.53136619e+11,
+ -2.24128696e+11, 3.09010212e+12, -1.54522896e+12,
+ 2.92810999e+11, -2.22995762e+12, 1.16725574e+12,
+ 1.18407263e+10, -2.44433188e+11, 4.97279724e+11,
+ -1.77270676e+11, 1.34140735e+11, -2.74232321e+11,
+ -4.42540169e+09, -2.94720961e+11, 5.35392012e+11,
+ 1.00263616e+11, -4.24857358e+11, 7.55013813e+11,
+ 1.74314405e+11, 1.98763507e+11, -4.10328847e+11,
+ -1.13624994e+11, 1.31379586e+11, -7.44361231e+11,
+ 1.92718403e+11, 2.24564280e+11, -4.04297886e+11,
+ -2.25050603e+11, 6.53136619e+11, -1.33623672e+12,
+ 2.63978666e+11, -1.54522896e+12, 3.55709452e+12,
+ -2.22744142e+11, 1.16725574e+12, -2.17532306e+12,
+ -1.29665315e+11, 3.07330418e+10, -7.01133548e+10,
+ 2.59728633e+11, -5.81352446e+10, 7.21969464e+10,
+ -1.11833868e+12, -1.30115106e+11, -3.60722383e+11,
+ -9.02460510e+11, 3.58283248e+10, -1.61793411e+11,
+ -1.69626626e+11, 4.76576773e+10, -1.80076276e+11,
+ 4.00702141e+11, 3.04215606e+10, 1.61968884e+11,
+ -1.22806992e+11, -3.04272562e+10, 1.41617951e+10,
+ 3.60887342e+11, -1.17281247e+11, 1.48766690e+11,
+ -1.08518305e+12, 2.92810999e+11, -2.22744142e+11,
+ 2.50676306e+12, -1.01492749e+11, 5.98355251e+11,
+ 3.07330418e+10, -1.44338150e+11, 8.31202909e+10,
+ -5.81352446e+10, 4.36495348e+11, -2.13317675e+11,
+ -1.30115106e+11, -1.25472106e+12, 2.20182976e+11,
+ 3.58283248e+10, -1.56780490e+12, 6.70317037e+11,
+ 4.76576773e+10, 4.56166756e+10, -5.84413625e+10,
+ 3.04215606e+10, 3.80186919e+11, -1.27382836e+11,
+ -3.04272562e+10, -1.39616091e+11, 3.09189976e+10,
+ -1.17281247e+11, 4.42033730e+11, -2.76758613e+11,
+ 2.92810999e+11, -2.22995762e+12, 1.16725574e+12,
+ -1.01492749e+11, 4.03210515e+12, -1.49589456e+12,
+ -7.01133548e+10, 8.31202909e+10, -2.60680607e+11,
+ 7.21969464e+10, -2.13317675e+11, 4.57953800e+11,
+ -3.60722383e+11, 2.20182976e+11, -1.31381251e+12,
+ -1.61793411e+11, 6.70317037e+11, -1.52219420e+12,
+ -1.80076276e+11, -5.84413625e+10, -1.84224621e+11,
+ 1.61968884e+11, -1.27382836e+11, 5.50793300e+11,
+ 1.41617951e+10, 3.09189976e+10, -8.43690419e+10,
+ 1.48766690e+11, -2.76758613e+11, 7.26818588e+11,
+ -2.22744142e+11, 1.16725574e+12, -2.17532306e+12,
+ 5.98355251e+11, -1.49589456e+12, 3.80503835e+12,
+};
+
+pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic::ElasticityImplicitLgDeformGravData3DQuadratic(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::ElasticityImplicitLgDeformGravData3DQuadratic::~ElasticityImplicitLgDeformGravData3DQuadratic(void)
+{}
+
+
+// End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData3DQuadratic.hh (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData3DQuadratic.hh)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData3DQuadratic.hh (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/ElasticityImplicitLgDeformGravData3DQuadratic.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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_elasticityimplicitlgdeformgravdata3dquadratic_hh)
+#define pylith_feassemble_elasticityimplicitlgdeformgravdata3dquadratic_hh
+
+#include "IntegratorData.hh"
+
+namespace pylith {
+ namespace feassemble {
+ class ElasticityImplicitLgDeformGravData3DQuadratic;
+ } // pylith
+} // feassemble
+
+class pylith::feassemble::ElasticityImplicitLgDeformGravData3DQuadratic : public IntegratorData
+{
+
+public:
+
+ /// Constructor
+ ElasticityImplicitLgDeformGravData3DQuadratic(void);
+
+ /// Destructor
+ ~ElasticityImplicitLgDeformGravData3DQuadratic(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_elasticityimplicitlgdeformgravdata3dquadratic_hh
+
+// End of file
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorElasticity.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorElasticity.py 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorElasticity.py 2009-12-10 01:52:12 UTC (rev 16094)
@@ -29,6 +29,32 @@
elasticity integrator objects.
"""
+ # INVENTORY //////////////////////////////////////////////////////////
+
+ class Inventory(IntegratorApp.Inventory):
+ """Python object for managing IntegratorApp facilities and properties."""
+
+ ## @class Inventory
+ ## Python object for managing ElasticityIntegrator facilities and
+ ## properties.
+ ##
+ ## \b Properties
+ ## @li \b useGravity Include gravitational body forces in residual.
+ ##
+ ## \b Facilities
+ ## @li \b formulation Elasticity formulation.
+
+ import pyre.inventory
+
+ useGravity = pyre.inventory.bool("use_gravity", default=False)
+ useGravity.meta['tip'] = "Include gravitational body forces in residual."
+
+ from ElasticityImplicit import ElasticityImplicit
+ formulation = pyre.inventory.facility("formulation",
+ factory=ElasticityImplicit)
+ formulation.meta['tip'] = "Elasticity formulation."
+
+
# PUBLIC METHODS /////////////////////////////////////////////////////
def __init__(self, name="integratorelasticity"):
@@ -46,6 +72,34 @@
# PRIVATE METHODS ////////////////////////////////////////////////////
+ def _configure(self):
+ """
+ Set members using inventory.
+ """
+ IntegratorApp._configure(self)
+ self.useGravity = self.inventory.useGravity
+ self.formulation = self.inventory.formulation
+ return
+
+
+ def _calculateResidual(self):
+ """
+ Calculate contribution to residual of operator for integrator.
+ """
+ self.valsResidual = self.formulation.calculateResidual(self)
+ if self.useGravity:
+ self.valsResidual += self._calculateGravityVec()
+ return
+
+
+ def _calculateJacobian(self):
+ """
+ Calculate contribution to Jacobian matrix of operator for integrator.
+ """
+ self.valsJacobian = self.formulation.calculateJacobian(self)
+ return
+
+
def _calculateStiffnessMat(self):
"""
Calculate stiffness matrix.
@@ -99,6 +153,28 @@
return M
+ def _calculateGravityVec(self):
+ """
+ Calculate body force vector.
+ """
+ gravityGlobal = numpy.zeros((self.numVertices*self.spaceDim),
+ dtype=numpy.float64)
+ for cell in self.cells:
+ gravityCell = numpy.zeros((self.spaceDim*self.numBasis))
+ vertices = self.vertices[cell, :]
+ (jacobian, jacobianInv, jacobianDet, basisDeriv) = \
+ feutils.calculateJacobian(self.quadrature, vertices)
+ for iQuad in xrange(self.numQuadPts):
+ wt = self.quadWts[iQuad] * jacobianDet[iQuad] * self.density
+ for iBasis in xrange(self.numBasis):
+ valI = wt * self.basis[iQuad, iBasis]
+ for iDim in xrange(self.spaceDim):
+ gravityCell[iDim + iBasis * self.spaceDim] += \
+ valI * self.gravityVec[iDim]
+ feutils.assembleVec(gravityGlobal, gravityCell, cell, self.spaceDim)
+ return gravityGlobal
+
+
def _calculateElasticityMat(self):
"""
Calculate elasticity matrix.
@@ -200,4 +276,11 @@
return B
+# MAIN /////////////////////////////////////////////////////////////////
+if __name__ == "__main__":
+
+ app = IntegratorElasticity()
+ app.run()
+
+
# End of file
Copied: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorElasticityLgDeform.py (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/libtests/feassemble/data/IntegratorElasticityLgDeform.py)
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorElasticityLgDeform.py (rev 0)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorElasticityLgDeform.py 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,347 @@
+#!/usr/bin/env python
+#
+# ----------------------------------------------------------------------
+#
+# Brad T. Aagaard
+# U.S. Geological Survey
+#
+# <LicenseText>
+#
+# ----------------------------------------------------------------------
+#
+
+## @file unittests/libtests/feassemble/data/IntegratorElasticityLgDeform.py
+
+## @brief Python application for generating C++ data files for testing
+## C++ elasticity integrator objects.
+
+from IntegratorElasticity import IntegratorElasticity
+
+import numpy
+import feutils
+
+# ----------------------------------------------------------------------
+
+# IntegratorElasticityLgDeform class
+class IntegratorElasticityLgDeform(IntegratorElasticity):
+ """
+ Python application for generating C++ data files for testing C++
+ elasticity integrator objects.
+ """
+
+ # PUBLIC METHODS /////////////////////////////////////////////////////
+
+ def __init__(self, name="integratorelasticitylgdeform"):
+ """
+ Constructor.
+ """
+ IntegratorElasticity.__init__(self, name)
+
+ return
+
+
+ # PRIVATE METHODS ////////////////////////////////////////////////////
+
+ def _calculateStiffnessMat(self):
+ """
+ Calculate stiffness matrix.
+
+ """
+ import feutils
+
+ K = numpy.zeros( (self.spaceDim*self.numVertices,
+ self.spaceDim*self.numVertices),
+ dtype=numpy.float64)
+
+ # Matrix of elasticity values
+ D = self._calculateElasticityMat()
+
+ for cell in self.cells:
+ cellK = numpy.zeros( (self.spaceDim*self.numBasis,
+ self.spaceDim*self.numBasis),
+ dtype=numpy.float64)
+ vertices = self.vertices[cell, :]
+ (jacobian, jacobianInv, jacobianDet, basisDeriv) = \
+ feutils.calculateJacobian(self.quadrature, vertices)
+ fieldTpdt = self.fieldT + self.fieldTIncr
+ for iQuad in xrange(self.numQuadPts):
+ wt = self.quadWts[iQuad] * jacobianDet[iQuad]
+ BL0 = self._calculateBasisDerivMatLinear0(basisDeriv, iQuad)
+ BL1 = self._calculateBasisDerivMatLinear1(basisDeriv, iQuad, fieldTpdt)
+ BL = BL0 + BL1
+ cellK[:] += wt * numpy.dot(numpy.dot(BL.transpose(), D), BL)
+ BNL = self._calculateBasisDerivMatNonlinear(basisDeriv, iQuad)
+ strain = self._calculateStrain(basisDeriv, iQuad, fieldTpdt)
+ S = self._calculateStress(strain, D)
+ cellK[:] += wt * numpy.dot(numpy.dot(BNL.transpose(), S), BNL)
+ feutils.assembleMat(K, cellK, cell, self.spaceDim)
+ return K
+
+
+ def _calculateBasisDerivMatLinear0(self, basisDeriv, iQuad):
+ """
+ Calculate matrix of derivatives of basis functions.
+ """
+ if 3 == self.spaceDim:
+ B = numpy.zeros( (6, self.spaceDim*self.numBasis),
+ dtype=numpy.float64)
+ for iBasis in xrange(self.numBasis):
+ B[0, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 0]
+ B[1, iBasis*self.spaceDim+1] = basisDeriv[iQuad, iBasis, 1]
+ B[2, iBasis*self.spaceDim+2] = basisDeriv[iQuad, iBasis, 2]
+ B[3, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 1]
+ B[3, iBasis*self.spaceDim+1] = basisDeriv[iQuad, iBasis, 0]
+ B[4, iBasis*self.spaceDim+1] = basisDeriv[iQuad, iBasis, 2]
+ B[4, iBasis*self.spaceDim+2] = basisDeriv[iQuad, iBasis, 1]
+ B[5, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 2]
+ B[5, iBasis*self.spaceDim+2] = basisDeriv[iQuad, iBasis, 0]
+ elif 2 == self.spaceDim:
+ B = numpy.zeros( (3, self.spaceDim*self.numBasis),
+ dtype=numpy.float64)
+ for iBasis in xrange(self.numBasis):
+ B[0, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 0]
+ B[1, iBasis*self.spaceDim+1] = basisDeriv[iQuad, iBasis, 1]
+ B[2, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 1]
+ B[2, iBasis*self.spaceDim+1] = basisDeriv[iQuad, iBasis, 0]
+ elif 1 == self.spaceDim:
+ B = numpy.zeros( (1, self.spaceDim*self.numBasis),
+ dtype=numpy.float64)
+ for iBasis in xrange(self.numBasis):
+ B[0, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 0]
+ else:
+ raise ValueError("Unknown spatial dimension '%d'." % self.spaceDim)
+ return B
+
+
+ def _calculateBasisDerivMatLinear1(self, basisDeriv, iQuad, disp):
+ """
+ Calculate matrix of derivatives of basis functions.
+ """
+ if 3 == self.spaceDim:
+ B = numpy.zeros( (6, self.spaceDim*self.numBasis),
+ dtype=numpy.float64)
+ l11 = 0.0
+ l12 = 0.0
+ l13 = 0.0
+ l21 = 0.0
+ l22 = 0.0
+ l23 = 0.0
+ l31 = 0.0
+ l32 = 0.0
+ l33 = 0.0
+ for kBasis in xrange(self.numBasis):
+ l11 += basisDeriv[iQuad, kBasis, 0]*disp[kBasis*self.spaceDim ]
+ l12 += basisDeriv[iQuad, kBasis, 1]*disp[kBasis*self.spaceDim ]
+ l13 += basisDeriv[iQuad, kBasis, 2]*disp[kBasis*self.spaceDim ]
+ l21 += basisDeriv[iQuad, kBasis, 0]*disp[kBasis*self.spaceDim+1]
+ l22 += basisDeriv[iQuad, kBasis, 1]*disp[kBasis*self.spaceDim+1]
+ l23 += basisDeriv[iQuad, kBasis, 2]*disp[kBasis*self.spaceDim+1]
+ l31 += basisDeriv[iQuad, kBasis, 0]*disp[kBasis*self.spaceDim+2]
+ l32 += basisDeriv[iQuad, kBasis, 1]*disp[kBasis*self.spaceDim+2]
+ l33 += basisDeriv[iQuad, kBasis, 2]*disp[kBasis*self.spaceDim+2]
+ for iBasis in xrange(self.numBasis):
+ B[0, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 0]*l11
+ B[0, iBasis*self.spaceDim+1] = basisDeriv[iQuad, iBasis, 0]*l21
+ B[0, iBasis*self.spaceDim+2] = basisDeriv[iQuad, iBasis, 0]*l31
+ B[1, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 1]*l12
+ B[1, iBasis*self.spaceDim+1] = basisDeriv[iQuad, iBasis, 1]*l22
+ B[1, iBasis*self.spaceDim+2] = basisDeriv[iQuad, iBasis, 1]*l32
+ B[2, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 2]*l13
+ B[2, iBasis*self.spaceDim+1] = basisDeriv[iQuad, iBasis, 2]*l23
+ B[2, iBasis*self.spaceDim+2] = basisDeriv[iQuad, iBasis, 2]*l33
+
+ B[3, iBasis*self.spaceDim+0] = \
+ basisDeriv[iQuad, iBasis, 1]*l11 + basisDeriv[iQuad, iBasis, 0]*l12
+ B[3, iBasis*self.spaceDim+1] = \
+ basisDeriv[iQuad, iBasis, 0]*l22 + basisDeriv[iQuad, iBasis, 1]*l21
+ B[3, iBasis*self.spaceDim+2] = \
+ basisDeriv[iQuad, iBasis, 1]*l31 + basisDeriv[iQuad, iBasis, 0]*l32
+
+ B[4, iBasis*self.spaceDim+0] = \
+ basisDeriv[iQuad, iBasis, 2]*l12 + basisDeriv[iQuad, iBasis, 1]*l13
+ B[4, iBasis*self.spaceDim+1] = \
+ basisDeriv[iQuad, iBasis, 2]*l22 + basisDeriv[iQuad, iBasis, 1]*l23
+ B[4, iBasis*self.spaceDim+2] = \
+ basisDeriv[iQuad, iBasis, 1]*l33 + basisDeriv[iQuad, iBasis, 2]*l32
+
+ B[5, iBasis*self.spaceDim+0] = \
+ basisDeriv[iQuad, iBasis, 2]*l11 + basisDeriv[iQuad, iBasis, 0]*l13
+ B[5, iBasis*self.spaceDim+1] = \
+ basisDeriv[iQuad, iBasis, 2]*l21 + basisDeriv[iQuad, iBasis, 0]*l23
+ B[5, iBasis*self.spaceDim+2] = \
+ basisDeriv[iQuad, iBasis, 0]*l33 + basisDeriv[iQuad, iBasis, 2]*l31
+
+ elif 2 == self.spaceDim:
+ B = numpy.zeros( (3, self.spaceDim*self.numBasis),
+ dtype=numpy.float64)
+ l11 = 0.0
+ l12 = 0.0
+ l21 = 0.0
+ l22 = 0.0
+ for kBasis in xrange(self.numBasis):
+ l11 += basisDeriv[iQuad, kBasis, 0]*disp[kBasis*self.spaceDim ]
+ l12 += basisDeriv[iQuad, kBasis, 1]*disp[kBasis*self.spaceDim ]
+ l21 += basisDeriv[iQuad, kBasis, 0]*disp[kBasis*self.spaceDim+1]
+ l22 += basisDeriv[iQuad, kBasis, 1]*disp[kBasis*self.spaceDim+1]
+ for iBasis in xrange(self.numBasis):
+ B[0, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 0]*l11
+ B[0, iBasis*self.spaceDim+1] = basisDeriv[iQuad, iBasis, 0]*l21
+ B[1, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 1]*l12
+ B[1, iBasis*self.spaceDim+1] = basisDeriv[iQuad, iBasis, 1]*l22
+ B[2, iBasis*self.spaceDim+0] = \
+ basisDeriv[iQuad, iBasis, 1]*l11 + basisDeriv[iQuad, iBasis, 0]*l12
+ B[2, iBasis*self.spaceDim+1] = \
+ basisDeriv[iQuad, iBasis, 0]*l22 + basisDeriv[iQuad, iBasis, 1]*l21
+
+ elif 1 == self.spaceDim:
+ B = numpy.zeros( (1, self.spaceDim*self.numBasis),
+ dtype=numpy.float64)
+ l11 = 0.0
+ for kBasis in xrange(self.numBasis):
+ l11 += basisDeriv[iQuad, kBasis, 0]*disp[kBasis]
+ for iBasis in xrange(self.numBasis):
+ B[0, iBasis*self.spaceDim+0] = basisDeriv[iQuad, iBasis, 0]*l11
+ else:
+ raise ValueError("Unknown spatial dimension '%d'." % self.spaceDim)
+ return B
+
+
+ def _calculateBasisDerivMatNonlinear(self, basisDeriv, iQuad):
+ """
+ Calculate matrix of derivatives of basis functions.
+ """
+ B = numpy.zeros( (self.spaceDim*self.spaceDim,
+ self.spaceDim*self.numBasis),
+ dtype=numpy.float64)
+ for iBasis in xrange(self.numBasis):
+ for iDim in xrange(self.spaceDim):
+ for jDim in xrange(self.spaceDim):
+ B[jDim+iDim*self.spaceDim, iBasis*self.spaceDim+iDim] = \
+ basisDeriv[iQuad, iBasis, jDim]
+ return B
+
+
+ def _calculateStrain(self, basisDeriv, iQuad, disp):
+ """
+ Calculte Green-Lagrange strain. Shear strains are twice the
+ Green-Lagrance values for compatibility with computing the strains
+ using the B matrix in the infinitesimal strain case.
+ """
+ if 3 == self.spaceDim:
+ strain = numpy.zeros( (1,6), dtype=numpy.float64)
+
+ l11 = 0.0
+ l12 = 0.0
+ l13 = 0.0
+ l21 = 0.0
+ l22 = 0.0
+ l23 = 0.0
+ l31 = 0.0
+ l32 = 0.0
+ l33 = 0.0
+ for kBasis in xrange(self.numBasis):
+ l11 += basisDeriv[iQuad, kBasis, 0]*disp[kBasis*self.spaceDim ]
+ l12 += basisDeriv[iQuad, kBasis, 1]*disp[kBasis*self.spaceDim ]
+ l13 += basisDeriv[iQuad, kBasis, 2]*disp[kBasis*self.spaceDim ]
+ l21 += basisDeriv[iQuad, kBasis, 0]*disp[kBasis*self.spaceDim+1]
+ l22 += basisDeriv[iQuad, kBasis, 1]*disp[kBasis*self.spaceDim+1]
+ l23 += basisDeriv[iQuad, kBasis, 2]*disp[kBasis*self.spaceDim+1]
+ l31 += basisDeriv[iQuad, kBasis, 0]*disp[kBasis*self.spaceDim+2]
+ l32 += basisDeriv[iQuad, kBasis, 1]*disp[kBasis*self.spaceDim+2]
+ l33 += basisDeriv[iQuad, kBasis, 2]*disp[kBasis*self.spaceDim+2]
+ strain[0, 0] = 0.5*(l11*l11 + l21*l21 + l31*l31)
+ strain[0, 1] = 0.5*(l12*l12 + l22*l22 + l32*l32)
+ strain[0, 2] = 0.5*(l13*l13 + l23*l23 + l33*l33)
+ strain[0, 3] = (l11*l12 + l21*l22 + l31*l32) # Use 2*e12 (D has mu)
+ strain[0, 4] = (l12*l13 + l22*l23 + l32*l33)
+ strain[0, 5] = (l11*l13 + l21*l23 + l31*l33)
+ for iBasis in xrange(self.numBasis):
+ strain[0, 0] += \
+ basisDeriv[iQuad, iBasis, 0]*disp[iBasis*self.spaceDim ]
+ strain[0, 1] += \
+ basisDeriv[iQuad, iBasis, 1]*disp[iBasis*self.spaceDim+1]
+ strain[0, 2] += \
+ basisDeriv[iQuad, iBasis, 2]*disp[iBasis*self.spaceDim+2]
+ strain[0, 3] += \
+ (basisDeriv[iQuad, iBasis, 0]*disp[iBasis*self.spaceDim+1] +
+ basisDeriv[iQuad, iBasis, 1]*disp[iBasis*self.spaceDim ])
+ strain[0, 4] += \
+ (basisDeriv[iQuad, iBasis, 1]*disp[iBasis*self.spaceDim+2] +
+ basisDeriv[iQuad, iBasis, 2]*disp[iBasis*self.spaceDim+1])
+ strain[0, 5] += \
+ (basisDeriv[iQuad, iBasis, 0]*disp[iBasis*self.spaceDim+2] +
+ basisDeriv[iQuad, iBasis, 2]*disp[iBasis*self.spaceDim ])
+
+ elif 2 == self.spaceDim:
+ strain = numpy.zeros( (1,3), dtype=numpy.float64)
+ l11 = 0.0
+ l12 = 0.0
+ l21 = 0.0
+ l22 = 0.0
+ for kBasis in xrange(self.numBasis):
+ l11 += basisDeriv[iQuad, kBasis, 0]*disp[kBasis*self.spaceDim ]
+ l12 += basisDeriv[iQuad, kBasis, 1]*disp[kBasis*self.spaceDim ]
+ l21 += basisDeriv[iQuad, kBasis, 0]*disp[kBasis*self.spaceDim+1]
+ l22 += basisDeriv[iQuad, kBasis, 1]*disp[kBasis*self.spaceDim+1]
+ strain[0, 0] = 0.5*(l11*l11 + l21*l21)
+ strain[0, 1] = 0.5*(l12*l12 + l22*l22)
+ strain[0, 2] = (l11*l12 + l21*l22) # Use 2*e12 (D has mu, not 2*mu)
+ for iBasis in xrange(self.numBasis):
+ strain[0, 0] += \
+ basisDeriv[iQuad, iBasis, 0]*disp[iBasis*self.spaceDim ]
+ strain[0, 1] += \
+ basisDeriv[iQuad, iBasis, 1]*disp[iBasis*self.spaceDim+1]
+ strain[0, 2] += \
+ (basisDeriv[iQuad, iBasis, 0]*disp[iBasis*self.spaceDim+1] +
+ basisDeriv[iQuad, iBasis, 1]*disp[iBasis*self.spaceDim ])
+
+ elif 1 == self.spaceDim:
+ strain = numpy.zeros( (1,1), dtype=numpy.float64)
+ l11 = 0.0
+ for kBasis in xrange(self.numBasis):
+ l11 += basisDeriv[iQuad, kBasis, 0]*disp[kBasis]
+ strain[0, 0] = 0.5*l11*l11
+ for iBasis in xrange(self.numBasis):
+ strain[0, 0] += basisDeriv[iQuad, iBasis, 0]*disp[iBasis]
+ else:
+ raise ValueError("Unknown spatial dimension '%d'." % self.spaceDim)
+
+ return strain
+
+
+ def _calculateStress(self, strain, D):
+ """
+ Calculte 2nd Priola-Kirchoff stress matrix.
+ """
+ S = numpy.zeros( (self.spaceDim*self.spaceDim,
+ self.spaceDim*self.spaceDim), dtype=numpy.float64)
+ Svec = numpy.dot(D, strain.transpose())
+ if 3 == self.spaceDim:
+ Smat = numpy.array([[Svec[0,0], Svec[3,0], Svec[5,0]],
+ [Svec[3,0], Svec[1,0], Svec[4,0]],
+ [Svec[5,0], Svec[4,0], Svec[2,0]]],
+ dtype=numpy.float64)
+ S[0:3,0:3] = Smat[:]
+ S[3:6,3:6] = Smat[:]
+ S[6:9,6:9] = Smat[:]
+ elif 2 == self.spaceDim:
+ Smat = numpy.array([[Svec[0,0], Svec[2,0]],
+ [Svec[2,0], Svec[1,0]]], dtype=numpy.float64)
+ S[0:2,0:2] = Smat[:]
+ S[2:4,2:4] = Smat[:]
+ elif 1 == self.spaceDim:
+ Smat = numpy.array([[Svec[0]]], dtype=numpy.float64)
+ S[0:1,0:1] = Smat[:]
+ else:
+ raise ValueError("Unknown spatial dimension '%d'." % self.spaceDim)
+ return S
+
+
+# MAIN /////////////////////////////////////////////////////////////////
+if __name__ == "__main__":
+
+ app = IntegratorElasticityLgDeform()
+ app.run()
+
+
+# End of file
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh1DLinear.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh1DLinear.py 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Mesh1DLinear.py 2009-12-10 01:52:12 UTC (rev 16094)
@@ -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/trunk/unittests/libtests/feassemble/data/Quadrature2DLinear.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2DLinear.py 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2DLinear.py 2009-12-10 01:52:12 UTC (rev 16094)
@@ -65,7 +65,8 @@
"""
Component.__init__(self, name, facility="quadrature")
- self.quadPtsRef = numpy.array( [[1.0/3.0, 1.0/3.0]], dtype=numpy.float64)
+ self.quadPtsRef = numpy.array( [[-1.0/3.0, -1.0/3.0]], dtype=numpy.float64)
+ #self.quadPtsRef = numpy.array( [[1.0/3.0, 1.0/3.0]], dtype=numpy.float64)
self.quadWts = numpy.array([0.5], dtype=numpy.float64)
self.numBasis = 3
self.numQuadPts = 1
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2DQuadratic.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2DQuadratic.py 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2DQuadratic.py 2009-12-10 01:52:12 UTC (rev 16094)
@@ -93,14 +93,24 @@
Component.__init__(self, name, facility="quadrature")
# These are just approximate points used to test the quadrature routine
- self.quadPtsRef = numpy.array( [[-1.0+4.0/4.0, -1.0+1.0/4.0],
- [-1.0+1.0/4.0, -1.0+4.0/4.0],
- [-1.0+1.0/4.0, -1.0+1.0/4.0]],
+ self.quadPtsRef = numpy.array( [[-0.75,-0.75],
+ [0.75,-0.75],
+ [-0.75,0.75],
+ [0,-0.75],
+ [-0.75,0],
+ [0.25,0.25]],
dtype=numpy.float64)
- self.quadWts = numpy.array([2.0/3.0, 2.0/3.0, 2.0/3.0],
+ self.quadWts = numpy.array([1.0/3.0, 1.0/3.0, 1.0/3.0, 1.0/3.0, 1.0/3.0, 1.0/3.0],
dtype=numpy.float64)
+ #self.quadPtsRef = numpy.array( [[-0.64288254347276719, -0.68989794855663567],
+ # [-0.84993777955478378, 0.28989794855663559],
+ # [0.33278049202940285, -0.68989794855663567],
+ # [-0.43996016900185175, 0.28989794855663559]],
+ # dtype=numpy.float64)
+ #self.quadWts = numpy.array([0.63608276, 0.36391724, 0.63608276, 0.36391724],
+ # dtype=numpy.float64)
self.numBasis = 6
- self.numQuadPts = 3
+ self.numQuadPts = 6
self.spaceDim = 2
self.cellDim = 2
return
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature3DLinear.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature3DLinear.py 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature3DLinear.py 2009-12-10 01:52:12 UTC (rev 16094)
@@ -22,7 +22,7 @@
# ----------------------------------------------------------------------
def N0(p):
- return 0.5*(1.0 + p[0] + p[1] + p[2])
+ return -0.5*(1.0 + p[0] + p[1] + p[2])
def N0p(p):
return -0.5
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/generate.sh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/generate.sh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/generate.sh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -136,7 +136,8 @@
# 1-D ----------------------------------------------------------------
- python ElasticityExplicit.py \
+ python IntegratorElasticity.py \
+ --formulation=ElasticityExplicit \
--data.namespace=pylith,feassemble \
--data.object=ElasticityExplicitData1DLinear \
--data.parent=IntegratorData \
@@ -145,7 +146,8 @@
--material=MaterialElasticStrain1D \
--solution=Solution1DLinear
- python ElasticityExplicit.py \
+ python IntegratorElasticity.py \
+ --formulation=ElasticityExplicit \
--data.namespace=pylith,feassemble \
--data.object=ElasticityExplicitData1DQuadratic \
--data.parent=IntegratorData \
@@ -154,9 +156,32 @@
--material=MaterialElasticStrain1D \
--solution=Solution1DQuadratic
+ python IntegratorElasticity.py \
+ --use_gravity=True \
+ --formulation=ElasticityExplicit \
+ --data.namespace=pylith,feassemble \
+ --data.object=ElasticityExplicitGravData1DLinear \
+ --data.parent=IntegratorData \
+ --mesh=Mesh1DLinear \
+ --quadrature=Quadrature1DLinear \
+ --material=MaterialElasticStrain1D \
+ --solution=Solution1DLinear
+
+ python IntegratorElasticity.py \
+ --use_gravity=True \
+ --formulation=ElasticityExplicit \
+ --data.namespace=pylith,feassemble \
+ --data.object=ElasticityExplicitGravData1DQuadratic \
+ --data.parent=IntegratorData \
+ --mesh=Mesh1DQuadratic \
+ --quadrature=Quadrature1DQuadratic \
+ --material=MaterialElasticStrain1D \
+ --solution=Solution1DQuadratic
+
# 2-D ----------------------------------------------------------------
- python ElasticityExplicit.py \
+ python IntegratorElasticity.py \
+ --formulation=ElasticityExplicit \
--data.namespace=pylith,feassemble \
--data.object=ElasticityExplicitData2DLinear \
--data.parent=IntegratorData \
@@ -165,7 +190,8 @@
--material=ElasticPlaneStrain \
--solution=Solution2DLinear
- python ElasticityExplicit.py \
+ python IntegratorElasticity.py \
+ --formulation=ElasticityExplicit \
--data.namespace=pylith,feassemble \
--data.object=ElasticityExplicitData2DQuadratic \
--data.parent=IntegratorData \
@@ -174,10 +200,34 @@
--material=ElasticPlaneStrain \
--solution=Solution2DQuadratic
+ python IntegratorElasticity.py \
+ --use_gravity=True \
+ --formulation=ElasticityExplicit \
+ --data.namespace=pylith,feassemble \
+ --data.object=ElasticityExplicitGravData2DLinear \
+ --data.parent=IntegratorData \
+ --mesh=Mesh2DLinear \
+ --quadrature=Quadrature2DLinear \
+ --material=ElasticPlaneStrain \
+ --solution=Solution2DLinear
+ python IntegratorElasticity.py \
+ --use_gravity=True \
+ --formulation=ElasticityExplicit \
+ --data.namespace=pylith,feassemble \
+ --data.object=ElasticityExplicitGravData2DQuadratic \
+ --data.parent=IntegratorData \
+ --mesh=Mesh2DQuadratic \
+ --quadrature=Quadrature2DQuadratic \
+ --material=ElasticPlaneStrain \
+ --solution=Solution2DQuadratic
+
+
+
# 3-D ----------------------------------------------------------------
- python ElasticityExplicit.py \
+ python IntegratorElasticity.py \
+ --formulation=ElasticityExplicit \
--data.namespace=pylith,feassemble \
--data.object=ElasticityExplicitData3DLinear \
--data.parent=IntegratorData \
@@ -186,7 +236,8 @@
--material=ElasticIsotropic3D \
--solution=Solution3DLinear
- python ElasticityExplicit.py \
+ python IntegratorElasticity.py \
+ --formulation=ElasticityExplicit \
--data.namespace=pylith,feassemble \
--data.object=ElasticityExplicitData3DQuadratic \
--data.parent=IntegratorData \
@@ -195,6 +246,27 @@
--material=ElasticIsotropic3D \
--solution=Solution3DQuadratic
+ python IntegratorElasticity.py \
+ --use_gravity=True \
+ --formulation=ElasticityExplicit \
+ --data.namespace=pylith,feassemble \
+ --data.object=ElasticityExplicitGravData3DLinear \
+ --data.parent=IntegratorData \
+ --mesh=Mesh3DLinear \
+ --quadrature=Quadrature3DLinear \
+ --material=ElasticIsotropic3D \
+ --solution=Solution3DLinear
+
+ python IntegratorElasticity.py \
+ --use_gravity=True \
+ --formulation=ElasticityExplicit \
+ --data.namespace=pylith,feassemble \
+ --data.object=ElasticityExplicitGravData3DQuadratic \
+ --data.parent=IntegratorData \
+ --mesh=Mesh3DQuadratic \
+ --quadrature=Quadrature3DQuadratic \
+ --material=ElasticIsotropic3D \
+ --solution=Solution3DQuadratic
fi
@@ -203,7 +275,8 @@
# 1-D ----------------------------------------------------------------
- python ElasticityImplicit.py \
+ python IntegratorElasticity.py \
+ --formulation=ElasticityImplicit \
--data.namespace=pylith,feassemble \
--data.object=ElasticityImplicitData1DLinear \
--data.parent=IntegratorData \
@@ -212,7 +285,8 @@
--material=MaterialElasticStrain1D \
--solution=Solution1DLinear
- python ElasticityImplicit.py \
+ python IntegratorElasticity.py \
+ --formulation=ElasticityImplicit \
--data.namespace=pylith,feassemble \
--data.object=ElasticityImplicitData1DQuadratic \
--data.parent=IntegratorData \
@@ -221,7 +295,9 @@
--material=MaterialElasticStrain1D \
--solution=Solution1DQuadratic
- python ElasticityImplicitGrav.py \
+ python IntegratorElasticity.py \
+ --use_gravity=True \
+ --formulation=ElasticityImplicit \
--data.namespace=pylith,feassemble \
--data.object=ElasticityImplicitGravData1DLinear \
--data.parent=IntegratorData \
@@ -230,7 +306,9 @@
--material=MaterialElasticStrain1D \
--solution=Solution1DLinear
- python ElasticityImplicitGrav.py \
+ python IntegratorElasticity.py \
+ --use_gravity=True \
+ --formulation=ElasticityImplicit \
--data.namespace=pylith,feassemble \
--data.object=ElasticityImplicitGravData1DQuadratic \
--data.parent=IntegratorData \
@@ -241,7 +319,8 @@
# 2-D ----------------------------------------------------------------
- python ElasticityImplicit.py \
+ python IntegratorElasticity.py \
+ --formulation=ElasticityImplicit \
--data.namespace=pylith,feassemble \
--data.object=ElasticityImplicitData2DLinear \
--data.parent=IntegratorData \
@@ -250,7 +329,8 @@
--material=ElasticPlaneStrain \
--solution=Solution2DLinear
- python ElasticityImplicit.py \
+ python IntegratorElasticity.py \
+ --formulation=ElasticityImplicit \
--data.namespace=pylith,feassemble \
--data.object=ElasticityImplicitData2DQuadratic \
--data.parent=IntegratorData \
@@ -259,7 +339,9 @@
--material=ElasticPlaneStrain \
--solution=Solution2DQuadratic
- python ElasticityImplicitGrav.py \
+ python IntegratorElasticity.py \
+ --use_gravity=True \
+ --formulation=ElasticityImplicit \
--data.namespace=pylith,feassemble \
--data.object=ElasticityImplicitGravData2DLinear \
--data.parent=IntegratorData \
@@ -268,7 +350,9 @@
--material=ElasticPlaneStrain \
--solution=Solution2DLinear
- python ElasticityImplicitGrav.py \
+ python IntegratorElasticity.py \
+ --use_gravity=True \
+ --formulation=ElasticityImplicit \
--data.namespace=pylith,feassemble \
--data.object=ElasticityImplicitGravData2DQuadratic \
--data.parent=IntegratorData \
@@ -280,7 +364,8 @@
# 3-D ----------------------------------------------------------------
- python ElasticityImplicit.py \
+ python IntegratorElasticity.py \
+ --formulation=ElasticityImplicit \
--data.namespace=pylith,feassemble \
--data.object=ElasticityImplicitData3DLinear \
--data.parent=IntegratorData \
@@ -289,7 +374,8 @@
--material=ElasticIsotropic3D \
--solution=Solution3DLinear
- python ElasticityImplicit.py \
+ python IntegratorElasticity.py \
+ --formulation=ElasticityImplicit \
--data.namespace=pylith,feassemble \
--data.object=ElasticityImplicitData3DQuadratic \
--data.parent=IntegratorData \
@@ -298,7 +384,9 @@
--material=ElasticIsotropic3D \
--solution=Solution3DQuadratic
- python ElasticityImplicitGrav.py \
+ python IntegratorElasticity.py \
+ --use_gravity=True \
+ --formulation=ElasticityImplicit \
--data.namespace=pylith,feassemble \
--data.object=ElasticityImplicitGravData3DLinear \
--data.parent=IntegratorData \
@@ -307,7 +395,9 @@
--material=ElasticIsotropic3D \
--solution=Solution3DLinear
- python ElasticityImplicitGrav.py \
+ python IntegratorElasticity.py \
+ --use_gravity=True \
+ --formulation=ElasticityImplicit \
--data.namespace=pylith,feassemble \
--data.object=ElasticityImplicitGravData3DQuadratic \
--data.parent=IntegratorData \
@@ -318,5 +408,284 @@
fi
+# //////////////////////////////////////////////////////////////////////
+if [ $1 == "explicitlgdeform" ] || [ $1 == "all" ]; then
+ # 1-D ----------------------------------------------------------------
+
+ python IntegratorElasticityLgDeform.py \
+ --formulation=ElasticityExplicitLgDeform \
+ --data.namespace=pylith,feassemble \
+ --data.object=ElasticityExplicitLgDeformData1DLinear \
+ --data.parent=IntegratorData \
+ --mesh=Mesh1DLinear \
+ --quadrature=Quadrature1DLinear \
+ --material=MaterialElasticStrain1D \
+ --solution=Solution1DLinear
+
+ python IntegratorElasticityLgDeform.py \
+ --formulation=ElasticityExplicitLgDeform \
+ --data.namespace=pylith,feassemble \
+ --data.object=ElasticityExplicitLgDeformData1DQuadratic \
+ --data.parent=IntegratorData \
+ --mesh=Mesh1DQuadratic \
+ --quadrature=Quadrature1DQuadratic \
+ --material=MaterialElasticStrain1D \
+ --solution=Solution1DQuadratic
+
+ python IntegratorElasticityLgDeform.py \
+ --use_gravity=True \
+ --formulation=ElasticityExplicitLgDeform \
+ --data.namespace=pylith,feassemble \
+ --data.object=ElasticityExplicitLgDeformGravData1DLinear \
+ --data.parent=IntegratorData \
+ --mesh=Mesh1DLinear \
+ --quadrature=Quadrature1DLinear \
+ --material=MaterialElasticStrain1D \
+ --solution=Solution1DLinear
+
+ python IntegratorElasticityLgDeform.py \
+ --use_gravity=True \
+ --formulation=ElasticityExplicitLgDeform \
+ --data.namespace=pylith,feassemble \
+ --data.object=ElasticityExplicitLgDeformGravData1DQuadratic \
+ --data.parent=IntegratorData \
+ --mesh=Mesh1DQuadratic \
+ --quadrature=Quadrature1DQuadratic \
+ --material=MaterialElasticStrain1D \
+ --solution=Solution1DQuadratic
+
+
+ # 2-D ----------------------------------------------------------------
+
+ python IntegratorElasticityLgDeform.py \
+ --formulation=ElasticityExplicitLgDeform \
+ --data.namespace=pylith,feassemble \
+ --data.object=ElasticityExplicitLgDeformData2DLinear \
+ --data.parent=IntegratorData \
+ --mesh=Mesh2DLinear \
+ --quadrature=Quadrature2DLinear \
+ --material=ElasticPlaneStrain \
+ --solution=Solution2DLinear
+
+ python IntegratorElasticityLgDeform.py \
+ --formulation=ElasticityExplicitLgDeform \
+ --data.namespace=pylith,feassemble \
+ --data.object=ElasticityExplicitLgDeformData2DQuadratic \
+ --data.parent=IntegratorData \
+ --mesh=Mesh2DQuadratic \
+ --quadrature=Quadrature2DQuadratic \
+ --material=ElasticPlaneStrain \
+ --solution=Solution2DQuadratic
+
+ python IntegratorElasticityLgDeform.py \
+ --use_gravity=True \
+ --formulation=ElasticityExplicitLgDeform \
+ --data.namespace=pylith,feassemble \
+ --data.object=ElasticityExplicitLgDeformGravData2DLinear \
+ --data.parent=IntegratorData \
+ --mesh=Mesh2DLinear \
+ --quadrature=Quadrature2DLinear \
+ --material=ElasticPlaneStrain \
+ --solution=Solution2DLinear
+
+ python IntegratorElasticityLgDeform.py \
+ --use_gravity=True \
+ --formulation=ElasticityExplicitLgDeform \
+ --data.namespace=pylith,feassemble \
+ --data.object=ElasticityExplicitLgDeformGravData2DQuadratic \
+ --data.parent=IntegratorData \
+ --mesh=Mesh2DQuadratic \
+ --quadrature=Quadrature2DQuadratic \
+ --material=ElasticPlaneStrain \
+ --solution=Solution2DQuadratic
+
+
+ # 3-D ----------------------------------------------------------------
+
+ python IntegratorElasticityLgDeform.py \
+ --formulation=ElasticityExplicitLgDeform \
+ --data.namespace=pylith,feassemble \
+ --data.object=ElasticityExplicitLgDeformData3DLinear \
+ --data.parent=IntegratorData \
+ --mesh=Mesh3DLinear \
+ --quadrature=Quadrature3DLinear \
+ --material=ElasticIsotropic3D \
+ --solution=Solution3DLinear
+
+ python IntegratorElasticityLgDeform.py \
+ --formulation=ElasticityExplicitLgDeform \
+ --data.namespace=pylith,feassemble \
+ --data.object=ElasticityExplicitLgDeformData3DQuadratic \
+ --data.parent=IntegratorData \
+ --mesh=Mesh3DQuadratic \
+ --quadrature=Quadrature3DQuadratic \
+ --material=ElasticIsotropic3D \
+ --solution=Solution3DQuadratic
+
+ python IntegratorElasticityLgDeform.py \
+ --use_gravity=True \
+ --formulation=ElasticityExplicitLgDeform \
+ --data.namespace=pylith,feassemble \
+ --data.object=ElasticityExplicitLgDeformGravData3DLinear \
+ --data.parent=IntegratorData \
+ --mesh=Mesh3DLinear \
+ --quadrature=Quadrature3DLinear \
+ --material=ElasticIsotropic3D \
+ --solution=Solution3DLinear
+
+ python IntegratorElasticityLgDeform.py \
+ --use_gravity=True \
+ --formulation=ElasticityExplicitLgDeform \
+ --data.namespace=pylith,feassemble \
+ --data.object=ElasticityExplicitLgDeformGravData3DQuadratic \
+ --data.parent=IntegratorData \
+ --mesh=Mesh3DQuadratic \
+ --quadrature=Quadrature3DQuadratic \
+ --material=ElasticIsotropic3D \
+ --solution=Solution3DQuadratic
+
+fi
+
+
+# //////////////////////////////////////////////////////////////////////
+if [ $1 == "implicitlgdeform" ] || [ $1 == "all" ]; then
+
+ # 1-D ----------------------------------------------------------------
+
+ python IntegratorElasticityLgDeform.py \
+ --formulation=ElasticityImplicitLgDeform \
+ --data.namespace=pylith,feassemble \
+ --data.object=ElasticityImplicitLgDeformData1DLinear \
+ --data.parent=IntegratorData \
+ --mesh=Mesh1DLinear \
+ --quadrature=Quadrature1DLinear \
+ --material=MaterialElasticStrain1D \
+ --solution=Solution1DLinear
+
+ python IntegratorElasticityLgDeform.py \
+ --formulation=ElasticityImplicitLgDeform \
+ --data.namespace=pylith,feassemble \
+ --data.object=ElasticityImplicitLgDeformData1DQuadratic \
+ --data.parent=IntegratorData \
+ --mesh=Mesh1DQuadratic \
+ --quadrature=Quadrature1DQuadratic \
+ --material=MaterialElasticStrain1D \
+ --solution=Solution1DQuadratic
+
+ python IntegratorElasticityLgDeform.py \
+ --use_gravity=True \
+ --formulation=ElasticityImplicitLgDeform \
+ --data.namespace=pylith,feassemble \
+ --data.object=ElasticityImplicitLgDeformGravData1DLinear \
+ --data.parent=IntegratorData \
+ --mesh=Mesh1DLinear \
+ --quadrature=Quadrature1DLinear \
+ --material=MaterialElasticStrain1D \
+ --solution=Solution1DLinear
+
+ python IntegratorElasticityLgDeform.py \
+ --use_gravity=True \
+ --formulation=ElasticityImplicitLgDeform \
+ --data.namespace=pylith,feassemble \
+ --data.object=ElasticityImplicitLgDeformGravData1DQuadratic \
+ --data.parent=IntegratorData \
+ --mesh=Mesh1DQuadratic \
+ --quadrature=Quadrature1DQuadratic \
+ --material=MaterialElasticStrain1D \
+ --solution=Solution1DQuadratic
+
+
+ # 2-D ----------------------------------------------------------------
+
+ python IntegratorElasticityLgDeform.py \
+ --formulation=ElasticityImplicitLgDeform \
+ --data.namespace=pylith,feassemble \
+ --data.object=ElasticityImplicitLgDeformData2DLinear \
+ --data.parent=IntegratorData \
+ --mesh=Mesh2DLinear \
+ --quadrature=Quadrature2DLinear \
+ --material=ElasticPlaneStrain \
+ --solution=Solution2DLinear
+
+ python IntegratorElasticityLgDeform.py \
+ --formulation=ElasticityImplicitLgDeform \
+ --data.namespace=pylith,feassemble \
+ --data.object=ElasticityImplicitLgDeformData2DQuadratic \
+ --data.parent=IntegratorData \
+ --mesh=Mesh2DQuadratic \
+ --quadrature=Quadrature2DQuadratic \
+ --material=ElasticPlaneStrain \
+ --solution=Solution2DQuadratic
+
+ python IntegratorElasticityLgDeform.py \
+ --use_gravity=True \
+ --formulation=ElasticityImplicitLgDeform \
+ --data.namespace=pylith,feassemble \
+ --data.object=ElasticityImplicitLgDeformGravData2DLinear \
+ --data.parent=IntegratorData \
+ --mesh=Mesh2DLinear \
+ --quadrature=Quadrature2DLinear \
+ --material=ElasticPlaneStrain \
+ --solution=Solution2DLinear
+
+ python IntegratorElasticityLgDeform.py \
+ --use_gravity=True \
+ --formulation=ElasticityImplicitLgDeform \
+ --data.namespace=pylith,feassemble \
+ --data.object=ElasticityImplicitLgDeformGravData2DQuadratic \
+ --data.parent=IntegratorData \
+ --mesh=Mesh2DQuadratic \
+ --quadrature=Quadrature2DQuadratic \
+ --material=ElasticPlaneStrain \
+ --solution=Solution2DQuadratic
+
+
+ # 3-D ----------------------------------------------------------------
+
+ python IntegratorElasticityLgDeform.py \
+ --formulation=ElasticityImplicitLgDeform \
+ --data.namespace=pylith,feassemble \
+ --data.object=ElasticityImplicitLgDeformData3DLinear \
+ --data.parent=IntegratorData \
+ --mesh=Mesh3DLinear \
+ --quadrature=Quadrature3DLinear \
+ --material=ElasticIsotropic3D \
+ --solution=Solution3DLinear
+
+ python IntegratorElasticityLgDeform.py \
+ --formulation=ElasticityImplicitLgDeform \
+ --data.namespace=pylith,feassemble \
+ --data.object=ElasticityImplicitLgDeformData3DQuadratic \
+ --data.parent=IntegratorData \
+ --mesh=Mesh3DQuadratic \
+ --quadrature=Quadrature3DQuadratic \
+ --material=ElasticIsotropic3D \
+ --solution=Solution3DQuadratic
+
+ python IntegratorElasticityLgDeform.py \
+ --use_gravity=True \
+ --formulation=ElasticityImplicitLgDeform \
+ --data.namespace=pylith,feassemble \
+ --data.object=ElasticityImplicitLgDeformGravData3DLinear \
+ --data.parent=IntegratorData \
+ --mesh=Mesh3DLinear \
+ --quadrature=Quadrature3DLinear \
+ --material=ElasticIsotropic3D \
+ --solution=Solution3DLinear
+
+ python IntegratorElasticityLgDeform.py \
+ --use_gravity=True \
+ --formulation=ElasticityImplicitLgDeform \
+ --data.namespace=pylith,feassemble \
+ --data.object=ElasticityImplicitLgDeformGravData3DQuadratic \
+ --data.parent=IntegratorData \
+ --mesh=Mesh3DQuadratic \
+ --quadrature=Quadrature3DQuadratic \
+ --material=ElasticIsotropic3D \
+ --solution=Solution3DQuadratic
+
+fi
+
+
# End of file
Property changes on: short/3D/PyLith/trunk/unittests/libtests/materials
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/unittests/libtests/materials/data
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/unittests/libtests/meshio
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKMesh.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKMesh.cc 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKMesh.cc 2009-12-10 01:52:12 UTC (rev 16094)
@@ -82,7 +82,7 @@
const char* format = "%4.1f";
writer.timeFormat(format);
CPPUNIT_ASSERT_EQUAL(std::string(format), writer._timeFormat);
-} // testInterpolate
+} // testTimeFormat
// ----------------------------------------------------------------------
// Test timeConstant()
@@ -94,9 +94,21 @@
const double value = 4.5;
writer.timeConstant(value);
CPPUNIT_ASSERT_EQUAL(value, writer._timeConstant);
-} // testInterpolate
+} // testTimeConstant
// ----------------------------------------------------------------------
+// Test precision()
+void
+pylith::meshio::TestDataWriterVTKMesh::testPrecision(void)
+{ // testPrecision
+ DataWriterVTK<topology::Mesh, MeshField> writer;
+
+ const int value = 4;
+ writer.precision(value);
+ CPPUNIT_ASSERT_EQUAL(value, writer._precision);
+} // testPrecision
+
+// ----------------------------------------------------------------------
// Test openTimeStep() and closeTimeStep()
void
pylith::meshio::TestDataWriterVTKMesh::testTimeStep(void)
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKMesh.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKMesh.hh 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/TestDataWriterVTKMesh.hh 2009-12-10 01:52:12 UTC (rev 16094)
@@ -43,6 +43,7 @@
CPPUNIT_TEST( testFilename );
CPPUNIT_TEST( testTimeFormat );
CPPUNIT_TEST( testTimeConstant );
+ CPPUNIT_TEST( testPrecision );
CPPUNIT_TEST( testVtkFilename );
CPPUNIT_TEST_SUITE_END();
@@ -68,6 +69,9 @@
/// Test timeConstant()
void testTimeConstant(void);
+ /// Test precision()
+ void testPrecision(void);
+
/// Test openTimeStep() and closeTimeStep()
void testTimeStep(void);
Property changes on: short/3D/PyLith/trunk/unittests/libtests/meshio/data
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_bc_cell_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_bc_cell_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_bc_cell_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,14 +3,14 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 8 double
--1 -1 1
--1 1 1
-0 -1 1
-0 1 1
-1 -1 1
-1 1 1
-0 -1 1
-0 1 1
+-1.000000e+00 -1.000000e+00 1.000000e+00
+-1.000000e+00 1.000000e+00 1.000000e+00
+0.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.000000e+00 1.000000e+00
+1.000000e+00 -1.000000e+00 1.000000e+00
+1.000000e+00 1.000000e+00 1.000000e+00
+0.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.000000e+00 1.000000e+00
CELLS 2 10
4 6 7 1 0
4 4 5 3 2
@@ -19,13 +19,13 @@
9
CELL_DATA 2
VECTORS traction double
-1.1 2.2 3.3
-4.4 5.5 6.6
+1.100000e+00 2.200000e+00 3.300000e+00
+4.400000e+00 5.500000e+00 6.600000e+00
SCALARS pressure double 1
LOOKUP_TABLE default
-2.1
-3.2
+2.100000e+00
+3.200000e+00
SCALARS other double 6
LOOKUP_TABLE default
-1.2 2.3 3.4 4.5 5.6 6.7
-7.8 8.9 9 10.1 11.2 12.3
+1.200000e+00 2.300000e+00 3.400000e+00 4.500000e+00 5.600000e+00 6.700000e+00
+7.800000e+00 8.900000e+00 9.000000e+00 1.010000e+01 1.120000e+01 1.230000e+01
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_bc_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_bc_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_bc_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,14 +3,14 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 8 double
--1 -1 1
--1 1 1
-0 -1 1
-0 1 1
-1 -1 1
-1 1 1
-0 -1 1
-0 1 1
+-1.000000e+00 -1.000000e+00 1.000000e+00
+-1.000000e+00 1.000000e+00 1.000000e+00
+0.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.000000e+00 1.000000e+00
+1.000000e+00 -1.000000e+00 1.000000e+00
+1.000000e+00 1.000000e+00 1.000000e+00
+0.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.000000e+00 1.000000e+00
CELLS 2 10
4 6 7 1 0
4 4 5 3 2
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_bc_vertex_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_bc_vertex_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_bc_vertex_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,14 +3,14 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 8 double
--1 -1 1
--1 1 1
-0 -1 1
-0 1 1
-1 -1 1
-1 1 1
-0 -1 1
-0 1 1
+-1.000000e+00 -1.000000e+00 1.000000e+00
+-1.000000e+00 1.000000e+00 1.000000e+00
+0.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.000000e+00 1.000000e+00
+1.000000e+00 -1.000000e+00 1.000000e+00
+1.000000e+00 1.000000e+00 1.000000e+00
+0.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.000000e+00 1.000000e+00
CELLS 2 10
4 6 7 1 0
4 4 5 3 2
@@ -19,31 +19,31 @@
9
POINT_DATA 8
VECTORS displacements double
-1.1 2.2 3.3
-4.4 5.5 6.6
-7.7 8.8 9.9
-10.1 11.2 12.3
-1.2 2.3 3.4
-4.5 5.6 6.7
-7.8 8.9 9
-10.2 11.3 12.4
+1.100000e+00 2.200000e+00 3.300000e+00
+4.400000e+00 5.500000e+00 6.600000e+00
+7.700000e+00 8.800000e+00 9.900000e+00
+1.010000e+01 1.120000e+01 1.230000e+01
+1.200000e+00 2.300000e+00 3.400000e+00
+4.500000e+00 5.600000e+00 6.700000e+00
+7.800000e+00 8.900000e+00 9.000000e+00
+1.020000e+01 1.130000e+01 1.240000e+01
SCALARS pressure double 1
LOOKUP_TABLE default
-2.1
-3.2
-4.3
-5.4
-6.5
-7.6
-8.7
-9.8
+2.100000e+00
+3.200000e+00
+4.300000e+00
+5.400000e+00
+6.500000e+00
+7.600000e+00
+8.700000e+00
+9.800000e+00
SCALARS other double 2
LOOKUP_TABLE default
-1.2 2.3
-3.4 4.5
-5.6 6.7
-7.8 8.9
-1.3 2.4
-3.5 4.6
-5.7 6.8
-7.9 8
+1.200000e+00 2.300000e+00
+3.400000e+00 4.500000e+00
+5.600000e+00 6.700000e+00
+7.800000e+00 8.900000e+00
+1.300000e+00 2.400000e+00
+3.500000e+00 4.600000e+00
+5.700000e+00 6.800000e+00
+7.900000e+00 8.000000e+00
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_cell_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_cell_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_cell_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,22 +3,22 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 16 double
--1 -1 -1
--1 1 -1
-0 -1 -1
-0 1 -1
-1 -1 -1
-1 1 -1
--1 -1 1
--1 1 1
-0 -1 1
-0 1 1
-1 -1 1
-1 1 1
-0 -1 -1
-0 1 -1
-0 -1 1
-0 1 1
+-1.000000e+00 -1.000000e+00 -1.000000e+00
+-1.000000e+00 1.000000e+00 -1.000000e+00
+0.000000e+00 -1.000000e+00 -1.000000e+00
+0.000000e+00 1.000000e+00 -1.000000e+00
+1.000000e+00 -1.000000e+00 -1.000000e+00
+1.000000e+00 1.000000e+00 -1.000000e+00
+-1.000000e+00 -1.000000e+00 1.000000e+00
+-1.000000e+00 1.000000e+00 1.000000e+00
+0.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.000000e+00 1.000000e+00
+1.000000e+00 -1.000000e+00 1.000000e+00
+1.000000e+00 1.000000e+00 1.000000e+00
+0.000000e+00 -1.000000e+00 -1.000000e+00
+0.000000e+00 1.000000e+00 -1.000000e+00
+0.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.000000e+00 1.000000e+00
CELLS 2 18
8 0 12 13 1 6 14 15 7
8 2 4 5 3 8 10 11 9
@@ -27,13 +27,13 @@
12
CELL_DATA 2
VECTORS traction double
-1.1 2.2 3.3
-4.4 5.5 6.6
+1.100000e+00 2.200000e+00 3.300000e+00
+4.400000e+00 5.500000e+00 6.600000e+00
SCALARS pressure double 1
LOOKUP_TABLE default
-2.1
-3.2
+2.100000e+00
+3.200000e+00
SCALARS other double 6
LOOKUP_TABLE default
-1.2 2.3 3.4 4.5 5.6 6.7
-1.1 2.2 3.3 4.4 5.5 6.6
+1.200000e+00 2.300000e+00 3.400000e+00 4.500000e+00 5.600000e+00 6.700000e+00
+1.100000e+00 2.200000e+00 3.300000e+00 4.400000e+00 5.500000e+00 6.600000e+00
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_fault_cell_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_fault_cell_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_fault_cell_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,20 +3,20 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 4 double
-0 -1 -1
-0 1 -1
-0 -1 1
-0 1 1
+0.000000e+00 -1.000000e+00 -1.000000e+00
+0.000000e+00 1.000000e+00 -1.000000e+00
+0.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.000000e+00 1.000000e+00
CELLS 1 5
4 2 3 1 0
CELL_TYPES 1
9
CELL_DATA 1
VECTORS traction double
-1.1 2.2 3.3
+1.100000e+00 2.200000e+00 3.300000e+00
SCALARS pressure double 1
LOOKUP_TABLE default
-2.1
+2.100000e+00
SCALARS other double 6
LOOKUP_TABLE default
-1.2 2.3 3.4 4.5 5.6 6.7
+1.200000e+00 2.300000e+00 3.400000e+00 4.500000e+00 5.600000e+00 6.700000e+00
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_fault_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_fault_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_fault_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,10 +3,10 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 4 double
-0 -1 -1
-0 1 -1
-0 -1 1
-0 1 1
+0.000000e+00 -1.000000e+00 -1.000000e+00
+0.000000e+00 1.000000e+00 -1.000000e+00
+0.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.000000e+00 1.000000e+00
CELLS 1 5
4 2 3 1 0
CELL_TYPES 1
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_fault_vertex_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_fault_vertex_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_fault_vertex_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,29 +3,29 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 4 double
-0 -1 -1
-0 1 -1
-0 -1 1
-0 1 1
+0.000000e+00 -1.000000e+00 -1.000000e+00
+0.000000e+00 1.000000e+00 -1.000000e+00
+0.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.000000e+00 1.000000e+00
CELLS 1 5
4 2 3 1 0
CELL_TYPES 1
9
POINT_DATA 4
VECTORS displacements double
-1.1 2.2 3.3
-4.4 5.5 6.6
-7.7 8.8 9.9
-10.1 11.2 12.3
+1.100000e+00 2.200000e+00 3.300000e+00
+4.400000e+00 5.500000e+00 6.600000e+00
+7.700000e+00 8.800000e+00 9.900000e+00
+1.010000e+01 1.120000e+01 1.230000e+01
SCALARS pressure double 1
LOOKUP_TABLE default
-2.1
-3.2
-4.3
-5.4
+2.100000e+00
+3.200000e+00
+4.300000e+00
+5.400000e+00
SCALARS other double 2
LOOKUP_TABLE default
-1.2 2.3
-3.4 4.5
-5.6 6.7
-7.8 8.9
+1.200000e+00 2.300000e+00
+3.400000e+00 4.500000e+00
+5.600000e+00 6.700000e+00
+7.800000e+00 8.900000e+00
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_mat_cell_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_mat_cell_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_mat_cell_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,32 +3,32 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 16 double
--1 -1 -1
--1 1 -1
-0 -1 -1
-0 1 -1
-1 -1 -1
-1 1 -1
--1 -1 1
--1 1 1
-0 -1 1
-0 1 1
-1 -1 1
-1 1 1
-0 -1 -1
-0 1 -1
-0 -1 1
-0 1 1
+-1.000000e+00 -1.000000e+00 -1.000000e+00
+-1.000000e+00 1.000000e+00 -1.000000e+00
+0.000000e+00 -1.000000e+00 -1.000000e+00
+0.000000e+00 1.000000e+00 -1.000000e+00
+1.000000e+00 -1.000000e+00 -1.000000e+00
+1.000000e+00 1.000000e+00 -1.000000e+00
+-1.000000e+00 -1.000000e+00 1.000000e+00
+-1.000000e+00 1.000000e+00 1.000000e+00
+0.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.000000e+00 1.000000e+00
+1.000000e+00 -1.000000e+00 1.000000e+00
+1.000000e+00 1.000000e+00 1.000000e+00
+0.000000e+00 -1.000000e+00 -1.000000e+00
+0.000000e+00 1.000000e+00 -1.000000e+00
+0.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.000000e+00 1.000000e+00
CELLS 1 9
8 2 4 5 3 8 10 11 9
CELL_TYPES 1
12
CELL_DATA 1
VECTORS traction double
-1.1 2.2 3.3
+1.100000e+00 2.200000e+00 3.300000e+00
SCALARS pressure double 1
LOOKUP_TABLE default
-2.1
+2.100000e+00
SCALARS other double 6
LOOKUP_TABLE default
-1.2 2.3 3.4 4.5 5.6 6.7
+1.200000e+00 2.300000e+00 3.400000e+00 4.500000e+00 5.600000e+00 6.700000e+00
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_mat_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_mat_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_mat_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,22 +3,22 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 16 double
--1 -1 -1
--1 1 -1
-0 -1 -1
-0 1 -1
-1 -1 -1
-1 1 -1
--1 -1 1
--1 1 1
-0 -1 1
-0 1 1
-1 -1 1
-1 1 1
-0 -1 -1
-0 1 -1
-0 -1 1
-0 1 1
+-1.000000e+00 -1.000000e+00 -1.000000e+00
+-1.000000e+00 1.000000e+00 -1.000000e+00
+0.000000e+00 -1.000000e+00 -1.000000e+00
+0.000000e+00 1.000000e+00 -1.000000e+00
+1.000000e+00 -1.000000e+00 -1.000000e+00
+1.000000e+00 1.000000e+00 -1.000000e+00
+-1.000000e+00 -1.000000e+00 1.000000e+00
+-1.000000e+00 1.000000e+00 1.000000e+00
+0.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.000000e+00 1.000000e+00
+1.000000e+00 -1.000000e+00 1.000000e+00
+1.000000e+00 1.000000e+00 1.000000e+00
+0.000000e+00 -1.000000e+00 -1.000000e+00
+0.000000e+00 1.000000e+00 -1.000000e+00
+0.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.000000e+00 1.000000e+00
CELLS 1 9
8 2 4 5 3 8 10 11 9
CELL_TYPES 1
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_mat_vertex_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_mat_vertex_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_mat_vertex_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,77 +3,77 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 16 double
--1 -1 -1
--1 1 -1
-0 -1 -1
-0 1 -1
-1 -1 -1
-1 1 -1
--1 -1 1
--1 1 1
-0 -1 1
-0 1 1
-1 -1 1
-1 1 1
-0 -1 -1
-0 1 -1
-0 -1 1
-0 1 1
+-1.000000e+00 -1.000000e+00 -1.000000e+00
+-1.000000e+00 1.000000e+00 -1.000000e+00
+0.000000e+00 -1.000000e+00 -1.000000e+00
+0.000000e+00 1.000000e+00 -1.000000e+00
+1.000000e+00 -1.000000e+00 -1.000000e+00
+1.000000e+00 1.000000e+00 -1.000000e+00
+-1.000000e+00 -1.000000e+00 1.000000e+00
+-1.000000e+00 1.000000e+00 1.000000e+00
+0.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.000000e+00 1.000000e+00
+1.000000e+00 -1.000000e+00 1.000000e+00
+1.000000e+00 1.000000e+00 1.000000e+00
+0.000000e+00 -1.000000e+00 -1.000000e+00
+0.000000e+00 1.000000e+00 -1.000000e+00
+0.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.000000e+00 1.000000e+00
CELLS 1 9
8 2 4 5 3 8 10 11 9
CELL_TYPES 1
12
POINT_DATA 16
VECTORS displacements double
-1.1 2.2 3.3
-4.4 5.5 6.6
-7.7 8.8 9.9
-10.1 11.2 12.3
-1.2 2.3 3.4
-4.5 5.6 6.7
-7.8 8.9 9
-10.2 11.3 12.4
-1.3 2.4 3.5
-4.6 5.7 6.8
-7.9 8 9.1
-10.2 11.3 12.4
-13.5 14.6 15.7
-16.8 17.9 18.1
-19.2 20.3 21.4
-22.5 23.6 24.7
+1.100000e+00 2.200000e+00 3.300000e+00
+4.400000e+00 5.500000e+00 6.600000e+00
+7.700000e+00 8.800000e+00 9.900000e+00
+1.010000e+01 1.120000e+01 1.230000e+01
+1.200000e+00 2.300000e+00 3.400000e+00
+4.500000e+00 5.600000e+00 6.700000e+00
+7.800000e+00 8.900000e+00 9.000000e+00
+1.020000e+01 1.130000e+01 1.240000e+01
+1.300000e+00 2.400000e+00 3.500000e+00
+4.600000e+00 5.700000e+00 6.800000e+00
+7.900000e+00 8.000000e+00 9.100000e+00
+1.020000e+01 1.130000e+01 1.240000e+01
+1.350000e+01 1.460000e+01 1.570000e+01
+1.680000e+01 1.790000e+01 1.810000e+01
+1.920000e+01 2.030000e+01 2.140000e+01
+2.250000e+01 2.360000e+01 2.470000e+01
SCALARS pressure double 1
LOOKUP_TABLE default
-2.1
-3.2
-4.3
-5.4
-6.5
-7.6
-8.7
-9.8
-10
-12.1
-11.1
-13.1
-14.1
-15.1
-16.1
-17.1
+2.100000e+00
+3.200000e+00
+4.300000e+00
+5.400000e+00
+6.500000e+00
+7.600000e+00
+8.700000e+00
+9.800000e+00
+1.000000e+01
+1.210000e+01
+1.110000e+01
+1.310000e+01
+1.410000e+01
+1.510000e+01
+1.610000e+01
+1.710000e+01
SCALARS other double 2
LOOKUP_TABLE default
-1.2 2.3
-3.4 4.5
-5.6 6.7
-7.8 8.9
-1.3 2.4
-3.5 4.6
-5.7 6.8
-7.9 8
-1.3 2.4
-3.5 4.6
-5.7 6.8
-8 1.4
-2.5 3.6
-4.8 1.5
-2.6 3.7
-4.8 5.9
+1.200000e+00 2.300000e+00
+3.400000e+00 4.500000e+00
+5.600000e+00 6.700000e+00
+7.800000e+00 8.900000e+00
+1.300000e+00 2.400000e+00
+3.500000e+00 4.600000e+00
+5.700000e+00 6.800000e+00
+7.900000e+00 8.000000e+00
+1.300000e+00 2.400000e+00
+3.500000e+00 4.600000e+00
+5.700000e+00 6.800000e+00
+8.000000e+00 1.400000e+00
+2.500000e+00 3.600000e+00
+4.800000e+00 1.500000e+00
+2.600000e+00 3.700000e+00
+4.800000e+00 5.900000e+00
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_surf_cell_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_surf_cell_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_surf_cell_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,12 +3,12 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 6 double
--1 -1 1
--1 1 1
-0 -1 1
-0 1 1
-1 -1 1
-1 1 1
+-1.000000e+00 -1.000000e+00 1.000000e+00
+-1.000000e+00 1.000000e+00 1.000000e+00
+0.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.000000e+00 1.000000e+00
+1.000000e+00 -1.000000e+00 1.000000e+00
+1.000000e+00 1.000000e+00 1.000000e+00
CELLS 2 10
4 2 3 1 0
4 4 5 3 2
@@ -17,13 +17,13 @@
9
CELL_DATA 2
VECTORS traction double
-1.1 2.2 3.3
-4.4 5.5 6.6
+1.100000e+00 2.200000e+00 3.300000e+00
+4.400000e+00 5.500000e+00 6.600000e+00
SCALARS pressure double 1
LOOKUP_TABLE default
-2.1
-3.2
+2.100000e+00
+3.200000e+00
SCALARS other double 6
LOOKUP_TABLE default
-1.2 2.3 3.4 4.5 5.6 6.7
-7.8 8.9 9 10.1 11.2 12.3
+1.200000e+00 2.300000e+00 3.400000e+00 4.500000e+00 5.600000e+00 6.700000e+00
+7.800000e+00 8.900000e+00 9.000000e+00 1.010000e+01 1.120000e+01 1.230000e+01
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_surf_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_surf_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_surf_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,12 +3,12 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 6 double
--1 -1 1
--1 1 1
-0 -1 1
-0 1 1
-1 -1 1
-1 1 1
+-1.000000e+00 -1.000000e+00 1.000000e+00
+-1.000000e+00 1.000000e+00 1.000000e+00
+0.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.000000e+00 1.000000e+00
+1.000000e+00 -1.000000e+00 1.000000e+00
+1.000000e+00 1.000000e+00 1.000000e+00
CELLS 2 10
4 2 3 1 0
4 4 5 3 2
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_surf_vertex_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_surf_vertex_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_surf_vertex_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,12 +3,12 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 6 double
--1 -1 1
--1 1 1
-0 -1 1
-0 1 1
-1 -1 1
-1 1 1
+-1.000000e+00 -1.000000e+00 1.000000e+00
+-1.000000e+00 1.000000e+00 1.000000e+00
+0.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.000000e+00 1.000000e+00
+1.000000e+00 -1.000000e+00 1.000000e+00
+1.000000e+00 1.000000e+00 1.000000e+00
CELLS 2 10
4 2 3 1 0
4 4 5 3 2
@@ -17,25 +17,25 @@
9
POINT_DATA 6
VECTORS displacements double
-7.8 8.9 9
-10.2 11.3 12.4
-1.3 2.4 3.5
-4.6 5.7 6.8
-7.9 8.1 9.2
-10.3 11.4 12.5
+7.800000e+00 8.900000e+00 9.000000e+00
+1.020000e+01 1.130000e+01 1.240000e+01
+1.300000e+00 2.400000e+00 3.500000e+00
+4.600000e+00 5.700000e+00 6.800000e+00
+7.900000e+00 8.100000e+00 9.200000e+00
+1.030000e+01 1.140000e+01 1.250000e+01
SCALARS pressure double 1
LOOKUP_TABLE default
-8.7
-9.8
-10.9
-11.8
-12.7
-13.6
+8.700000e+00
+9.800000e+00
+1.090000e+01
+1.180000e+01
+1.270000e+01
+1.360000e+01
SCALARS other double 2
LOOKUP_TABLE default
-5.7 6.8
-7.9 8
-8.1 8.2
-9.2 9.3
-10.4 10.5
-11.5 11.6
+5.700000e+00 6.800000e+00
+7.900000e+00 8.000000e+00
+8.100000e+00 8.200000e+00
+9.200000e+00 9.300000e+00
+1.040000e+01 1.050000e+01
+1.150000e+01 1.160000e+01
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,22 +3,22 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 16 double
--1 -1 -1
--1 1 -1
-0 -1 -1
-0 1 -1
-1 -1 -1
-1 1 -1
--1 -1 1
--1 1 1
-0 -1 1
-0 1 1
-1 -1 1
-1 1 1
-0 -1 -1
-0 1 -1
-0 -1 1
-0 1 1
+-1.000000e+00 -1.000000e+00 -1.000000e+00
+-1.000000e+00 1.000000e+00 -1.000000e+00
+0.000000e+00 -1.000000e+00 -1.000000e+00
+0.000000e+00 1.000000e+00 -1.000000e+00
+1.000000e+00 -1.000000e+00 -1.000000e+00
+1.000000e+00 1.000000e+00 -1.000000e+00
+-1.000000e+00 -1.000000e+00 1.000000e+00
+-1.000000e+00 1.000000e+00 1.000000e+00
+0.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.000000e+00 1.000000e+00
+1.000000e+00 -1.000000e+00 1.000000e+00
+1.000000e+00 1.000000e+00 1.000000e+00
+0.000000e+00 -1.000000e+00 -1.000000e+00
+0.000000e+00 1.000000e+00 -1.000000e+00
+0.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.000000e+00 1.000000e+00
CELLS 2 18
8 0 12 13 1 6 14 15 7
8 2 4 5 3 8 10 11 9
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_vertex_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_vertex_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/hex8_vertex_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,22 +3,22 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 16 double
--1 -1 -1
--1 1 -1
-0 -1 -1
-0 1 -1
-1 -1 -1
-1 1 -1
--1 -1 1
--1 1 1
-0 -1 1
-0 1 1
-1 -1 1
-1 1 1
-0 -1 -1
-0 1 -1
-0 -1 1
-0 1 1
+-1.000000e+00 -1.000000e+00 -1.000000e+00
+-1.000000e+00 1.000000e+00 -1.000000e+00
+0.000000e+00 -1.000000e+00 -1.000000e+00
+0.000000e+00 1.000000e+00 -1.000000e+00
+1.000000e+00 -1.000000e+00 -1.000000e+00
+1.000000e+00 1.000000e+00 -1.000000e+00
+-1.000000e+00 -1.000000e+00 1.000000e+00
+-1.000000e+00 1.000000e+00 1.000000e+00
+0.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.000000e+00 1.000000e+00
+1.000000e+00 -1.000000e+00 1.000000e+00
+1.000000e+00 1.000000e+00 1.000000e+00
+0.000000e+00 -1.000000e+00 -1.000000e+00
+0.000000e+00 1.000000e+00 -1.000000e+00
+0.000000e+00 -1.000000e+00 1.000000e+00
+0.000000e+00 1.000000e+00 1.000000e+00
CELLS 2 18
8 0 12 13 1 6 14 15 7
8 2 4 5 3 8 10 11 9
@@ -27,55 +27,55 @@
12
POINT_DATA 16
VECTORS displacements double
-1.1 2.2 3.3
-4.4 5.5 6.6
-7.7 8.8 9.9
-10.1 11.2 12.3
-1.2 2.3 3.4
-4.5 5.6 6.7
-7.8 8.9 9
-10.2 11.3 12.4
-1.3 2.4 3.5
-4.6 5.7 6.8
-7.9 8 9.1
-10.2 11.3 12.4
-13.5 14.6 15.7
-16.8 17.9 18.1
-19.2 20.3 21.4
-22.5 23.6 24.7
+1.100000e+00 2.200000e+00 3.300000e+00
+4.400000e+00 5.500000e+00 6.600000e+00
+7.700000e+00 8.800000e+00 9.900000e+00
+1.010000e+01 1.120000e+01 1.230000e+01
+1.200000e+00 2.300000e+00 3.400000e+00
+4.500000e+00 5.600000e+00 6.700000e+00
+7.800000e+00 8.900000e+00 9.000000e+00
+1.020000e+01 1.130000e+01 1.240000e+01
+1.300000e+00 2.400000e+00 3.500000e+00
+4.600000e+00 5.700000e+00 6.800000e+00
+7.900000e+00 8.000000e+00 9.100000e+00
+1.020000e+01 1.130000e+01 1.240000e+01
+1.350000e+01 1.460000e+01 1.570000e+01
+1.680000e+01 1.790000e+01 1.810000e+01
+1.920000e+01 2.030000e+01 2.140000e+01
+2.250000e+01 2.360000e+01 2.470000e+01
SCALARS pressure double 1
LOOKUP_TABLE default
-2.1
-3.2
-4.3
-5.4
-6.5
-7.6
-8.7
-9.8
-10
-12.1
-11.1
-13.1
-14.1
-15.1
-16.1
-17.1
+2.100000e+00
+3.200000e+00
+4.300000e+00
+5.400000e+00
+6.500000e+00
+7.600000e+00
+8.700000e+00
+9.800000e+00
+1.000000e+01
+1.210000e+01
+1.110000e+01
+1.310000e+01
+1.410000e+01
+1.510000e+01
+1.610000e+01
+1.710000e+01
SCALARS other double 2
LOOKUP_TABLE default
-1.2 2.3
-3.4 4.5
-5.6 6.7
-7.8 8.9
-1.3 2.4
-3.5 4.6
-5.7 6.8
-7.9 8
-1.3 2.4
-3.5 4.6
-5.7 6.8
-8 1.4
-2.5 3.6
-4.8 1.5
-2.6 3.7
-4.8 5.9
+1.200000e+00 2.300000e+00
+3.400000e+00 4.500000e+00
+5.600000e+00 6.700000e+00
+7.800000e+00 8.900000e+00
+1.300000e+00 2.400000e+00
+3.500000e+00 4.600000e+00
+5.700000e+00 6.800000e+00
+7.900000e+00 8.000000e+00
+1.300000e+00 2.400000e+00
+3.500000e+00 4.600000e+00
+5.700000e+00 6.800000e+00
+8.000000e+00 1.400000e+00
+2.500000e+00 3.600000e+00
+4.800000e+00 1.500000e+00
+2.600000e+00 3.700000e+00
+4.800000e+00 5.900000e+00
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/line2_cell_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/line2_cell_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/line2_cell_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,10 +3,10 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 4 double
--1 0.0 0.0
-0 0.0 0.0
-1 0.0 0.0
-0 0.0 0.0
+-1.000000e+00 0.0 0.0
+0.000000e+00 0.0 0.0
+1.000000e+00 0.0 0.0
+0.000000e+00 0.0 0.0
CELLS 2 6
2 0 3
2 1 2
@@ -15,13 +15,13 @@
3
CELL_DATA 2
VECTORS traction double
-1.1 0.0 0.0
-2.2 0.0 0.0
+1.100000e+00 0.0 0.0
+2.200000e+00 0.0 0.0
SCALARS pressure double 1
LOOKUP_TABLE default
-2.1
-2.2
+2.100000e+00
+2.200000e+00
SCALARS other double 1
LOOKUP_TABLE default
-1.2
-2.3
+1.200000e+00
+2.300000e+00
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/line2_mat_cell_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/line2_mat_cell_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/line2_mat_cell_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,20 +3,20 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 4 double
--1 0.0 0.0
-0 0.0 0.0
-1 0.0 0.0
-0 0.0 0.0
+-1.000000e+00 0.0 0.0
+0.000000e+00 0.0 0.0
+1.000000e+00 0.0 0.0
+0.000000e+00 0.0 0.0
CELLS 1 3
2 0 3
CELL_TYPES 1
3
CELL_DATA 1
VECTORS traction double
-1.1 0.0 0.0
+1.100000e+00 0.0 0.0
SCALARS pressure double 1
LOOKUP_TABLE default
-2.1
+2.100000e+00
SCALARS other double 1
LOOKUP_TABLE default
-1.2
+1.200000e+00
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/line2_mat_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/line2_mat_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/line2_mat_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,10 +3,10 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 4 double
--1 0.0 0.0
-0 0.0 0.0
-1 0.0 0.0
-0 0.0 0.0
+-1.000000e+00 0.0 0.0
+0.000000e+00 0.0 0.0
+1.000000e+00 0.0 0.0
+0.000000e+00 0.0 0.0
CELLS 1 3
2 0 3
CELL_TYPES 1
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/line2_mat_vertex_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/line2_mat_vertex_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/line2_mat_vertex_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,29 +3,29 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 4 double
--1 0.0 0.0
-0 0.0 0.0
-1 0.0 0.0
-0 0.0 0.0
+-1.000000e+00 0.0 0.0
+0.000000e+00 0.0 0.0
+1.000000e+00 0.0 0.0
+0.000000e+00 0.0 0.0
CELLS 1 3
2 0 3
CELL_TYPES 1
3
POINT_DATA 4
VECTORS displacements double
-1.1 0.0 0.0
-2.2 0.0 0.0
-3.3 0.0 0.0
-4.4 0.0 0.0
+1.100000e+00 0.0 0.0
+2.200000e+00 0.0 0.0
+3.300000e+00 0.0 0.0
+4.400000e+00 0.0 0.0
SCALARS pressure double 1
LOOKUP_TABLE default
-2.1
-3.2
-4.3
-5.4
+2.100000e+00
+3.200000e+00
+4.300000e+00
+5.400000e+00
SCALARS other double 2
LOOKUP_TABLE default
-1.2 2.3
-3.4 4.5
-5.6 6.7
-7.8 8.9
+1.200000e+00 2.300000e+00
+3.400000e+00 4.500000e+00
+5.600000e+00 6.700000e+00
+7.800000e+00 8.900000e+00
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/line2_surf_cell_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/line2_surf_cell_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/line2_surf_cell_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,16 +3,16 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 1 double
--1 0.0 0.0
+-1.000000e+00 0.0 0.0
CELLS 1 2
1 0
CELL_TYPES 1
-1
CELL_DATA 1
VECTORS traction double
-1.1 2.2 0.0
+1.100000e+00 2.200000e+00 0.0
SCALARS pressure double 1
LOOKUP_TABLE default
-2.1
+2.100000e+00
VECTORS other double
-1.2 2.3 3.4
+1.200000e+00 2.300000e+00 3.400000e+00
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/line2_surf_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/line2_surf_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/line2_surf_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,7 +3,7 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 1 double
--1 0.0 0.0
+-1.000000e+00 0.0 0.0
CELLS 1 2
1 0
CELL_TYPES 1
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/line2_surf_vertex_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/line2_surf_vertex_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/line2_surf_vertex_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,17 +3,17 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 1 double
--1 0.0 0.0
+-1.000000e+00 0.0 0.0
CELLS 1 2
1 0
CELL_TYPES 1
-1
POINT_DATA 1
VECTORS displacements double
-1.1 2.2 0.0
+1.100000e+00 2.200000e+00 0.0
SCALARS pressure double 1
LOOKUP_TABLE default
-2.1
+2.100000e+00
SCALARS other double 2
LOOKUP_TABLE default
-1.2 2.3
+1.200000e+00 2.300000e+00
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/line2_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/line2_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/line2_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,10 +3,10 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 4 double
--1 0.0 0.0
-0 0.0 0.0
-1 0.0 0.0
-0 0.0 0.0
+-1.000000e+00 0.0 0.0
+0.000000e+00 0.0 0.0
+1.000000e+00 0.0 0.0
+0.000000e+00 0.0 0.0
CELLS 2 6
2 0 3
2 1 2
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/line2_vertex_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/line2_vertex_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/line2_vertex_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,10 +3,10 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 4 double
--1 0.0 0.0
-0 0.0 0.0
-1 0.0 0.0
-0 0.0 0.0
+-1.000000e+00 0.0 0.0
+0.000000e+00 0.0 0.0
+1.000000e+00 0.0 0.0
+0.000000e+00 0.0 0.0
CELLS 2 6
2 0 3
2 1 2
@@ -15,19 +15,19 @@
3
POINT_DATA 4
VECTORS displacements double
-1.1 0.0 0.0
-2.2 0.0 0.0
-3.3 0.0 0.0
-4.4 0.0 0.0
+1.100000e+00 0.0 0.0
+2.200000e+00 0.0 0.0
+3.300000e+00 0.0 0.0
+4.400000e+00 0.0 0.0
SCALARS pressure double 1
LOOKUP_TABLE default
-2.1
-3.2
-4.3
-5.4
+2.100000e+00
+3.200000e+00
+4.300000e+00
+5.400000e+00
SCALARS other double 2
LOOKUP_TABLE default
-1.2 2.3
-3.4 4.5
-5.6 6.7
-7.8 8.9
+1.200000e+00 2.300000e+00
+3.400000e+00 4.500000e+00
+5.600000e+00 6.700000e+00
+7.800000e+00 8.900000e+00
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/output_cell_filter_t12.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/output_cell_filter_t12.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/output_cell_filter_t12.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,10 +3,10 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 4 double
--1 0 0.0
-0 -1 0.0
-0 1 0.0
-1 0 0.0
+-1.000000e+00 0.000000e+00 0.0
+0.000000e+00 -1.000000e+00 0.0
+0.000000e+00 1.000000e+00 0.0
+1.000000e+00 0.000000e+00 0.0
CELLS 2 8
3 0 1 2
3 1 3 2
@@ -16,5 +16,5 @@
CELL_DATA 2
SCALARS field data double 1
LOOKUP_TABLE default
-1.125
-2.125
+1.125000e+00
+2.125000e+00
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/output_cell_t12.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/output_cell_t12.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/output_cell_t12.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,10 +3,10 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 4 double
--1 0 0.0
-0 -1 0.0
-0 1 0.0
-1 0 0.0
+-1.000000e+00 0.000000e+00 0.0
+0.000000e+00 -1.000000e+00 0.0
+0.000000e+00 1.000000e+00 0.0
+1.000000e+00 0.000000e+00 0.0
CELLS 2 8
3 0 1 2
3 1 3 2
@@ -16,5 +16,5 @@
CELL_DATA 2
SCALARS field data double 2
LOOKUP_TABLE default
-1.1 1.2
-2.1 2.2
+1.100000e+00 1.200000e+00
+2.100000e+00 2.200000e+00
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/output_t12.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/output_t12.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/output_t12.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,10 +3,10 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 4 double
--1 0 0.0
-0 -1 0.0
-0 1 0.0
-1 0 0.0
+-1.000000e+00 0.000000e+00 0.0
+0.000000e+00 -1.000000e+00 0.0
+0.000000e+00 1.000000e+00 0.0
+1.000000e+00 0.000000e+00 0.0
CELLS 2 8
3 0 1 2
3 1 3 2
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/output_vertex_filter_t12.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/output_vertex_filter_t12.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/output_vertex_filter_t12.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,10 +3,10 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 4 double
--1 0 0.0
-0 -1 0.0
-0 1 0.0
-1 0 0.0
+-1.000000e+00 0.000000e+00 0.0
+0.000000e+00 -1.000000e+00 0.0
+0.000000e+00 1.000000e+00 0.0
+1.000000e+00 0.000000e+00 0.0
CELLS 2 8
3 0 1 2
3 1 3 2
@@ -16,7 +16,7 @@
POINT_DATA 4
SCALARS field data double 1
LOOKUP_TABLE default
-1.62788
-3.04138
-4.45533
-5.86941
+1.627882e+00
+3.041381e+00
+4.455334e+00
+5.869412e+00
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/output_vertex_t12.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/output_vertex_t12.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/output_vertex_t12.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,10 +3,10 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 4 double
--1 0 0.0
-0 -1 0.0
-0 1 0.0
-1 0 0.0
+-1.000000e+00 0.000000e+00 0.0
+0.000000e+00 -1.000000e+00 0.0
+0.000000e+00 1.000000e+00 0.0
+1.000000e+00 0.000000e+00 0.0
CELLS 2 8
3 0 1 2
3 1 3 2
@@ -15,7 +15,7 @@
5
POINT_DATA 4
VECTORS field data double
-1.1 1.2 0.0
-2.1 2.2 0.0
-3.1 3.2 0.0
-4.1 4.2 0.0
+1.100000e+00 1.200000e+00 0.0
+2.100000e+00 2.200000e+00 0.0
+3.100000e+00 3.200000e+00 0.0
+4.100000e+00 4.200000e+00 0.0
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_bc_cell_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_bc_cell_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_bc_cell_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,9 +3,9 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 3 double
--1 -1 0.0
-0 -1 0.0
-1 -1 0.0
+-1.000000e+00 -1.000000e+00 0.0
+0.000000e+00 -1.000000e+00 0.0
+1.000000e+00 -1.000000e+00 0.0
CELLS 2 6
2 0 1
2 1 2
@@ -14,12 +14,12 @@
3
CELL_DATA 2
VECTORS traction double
-1.1 2.2 0.0
-3.3 4.4 0.0
+1.100000e+00 2.200000e+00 0.0
+3.300000e+00 4.400000e+00 0.0
SCALARS pressure double 1
LOOKUP_TABLE default
-2.1
-3.2
+2.100000e+00
+3.200000e+00
VECTORS other double
-1.2 2.3 3.4
-4.5 5.6 6.7
+1.200000e+00 2.300000e+00 3.400000e+00
+4.500000e+00 5.600000e+00 6.700000e+00
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_bc_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_bc_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_bc_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,9 +3,9 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 3 double
--1 -1 0.0
-0 -1 0.0
-1 -1 0.0
+-1.000000e+00 -1.000000e+00 0.0
+0.000000e+00 -1.000000e+00 0.0
+1.000000e+00 -1.000000e+00 0.0
CELLS 2 6
2 0 1
2 1 2
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_bc_vertex_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_bc_vertex_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_bc_vertex_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,9 +3,9 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 3 double
--1 -1 0.0
-0 -1 0.0
-1 -1 0.0
+-1.000000e+00 -1.000000e+00 0.0
+0.000000e+00 -1.000000e+00 0.0
+1.000000e+00 -1.000000e+00 0.0
CELLS 2 6
2 0 1
2 1 2
@@ -14,16 +14,16 @@
3
POINT_DATA 3
VECTORS displacements double
-1.1 2.2 0.0
-3.3 4.4 0.0
-5.5 6.6 0.0
+1.100000e+00 2.200000e+00 0.0
+3.300000e+00 4.400000e+00 0.0
+5.500000e+00 6.600000e+00 0.0
SCALARS pressure double 1
LOOKUP_TABLE default
-2.1
-3.2
-4.3
+2.100000e+00
+3.200000e+00
+4.300000e+00
SCALARS other double 2
LOOKUP_TABLE default
-1.2 2.3
-3.4 4.5
-5.6 6.7
+1.200000e+00 2.300000e+00
+3.400000e+00 4.500000e+00
+5.600000e+00 6.700000e+00
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_cell_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_cell_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_cell_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,12 +3,12 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 6 double
--1 -1 0.0
--1 1 0.0
-0 -1 0.0
-0 1 0.0
-1 -1 0.0
-1 1 0.0
+-1.000000e+00 -1.000000e+00 0.0
+-1.000000e+00 1.000000e+00 0.0
+0.000000e+00 -1.000000e+00 0.0
+0.000000e+00 1.000000e+00 0.0
+1.000000e+00 -1.000000e+00 0.0
+1.000000e+00 1.000000e+00 0.0
CELLS 2 10
4 0 2 3 1
4 2 4 5 3
@@ -17,12 +17,12 @@
9
CELL_DATA 2
VECTORS traction double
-1.1 2.2 0.0
-3.3 4.4 0.0
+1.100000e+00 2.200000e+00 0.0
+3.300000e+00 4.400000e+00 0.0
SCALARS pressure double 1
LOOKUP_TABLE default
-2.1
-2.2
+2.100000e+00
+2.200000e+00
VECTORS other double
-1.2 2.3 3.4
-4.5 5.6 6.7
+1.200000e+00 2.300000e+00 3.400000e+00
+4.500000e+00 5.600000e+00 6.700000e+00
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_fault_cell_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_fault_cell_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_fault_cell_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,17 +3,17 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 2 double
-0 -1 0.0
-0 1 0.0
+0.000000e+00 -1.000000e+00 0.0
+0.000000e+00 1.000000e+00 0.0
CELLS 1 3
2 1 0
CELL_TYPES 1
3
CELL_DATA 1
VECTORS traction double
-1.1 2.2 0.0
+1.100000e+00 2.200000e+00 0.0
SCALARS pressure double 1
LOOKUP_TABLE default
-2.1
+2.100000e+00
VECTORS other double
-1.2 2.3 3.4
+1.200000e+00 2.300000e+00 3.400000e+00
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_fault_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_fault_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_fault_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,8 +3,8 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 2 double
-0 -1 0.0
-0 1 0.0
+0.000000e+00 -1.000000e+00 0.0
+0.000000e+00 1.000000e+00 0.0
CELLS 1 3
2 1 0
CELL_TYPES 1
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_fault_vertex_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_fault_vertex_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_fault_vertex_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,21 +3,21 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 2 double
-0 -1 0.0
-0 1 0.0
+0.000000e+00 -1.000000e+00 0.0
+0.000000e+00 1.000000e+00 0.0
CELLS 1 3
2 1 0
CELL_TYPES 1
3
POINT_DATA 2
VECTORS displacements double
-1.1 2.2 0.0
-3.3 4.4 0.0
+1.100000e+00 2.200000e+00 0.0
+3.300000e+00 4.400000e+00 0.0
SCALARS pressure double 1
LOOKUP_TABLE default
-2.1
-3.2
+2.100000e+00
+3.200000e+00
SCALARS other double 2
LOOKUP_TABLE default
-1.2 2.3
-3.4 4.5
+1.200000e+00 2.300000e+00
+3.400000e+00 4.500000e+00
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_mat_cell_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_mat_cell_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_mat_cell_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,21 +3,21 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 6 double
--1 -1 0.0
--1 1 0.0
-0 -1 0.0
-0 1 0.0
-1 -1 0.0
-1 1 0.0
+-1.000000e+00 -1.000000e+00 0.0
+-1.000000e+00 1.000000e+00 0.0
+0.000000e+00 -1.000000e+00 0.0
+0.000000e+00 1.000000e+00 0.0
+1.000000e+00 -1.000000e+00 0.0
+1.000000e+00 1.000000e+00 0.0
CELLS 1 5
4 2 4 5 3
CELL_TYPES 1
9
CELL_DATA 1
VECTORS traction double
-1.1 2.2 0.0
+1.100000e+00 2.200000e+00 0.0
SCALARS pressure double 1
LOOKUP_TABLE default
-2.1
+2.100000e+00
VECTORS other double
-1.2 2.3 3.4
+1.200000e+00 2.300000e+00 3.400000e+00
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_mat_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_mat_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_mat_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,12 +3,12 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 6 double
--1 -1 0.0
--1 1 0.0
-0 -1 0.0
-0 1 0.0
-1 -1 0.0
-1 1 0.0
+-1.000000e+00 -1.000000e+00 0.0
+-1.000000e+00 1.000000e+00 0.0
+0.000000e+00 -1.000000e+00 0.0
+0.000000e+00 1.000000e+00 0.0
+1.000000e+00 -1.000000e+00 0.0
+1.000000e+00 1.000000e+00 0.0
CELLS 1 5
4 2 4 5 3
CELL_TYPES 1
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_mat_vertex_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_mat_vertex_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_mat_vertex_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,37 +3,37 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 6 double
--1 -1 0.0
--1 1 0.0
-0 -1 0.0
-0 1 0.0
-1 -1 0.0
-1 1 0.0
+-1.000000e+00 -1.000000e+00 0.0
+-1.000000e+00 1.000000e+00 0.0
+0.000000e+00 -1.000000e+00 0.0
+0.000000e+00 1.000000e+00 0.0
+1.000000e+00 -1.000000e+00 0.0
+1.000000e+00 1.000000e+00 0.0
CELLS 1 5
4 2 4 5 3
CELL_TYPES 1
9
POINT_DATA 6
VECTORS displacements double
-1.1 2.2 0.0
-3.3 4.4 0.0
-5.5 6.6 0.0
-7.7 8.8 0.0
-9.9 10.1 0.0
-11.2 12.3 0.0
+1.100000e+00 2.200000e+00 0.0
+3.300000e+00 4.400000e+00 0.0
+5.500000e+00 6.600000e+00 0.0
+7.700000e+00 8.800000e+00 0.0
+9.900000e+00 1.010000e+01 0.0
+1.120000e+01 1.230000e+01 0.0
SCALARS pressure double 1
LOOKUP_TABLE default
-2.1
-3.2
-4.3
-5.4
-6.5
-7.6
+2.100000e+00
+3.200000e+00
+4.300000e+00
+5.400000e+00
+6.500000e+00
+7.600000e+00
SCALARS other double 2
LOOKUP_TABLE default
-1.2 2.3
-3.4 4.5
-5.6 6.7
-7.8 8.9
-9.8 7.6
-6.5 5.4
+1.200000e+00 2.300000e+00
+3.400000e+00 4.500000e+00
+5.600000e+00 6.700000e+00
+7.800000e+00 8.900000e+00
+9.800000e+00 7.600000e+00
+6.500000e+00 5.400000e+00
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_surf_cell_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_surf_cell_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_surf_cell_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,9 +3,9 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 3 double
--1 -1 0.0
-0 -1 0.0
-1 -1 0.0
+-1.000000e+00 -1.000000e+00 0.0
+0.000000e+00 -1.000000e+00 0.0
+1.000000e+00 -1.000000e+00 0.0
CELLS 2 6
2 0 1
2 1 2
@@ -14,12 +14,12 @@
3
CELL_DATA 2
VECTORS traction double
-1.1 2.2 0.0
-3.3 4.4 0.0
+1.100000e+00 2.200000e+00 0.0
+3.300000e+00 4.400000e+00 0.0
SCALARS pressure double 1
LOOKUP_TABLE default
-2.1
-3.2
+2.100000e+00
+3.200000e+00
VECTORS other double
-1.2 2.3 3.4
-4.5 5.6 6.7
+1.200000e+00 2.300000e+00 3.400000e+00
+4.500000e+00 5.600000e+00 6.700000e+00
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_surf_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_surf_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_surf_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,9 +3,9 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 3 double
--1 -1 0.0
-0 -1 0.0
-1 -1 0.0
+-1.000000e+00 -1.000000e+00 0.0
+0.000000e+00 -1.000000e+00 0.0
+1.000000e+00 -1.000000e+00 0.0
CELLS 2 6
2 0 1
2 1 2
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_surf_vertex_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_surf_vertex_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_surf_vertex_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,9 +3,9 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 3 double
--1 -1 0.0
-0 -1 0.0
-1 -1 0.0
+-1.000000e+00 -1.000000e+00 0.0
+0.000000e+00 -1.000000e+00 0.0
+1.000000e+00 -1.000000e+00 0.0
CELLS 2 6
2 0 1
2 1 2
@@ -14,16 +14,16 @@
3
POINT_DATA 3
VECTORS displacements double
-1.1 2.2 0.0
-5.5 6.6 0.0
-9.9 10 0.0
+1.100000e+00 2.200000e+00 0.0
+5.500000e+00 6.600000e+00 0.0
+9.900000e+00 1.000000e+01 0.0
SCALARS pressure double 1
LOOKUP_TABLE default
-2.1
-4.3
-6.5
+2.100000e+00
+4.300000e+00
+6.500000e+00
SCALARS other double 2
LOOKUP_TABLE default
-1.2 2.3
-5.6 6.7
-9.1 10.2
+1.200000e+00 2.300000e+00
+5.600000e+00 6.700000e+00
+9.100000e+00 1.020000e+01
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,12 +3,12 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 6 double
--1 -1 0.0
--1 1 0.0
-0 -1 0.0
-0 1 0.0
-1 -1 0.0
-1 1 0.0
+-1.000000e+00 -1.000000e+00 0.0
+-1.000000e+00 1.000000e+00 0.0
+0.000000e+00 -1.000000e+00 0.0
+0.000000e+00 1.000000e+00 0.0
+1.000000e+00 -1.000000e+00 0.0
+1.000000e+00 1.000000e+00 0.0
CELLS 2 10
4 0 2 3 1
4 2 4 5 3
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_vertex_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_vertex_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/quad4_vertex_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,12 +3,12 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 6 double
--1 -1 0.0
--1 1 0.0
-0 -1 0.0
-0 1 0.0
-1 -1 0.0
-1 1 0.0
+-1.000000e+00 -1.000000e+00 0.0
+-1.000000e+00 1.000000e+00 0.0
+0.000000e+00 -1.000000e+00 0.0
+0.000000e+00 1.000000e+00 0.0
+1.000000e+00 -1.000000e+00 0.0
+1.000000e+00 1.000000e+00 0.0
CELLS 2 10
4 0 2 3 1
4 2 4 5 3
@@ -17,25 +17,25 @@
9
POINT_DATA 6
VECTORS displacements double
-1.1 2.2 0.0
-3.3 4.4 0.0
-5.5 6.6 0.0
-7.7 8.8 0.0
-9.9 10.1 0.0
-11.2 12.3 0.0
+1.100000e+00 2.200000e+00 0.0
+3.300000e+00 4.400000e+00 0.0
+5.500000e+00 6.600000e+00 0.0
+7.700000e+00 8.800000e+00 0.0
+9.900000e+00 1.010000e+01 0.0
+1.120000e+01 1.230000e+01 0.0
SCALARS pressure double 1
LOOKUP_TABLE default
-2.1
-3.2
-4.3
-5.4
-6.5
-7.6
+2.100000e+00
+3.200000e+00
+4.300000e+00
+5.400000e+00
+6.500000e+00
+7.600000e+00
SCALARS other double 2
LOOKUP_TABLE default
-1.2 2.3
-3.4 4.5
-5.6 6.7
-7.8 8.9
-9.8 7.6
-6.5 5.4
+1.200000e+00 2.300000e+00
+3.400000e+00 4.500000e+00
+5.600000e+00 6.700000e+00
+7.800000e+00 8.900000e+00
+9.800000e+00 7.600000e+00
+6.500000e+00 5.400000e+00
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_bc_cell_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_bc_cell_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_bc_cell_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,12 +3,12 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 6 double
--1 0 0
-0 -1 0
-0 1 0
-1 0 0
-0 -1 0
-0 1 0
+-1.000000e+00 0.000000e+00 0.000000e+00
+0.000000e+00 -1.000000e+00 0.000000e+00
+0.000000e+00 1.000000e+00 0.000000e+00
+1.000000e+00 0.000000e+00 0.000000e+00
+0.000000e+00 -1.000000e+00 0.000000e+00
+0.000000e+00 1.000000e+00 0.000000e+00
CELLS 2 8
3 0 2 1
3 4 5 3
@@ -17,13 +17,13 @@
5
CELL_DATA 2
VECTORS traction double
-1.1 2.2 3.3
-4.4 5.5 6.6
+1.100000e+00 2.200000e+00 3.300000e+00
+4.400000e+00 5.500000e+00 6.600000e+00
SCALARS pressure double 1
LOOKUP_TABLE default
-2.1
-3.2
+2.100000e+00
+3.200000e+00
SCALARS other double 6
LOOKUP_TABLE default
-1.2 2.3 3.4 4.5 5.6 6.7
-7.8 8.9 9 10.1 11.2 12.3
+1.200000e+00 2.300000e+00 3.400000e+00 4.500000e+00 5.600000e+00 6.700000e+00
+7.800000e+00 8.900000e+00 9.000000e+00 1.010000e+01 1.120000e+01 1.230000e+01
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_bc_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_bc_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_bc_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,12 +3,12 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 6 double
--1 0 0
-0 -1 0
-0 1 0
-1 0 0
-0 -1 0
-0 1 0
+-1.000000e+00 0.000000e+00 0.000000e+00
+0.000000e+00 -1.000000e+00 0.000000e+00
+0.000000e+00 1.000000e+00 0.000000e+00
+1.000000e+00 0.000000e+00 0.000000e+00
+0.000000e+00 -1.000000e+00 0.000000e+00
+0.000000e+00 1.000000e+00 0.000000e+00
CELLS 2 8
3 0 2 1
3 4 5 3
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_bc_vertex_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_bc_vertex_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_bc_vertex_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,12 +3,12 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 6 double
--1 0 0
-0 -1 0
-0 1 0
-1 0 0
-0 -1 0
-0 1 0
+-1.000000e+00 0.000000e+00 0.000000e+00
+0.000000e+00 -1.000000e+00 0.000000e+00
+0.000000e+00 1.000000e+00 0.000000e+00
+1.000000e+00 0.000000e+00 0.000000e+00
+0.000000e+00 -1.000000e+00 0.000000e+00
+0.000000e+00 1.000000e+00 0.000000e+00
CELLS 2 8
3 0 2 1
3 4 5 3
@@ -17,25 +17,25 @@
5
POINT_DATA 6
VECTORS displacements double
-1.1 2.2 3.3
-4.4 5.5 6.6
-7.7 8.8 9.9
-10 11.1 12.2
-13.3 14.4 15.5
-16.6 17.7 18.8
+1.100000e+00 2.200000e+00 3.300000e+00
+4.400000e+00 5.500000e+00 6.600000e+00
+7.700000e+00 8.800000e+00 9.900000e+00
+1.000000e+01 1.110000e+01 1.220000e+01
+1.330000e+01 1.440000e+01 1.550000e+01
+1.660000e+01 1.770000e+01 1.880000e+01
SCALARS pressure double 1
LOOKUP_TABLE default
-2.1
-3.2
-4.3
-5.4
-6.5
-7.6
+2.100000e+00
+3.200000e+00
+4.300000e+00
+5.400000e+00
+6.500000e+00
+7.600000e+00
SCALARS other double 2
LOOKUP_TABLE default
-1.2 2.3
-3.4 4.5
-5.6 6.7
-7.8 8.9
-9 10.1
-11.2 12.3
+1.200000e+00 2.300000e+00
+3.400000e+00 4.500000e+00
+5.600000e+00 6.700000e+00
+7.800000e+00 8.900000e+00
+9.000000e+00 1.010000e+01
+1.120000e+01 1.230000e+01
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_cell_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_cell_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_cell_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,14 +3,14 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 8 double
--1 0 0
-0 -1 0
-0 0 1
-0 1 0
-1 0 0
-0 -1 0
-0 0 1
-0 1 0
+-1.000000e+00 0.000000e+00 0.000000e+00
+0.000000e+00 -1.000000e+00 0.000000e+00
+0.000000e+00 0.000000e+00 1.000000e+00
+0.000000e+00 1.000000e+00 0.000000e+00
+1.000000e+00 0.000000e+00 0.000000e+00
+0.000000e+00 -1.000000e+00 0.000000e+00
+0.000000e+00 0.000000e+00 1.000000e+00
+0.000000e+00 1.000000e+00 0.000000e+00
CELLS 2 10
4 1 2 3 0
4 5 7 6 4
@@ -19,13 +19,13 @@
10
CELL_DATA 2
VECTORS traction double
-1.1 2.2 3.3
-4.4 5.5 6.6
+1.100000e+00 2.200000e+00 3.300000e+00
+4.400000e+00 5.500000e+00 6.600000e+00
SCALARS pressure double 1
LOOKUP_TABLE default
-2.1
-3.2
+2.100000e+00
+3.200000e+00
SCALARS other double 6
LOOKUP_TABLE default
-1.2 2.3 3.4 4.5 5.6 6.7
-7.8 8.9 9 10.1 11.2 12.3
+1.200000e+00 2.300000e+00 3.400000e+00 4.500000e+00 5.600000e+00 6.700000e+00
+7.800000e+00 8.900000e+00 9.000000e+00 1.010000e+01 1.120000e+01 1.230000e+01
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_fault_cell_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_fault_cell_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_fault_cell_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,19 +3,19 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 3 double
-0 -1 0
-0 0 1
-0 1 0
+0.000000e+00 -1.000000e+00 0.000000e+00
+0.000000e+00 0.000000e+00 1.000000e+00
+0.000000e+00 1.000000e+00 0.000000e+00
CELLS 1 4
3 1 0 2
CELL_TYPES 1
5
CELL_DATA 1
VECTORS traction double
-1.1 2.2 3.3
+1.100000e+00 2.200000e+00 3.300000e+00
SCALARS pressure double 1
LOOKUP_TABLE default
-2.1
+2.100000e+00
SCALARS other double 6
LOOKUP_TABLE default
-1.2 2.3 3.4 4.5 5.6 6.7
+1.200000e+00 2.300000e+00 3.400000e+00 4.500000e+00 5.600000e+00 6.700000e+00
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_fault_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_fault_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_fault_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,9 +3,9 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 3 double
-0 -1 0
-0 0 1
-0 1 0
+0.000000e+00 -1.000000e+00 0.000000e+00
+0.000000e+00 0.000000e+00 1.000000e+00
+0.000000e+00 1.000000e+00 0.000000e+00
CELLS 1 4
3 1 0 2
CELL_TYPES 1
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_fault_vertex_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_fault_vertex_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_fault_vertex_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,25 +3,25 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 3 double
-0 -1 0
-0 0 1
-0 1 0
+0.000000e+00 -1.000000e+00 0.000000e+00
+0.000000e+00 0.000000e+00 1.000000e+00
+0.000000e+00 1.000000e+00 0.000000e+00
CELLS 1 4
3 1 0 2
CELL_TYPES 1
5
POINT_DATA 3
VECTORS displacements double
-1.1 2.2 3.3
-4.4 5.5 6.6
-7.7 8.8 9.9
+1.100000e+00 2.200000e+00 3.300000e+00
+4.400000e+00 5.500000e+00 6.600000e+00
+7.700000e+00 8.800000e+00 9.900000e+00
SCALARS pressure double 1
LOOKUP_TABLE default
-2.1
-3.2
-4.3
+2.100000e+00
+3.200000e+00
+4.300000e+00
SCALARS other double 2
LOOKUP_TABLE default
-1.2 2.3
-3.4 4.5
-5.6 6.7
+1.200000e+00 2.300000e+00
+3.400000e+00 4.500000e+00
+5.600000e+00 6.700000e+00
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_mat_cell_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_mat_cell_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_mat_cell_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,14 +3,14 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 8 double
--1 0 0
-0 -1 0
-0 0 1
-0 1 0
-1 0 0
-0 -1 0
-0 0 1
-0 1 0
+-1.000000e+00 0.000000e+00 0.000000e+00
+0.000000e+00 -1.000000e+00 0.000000e+00
+0.000000e+00 0.000000e+00 1.000000e+00
+0.000000e+00 1.000000e+00 0.000000e+00
+1.000000e+00 0.000000e+00 0.000000e+00
+0.000000e+00 -1.000000e+00 0.000000e+00
+0.000000e+00 0.000000e+00 1.000000e+00
+0.000000e+00 1.000000e+00 0.000000e+00
CELLS 2 10
4 1 2 3 0
4 5 7 6 4
@@ -19,13 +19,13 @@
10
CELL_DATA 2
VECTORS traction double
-1.1 2.2 3.3
-4.4 5.5 6.6
+1.100000e+00 2.200000e+00 3.300000e+00
+4.400000e+00 5.500000e+00 6.600000e+00
SCALARS pressure double 1
LOOKUP_TABLE default
-2.1
-3.2
+2.100000e+00
+3.200000e+00
SCALARS other double 6
LOOKUP_TABLE default
-1.2 2.3 3.4 4.5 5.6 6.7
-7.8 8.9 9 10.1 11.2 12.3
+1.200000e+00 2.300000e+00 3.400000e+00 4.500000e+00 5.600000e+00 6.700000e+00
+7.800000e+00 8.900000e+00 9.000000e+00 1.010000e+01 1.120000e+01 1.230000e+01
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_mat_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_mat_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_mat_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,14 +3,14 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 8 double
--1 0 0
-0 -1 0
-0 0 1
-0 1 0
-1 0 0
-0 -1 0
-0 0 1
-0 1 0
+-1.000000e+00 0.000000e+00 0.000000e+00
+0.000000e+00 -1.000000e+00 0.000000e+00
+0.000000e+00 0.000000e+00 1.000000e+00
+0.000000e+00 1.000000e+00 0.000000e+00
+1.000000e+00 0.000000e+00 0.000000e+00
+0.000000e+00 -1.000000e+00 0.000000e+00
+0.000000e+00 0.000000e+00 1.000000e+00
+0.000000e+00 1.000000e+00 0.000000e+00
CELLS 2 10
4 1 2 3 0
4 5 7 6 4
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_mat_vertex_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_mat_vertex_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_mat_vertex_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,14 +3,14 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 8 double
--1 0 0
-0 -1 0
-0 0 1
-0 1 0
-1 0 0
-0 -1 0
-0 0 1
-0 1 0
+-1.000000e+00 0.000000e+00 0.000000e+00
+0.000000e+00 -1.000000e+00 0.000000e+00
+0.000000e+00 0.000000e+00 1.000000e+00
+0.000000e+00 1.000000e+00 0.000000e+00
+1.000000e+00 0.000000e+00 0.000000e+00
+0.000000e+00 -1.000000e+00 0.000000e+00
+0.000000e+00 0.000000e+00 1.000000e+00
+0.000000e+00 1.000000e+00 0.000000e+00
CELLS 2 10
4 1 2 3 0
4 5 7 6 4
@@ -19,31 +19,31 @@
10
POINT_DATA 8
VECTORS displacements double
-1.1 2.2 3.3
-4.4 5.5 6.6
-7.7 8.8 9.9
-10 11.1 12.2
-13.3 14.4 15.5
-16.6 17.7 18.8
-19.9 20 21.1
-22.2 23.3 24.4
+1.100000e+00 2.200000e+00 3.300000e+00
+4.400000e+00 5.500000e+00 6.600000e+00
+7.700000e+00 8.800000e+00 9.900000e+00
+1.000000e+01 1.110000e+01 1.220000e+01
+1.330000e+01 1.440000e+01 1.550000e+01
+1.660000e+01 1.770000e+01 1.880000e+01
+1.990000e+01 2.000000e+01 2.110000e+01
+2.220000e+01 2.330000e+01 2.440000e+01
SCALARS pressure double 1
LOOKUP_TABLE default
-2.1
-3.2
-4.3
-5.4
-6.5
-7.6
-8.7
-9.8
+2.100000e+00
+3.200000e+00
+4.300000e+00
+5.400000e+00
+6.500000e+00
+7.600000e+00
+8.700000e+00
+9.800000e+00
SCALARS other double 2
LOOKUP_TABLE default
-1.2 2.3
-3.4 4.5
-5.6 6.7
-7.8 8.9
-9 10.1
-11.2 12.3
-13.4 14.5
-15.6 16.7
+1.200000e+00 2.300000e+00
+3.400000e+00 4.500000e+00
+5.600000e+00 6.700000e+00
+7.800000e+00 8.900000e+00
+9.000000e+00 1.010000e+01
+1.120000e+01 1.230000e+01
+1.340000e+01 1.450000e+01
+1.560000e+01 1.670000e+01
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_surf_cell_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_surf_cell_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_surf_cell_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,10 +3,10 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 4 double
--1 0 0
-0 -1 0
-0 1 0
-1 0 0
+-1.000000e+00 0.000000e+00 0.000000e+00
+0.000000e+00 -1.000000e+00 0.000000e+00
+0.000000e+00 1.000000e+00 0.000000e+00
+1.000000e+00 0.000000e+00 0.000000e+00
CELLS 2 8
3 0 2 1
3 1 2 3
@@ -15,13 +15,13 @@
5
CELL_DATA 2
VECTORS traction double
-1.1 2.2 3.3
-4.4 5.5 6.6
+1.100000e+00 2.200000e+00 3.300000e+00
+4.400000e+00 5.500000e+00 6.600000e+00
SCALARS pressure double 1
LOOKUP_TABLE default
-2.1
-3.2
+2.100000e+00
+3.200000e+00
SCALARS other double 6
LOOKUP_TABLE default
-1.2 2.3 3.4 4.5 5.6 6.7
-7.8 8.9 9 10.1 11.2 12.3
+1.200000e+00 2.300000e+00 3.400000e+00 4.500000e+00 5.600000e+00 6.700000e+00
+7.800000e+00 8.900000e+00 9.000000e+00 1.010000e+01 1.120000e+01 1.230000e+01
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_surf_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_surf_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_surf_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,10 +3,10 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 4 double
--1 0 0
-0 -1 0
-0 1 0
-1 0 0
+-1.000000e+00 0.000000e+00 0.000000e+00
+0.000000e+00 -1.000000e+00 0.000000e+00
+0.000000e+00 1.000000e+00 0.000000e+00
+1.000000e+00 0.000000e+00 0.000000e+00
CELLS 2 8
3 0 2 1
3 1 2 3
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_surf_vertex_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_surf_vertex_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_surf_vertex_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,10 +3,10 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 4 double
--1 0 0
-0 -1 0
-0 1 0
-1 0 0
+-1.000000e+00 0.000000e+00 0.000000e+00
+0.000000e+00 -1.000000e+00 0.000000e+00
+0.000000e+00 1.000000e+00 0.000000e+00
+1.000000e+00 0.000000e+00 0.000000e+00
CELLS 2 8
3 0 2 1
3 1 2 3
@@ -15,19 +15,19 @@
5
POINT_DATA 4
VECTORS displacements double
-1.1 2.2 3.3
-4.4 5.5 6.6
-10 11.1 12.2
-13.3 14.4 15.5
+1.100000e+00 2.200000e+00 3.300000e+00
+4.400000e+00 5.500000e+00 6.600000e+00
+1.000000e+01 1.110000e+01 1.220000e+01
+1.330000e+01 1.440000e+01 1.550000e+01
SCALARS pressure double 1
LOOKUP_TABLE default
-2.1
-3.2
-5.4
-6.5
+2.100000e+00
+3.200000e+00
+5.400000e+00
+6.500000e+00
SCALARS other double 2
LOOKUP_TABLE default
-1.2 2.3
-3.4 4.5
-7.8 8.9
-9 10.1
+1.200000e+00 2.300000e+00
+3.400000e+00 4.500000e+00
+7.800000e+00 8.900000e+00
+9.000000e+00 1.010000e+01
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,14 +3,14 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 8 double
--1 0 0
-0 -1 0
-0 0 1
-0 1 0
-1 0 0
-0 -1 0
-0 0 1
-0 1 0
+-1.000000e+00 0.000000e+00 0.000000e+00
+0.000000e+00 -1.000000e+00 0.000000e+00
+0.000000e+00 0.000000e+00 1.000000e+00
+0.000000e+00 1.000000e+00 0.000000e+00
+1.000000e+00 0.000000e+00 0.000000e+00
+0.000000e+00 -1.000000e+00 0.000000e+00
+0.000000e+00 0.000000e+00 1.000000e+00
+0.000000e+00 1.000000e+00 0.000000e+00
CELLS 2 10
4 1 2 3 0
4 5 7 6 4
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_vertex_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_vertex_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/tet4_vertex_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,14 +3,14 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 8 double
--1 0 0
-0 -1 0
-0 0 1
-0 1 0
-1 0 0
-0 -1 0
-0 0 1
-0 1 0
+-1.000000e+00 0.000000e+00 0.000000e+00
+0.000000e+00 -1.000000e+00 0.000000e+00
+0.000000e+00 0.000000e+00 1.000000e+00
+0.000000e+00 1.000000e+00 0.000000e+00
+1.000000e+00 0.000000e+00 0.000000e+00
+0.000000e+00 -1.000000e+00 0.000000e+00
+0.000000e+00 0.000000e+00 1.000000e+00
+0.000000e+00 1.000000e+00 0.000000e+00
CELLS 2 10
4 1 2 3 0
4 5 7 6 4
@@ -19,31 +19,31 @@
10
POINT_DATA 8
VECTORS displacements double
-1.1 2.2 3.3
-4.4 5.5 6.6
-7.7 8.8 9.9
-10 11.1 12.2
-13.3 14.4 15.5
-16.6 17.7 18.8
-19.9 20 21.1
-22.2 23.3 24.4
+1.100000e+00 2.200000e+00 3.300000e+00
+4.400000e+00 5.500000e+00 6.600000e+00
+7.700000e+00 8.800000e+00 9.900000e+00
+1.000000e+01 1.110000e+01 1.220000e+01
+1.330000e+01 1.440000e+01 1.550000e+01
+1.660000e+01 1.770000e+01 1.880000e+01
+1.990000e+01 2.000000e+01 2.110000e+01
+2.220000e+01 2.330000e+01 2.440000e+01
SCALARS pressure double 1
LOOKUP_TABLE default
-2.1
-3.2
-4.3
-5.4
-6.5
-7.6
-8.7
-9.8
+2.100000e+00
+3.200000e+00
+4.300000e+00
+5.400000e+00
+6.500000e+00
+7.600000e+00
+8.700000e+00
+9.800000e+00
SCALARS other double 2
LOOKUP_TABLE default
-1.2 2.3
-3.4 4.5
-5.6 6.7
-7.8 8.9
-9 10.1
-11.2 12.3
-13.4 14.5
-15.6 16.7
+1.200000e+00 2.300000e+00
+3.400000e+00 4.500000e+00
+5.600000e+00 6.700000e+00
+7.800000e+00 8.900000e+00
+9.000000e+00 1.010000e+01
+1.120000e+01 1.230000e+01
+1.340000e+01 1.450000e+01
+1.560000e+01 1.670000e+01
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_bc_cell_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_bc_cell_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_bc_cell_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,17 +3,17 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 2 double
-0 -1 0.0
-1 0 0.0
+0.000000e+00 -1.000000e+00 0.0
+1.000000e+00 0.000000e+00 0.0
CELLS 1 3
2 0 1
CELL_TYPES 1
3
CELL_DATA 1
VECTORS traction double
-1.1 2.2 0.0
+1.100000e+00 2.200000e+00 0.0
SCALARS pressure double 1
LOOKUP_TABLE default
-2.1
+2.100000e+00
VECTORS other double
-1.2 2.3 3.4
+1.200000e+00 2.300000e+00 3.400000e+00
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_bc_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_bc_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_bc_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,8 +3,8 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 2 double
-0 -1 0.0
-1 0 0.0
+0.000000e+00 -1.000000e+00 0.0
+1.000000e+00 0.000000e+00 0.0
CELLS 1 3
2 0 1
CELL_TYPES 1
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_bc_vertex_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_bc_vertex_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_bc_vertex_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,21 +3,21 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 2 double
-0 -1 0.0
-1 0 0.0
+0.000000e+00 -1.000000e+00 0.0
+1.000000e+00 0.000000e+00 0.0
CELLS 1 3
2 0 1
CELL_TYPES 1
3
POINT_DATA 2
VECTORS displacements double
-1.1 2.2 0.0
-3.3 4.4 0.0
+1.100000e+00 2.200000e+00 0.0
+3.300000e+00 4.400000e+00 0.0
SCALARS pressure double 1
LOOKUP_TABLE default
-2.1
-3.2
+2.100000e+00
+3.200000e+00
SCALARS other double 2
LOOKUP_TABLE default
-1.2 2.3
-3.4 4.5
+1.200000e+00 2.300000e+00
+3.400000e+00 4.500000e+00
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_cell_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_cell_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_cell_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,12 +3,12 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 6 double
--1 0 0.0
-0 -1 0.0
-0 1 0.0
-1 0 0.0
-0 -1 0.0
-0 1 0.0
+-1.000000e+00 0.000000e+00 0.0
+0.000000e+00 -1.000000e+00 0.0
+0.000000e+00 1.000000e+00 0.0
+1.000000e+00 0.000000e+00 0.0
+0.000000e+00 -1.000000e+00 0.0
+0.000000e+00 1.000000e+00 0.0
CELLS 2 8
3 0 4 5
3 1 3 2
@@ -17,12 +17,12 @@
5
CELL_DATA 2
VECTORS traction double
-1.1 2.2 0.0
-3.3 4.4 0.0
+1.100000e+00 2.200000e+00 0.0
+3.300000e+00 4.400000e+00 0.0
SCALARS pressure double 1
LOOKUP_TABLE default
-2.1
-2.2
+2.100000e+00
+2.200000e+00
VECTORS other double
-1.2 2.3 3.4
-4.5 5.6 6.7
+1.200000e+00 2.300000e+00 3.400000e+00
+4.500000e+00 5.600000e+00 6.700000e+00
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_fault_cell_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_fault_cell_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_fault_cell_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,17 +3,17 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 2 double
-0 -1 0.0
-0 1 0.0
+0.000000e+00 -1.000000e+00 0.0
+0.000000e+00 1.000000e+00 0.0
CELLS 1 3
2 1 0
CELL_TYPES 1
3
CELL_DATA 1
VECTORS traction double
-1.1 2.2 0.0
+1.100000e+00 2.200000e+00 0.0
SCALARS pressure double 1
LOOKUP_TABLE default
-2.1
+2.100000e+00
VECTORS other double
-1.2 2.3 3.4
+1.200000e+00 2.300000e+00 3.400000e+00
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_fault_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_fault_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_fault_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,8 +3,8 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 2 double
-0 -1 0.0
-0 1 0.0
+0.000000e+00 -1.000000e+00 0.0
+0.000000e+00 1.000000e+00 0.0
CELLS 1 3
2 1 0
CELL_TYPES 1
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_fault_vertex_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_fault_vertex_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_fault_vertex_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,21 +3,21 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 2 double
-0 -1 0.0
-0 1 0.0
+0.000000e+00 -1.000000e+00 0.0
+0.000000e+00 1.000000e+00 0.0
CELLS 1 3
2 1 0
CELL_TYPES 1
3
POINT_DATA 2
VECTORS displacements double
-1.1 2.2 0.0
-3.3 4.4 0.0
+1.100000e+00 2.200000e+00 0.0
+3.300000e+00 4.400000e+00 0.0
SCALARS pressure double 1
LOOKUP_TABLE default
-2.1
-3.2
+2.100000e+00
+3.200000e+00
SCALARS other double 2
LOOKUP_TABLE default
-1.2 2.3
-3.4 4.5
+1.200000e+00 2.300000e+00
+3.400000e+00 4.500000e+00
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_mat_cell_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_mat_cell_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_mat_cell_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,21 +3,21 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 6 double
--1 0 0.0
-0 -1 0.0
-0 1 0.0
-1 0 0.0
-0 -1 0.0
-0 1 0.0
+-1.000000e+00 0.000000e+00 0.0
+0.000000e+00 -1.000000e+00 0.0
+0.000000e+00 1.000000e+00 0.0
+1.000000e+00 0.000000e+00 0.0
+0.000000e+00 -1.000000e+00 0.0
+0.000000e+00 1.000000e+00 0.0
CELLS 1 4
3 1 3 2
CELL_TYPES 1
5
CELL_DATA 1
VECTORS traction double
-1.1 2.2 0.0
+1.100000e+00 2.200000e+00 0.0
SCALARS pressure double 1
LOOKUP_TABLE default
-2.1
+2.100000e+00
VECTORS other double
-1.2 2.3 3.4
+1.200000e+00 2.300000e+00 3.400000e+00
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_mat_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_mat_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_mat_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,12 +3,12 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 6 double
--1 0 0.0
-0 -1 0.0
-0 1 0.0
-1 0 0.0
-0 -1 0.0
-0 1 0.0
+-1.000000e+00 0.000000e+00 0.0
+0.000000e+00 -1.000000e+00 0.0
+0.000000e+00 1.000000e+00 0.0
+1.000000e+00 0.000000e+00 0.0
+0.000000e+00 -1.000000e+00 0.0
+0.000000e+00 1.000000e+00 0.0
CELLS 1 4
3 1 3 2
CELL_TYPES 1
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_mat_vertex_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_mat_vertex_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_mat_vertex_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,37 +3,37 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 6 double
--1 0 0.0
-0 -1 0.0
-0 1 0.0
-1 0 0.0
-0 -1 0.0
-0 1 0.0
+-1.000000e+00 0.000000e+00 0.0
+0.000000e+00 -1.000000e+00 0.0
+0.000000e+00 1.000000e+00 0.0
+1.000000e+00 0.000000e+00 0.0
+0.000000e+00 -1.000000e+00 0.0
+0.000000e+00 1.000000e+00 0.0
CELLS 1 4
3 1 3 2
CELL_TYPES 1
5
POINT_DATA 6
VECTORS displacements double
-1.1 2.2 0.0
-3.3 4.4 0.0
-5.5 6.6 0.0
-7.7 8.8 0.0
-9.9 10 0.0
-11.1 12.2 0.0
+1.100000e+00 2.200000e+00 0.0
+3.300000e+00 4.400000e+00 0.0
+5.500000e+00 6.600000e+00 0.0
+7.700000e+00 8.800000e+00 0.0
+9.900000e+00 1.000000e+01 0.0
+1.110000e+01 1.220000e+01 0.0
SCALARS pressure double 1
LOOKUP_TABLE default
-2.1
-3.2
-4.3
-5.4
-6.5
-7.6
+2.100000e+00
+3.200000e+00
+4.300000e+00
+5.400000e+00
+6.500000e+00
+7.600000e+00
SCALARS other double 2
LOOKUP_TABLE default
-1.2 2.3
-3.4 4.5
-5.6 6.7
-7.8 8.9
-9 10.1
-11.2 12.3
+1.200000e+00 2.300000e+00
+3.400000e+00 4.500000e+00
+5.600000e+00 6.700000e+00
+7.800000e+00 8.900000e+00
+9.000000e+00 1.010000e+01
+1.120000e+01 1.230000e+01
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_surf_cell_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_surf_cell_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_surf_cell_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,17 +3,17 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 2 double
-0 -1 0.0
-1 0 0.0
+0.000000e+00 -1.000000e+00 0.0
+1.000000e+00 0.000000e+00 0.0
CELLS 1 3
2 0 1
CELL_TYPES 1
3
CELL_DATA 1
VECTORS traction double
-1.1 2.2 0.0
+1.100000e+00 2.200000e+00 0.0
SCALARS pressure double 1
LOOKUP_TABLE default
-2.1
+2.100000e+00
VECTORS other double
-1.2 2.3 3.4
+1.200000e+00 2.300000e+00 3.400000e+00
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_surf_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_surf_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_surf_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,8 +3,8 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 2 double
-0 -1 0.0
-1 0 0.0
+0.000000e+00 -1.000000e+00 0.0
+1.000000e+00 0.000000e+00 0.0
CELLS 1 3
2 0 1
CELL_TYPES 1
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_surf_vertex_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_surf_vertex_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_surf_vertex_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,21 +3,21 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 2 double
-0 -1 0.0
-1 0 0.0
+0.000000e+00 -1.000000e+00 0.0
+1.000000e+00 0.000000e+00 0.0
CELLS 1 3
2 0 1
CELL_TYPES 1
3
POINT_DATA 2
VECTORS displacements double
-3.3 4.4 0.0
-7.7 8.8 0.0
+3.300000e+00 4.400000e+00 0.0
+7.700000e+00 8.800000e+00 0.0
SCALARS pressure double 1
LOOKUP_TABLE default
-3.2
-5.4
+3.200000e+00
+5.400000e+00
SCALARS other double 2
LOOKUP_TABLE default
-3.4 4.5
-7.8 8.9
+3.400000e+00 4.500000e+00
+7.800000e+00 8.900000e+00
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,12 +3,12 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 6 double
--1 0 0.0
-0 -1 0.0
-0 1 0.0
-1 0 0.0
-0 -1 0.0
-0 1 0.0
+-1.000000e+00 0.000000e+00 0.0
+0.000000e+00 -1.000000e+00 0.0
+0.000000e+00 1.000000e+00 0.0
+1.000000e+00 0.000000e+00 0.0
+0.000000e+00 -1.000000e+00 0.0
+0.000000e+00 1.000000e+00 0.0
CELLS 2 8
3 0 4 5
3 1 3 2
Modified: short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_vertex_t10.vtk
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_vertex_t10.vtk 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/libtests/meshio/data/tri3_vertex_t10.vtk 2009-12-10 01:52:12 UTC (rev 16094)
@@ -3,12 +3,12 @@
ASCII
DATASET UNSTRUCTURED_GRID
POINTS 6 double
--1 0 0.0
-0 -1 0.0
-0 1 0.0
-1 0 0.0
-0 -1 0.0
-0 1 0.0
+-1.000000e+00 0.000000e+00 0.0
+0.000000e+00 -1.000000e+00 0.0
+0.000000e+00 1.000000e+00 0.0
+1.000000e+00 0.000000e+00 0.0
+0.000000e+00 -1.000000e+00 0.0
+0.000000e+00 1.000000e+00 0.0
CELLS 2 8
3 0 4 5
3 1 3 2
@@ -17,25 +17,25 @@
5
POINT_DATA 6
VECTORS displacements double
-1.1 2.2 0.0
-3.3 4.4 0.0
-5.5 6.6 0.0
-7.7 8.8 0.0
-9.9 10 0.0
-11.1 12.2 0.0
+1.100000e+00 2.200000e+00 0.0
+3.300000e+00 4.400000e+00 0.0
+5.500000e+00 6.600000e+00 0.0
+7.700000e+00 8.800000e+00 0.0
+9.900000e+00 1.000000e+01 0.0
+1.110000e+01 1.220000e+01 0.0
SCALARS pressure double 1
LOOKUP_TABLE default
-2.1
-3.2
-4.3
-5.4
-6.5
-7.6
+2.100000e+00
+3.200000e+00
+4.300000e+00
+5.400000e+00
+6.500000e+00
+7.600000e+00
SCALARS other double 2
LOOKUP_TABLE default
-1.2 2.3
-3.4 4.5
-5.6 6.7
-7.8 8.9
-9 10.1
-11.2 12.3
+1.200000e+00 2.300000e+00
+3.400000e+00 4.500000e+00
+5.600000e+00 6.700000e+00
+7.800000e+00 8.900000e+00
+9.000000e+00 1.010000e+01
+1.120000e+01 1.230000e+01
Property changes on: short/3D/PyLith/trunk/unittests/libtests/topology
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/unittests/libtests/topology/data
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/unittests/libtests/utils
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/unittests/pytests
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/unittests/pytests/bc
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/unittests/pytests/bc/data
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/unittests/pytests/faults
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Modified: short/3D/PyLith/trunk/unittests/pytests/faults/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/faults/Makefile.am 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/pytests/faults/Makefile.am 2009-12-10 01:52:12 UTC (rev 16094)
@@ -27,7 +27,8 @@
TestFaultCohesiveKin.py \
TestLiuCosSlipFn.py \
TestSingleRupture.py \
- TestStepSlipFn.py
+ TestStepSlipFn.py \
+ TestTimeHistorySlipFn.py
# End of file
Copied: short/3D/PyLith/trunk/unittests/pytests/faults/TestTimeHistorySlipFn.py (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/pytests/faults/TestTimeHistorySlipFn.py)
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/faults/TestTimeHistorySlipFn.py (rev 0)
+++ short/3D/PyLith/trunk/unittests/pytests/faults/TestTimeHistorySlipFn.py 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,93 @@
+#!/usr/bin/env python
+#
+# ======================================================================
+#
+# Brad T. Aagaard
+# U.S. Geological Survey
+#
+# {LicenseText}
+#
+# ======================================================================
+#
+
+## @file unittests/pytests/faults/TestTimeHistorySlipFn.py
+
+## @brief Unit testing of TimeHistorySlipFn object.
+
+import unittest
+
+from pylith.faults.TimeHistorySlipFn import TimeHistorySlipFn
+
+# ----------------------------------------------------------------------
+class TestTimeHistorySlipFn(unittest.TestCase):
+ """
+ Unit testing of TimeHistorySlipFn object.
+ """
+
+ def test_constructor(self):
+ """
+ Test constructor.
+ """
+ slipFn = TimeHistorySlipFn()
+ return
+
+
+ def test_configure(self):
+ """
+ Test constructor.
+ """
+ slipFn = TimeHistorySlipFn()
+ slipFn._configure()
+ return
+
+
+ def test_initialize(self):
+ """
+ Test initialize().
+ """
+ from spatialdata.spatialdb.SimpleDB import SimpleDB
+ from spatialdata.spatialdb.SimpleIOAscii import SimpleIOAscii
+ from spatialdata.spatialdb.TimeHistory import TimeHistory
+
+ ioFinalSlip = SimpleIOAscii()
+ ioFinalSlip.inventory.filename = "finalslip.spatialdb"
+ ioFinalSlip._configure()
+ dbFinalSlip = SimpleDB()
+ dbFinalSlip.inventory.iohandler = ioFinalSlip
+ dbFinalSlip.inventory.label = "slip amplitude"
+ dbFinalSlip._configure()
+
+ ioSlipTime = SimpleIOAscii()
+ ioSlipTime.inventory.filename = "sliptime.spatialdb"
+ ioSlipTime._configure()
+ dbSlipTime = SimpleDB()
+ dbSlipTime.inventory.iohandler = ioSlipTime
+ dbSlipTime.inventory.label = "slip time"
+ dbSlipTime._configure()
+
+ dbTimeHistory = TimeHistory()
+ dbTimeHistory.inventory.filename = "slipfn.timedb"
+ dbTimeHistory.inventory.label = "time history"
+ dbTimeHistory._configure()
+
+ slipFn = TimeHistorySlipFn()
+ slipFn.inventory.dbslip = dbFinalSlip
+ slipFn.inventory.dbSlipTime = dbSlipTime
+ slipFn.inventory.dbTimeHistory = dbTimeHistory
+ slipFn._configure()
+ slipFn.preinitialize()
+ slipFn.verifyConfiguration()
+ slipFn.initialize()
+ return
+
+
+ def test_factory(self):
+ """
+ Test factory method.
+ """
+ from pylith.faults.TimeHistorySlipFn import slip_time_fn
+ fn = slip_time_fn()
+ return
+
+
+# End of file
Property changes on: short/3D/PyLith/trunk/unittests/pytests/faults/data
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Copied: short/3D/PyLith/trunk/unittests/pytests/faults/data/slipfn.timedb (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/pytests/faults/data/slipfn.timedb)
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/faults/data/slipfn.timedb (rev 0)
+++ short/3D/PyLith/trunk/unittests/pytests/faults/data/slipfn.timedb 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,10 @@
+#TIME HISTORY ascii
+TimeHistory {
+ num-points = 5
+ time-units = second
+}
+ 0.0 0.0
+ 1.0 0.5
+ 4.0 0.8
+ 8.0 1.0
+10.0 1.0
Modified: short/3D/PyLith/trunk/unittests/pytests/faults/testfaults.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/faults/testfaults.py 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/pytests/faults/testfaults.py 2009-12-10 01:52:12 UTC (rev 16094)
@@ -68,6 +68,9 @@
from TestLiuCosSlipFn import TestLiuCosSlipFn
suite.addTest(unittest.makeSuite(TestLiuCosSlipFn))
+ from TestTimeHistorySlipFn import TestTimeHistorySlipFn
+ suite.addTest(unittest.makeSuite(TestTimeHistorySlipFn))
+
from TestEqKinSrc import TestEqKinSrc
suite.addTest(unittest.makeSuite(TestEqKinSrc))
Property changes on: short/3D/PyLith/trunk/unittests/pytests/feassemble
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Copied: short/3D/PyLith/trunk/unittests/pytests/feassemble/TestElasticityExplicitLgDeform.py (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/pytests/feassemble/TestElasticityExplicitLgDeform.py)
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/feassemble/TestElasticityExplicitLgDeform.py (rev 0)
+++ short/3D/PyLith/trunk/unittests/pytests/feassemble/TestElasticityExplicitLgDeform.py 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,300 @@
+#!/usr/bin/env python
+#
+# ======================================================================
+#
+# Brad T. Aagaard
+# U.S. Geological Survey
+#
+# {LicenseText}
+#
+# ======================================================================
+#
+
+## @file unittests/pytests/feassemble/TestElasticityExplicitLgDeform.py
+
+## @brief Unit testing of Python ElasticityExplicitLgDeform object.
+
+import unittest
+from pylith.feassemble.ElasticityExplicitLgDeform import ElasticityExplicitLgDeform
+
+from spatialdata.geocoords.CSCart import CSCart
+
+# ----------------------------------------------------------------------
+class TestElasticityExplicitLgDeform(unittest.TestCase):
+ """
+ Unit testing of Python ElasticityExplicitLgDeform object.
+ """
+
+ def test_implementsIntegrator(self):
+ """
+ Test to make sure ElasticityExplicitLgDeform satisfies integrator requirements.
+ """
+ integrator = ElasticityExplicitLgDeform()
+ from pylith.feassemble.Integrator import implementsIntegrator
+ self.failUnless(implementsIntegrator(integrator))
+ return
+
+
+ def test_preinitialize(self):
+ """
+ Test preiniitlaize().
+
+ WARNING: This is not a rigorous test of preinitialize() because we
+ neither set the input fields or verify the results.
+ """
+ (mesh, integrator) = self._preinitialize()
+
+ # No test of result.
+ return
+
+
+ def test_verifyConfiguration(self):
+ """
+ Test verifyConfiguration().
+
+ WARNING: This is not a rigorous test of verifyConfiguration()
+ because we neither set the input fields or verify the results.
+ """
+ (mesh, integrator) = self._preinitialize()
+ integrator.verifyConfiguration()
+
+ # No test of result.
+ return
+
+
+ def test_initialize(self):
+ """
+ Test initialize().
+
+ WARNING: This is not a rigorous test of initialize() because we
+ neither set the input fields or verify the results.
+ """
+ (mesh, integrator) = self._preinitialize()
+ fields = self._initialize(mesh, integrator)
+
+ # No test of result.
+ return
+
+
+ def test_timeStep(self):
+ """
+ Test timeStep().
+
+ WARNING: This is not a rigorous test of timeStep() because we
+ neither set the input fields or verify the results.
+ """
+ dt = 2.3
+ (mesh, integrator) = self._preinitialize()
+ fields = self._initialize(mesh, integrator)
+ integrator.timeStep(dt)
+
+ # No test of result.
+ return
+
+
+ def test_stableTimeStep(self):
+ """
+ Test stableTimeStep().
+ """
+ (mesh, integrator) = self._preinitialize()
+ fields = self._initialize(mesh, integrator)
+
+ self.assertEqual(1.0e+30, integrator.stableTimeStep(mesh))
+ return
+
+
+ def test_needNewJacobian(self):
+ """
+ Test needNewJacobian().
+ """
+ (mesh, integrator) = self._preinitialize()
+ fields = self._initialize(mesh, integrator)
+
+ self.assertEqual(True, integrator.needNewJacobian())
+ return
+
+
+ def test_useSolnIncr(self):
+ """
+ Test useSolnIncr().
+
+ WARNING: This is not a rigorous test of useSolnIncr() because we
+ neither set the input fields or verify the results.
+ """
+ (mesh, integrator) = self._preinitialize()
+ fields = self._initialize(mesh, integrator)
+
+ try:
+ integrator.useSolnIncr(True)
+ self.failIf(True)
+ except:
+ self.failIf(False)
+
+ # No test of result.
+ return
+
+
+ def test_integrateResidual(self):
+ """
+ Test integrateResidual().
+
+ WARNING: This is not a rigorous test of integrateResidual()
+ because we neither set the input fields or verify the results.
+ """
+ (mesh, integrator) = self._preinitialize()
+ fields = self._initialize(mesh, integrator)
+
+ residual = fields.get("residual")
+ t = 3.4
+ integrator.integrateResidual(residual, t, fields)
+
+ # No test of result.
+ return
+
+
+ def test_integrateJacobian(self):
+ """
+ Test integrateJacobian().
+
+ WARNING: This is not a rigorous test of integrateJacobian()
+ because we neither set the input fields or verify the results.
+ """
+ (mesh, integrator) = self._preinitialize()
+ fields = self._initialize(mesh, integrator)
+
+ from pylith.topology.Jacobian import Jacobian
+ jacobian = Jacobian(fields)
+ jacobian.zero()
+ t = 7.3
+ self.assertEqual(True, integrator.needNewJacobian())
+ integrator.integrateJacobian(jacobian, t, fields)
+ self.assertEqual(False, integrator.needNewJacobian())
+
+ # No test of result.
+ return
+
+
+ def test_poststep(self):
+ """
+ Test poststep().
+
+ WARNING: This is not a rigorous test of poststep() because we
+ neither set the input fields or verify the results.
+ """
+ (mesh, integrator) = self._preinitialize()
+ fields = self._initialize(mesh, integrator)
+
+ t = 7.3
+ dt = 0.1
+ totalTime = 23.0
+ integrator.poststep(t, dt, totalTime, fields)
+
+ # No test of result
+ return
+
+
+ def test_factory(self):
+ """
+ Test factory method.
+ """
+ from pylith.feassemble.ElasticityExplicitLgDeform import integrator
+ i = integrator()
+ return
+
+
+ # PRIVATE METHODS ////////////////////////////////////////////////////
+
+ def _preinitialize(self):
+ """
+ Setup mesh and integrator and preinitialize integrator.
+ """
+ from spatialdata.units.Nondimensional import Nondimensional
+ normalizer = Nondimensional()
+ normalizer._configure()
+
+ # Setup mesh
+ cs = CSCart()
+ cs.inventory.spaceDim = 2
+ cs._configure()
+ from pylith.meshio.MeshIOAscii import MeshIOAscii
+ importer = MeshIOAscii()
+ importer.inventory.filename = "data/tri3.mesh"
+ importer.inventory.coordsys = cs
+ importer._configure()
+ mesh = importer.read(normalizer, debug=False, interpolate=False)
+
+ # Setup material
+ from pylith.feassemble.FIATSimplex import FIATSimplex
+ cell = FIATSimplex()
+ cell.inventory.shape = "triangle"
+ cell.inventory.degree = 1
+ cell.inventory.order = 1
+ cell._configure()
+ from pylith.feassemble.Quadrature import MeshQuadrature
+ quadrature = MeshQuadrature()
+ quadrature.inventory.cell = cell
+ quadrature._configure()
+
+ from spatialdata.spatialdb.SimpleDB import SimpleDB
+ from spatialdata.spatialdb.SimpleIOAscii import SimpleIOAscii
+ iohandler = SimpleIOAscii()
+ iohandler.inventory.filename = "data/elasticplanestrain.spatialdb"
+ iohandler._configure()
+ db = SimpleDB()
+ db.inventory.label = "elastic plane strain"
+ db.inventory.iohandler = iohandler
+ db._configure()
+
+ from pylith.materials.ElasticPlaneStrain import ElasticPlaneStrain
+ material = ElasticPlaneStrain()
+ material.inventory.label = "elastic plane strain"
+ material.inventory.id = 0
+ material.inventory.dbProperties = db
+ material.inventory.quadrature = quadrature
+ material._configure()
+
+ from pylith.meshio.OutputMatElastic import OutputMatElastic
+ material.output = OutputMatElastic()
+ material.output._configure()
+ material.output.writer._configure()
+
+ # Setup integrator
+ integrator = ElasticityExplicitLgDeform()
+ integrator.preinitialize(mesh, material)
+ return (mesh, integrator)
+
+
+ def _initialize(self, mesh, integrator):
+ """
+ Initialize integrator.
+ """
+ dt = 2.3
+
+ from spatialdata.units.Nondimensional import Nondimensional
+ normalizer = Nondimensional()
+ normalizer._configure()
+
+ from pyre.units.time import s
+ integrator.initialize(totalTime=0.0*s, numTimeSteps=1,
+ normalizer=normalizer)
+ integrator.timeStep(dt)
+
+ # Setup fields
+ from pylith.topology.SolutionFields import SolutionFields
+ fields = SolutionFields(mesh)
+ fields.add("residual", "residual")
+ fields.add("disp(t+dt)", "displacement")
+ fields.add("disp(t)", "displacement")
+ fields.add("disp(t-dt)", "displacement")
+ fields.solutionName("disp(t+dt)")
+
+ residual = fields.get("residual")
+ residual.newSection(residual.VERTICES_FIELD, mesh.coordsys().spaceDim())
+ residual.allocate()
+ fields.copyLayout("residual")
+
+ residual.zero()
+ return fields
+
+
+# End of file
Copied: short/3D/PyLith/trunk/unittests/pytests/feassemble/TestElasticityImplicitLgDeform.py (from rev 16093, short/3D/PyLith/branches/pylith-friction/unittests/pytests/feassemble/TestElasticityImplicitLgDeform.py)
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/feassemble/TestElasticityImplicitLgDeform.py (rev 0)
+++ short/3D/PyLith/trunk/unittests/pytests/feassemble/TestElasticityImplicitLgDeform.py 2009-12-10 01:52:12 UTC (rev 16094)
@@ -0,0 +1,295 @@
+#!/usr/bin/env python
+#
+# ======================================================================
+#
+# Brad T. Aagaard
+# U.S. Geological Survey
+#
+# {LicenseText}
+#
+# ======================================================================
+#
+
+## @file unittests/pytests/feassemble/TestElasticityImplicitLgDeform.py
+
+## @brief Unit testing of Python ElasticityImplicitLgDeform object.
+
+import unittest
+from pylith.feassemble.ElasticityImplicitLgDeform import ElasticityImplicitLgDeform
+
+from spatialdata.geocoords.CSCart import CSCart
+
+# ----------------------------------------------------------------------
+class TestElasticityImplicitLgDeform(unittest.TestCase):
+ """
+ Unit testing of Python ElasticityImplicitLgDeform object.
+ """
+
+ def test_implementsIntegrator(self):
+ """
+ Test to make sure ElasticityImplicitLgDeform satisfies integrator requirements.
+ """
+ integrator = ElasticityImplicitLgDeform()
+ from pylith.feassemble.Integrator import implementsIntegrator
+ self.failUnless(implementsIntegrator(integrator))
+ return
+
+
+ def test_preinitialize(self):
+ """
+ Test preiniitlaize().
+
+ WARNING: This is not a rigorous test of preinitialize() because we
+ neither set the input fields or verify the results.
+ """
+ (mesh, integrator) = self._preinitialize()
+
+ # No test of result.
+ return
+
+
+ def test_verifyConfiguration(self):
+ """
+ Test verifyConfiguration().
+
+ WARNING: This is not a rigorous test of verifyConfiguration()
+ because we neither set the input fields or verify the results.
+ """
+ (mesh, integrator) = self._preinitialize()
+ integrator.verifyConfiguration()
+
+ # No test of result.
+ return
+
+
+ def test_initialize(self):
+ """
+ Test initialize().
+
+ WARNING: This is not a rigorous test of initialize() because we
+ neither set the input fields or verify the results.
+ """
+ (mesh, integrator) = self._preinitialize()
+ fields = self._initialize(mesh, integrator)
+
+ # No test of result.
+ return
+
+
+ def test_timeStep(self):
+ """
+ Test timeStep().
+
+ WARNING: This is not a rigorous test of timeStep() because we
+ neither set the input fields or verify the results.
+ """
+ dt = 2.3
+ (mesh, integrator) = self._preinitialize()
+ fields = self._initialize(mesh, integrator)
+ integrator.timeStep(dt)
+
+ # No test of result.
+ return
+
+
+ def test_stableTimeStep(self):
+ """
+ Test stableTimeStep().
+ """
+ (mesh, integrator) = self._preinitialize()
+ fields = self._initialize(mesh, integrator)
+
+ self.assertEqual(1.0e+30, integrator.stableTimeStep(mesh))
+ return
+
+
+ def test_needNewJacobian(self):
+ """
+ Test needNewJacobian().
+ """
+ (mesh, integrator) = self._preinitialize()
+ fields = self._initialize(mesh, integrator)
+
+ self.assertEqual(True, integrator.needNewJacobian())
+ return
+
+
+ def test_useSolnIncr(self):
+ """
+ Test useSolnIncr().
+
+ WARNING: This is not a rigorous test of useSolnIncr() because we
+ neither set the input fields or verify the results.
+ """
+ (mesh, integrator) = self._preinitialize()
+ fields = self._initialize(mesh, integrator)
+
+ integrator.useSolnIncr(True)
+
+ # No test of result.
+ return
+
+
+ def test_integrateResidual(self):
+ """
+ Test integrateResidual().
+
+ WARNING: This is not a rigorous test of integrateResidual()
+ because we neither set the input fields or verify the results.
+ """
+ (mesh, integrator) = self._preinitialize()
+ fields = self._initialize(mesh, integrator)
+
+ residual = fields.get("residual")
+ t = 3.4
+ integrator.integrateResidual(residual, t, fields)
+
+ # No test of result.
+ return
+
+
+ def test_integrateJacobian(self):
+ """
+ Test integrateJacobian().
+
+ WARNING: This is not a rigorous test of integrateJacobian()
+ because we neither set the input fields or verify the results.
+ """
+ (mesh, integrator) = self._preinitialize()
+ fields = self._initialize(mesh, integrator)
+
+ from pylith.topology.Jacobian import Jacobian
+ jacobian = Jacobian(fields)
+ jacobian.zero()
+ t = 7.3
+ self.assertEqual(True, integrator.needNewJacobian())
+ integrator.integrateJacobian(jacobian, t, fields)
+ self.assertEqual(False, integrator.needNewJacobian())
+
+ # No test of result.
+ return
+
+
+ def test_poststep(self):
+ """
+ Test poststep().
+
+ WARNING: This is not a rigorous test of poststep() because we
+ neither set the input fields or verify the results.
+ """
+ (mesh, integrator) = self._preinitialize()
+ fields = self._initialize(mesh, integrator)
+
+ t = 7.3
+ dt = 0.1
+ totalTime = 23.0
+ integrator.poststep(t, dt, totalTime, fields)
+
+ # No test of result
+ return
+
+
+ def test_factory(self):
+ """
+ Test factory method.
+ """
+ from pylith.feassemble.ElasticityImplicitLgDeform import integrator
+ i = integrator()
+ return
+
+
+ # PRIVATE METHODS ////////////////////////////////////////////////////
+
+ def _preinitialize(self):
+ """
+ Setup mesh and integrator and preinitialize integrator.
+ """
+ from spatialdata.units.Nondimensional import Nondimensional
+ normalizer = Nondimensional()
+ normalizer._configure()
+
+ # Setup mesh
+ cs = CSCart()
+ cs.inventory.spaceDim = 2
+ cs._configure()
+ from pylith.meshio.MeshIOAscii import MeshIOAscii
+ importer = MeshIOAscii()
+ importer.inventory.filename = "data/tri3.mesh"
+ importer.inventory.coordsys = cs
+ importer._configure()
+ mesh = importer.read(normalizer, debug=False, interpolate=False)
+
+ # Setup material
+ from pylith.feassemble.FIATSimplex import FIATSimplex
+ cell = FIATSimplex()
+ cell.inventory.shape = "triangle"
+ cell.inventory.degree = 1
+ cell.inventory.order = 1
+ cell._configure()
+ from pylith.feassemble.Quadrature import MeshQuadrature
+ quadrature = MeshQuadrature()
+ quadrature.inventory.cell = cell
+ quadrature._configure()
+
+ from spatialdata.spatialdb.SimpleDB import SimpleDB
+ from spatialdata.spatialdb.SimpleIOAscii import SimpleIOAscii
+ iohandler = SimpleIOAscii()
+ iohandler.inventory.filename = "data/elasticplanestrain.spatialdb"
+ iohandler._configure()
+ db = SimpleDB()
+ db.inventory.label = "elastic plane strain"
+ db.inventory.iohandler = iohandler
+ db._configure()
+
+ from pylith.materials.ElasticPlaneStrain import ElasticPlaneStrain
+ material = ElasticPlaneStrain()
+ material.inventory.label = "elastic plane strain"
+ material.inventory.id = 0
+ material.inventory.dbProperties = db
+ material.inventory.quadrature = quadrature
+ material._configure()
+
+ from pylith.meshio.OutputMatElastic import OutputMatElastic
+ material.output = OutputMatElastic()
+ material.output._configure()
+ material.output.writer._configure()
+
+ # Setup integrator
+ integrator = ElasticityImplicitLgDeform()
+ integrator.preinitialize(mesh, material)
+ return (mesh, integrator)
+
+
+ def _initialize(self, mesh, integrator):
+ """
+ Initialize integrator.
+ """
+ dt = 2.3
+
+ from spatialdata.units.Nondimensional import Nondimensional
+ normalizer = Nondimensional()
+ normalizer._configure()
+
+ from pyre.units.time import s
+ integrator.initialize(totalTime=0.0*s, numTimeSteps=1,
+ normalizer=normalizer)
+ integrator.timeStep(dt)
+
+ # Setup fields
+ from pylith.topology.SolutionFields import SolutionFields
+ fields = SolutionFields(mesh)
+ fields.add("residual", "residual")
+ fields.add("disp(t)", "displacement")
+ fields.add("dispIncr(t->t+dt)", "displacement_increment")
+ fields.solutionName("dispIncr(t->t+dt)")
+
+ residual = fields.get("residual")
+ residual.newSection(residual.VERTICES_FIELD, mesh.coordsys().spaceDim())
+ residual.allocate()
+ fields.copyLayout("residual")
+
+ residual.zero()
+ return fields
+
+
+# End of file
Property changes on: short/3D/PyLith/trunk/unittests/pytests/feassemble/data
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Modified: short/3D/PyLith/trunk/unittests/pytests/feassemble/testfeassemble.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/feassemble/testfeassemble.py 2009-12-09 20:49:26 UTC (rev 16093)
+++ short/3D/PyLith/trunk/unittests/pytests/feassemble/testfeassemble.py 2009-12-10 01:52:12 UTC (rev 16094)
@@ -75,6 +75,12 @@
from TestElasticityExplicit import TestElasticityExplicit
suite.addTest(unittest.makeSuite(TestElasticityExplicit))
+ from TestElasticityImplicitLgDeform import TestElasticityImplicitLgDeform
+ suite.addTest(unittest.makeSuite(TestElasticityImplicitLgDeform))
+
+ from TestElasticityExplicitLgDeform import TestElasticityExplicitLgDeform
+ suite.addTest(unittest.makeSuite(TestElasticityExplicitLgDeform))
+
return suite
Property changes on: short/3D/PyLith/trunk/unittests/pytests/materials
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/unittests/pytests/materials/data
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/unittests/pytests/meshio
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/unittests/pytests/meshio/data
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/unittests/pytests/mpi
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/unittests/pytests/problems
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/unittests/pytests/problems/data
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/unittests/pytests/topology
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/unittests/pytests/topology/data
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
Property changes on: short/3D/PyLith/trunk/unittests/pytests/utils
___________________________________________________________________
Name: svn:ignore
+ Makefile.in
More information about the CIG-COMMITS
mailing list