[cig-commits] r7769 - in
short/3D/PyLith/trunk/unittests/libtests/bc: . data
willic3 at geodynamics.org
willic3 at geodynamics.org
Wed Aug 1 14:20:45 PDT 2007
Author: willic3
Date: 2007-08-01 14:20:44 -0700 (Wed, 01 Aug 2007)
New Revision: 7769
Modified:
short/3D/PyLith/trunk/unittests/libtests/bc/Makefile.am
short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumann.cc
short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumann.hh
short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumannHex8.hh
short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataHex8.hh
Log:
More work on traction unit tests.
They are in the Makefile.am now, but I have commented out the specific
CPPUNIT_TEST lines for the Hex8 example. This still needs fixing.
Modified: short/3D/PyLith/trunk/unittests/libtests/bc/Makefile.am
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/Makefile.am 2007-08-01 21:04:31 UTC (rev 7768)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/Makefile.am 2007-08-01 21:20:44 UTC (rev 7769)
@@ -31,6 +31,8 @@
TestDirichletHex8.cc \
TestDirichletMulti.cc \
TestDirichletMultiTri3.cc \
+ TestNeumann.cc \
+ TestNeumannHex8.cc \
test_bc.cc
noinst_HEADERS = \
@@ -43,7 +45,9 @@
TestDirichletTet4.hh \
TestDirichletHex8.hh \
TestDirichletMulti.hh \
- TestDirichletMultiTri3.hh
+ TestDirichletMultiTri3.hh \
+ TestNeumann.hh \
+ TestNeumannHex8.hh
# Source files associated with testing data
testbc_SOURCES += \
@@ -55,7 +59,9 @@
data/DirichletDataTet4.cc \
data/DirichletDataHex8.cc \
data/DirichletDataMulti.cc \
- data/DirichletDataMultiTri3.cc
+ data/DirichletDataMultiTri3.cc \
+ data/NeumannData.cc \
+ data/NeumannDataHex8.cc
noinst_HEADERS += \
data/DirichletData.hh \
@@ -66,7 +72,9 @@
data/DirichletDataTet4.hh \
data/DirichletDataHex8.hh \
data/DirichletDataMulti.hh \
- data/DirichletDataMultiTri3.hh
+ data/DirichletDataMultiTri3.hh \
+ data/NeumannData.hh \
+ data/NeumannDataHex8.hh
AM_CPPFLAGS = $(PETSC_SIEVE_FLAGS) $(PETSC_INCLUDE)
Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumann.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumann.cc 2007-08-01 21:04:31 UTC (rev 7768)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumann.cc 2007-08-01 21:20:44 UTC (rev 7769)
@@ -60,35 +60,37 @@
void
pylith::bc::TestNeumann::testInitialize(void)
{ // testInitialize
-#if 0
ALE::Obj<Mesh> mesh;
Neumann bc;
- topology::FieldsManager fields(mesh);
- _initialize(&mesh, &bc, &fields);
+ _initialize(&mesh, &bc);
CPPUNIT_ASSERT(0 != _data);
// Check submesh
- CPPUNIT_ASSERT_EQUAL(_data.cellDim, _boundaryMesh->getDimension());
- CPPUNIT_ASSERT_EQUAL(_data.numBoundaryCells, cells->size());
+ CPPUNIT_ASSERT_EQUAL(_data->cellDim, bc._boundaryMesh->getDimension());
+ const ALE::Obj<sieve_type>& sieve = bc._boundaryMesh->getSieve();
+ const ALE::Obj<Mesh::label_sequence>& cells = bc._boundaryMesh->heightStratum(1);
+ const int numBoundaryCells = cells->size();
+ CPPUNIT_ASSERT_EQUAL(_data->numBoundaryCells, numBoundaryCells);
int iCell = 0;
+ int i = 0;
for(Mesh::label_sequence::iterator c_iter = cells->begin();
c_iter != cells->end();
++c_iter) {
const int numCorners = sieve->nCone(*c_iter, mesh->depth())->size();
- CPPUNIT_ASSERT_EQUAL(_data.numCorners[iCell++], numCorners);
+ CPPUNIT_ASSERT_EQUAL(_data->numCorners[iCell++], numCorners);
const ALE::Obj<sieve_type::traits::coneSequence>& cone =
sieve->cone(*c_iter);
for(sieve_type::traits::coneSequence::iterator v_iter = cone->begin();
v_iter != cone->end();
++v_iter)
- CPPUNIT_ASSERT_EQUAL(_data.cells[i++], *v_iter);
+ CPPUNIT_ASSERT_EQUAL(_data->cells[i++], *v_iter);
} // for
// Check traction values
- numQuadPts = _data->numQuadPts;
- spaceDim = _data->spaceDim;
- fiberDim = numQuadPts * spaceDim;
+ int numQuadPts = _data->numQuadPts;
+ int spaceDim = _data->spaceDim;
+ int fiberDim = numQuadPts * spaceDim;
double_array tractionCell(fiberDim);
int index = 0;
const double tolerance = 1.0e-06;
@@ -97,7 +99,7 @@
c_iter != cells->end();
++c_iter) {
- _boundaryMesh->restrict(_tractionGlobal, *c_iter,
+ bc._boundaryMesh->restrict(bc._tractionGlobal, *c_iter,
&tractionCell[0], tractionCell.size());
for (int iQuad=0; iQuad < numQuadPts; ++iQuad) {
@@ -109,7 +111,6 @@
} // for
} // for
} // for
-#endif
} // testInitialize
@@ -118,17 +119,30 @@
void
pylith::bc::TestNeumann::testIntegrateResidual(void)
{ // testIntegrateResidual
-#if 0
CPPUNIT_ASSERT(0 != _data);
ALE::Obj<Mesh> mesh;
Neumann bc;
Neumann integrator;
+ _initialize(&mesh, &bc);
+
+ // Set up fields
topology::FieldsManager fields(mesh);
- _initialize(&mesh, &bc, &fields);
+ fields.addReal("residual");
+ fields.addReal("solution");
+ fields.solutionField("solution");
- const ALE::Obj<real_section_type>& residual = fields->getReal("residual");
+ const ALE::Obj<real_section_type>& residual = fields.getReal("residual");
CPPUNIT_ASSERT(!residual.isNull());
+ const int spaceDim = _data->spaceDim;
+ residual->setFiberDimension(mesh->depthStratum(0), spaceDim);
+ mesh->allocate(residual);
+ residual->zero();
+ fields.copyLayout("residual");
+
+ const ALE::Obj<real_section_type>& solution = fields.getReal("solution");
+ CPPUNIT_ASSERT(!solution.isNull());
+
const double t = 0.0;
integrator.integrateResidual(residual, t, &fields, mesh);
@@ -146,23 +160,16 @@
else
CPPUNIT_ASSERT_DOUBLES_EQUAL(valsE[i], vals[i], tolerance);
-#endif
} // testIntegrateResidual
// ----------------------------------------------------------------------
void
pylith::bc::TestNeumann::_initialize(ALE::Obj<Mesh>* mesh,
Neumann* const bc) const
-
-// Maybe need to deal with fields inside integrateResidual
- // Neumann* const bc,
- // topology::FieldsManager* fields) const
{ // _initialize
-#if 0
CPPUNIT_ASSERT(0 != _data);
CPPUNIT_ASSERT(0 != mesh);
CPPUNIT_ASSERT(0 != bc);
- CPPUNIT_ASSERT(0 != fields);
CPPUNIT_ASSERT(0 != _quadrature);
// Set up mesh
@@ -177,18 +184,6 @@
cs.setSpaceDim((*mesh)->getDimension());
cs.initialize();
- // Set up fields
- fields->addReal("residual");
- fields->addReal("solution");
- const ALE::Obj<real_section_type>& residual = fields->getReal("residual");
- CPPUNIT_ASSERT(!residual.isNull());
- residual->setFiberDimension((*mesh)->depthStratum(0), _data->spaceDim);
- (*mesh)->allocate(residual);
- residual->zero();
- fields->copyLayout("residual");
- const ALE::Obj<real_section_type>& solution = fields.getReal("solution");
- CPPUNIT_ASSERT(!solution.isNull());
-
// Set up quadrature
_quadrature->initialize(_data->basis, _data->basisDeriv, _data->quadPts,
_data->quadWts, _data->cellDim, _data->numBasis,
@@ -207,7 +202,6 @@
bc->label(_data->label);
bc->db(&db);
bc->initialize(*mesh, &cs, upDir);
-#endif
} // _initialize
Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumann.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumann.hh 2007-08-01 21:04:31 UTC (rev 7768)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumann.hh 2007-08-01 21:20:44 UTC (rev 7769)
@@ -46,7 +46,6 @@
// CPPUNIT TEST SUITE /////////////////////////////////////////////////
CPPUNIT_TEST_SUITE( TestNeumann );
CPPUNIT_TEST( testConstructor );
- CPPUNIT_TEST( testIntegrateResidual );
CPPUNIT_TEST_SUITE_END();
// PUBLIC METHODS /////////////////////////////////////////////////////
@@ -83,9 +82,6 @@
*/
void _initialize(ALE::Obj<ALE::Mesh>* mesh,
Neumann* const bc) const;
- // Maybe need to deal with fields in integrateResidual.
- // Neumann* const bc,
- // topology::FieldsManager* fields) const;
}; // class TestNeumann
Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumannHex8.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumannHex8.hh 2007-08-01 21:04:31 UTC (rev 7768)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumannHex8.hh 2007-08-01 21:20:44 UTC (rev 7769)
@@ -36,8 +36,8 @@
// CPPUNIT TEST SUITE /////////////////////////////////////////////////
CPPUNIT_TEST_SUITE( TestNeumannHex8 );
- CPPUNIT_TEST( testInitialize );
- CPPUNIT_TEST( testIntegrateResidual );
+ // CPPUNIT_TEST( testInitialize );
+ // CPPUNIT_TEST( testIntegrateResidual );
CPPUNIT_TEST_SUITE_END();
// PUBLIC METHODS /////////////////////////////////////////////////////
Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataHex8.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataHex8.hh 2007-08-01 21:04:31 UTC (rev 7768)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataHex8.hh 2007-08-01 21:20:44 UTC (rev 7769)
@@ -10,49 +10,59 @@
// ======================================================================
//
-#if !defined(pylith_bc_dirichletdatahex8_hh)
-#define pylith_bc_dirichletdatahex8_hh
+#if !defined(pylith_bc_neumanndatahex8_hh)
+#define pylith_bc_neumanndatahex8_hh
-#include "DirichletData.hh"
+#include "NeumannData.hh"
namespace pylith {
namespace bc {
- class DirichletDataHex8;
+ class NeumannDataHex8;
} // pylith
} // bc
-class pylith::bc::DirichletDataHex8 : public DirichletData
+class pylith::bc::NeumannDataHex8 : public NeumannData
{
// PUBLIC METHODS ///////////////////////////////////////////////////////
public:
/// Constructor
- DirichletDataHex8(void);
+ NeumannDataHex8(void);
/// Destructor
- ~DirichletDataHex8(void);
+ ~NeumannDataHex8(void);
// PRIVATE MEMBERS //////////////////////////////////////////////////////
private:
- static const int _numDOF; ///< Number of degrees of freedom at each point.
+ // Quadrature information
+ static const char* _meshFilename; ///< Filename of input mesh.
+ static const int _spaceDim; ///< Dimension of mesh.
+ static const int _cellDim; ///< Dimension of surface cells.
+ static const int _numBasis; ///< Number of basis functions for surface cells.
+ static const int _numQuadPts; ///< Number of quadrature points per boundary cell.
+ static const double _quadPts[]; ///< Coordinates of quadrature points in ref cell.
+ static const double _quadWts[]; ///< Weights of quadrature points.
+ static const double _basis[]; ///< Cell basis functions at quad points.
+ static const double _basisDeriv[]; ///< Derivatives of cell basis functions at quad points.
+ static const double _verticesRef[]; ///< Coordinates of vertices in ref cell (dual basis).
- static const int _numFixedDOF; ///< Number of fixedDOF at constrained points.
- static const int _numConstrainedPts; ///< Number of points constrained.
-
+ // BC information
static const int _id; ///< Boundary condition identifier
static const char* _label; /// Label for boundary condition group
+ static const char* _dbFilename; ///< Filename of simple spatial database.
- static const int _fixedDOF[]; ///< Degrees of freedom constrained at points
+ // Calculated values.
+ static const int _numBoundaryCells; ///< Expected number of cells on Neumann boundary.
+ static const int _numVertices; ///< Expected number of vertices in the mesh.
+ static const int _numCorners[]; ///< Expected number of vertices for each boundary cell.
+ static const int _cells[]; ///< Expected array of vertices defining each boundary cell.
+ static const double _tractionCell[]; ///< Expected traction values at quadrature points.
+ static const double _valsResidual[]; ///< Expected residual at each vertex.
- static const int _constrainedPoints[]; ///< Array of indices of constrained pts.
- static const double _values[]; ///< Values at constrained points.
-
- static const char* _meshFilename; ///< Filename of input mesh.
- static const char* _dbFilename; ///< Filename of simple spatial database.
};
-#endif // pylith_bc_dirichletdatahex8_hh
+#endif // pylith_bc_neumanndatahex8_hh
// End of file
More information about the cig-commits
mailing list