[cig-commits] r8296 - in short/3D/PyLith/trunk: libsrc/bc
unittests/libtests/bc unittests/libtests/bc/data
willic3 at geodynamics.org
willic3 at geodynamics.org
Thu Nov 15 13:35:59 PST 2007
Author: willic3
Date: 2007-11-15 13:35:58 -0800 (Thu, 15 Nov 2007)
New Revision: 8296
Modified:
short/3D/PyLith/trunk/libsrc/bc/Neumann.cc
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/NeumannData.cc
short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannData.hh
short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataHex8.cc
short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataHex8.hh
Log:
A few fixes to Neumann.cc and an initial unit test for hex8 elements.
Modified: short/3D/PyLith/trunk/libsrc/bc/Neumann.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/bc/Neumann.cc 2007-11-15 01:14:57 UTC (rev 8295)
+++ short/3D/PyLith/trunk/libsrc/bc/Neumann.cc 2007-11-15 21:35:58 UTC (rev 8296)
@@ -162,7 +162,7 @@
// Containers for database query results and quadrature coordinates in
// reference geometry.
double_array tractionDataLocal(spaceDim);
- double_array quadPtRef(spaceDim);
+ double_array quadPtRef(cellDim);
const double_array& quadPtsRef = _quadrature->quadPtsRef();
// Container for cell tractions rotated to global coordinates.
@@ -183,7 +183,8 @@
// std::cout << "c_iter: " << *c_iter << std::endl;
_quadrature->computeGeometry(_boundaryMesh, coordinates, *c_iter);
const double_array& quadPts = _quadrature->quadPts();
- _boundaryMesh->restrict(coordinates, *c_iter, &cellVertices[0], cellVertices.size());
+ _boundaryMesh->restrict(coordinates, *c_iter,
+ &cellVertices[0], cellVertices.size());
/* Debugging stuff
std::cout << "cellVertices: " << std::endl;
for(int iTest = 0; iTest < numBasis; ++iTest) {
@@ -193,9 +194,10 @@
std::cout << std::endl;
} // for
*/
+
cellTractionsGlobal = 0.0;
-
- for(int iQuad = 0, iRef=0, iSpace=0; iQuad < numQuadPts; ++iQuad, iRef+=cellDim, iSpace+=spaceDim) {
+ for(int iQuad = 0, iRef=0, iSpace=0; iQuad < numQuadPts;
+ ++iQuad, iRef+=cellDim, iSpace+=spaceDim) {
// Get traction vector in local coordinate system at quadrature point
const int err = _db->query(&tractionDataLocal[0], spaceDim,
&quadPts[iSpace], spaceDim, cs);
@@ -222,7 +224,7 @@
for(int iDim = 0; iDim < spaceDim; ++iDim) {
for(int jDim = 0; jDim < spaceDim; ++jDim)
cellTractionsGlobal[iDim+iSpace] +=
- orientation[iDim*spaceDim+jDim] * tractionDataLocal[jDim];
+ orientation[jDim*spaceDim+iDim] * tractionDataLocal[jDim];
} // for
} // for
Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumann.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumann.cc 2007-11-15 01:14:57 UTC (rev 8295)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumann.cc 2007-11-15 21:35:58 UTC (rev 8296)
@@ -17,16 +17,18 @@
#include "pylith/bc/Neumann.hh" // USES Neumann
#include "data/NeumannData.hh" // USES NeumannData
+
#include "pylith/feassemble/Quadrature.hh" // USES Quadrature
#include "pylith/topology/FieldsManager.hh" // USES FieldsManager
#include "pylith/meshio/MeshIOAscii.hh" // USES MeshIOAscii
#include "pylith/utils/sievetypes.hh" // USES PETSc Mesh
-#include <Selection.hh> // USES submesh algorithms
#include "spatialdata/geocoords/CSCart.hh" // USES CSCart
#include "spatialdata/spatialdb/SimpleDB.hh" // USES SimpleDB
#include "spatialdata/spatialdb/SimpleIOAscii.hh" // USES SimpleIOAscii
+#include <stdexcept> // USES std::runtime_erro
+
// ----------------------------------------------------------------------
CPPUNIT_TEST_SUITE_REGISTRATION( pylith::bc::TestNeumann );
@@ -63,39 +65,67 @@
{ // testInitialize
ALE::Obj<Mesh> mesh;
Neumann bc;
- _initialize(&mesh, &bc);
+ topology::FieldsManager fields(mesh);
+ _initialize(&mesh, &bc, &fields);
CPPUNIT_ASSERT(0 != _data);
- // Check submesh
- 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 ALE::Obj<Mesh>& boundaryMesh = bc._boundaryMesh;
+
+ // Check boundary mesh
+ CPPUNIT_ASSERT(!boundaryMesh.isNull());
+
+ const int cellDim = boundaryMesh->getDimension();
+ const ALE::Obj<sieve_type>& sieve = boundaryMesh->getSieve();
+ const ALE::Obj<Mesh::label_sequence>& cells = boundaryMesh->heightStratum(1);
+ const int numBoundaryVertices = boundaryMesh->depthStratum(0)->size();
const int numBoundaryCells = cells->size();
+
+ CPPUNIT_ASSERT_EQUAL(_data->cellDim, cellDim);
+ CPPUNIT_ASSERT_EQUAL(_data->numBoundaryVertices, numBoundaryVertices);
CPPUNIT_ASSERT_EQUAL(_data->numBoundaryCells, numBoundaryCells);
+
+ // boundaryMesh->view("BOUNDARY MESH");
+
+ const int boundaryDepth = boundaryMesh->depth()-1; // depth of boundary cells
const ALE::Obj<real_section_type>& coordinates =
mesh->getRealSection("coordinates");
- coordinates->view("Mesh coordinates from TestNeumann::testInitialize");
+ // coordinates->view("Mesh coordinates from TestNeumann::testInitialize");
const int spaceDim = _data->spaceDim;
const int numBasis = bc._quadrature->numBasis();
- double_array cellVertices(numBasis*spaceDim);
+ const int cellVertSize = _data->numCorners * spaceDim;
+ double_array cellVertices(cellVertSize);
+
+ const double tolerance = 1.0e-06;
+
+ // check cell vertices
int iCell = 0;
for(Mesh::label_sequence::iterator c_iter = cells->begin();
c_iter != cells->end();
++c_iter) {
- const int numCorners = sieve->nCone(*c_iter, bc._boundaryMesh->depth()-1)->size();
- CPPUNIT_ASSERT_EQUAL(_data->numCorners[iCell++], numCorners);
- bc._boundaryMesh->restrict(coordinates, *c_iter, &cellVertices[0], cellVertices.size());
- std::cout << "c_iter " << *c_iter << " vertex coords:" << std::endl;
+ const int numCorners = (boundaryMesh->getDimension() > 0) ?
+ sieve->nCone(*c_iter, boundaryDepth)->size() : 1;
+ CPPUNIT_ASSERT_EQUAL(_data->numCorners, numCorners);
+
+ boundaryMesh->restrict(coordinates, *c_iter, &cellVertices[0],
+ cellVertices.size());
+ double vert =0.0;
+ double vertE =0.0;
+ // std::cout << "c_iter " << *c_iter << " vertex coords:" << std::endl;
for(int iVert = 0; iVert < numCorners; ++iVert) {
for(int iDim = 0; iDim < spaceDim; ++iDim) {
- std::cout << " " << cellVertices[iDim+spaceDim*iVert];
- // Need to get vertex info and put it in data, then put in a
- // CPPUNIT_ASSERT_DOUBLES_EQUAL
+ vertE = _data->cellVertices[iDim+spaceDim*iVert+iCell*cellVertSize];
+ vert = cellVertices[iDim+spaceDim*iVert];
+ // std::cout << " " << cellVertices[iDim+spaceDim*iVert];
+ if (fabs(vertE) > 1.0)
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, vert/vertE, tolerance);
+ else
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(vert, vertE, tolerance);
} // for
- std::cout << std::endl;
+ // std::cout << std::endl;
} // for
+ iCell++;
} // for
// Check traction values
@@ -103,7 +133,6 @@
const int fiberDim = numQuadPts * spaceDim;
double_array tractionsCell(fiberDim);
int index = 0;
- const double tolerance = 1.0e-06;
for(Mesh::label_sequence::iterator c_iter = cells->begin();
c_iter != cells->end();
@@ -133,38 +162,31 @@
ALE::Obj<Mesh> mesh;
Neumann bc;
- Neumann integrator;
- _initialize(&mesh, &bc);
-
- // Set up fields
topology::FieldsManager fields(mesh);
- fields.addReal("residual");
- fields.addReal("solution");
- fields.solutionField("solution");
+ _initialize(&mesh, &bc, &fields);
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);
+ bc.integrateResidual(residual, t, &fields, mesh);
const double* valsE = _data->valsResidual;
- const int sizeE = _data->spaceDim * _data->numVertices;
+ const int totalNumVertices = mesh->depthStratum(0)->size();
+ const int sizeE = _data->spaceDim * totalNumVertices;
const double* vals = residual->restrict();
const int size = residual->sizeWithBC();
CPPUNIT_ASSERT_EQUAL(sizeE, size);
+ //residual->view("RESIDUAL");
+
const double tolerance = 1.0e-06;
+ // std::cout << "computed residuals: " << std::endl;
for (int i=0; i < size; ++i)
+ // std::cout << " " << vals[i] << std::endl;
if (fabs(valsE[i]) > 1.0)
CPPUNIT_ASSERT_DOUBLES_EQUAL(1.0, vals[i]/valsE[i], tolerance);
else
@@ -175,44 +197,65 @@
// ----------------------------------------------------------------------
void
pylith::bc::TestNeumann::_initialize(ALE::Obj<Mesh>* mesh,
- Neumann* const bc) const
+ Neumann* const bc,
+ topology::FieldsManager* fields) const
{ // _initialize
CPPUNIT_ASSERT(0 != _data);
CPPUNIT_ASSERT(0 != mesh);
CPPUNIT_ASSERT(0 != bc);
CPPUNIT_ASSERT(0 != _quadrature);
- // Set up mesh
- meshio::MeshIOAscii iohandler;
- iohandler.filename(_data->meshFilename);
- iohandler.read(mesh);
- CPPUNIT_ASSERT(!mesh->isNull());
- (*mesh)->getFactory()->clear();
+ try {
+ // Set up mesh
+ meshio::MeshIOAscii iohandler;
+ iohandler.filename(_data->meshFilename);
+ iohandler.read(mesh);
+ CPPUNIT_ASSERT(!mesh->isNull());
+ (*mesh)->getFactory()->clear();
- // Set up coordinates
- spatialdata::geocoords::CSCart cs;
- cs.setSpaceDim((*mesh)->getDimension());
- cs.initialize();
+ // Set up coordinates
+ spatialdata::geocoords::CSCart cs;
+ cs.setSpaceDim((*mesh)->getDimension());
+ cs.initialize();
- // Set up quadrature
- _quadrature->initialize(_data->basis, _data->basisDeriv, _data->quadPts,
- _data->quadWts, _data->cellDim, _data->numBasis,
- _data->numQuadPts, _data->spaceDim);
+ // Set up quadrature
+ _quadrature->initialize(_data->basis, _data->basisDerivRef, _data->quadPts,
+ _data->quadWts, _data->cellDim, _data->numBasis,
+ _data->numQuadPts, _data->spaceDim);
- // Set up database
- spatialdata::spatialdb::SimpleDB db("TestNeumann");
- spatialdata::spatialdb::SimpleIOAscii dbIO;
- dbIO.filename(_data->dbFilename);
- db.ioHandler(&dbIO);
+ // Set up database
+ spatialdata::spatialdb::SimpleDB db("TestNeumann");
+ spatialdata::spatialdb::SimpleIOAscii dbIO;
+ dbIO.filename(_data->spatialDBFilename);
+ db.ioHandler(&dbIO);
+ db.queryType(spatialdata::spatialdb::SimpleDB::LINEAR);
- const double upDirVals[] = { 0.0, 0.0, 1.0 };
- double_array upDir(upDirVals, 3);
+ const double upDirVals[] = { 0.0, 0.0, 1.0 };
+ double_array upDir(upDirVals, 3);
- bc->id(_data->id);
- bc->label(_data->label);
- bc->quadrature(_quadrature);
- bc->db(&db);
- bc->initialize(*mesh, &cs, upDir);
+ bc->quadrature(_quadrature);
+ bc->id(_data->id);
+ bc->label(_data->label);
+ bc->db(&db);
+ bc->initialize(*mesh, &cs, upDir);
+
+ // Set up fields
+ CPPUNIT_ASSERT(0 != fields);
+ fields->addReal("residual");
+ fields->addReal("dispTBctpdt");
+
+ 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>& dispTBctpdt =
+ fields->getReal("dispTBctpdt");
+ CPPUNIT_ASSERT(!dispTBctpdt.isNull());
+ } catch (const ALE::Exception& err) {
+ throw std::runtime_error(err.msg());
+ } // catch
} // _initialize
Modified: short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumann.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumann.hh 2007-11-15 01:14:57 UTC (rev 8295)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumann.hh 2007-11-15 21:35:58 UTC (rev 8296)
@@ -37,6 +37,10 @@
namespace feassemble {
class Quadrature; // HOLDSA Quadrature
} // feassemble
+
+ namespace topology {
+ class FieldsManager; // USES FieldsManager
+ } // topology
} // pylith
/// C++ unit testing for Neumann.
@@ -79,9 +83,11 @@
*
* @param mesh PETSc mesh to initialize
* @param bc Neumann boundary condition to initialize.
+ * @param fields Solution fields.
*/
void _initialize(ALE::Obj<ALE::Mesh>* mesh,
- Neumann* const bc) const;
+ 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-11-15 01:14:57 UTC (rev 8295)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/TestNeumannHex8.hh 2007-11-15 21:35:58 UTC (rev 8296)
@@ -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/NeumannData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannData.cc 2007-11-15 01:14:57 UTC (rev 8295)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannData.cc 2007-11-15 21:35:58 UTC (rev 8296)
@@ -16,22 +16,21 @@
// Constructor
pylith::bc::NeumannData::NeumannData(void) :
meshFilename(0),
- spaceDim(0),
- cellDim(0),
numBasis(0),
numQuadPts(0),
quadPts(0),
quadWts(0),
basis(0),
- basisDeriv(0),
- verticesRef(0),
+ basisDerivRef(0),
+ spatialDBFilename(0),
id(0),
- label(0),
- dbFilename(0),
+ label(""),
+ spaceDim(0),
+ cellDim(0),
+ numBoundaryVertices(0),
numBoundaryCells(0),
- numVertices(0),
numCorners(0),
- cells(0),
+ cellVertices(0),
tractionsCell(0),
valsResidual(0)
{ // constructor
Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannData.hh 2007-11-15 01:14:57 UTC (rev 8295)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannData.hh 2007-11-15 21:35:58 UTC (rev 8296)
@@ -38,30 +38,33 @@
/// @name Quadrature information
//@{
- int spaceDim; ///< Spatial dimension for the problem.
- int cellDim; ///< Dimension of surface cells.
int numBasis; ///< Number of basis functions for surface cells.
int numQuadPts; ///< Number of quadrature points per boundary cell.
double* quadPts; ///< Coordinates of quadrature points in ref cell.
double* quadWts; ///< Weights of quadrature points.
double* basis; ///< Cell basis functions at quad points.
- double* basisDeriv; ///< Derivatives of cell basis functions at quad points.
- double* verticesRef; ///< Coordinates of vertices in ref cell (dual basis).
+ double* basisDerivRef; ///< Derivatives of basis functions at quad points.
//@}
- /// @name BC information
+ /// @name Parameter information
//@{
+ char* spatialDBFilename; ///< Filename of simple spatial database.
int id; ///< Boundary condition identifier
char* label; ///< Label for boundary condition group
- char* dbFilename; ///< Filename of simple spatial database.
//@}
+ /// @name Boundary mesh information
+ //@{
+ int spaceDim; ///< Number of dimensions of vertex coordinates
+ int cellDim; ///< Dimension of surface cells.
+ int numBoundaryVertices; ///< Number of boundary vertices in the mesh.
+ int numBoundaryCells; ///< Number of cells on Neumann boundary.
+ int numCorners; ///< Number of vertices for each boundary cell.
+ double* cellVertices; ///< Vertex coordinates for boundary cells.
+ //@}
+
/// @name Calculated values.
//@{
- int numBoundaryCells; ///< Expected number of cells on Neumann boundary.
- int numVertices; ///< Expected number of vertices in the mesh.
- int* numCorners; ///< Expected number of vertices for each boundary cell.
- int* cells; ///< Expected array of vertices defining each boundary cell.
double* tractionsCell; ///< Expected traction values at quadrature points.
double* valsResidual; ///< Expected residual at each vertex.
//@}
Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataHex8.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataHex8.cc 2007-11-15 01:14:57 UTC (rev 8295)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataHex8.cc 2007-11-15 21:35:58 UTC (rev 8296)
@@ -15,18 +15,17 @@
* Neumann BC on faces defined by vertices 0, 2, 4, 6, 8, 10.
*
* Constant value of 4 Pa horizontal shear applied on both faces.
- * Since each face has an area of 2 m^2, we should obtain the following
+ * Since each face has an area of 4 m^2, we should obtain the following
* values:
- * 2 N in x-direction: Vertices 0, 2, 8, 10
- * 4 N in x-direction: Vertices 4, 6.
+ * 4 N in x-direction: Vertices 0, 2, 8, 10
+ * 8 N in x-direction: Vertices 4, 6.
*/
#include "NeumannDataHex8.hh"
const char* pylith::bc::NeumannDataHex8::_meshFilename =
"data/hex8b.mesh";
-const int pylith::bc::NeumannDataHex8::_spaceDim = 3;
-const int pylith::bc::NeumannDataHex8::_cellDim = 2;
+
const int pylith::bc::NeumannDataHex8::_numBasis = 4;
const int pylith::bc::NeumannDataHex8::_numQuadPts = 4;
const double pylith::bc::NeumannDataHex8::_quadPts[] = {
@@ -44,7 +43,7 @@
0.16666667, 0.0446582, 0.62200847, 0.16666667,
0.0446582, 0.16666667, 0.16666667, 0.62200847,
};
-const double pylith::bc::NeumannDataHex8::_basisDeriv[] = {
+const double pylith::bc::NeumannDataHex8::_basisDerivRef[] = {
-0.39433757, -0.39433757,
+0.39433757, -0.10566243,
+0.10566243, +0.10566243,
@@ -65,64 +64,70 @@
+0.39433757, +0.10566243,
-0.39433757, +0.39433757,
};
-const double pylith::bc::NeumannDataHex8::_verticesRef[] = {
- -1.0, -1.0,
- +1.0, -1.0,
- +1.0, +1.0,
- -1.0, +1.0
-};
+const char* pylith::bc::NeumannDataHex8::_spatialDBFilename =
+ "data/hex8b.spatialdb";
const int pylith::bc::NeumannDataHex8::_id = 0;
const char* pylith::bc::NeumannDataHex8::_label = "tractionVerts";
-const char* pylith::bc::NeumannDataHex8::_dbFilename =
- "data/hex8b.spatialdb";
+const int pylith::bc::NeumannDataHex8::_spaceDim = 3;
+const int pylith::bc::NeumannDataHex8::_cellDim = 2;
+
+const int pylith::bc::NeumannDataHex8::_numBoundaryVertices = 6;
const int pylith::bc::NeumannDataHex8::_numBoundaryCells = 2;
-const int pylith::bc::NeumannDataHex8::_numVertices = 12;
-const int pylith::bc::NeumannDataHex8::_numCorners[] = { 4, 4 };
-const int pylith::bc::NeumannDataHex8::_cells[] = { 0, 4, 6, 2,
- 4, 8, 10, 6 };
-const double pylith::bc::NeumannDataHex8::_tractionsCell[] = { 1.0, 0.0, 0.0,
- 1.0, 0.0, 0.0,
- 1.0, 0.0, 0.0,
- 1.0, 0.0, 0.0,
- 1.0, 0.0, 0.0,
- 1.0, 0.0, 0.0,
- 1.0, 0.0, 0.0,
- 1.0, 0.0, 0.0};
-const double pylith::bc::NeumannDataHex8::_valsResidual[] = { 2.0, 0.0, 0.0,
+const int pylith::bc::NeumannDataHex8::_numCorners = 4;
+const double pylith::bc::NeumannDataHex8::_cellVertices[] = { 0.0,-1.0,-1.0,
+ 0.0,-1.0, 1.0,
+ -2.0,-1.0, 1.0,
+ -2.0,-1.0,-1.0,
+ 2.0,-1.0,-1.0,
+ 2.0,-1.0, 1.0,
+ 0.0,-1.0, 1.0,
+ 0.0,-1.0,-1.0};
+const double pylith::bc::NeumannDataHex8::_tractionsCell[] = { 4.0, 0.0, 0.0,
+ 4.0, 0.0, 0.0,
+ 4.0, 0.0, 0.0,
+ 4.0, 0.0, 0.0,
+ 4.0, 0.0, 0.0,
+ 4.0, 0.0, 0.0,
+ 4.0, 0.0, 0.0,
+ 4.0, 0.0, 0.0};
+const double pylith::bc::NeumannDataHex8::_valsResidual[] = { 4.0, 0.0, 0.0,
0.0, 0.0, 0.0,
- 2.0, 0.0, 0.0,
+ 4.0, 0.0, 0.0,
0.0, 0.0, 0.0,
+ 8.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
+ 8.0, 0.0, 0.0,
+ 0.0, 0.0, 0.0,
4.0, 0.0, 0.0,
0.0, 0.0, 0.0,
4.0, 0.0, 0.0,
- 0.0, 0.0, 0.0,
- 2.0, 0.0, 0.0,
- 0.0, 0.0, 0.0,
- 2.0, 0.0, 0.0,
0.0, 0.0, 0.0};
pylith::bc::NeumannDataHex8::NeumannDataHex8(void)
{ // constructor
meshFilename = const_cast<char*>(_meshFilename);
- spaceDim = _spaceDim;
- cellDim = _cellDim;
+
numBasis = _numBasis;
numQuadPts = _numQuadPts;
quadPts = const_cast<double*>(_quadPts);
quadWts = const_cast<double*>(_quadWts);
basis = const_cast<double*>(_basis);
- basisDeriv = const_cast<double*>(_basisDeriv);
- verticesRef = const_cast<double*>(_verticesRef);
+ basisDerivRef = const_cast<double*>(_basisDerivRef);
+
+ spatialDBFilename = const_cast<char*>(_spatialDBFilename);
id = _id;
label = const_cast<char*>(_label);
- dbFilename = const_cast<char*>(_dbFilename);
+
+ spaceDim = _spaceDim;
+ cellDim = _cellDim;
+ numBoundaryVertices = _numBoundaryVertices;
numBoundaryCells = _numBoundaryCells;
- numVertices = _numVertices;
- numCorners = const_cast<int*>(_numCorners);
- cells = const_cast<int*>(_cells);
+ numCorners = _numCorners;
+
+ cellVertices = const_cast<double*>(_cellVertices);
tractionsCell = const_cast<double*>(_tractionsCell);
valsResidual = const_cast<double*>(_valsResidual);
Modified: short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataHex8.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataHex8.hh 2007-11-15 01:14:57 UTC (rev 8295)
+++ short/3D/PyLith/trunk/unittests/libtests/bc/data/NeumannDataHex8.hh 2007-11-15 21:35:58 UTC (rev 8296)
@@ -36,30 +36,32 @@
// PRIVATE MEMBERS //////////////////////////////////////////////////////
private:
+ static const char* _meshFilename;
+
// 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 _numBasis;
+ static const int _numQuadPts;
+ static const double _quadPts[];
+ static const double _quadWts[];
+ static const double _basis[];
+ static const double _basisDerivRef[];
// 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 char* _spatialDBFilename;
+ static const int _id;
+ static const char* _label;
+ // Mesh information
+ static const int _spaceDim;
+ static const int _cellDim;
+ static const int _numBoundaryVertices;
+ static const int _numBoundaryCells;
+ static const int _numCorners;
+ static const double _cellVertices[];
+
// 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 _tractionsCell[]; ///< Expected traction values at quadrature points.
- static const double _valsResidual[]; ///< Expected residual at each vertex.
+ static const double _tractionsCell[];
+ static const double _valsResidual[];
};
More information about the cig-commits
mailing list