[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