[cig-commits] r6715 - in short/3D/PyLith/trunk: . libsrc/faults
libsrc/feassemble libsrc/materials modulesrc/feassemble
pylith/feassemble pylith/feassemble/quadrature
unittests/libtests/feassemble unittests/libtests/feassemble/data
unittests/pytests/feassemble
brad at geodynamics.org
brad at geodynamics.org
Fri Apr 27 13:27:05 PDT 2007
Author: brad
Date: 2007-04-27 13:27:03 -0700 (Fri, 27 Apr 2007)
New Revision: 6715
Removed:
short/3D/PyLith/trunk/pylith/feassemble/Field.py
short/3D/PyLith/trunk/unittests/pytests/feassemble/TestQuadrature.cc
Modified:
short/3D/PyLith/trunk/TODO
short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveKin.cc
short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveKin.hh
short/3D/PyLith/trunk/libsrc/feassemble/ExplicitElasticity.cc
short/3D/PyLith/trunk/libsrc/feassemble/ImplicitElasticity.cc
short/3D/PyLith/trunk/libsrc/feassemble/Quadrature.cc
short/3D/PyLith/trunk/libsrc/feassemble/Quadrature.hh
short/3D/PyLith/trunk/libsrc/feassemble/Quadrature.icc
short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1D.cc
short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1D.hh
short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1Din2D.cc
short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1Din2D.hh
short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1Din3D.cc
short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1Din3D.hh
short/3D/PyLith/trunk/libsrc/feassemble/Quadrature2D.cc
short/3D/PyLith/trunk/libsrc/feassemble/Quadrature2D.hh
short/3D/PyLith/trunk/libsrc/feassemble/Quadrature2Din3D.cc
short/3D/PyLith/trunk/libsrc/feassemble/Quadrature2Din3D.hh
short/3D/PyLith/trunk/libsrc/feassemble/Quadrature3D.cc
short/3D/PyLith/trunk/libsrc/feassemble/Quadrature3D.hh
short/3D/PyLith/trunk/libsrc/materials/Material.cc
short/3D/PyLith/trunk/modulesrc/feassemble/feassemble.pyxe.src
short/3D/PyLith/trunk/pylith/feassemble/FIATCell.py
short/3D/PyLith/trunk/pylith/feassemble/FIATSimplex.py
short/3D/PyLith/trunk/pylith/feassemble/ReferenceCell.py
short/3D/PyLith/trunk/pylith/feassemble/quadrature/Quadrature.py
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature1D.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature1Din2D.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature1Din3D.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature2D.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature2Din3D.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature3D.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorInertia.py
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature1DLinear.py
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature1DQuadratic.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/Quadrature3DQuadratic.py
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureApp.py
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXY.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXY.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXYZ.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXYZ.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXZ.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXZ.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearYZ.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearYZ.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DLinear.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DQuadratic.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DQuadratic.hh
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/feutils.py
short/3D/PyLith/trunk/unittests/pytests/feassemble/TestFIATSimplex.py
short/3D/PyLith/trunk/unittests/pytests/feassemble/TestQuadrature.hh
short/3D/PyLith/trunk/unittests/pytests/feassemble/TestQuadrature.icc
short/3D/PyLith/trunk/unittests/pytests/feassemble/TestQuadrature.py
short/3D/PyLith/trunk/unittests/pytests/feassemble/testfeassemble.pyxe.src
Log:
Added evaluation of cell geometry information at vertices to Quadrature. Need Matt to fix getting vertex information from FIAT.
Modified: short/3D/PyLith/trunk/TODO
===================================================================
--- short/3D/PyLith/trunk/TODO 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/TODO 2007-04-27 20:27:03 UTC (rev 6715)
@@ -25,10 +25,6 @@
Double check consistency in ordering of vertices (positive/negative).
b. Implement slip time function
- i. Allow 1-D, 2-D, or 3-D specification of slip.
- 1-D uses "slip"
- 2-D uses "slip", "fault-opening"
- 3-D uses "left-lateral", "reverse", "fault-opening"
ii. Add Python
iii. Add unit tests
Modified: short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveKin.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveKin.cc 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveKin.cc 2007-04-27 20:27:03 UTC (rev 6715)
@@ -66,7 +66,7 @@
throw std::runtime_error("Up direction for fault orientation must be "
"a vector with 3 components.");
- // Allocate section for orientation information
+ // Allocate section for orientation information (all vertices)
// Loop over cells
// Compute cell geometry at vertices
Modified: short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveKin.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveKin.hh 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/libsrc/faults/FaultCohesiveKin.hh 2007-04-27 20:27:03 UTC (rev 6715)
@@ -137,6 +137,10 @@
EqKinSrc* _eqsrc; ///< Kinematic earthquake source information
+ /// Orientation of fault surface at vertices (fiber dimension is
+ /// nonzero only at constraint vertices)
+ ALE::Obj<real_section_type> _orientation;
+
/// Fault vertices associated with constraints
std::vector<Mesh::point_type> _constraintVert;
Modified: short/3D/PyLith/trunk/libsrc/feassemble/ExplicitElasticity.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/ExplicitElasticity.cc 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/libsrc/feassemble/ExplicitElasticity.cc 2007-04-27 20:27:03 UTC (rev 6715)
@@ -130,7 +130,7 @@
cellIter != cellsEnd;
++cellIter) {
// Compute geometry information for current cell
- _quadrature->computeGeometry(mesh, coordinates, *cellIter);
+ _quadrature->computeGeometryQuad(mesh, coordinates, *cellIter);
// Set cell data in material
_material->initCellData(*cellIter, numQuadPts);
@@ -145,9 +145,9 @@
mesh->restrict(dispTmdt, *cellIter);
// 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& basis = _quadrature->basisQuad();
+ const double_array& basisDeriv = _quadrature->basisDerivQuad();
+ const double_array& jacobianDet = _quadrature->jacobianDetQuad();
// Compute action for cell
@@ -298,7 +298,7 @@
cellIter != cellsEnd;
++cellIter) {
// Compute geometry information for current cell
- _quadrature->computeGeometry(mesh, coordinates, *cellIter);
+ _quadrature->computeGeometryQuad(mesh, coordinates, *cellIter);
// Set cell data in material
_material->initCellData(*cellIter, numQuadPts);
@@ -307,8 +307,8 @@
_resetCellMatrix();
// Get cell geometry information that depends on cell
- const double_array& basis = _quadrature->basis();
- const double_array& jacobianDet = _quadrature->jacobianDet();
+ const double_array& basis = _quadrature->basisQuad();
+ const double_array& jacobianDet = _quadrature->jacobianDetQuad();
// Get material physical properties at quadrature points for this cell
const std::vector<double_array>& density = _material->calcDensity();
Modified: short/3D/PyLith/trunk/libsrc/feassemble/ImplicitElasticity.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/ImplicitElasticity.cc 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/libsrc/feassemble/ImplicitElasticity.cc 2007-04-27 20:27:03 UTC (rev 6715)
@@ -105,7 +105,7 @@
cellIter != cellsEnd;
++cellIter) {
// Compute geometry information for current cell
- _quadrature->computeGeometry(mesh, coordinates, *cellIter);
+ _quadrature->computeGeometryQuad(mesh, coordinates, *cellIter);
// Set cell data in material
_material->initCellData(*cellIter, numQuadPts);
@@ -114,8 +114,8 @@
_resetCellVector();
// Get cell geometry information that depends on cell
- const double_array& basis = _quadrature->basis();
- const double_array& jacobianDet = _quadrature->jacobianDet();
+ const double_array& basis = _quadrature->basisQuad();
+ const double_array& jacobianDet = _quadrature->jacobianDetQuad();
// Get density at quadrature points for this cell
const std::vector<double_array>& density = _material->calcDensity();
@@ -204,7 +204,7 @@
cellIter != cellsEnd;
++cellIter) {
// Compute geometry information for current cell
- _quadrature->computeGeometry(mesh, coordinates, *cellIter);
+ _quadrature->computeGeometryQuad(mesh, coordinates, *cellIter);
// Set cell data in material
_material->initCellData(*cellIter, numQuadPts);
@@ -217,9 +217,9 @@
mesh->restrict(dispT, *cellIter);
// 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& basis = _quadrature->basisQuad();
+ const double_array& basisDeriv = _quadrature->basisDerivQuad();
+ const double_array& jacobianDet = _quadrature->jacobianDetQuad();
if (cellDim != spaceDim)
throw std::logic_error("Not implemented yet.");
@@ -368,6 +368,10 @@
const double_array& quadWts = _quadrature->quadWts();
const int numBasis = _quadrature->numCorners();
const int spaceDim = _quadrature->spaceDim();
+
+ // Compute Jacobian for cell, specific for each geometry type
+ if (cellDim != spaceDim)
+ throw std::logic_error("Not implemented yet.")
// Allocate vector for cell values (if necessary)
_initCellMatrix();
@@ -377,7 +381,7 @@
cellIter != cellsEnd;
++cellIter) {
// Compute geometry information for current cell
- _quadrature->computeGeometry(mesh, coordinates, *cellIter);
+ _quadrature->computeGeometryQuad(mesh, coordinates, *cellIter);
// Set cell data in material
_material->initCellData(*cellIter, numQuadPts);
@@ -386,14 +390,10 @@
_resetCellMatrix();
// 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& basis = _quadrature->basisQuad();
+ const double_array& basisDeriv = _quadrature->basisDerivQuad();
+ const double_array& jacobianDet = _quadrature->jacobianDetQuad();
- // Compute Jacobian for cell, specific for each geometry type
- if (cellDim != spaceDim)
- throw std::logic_error("Not implemented yet.")
-
// Need to finish fixing from here***************************
// 1D Case
if (1 == cellDim) {
Modified: short/3D/PyLith/trunk/libsrc/feassemble/Quadrature.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Quadrature.cc 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Quadrature.cc 2007-04-27 20:27:03 UTC (rev 6715)
@@ -40,14 +40,18 @@
// Copy constructor
pylith::feassemble::Quadrature::Quadrature(const Quadrature& q) :
_minJacobian(q._minJacobian),
- _basis(q._basis),
- _basisDeriv(q._basisDeriv),
_quadPtsRef(q._quadPtsRef),
_quadPts(q._quadPts),
_quadWts(q._quadWts),
- _jacobian(q._jacobian),
- _jacobianInv(q._jacobianInv),
- _jacobianDet(q._jacobianDet),
+ _basisVert(q._basisVert),
+ _basisDerivVert(q._basisDerivVert),
+ _jacobianVert(q._jacobianVert),
+ _jacobianDetVert(q._jacobianDetVert),
+ _basisQuad(q._basisQuad),
+ _basisDerivQuad(q._basisDerivQuad),
+ _jacobianQuad(q._jacobianQuad),
+ _jacobianInvQuad(q._jacobianInvQuad),
+ _jacobianDetQuad(q._jacobianDetQuad),
_cellDim(q._cellDim),
_numBasis(q._numBasis),
_numQuadPts(q._numQuadPts),
@@ -59,8 +63,10 @@
// Set basis functions and their derivatives and coordinates and
// weights of the quadrature points.
void
-pylith::feassemble::Quadrature::initialize(const double* basis,
- const double* basisDeriv,
+pylith::feassemble::Quadrature::initialize(const double* basisVert,
+ const double* basisDerivVert,
+ const double* basisQuad,
+ const double* basisDerivQuad,
const double* quadPtsRef,
const double* quadWts,
const int cellDim,
@@ -68,8 +74,10 @@
const int numQuadPts,
const int spaceDim)
{ // initialize
- if (0 == basis ||
- 0 == basisDeriv ||
+ if (0 == basisVert ||
+ 0 == basisDerivVert ||
+ 0 == basisQuad ||
+ 0 == basisDerivQuad ||
0 == quadPtsRef ||
0 == quadWts ||
cellDim < 1 || cellDim > 3 ||
@@ -81,8 +89,10 @@
<< "their derivatives, and coordinates and weights of quadrature\n"
<< "points must all be specified.\n"
<< "Values:\n"
- << " basis pointer: " << basis << "\n"
- << " basis derivatites pointer: " << basisDeriv << "\n"
+ << " basis pointer (vertices): " << basisVert << "\n"
+ << " basis derivatites pointer (vertices): " << basisDerivVert << "\n"
+ << " basis pointer (quad pts): " << basisQuad << "\n"
+ << " basis derivatites pointer (quad pts): " << basisDerivQuad << "\n"
<< " quadrature points pointer: " << quadPtsRef << "\n"
<< " quadrature weights pointer: " << quadWts << "\n"
<< " space dimension: " << spaceDim << "\n"
@@ -91,16 +101,27 @@
<< " dimension of coordinate space: " << spaceDim << "\n";
throw std::runtime_error(msg.str());
} // if
+ const int numVertices = numBasis;
- int size = numBasis * numQuadPts;
- _basis.resize(size);
+ int size = numBasis * numVertices;
+ _basisVert.resize(size);
for (int i=0; i < size; ++i)
- _basis[i] = basis[i];
+ _basisVert[i] = basisVert[i];
+ size = numBasis * numVertices * cellDim;
+ _basisDerivVert.resize(size);
+ for (int i=0; i < size; ++i)
+ _basisDerivVert[i] = basisDerivVert[i];
+
+ size = numBasis * numQuadPts;
+ _basisQuad.resize(size);
+ for (int i=0; i < size; ++i)
+ _basisQuad[i] = basisQuad[i];
+
size = numBasis * numQuadPts * cellDim;
- _basisDeriv.resize(size);
+ _basisDerivQuad.resize(size);
for (int i=0; i < size; ++i)
- _basisDeriv[i] = basisDeriv[i];
+ _basisDerivQuad[i] = basisDerivQuad[i];
size = numQuadPts * cellDim;
_quadPtsRef.resize(size);
@@ -118,13 +139,19 @@
_spaceDim = spaceDim;
// Allocate for Jacobian and its inverse
- size = numQuadPts*cellDim*spaceDim;
- _jacobian.resize(size);
- _jacobianInv.resize(size);
+ size = numVertices * cellDim * spaceDim;
+ _jacobianVert.resize(size);
+ size = numQuadPts * cellDim * spaceDim;
+ _jacobianQuad.resize(size);
+ _jacobianInvQuad.resize(size);
+
// Allocate for Jacobian determinant
+ size = numVertices;
+ _jacobianDetVert.resize(size);
+
size = numQuadPts;
- _jacobianDet.resize(size);
+ _jacobianDetQuad.resize(size);
// Allocate for quad pts
size = numQuadPts*spaceDim;
@@ -136,9 +163,11 @@
void
pylith::feassemble::Quadrature::_resetGeometry(void)
{ // _resetGeometry
- _jacobian = 0.0;
- _jacobianInv = 0.0;
- _jacobianDet = 0.0;
+ _jacobianVert = 0.0;
+ _jacobianDetVert = 0.0;
+ _jacobianQuad = 0.0;
+ _jacobianDetQuad = 0.0;
+ _jacobianInvQuad = 0.0;
_quadPts = 0.0;
} // _resetGeometry
Modified: short/3D/PyLith/trunk/libsrc/feassemble/Quadrature.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Quadrature.hh 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Quadrature.hh 2007-04-27 20:27:03 UTC (rev 6715)
@@ -61,6 +61,21 @@
/** Set basis functions and their derivatives, and coordinates and
* weights of the quadrature points.
*
+ * @param basis Array of basis functions evaluated at vertices
+ * N0Qp0, N1Qp0, ...
+ * N0Qp1, N1Qp1, ...
+ * ...
+ * size = numVertices * numBasis
+ * index = iVertex*numBasis + iBasis
+ *
+ * @param basisDeriv Array of basis function derivaties evaluated
+ * at quadrature pts
+ * N0xQp0, N0yQp0, N0zQp0, N1xQp0, N1yQp0, N1zQp0, ...
+ * N0xQp1, N0yQp1, N0zQp1, N1xQp1, N1yQp1, N1zQp1, ...
+ * ...
+ * size = numVertices * numBasis * cellDim
+ * index = iVertex*numBasis*cellDim + iBasis*cellDim + iDim
+ *
* @param basis Array of basis functions evaluated at quadrature pts
* N0Qp0, N1Qp0, ...
* N0Qp1, N1Qp1, ...
@@ -73,7 +88,7 @@
* N0xQp0, N0yQp0, N0zQp0, N1xQp0, N1yQp0, N1zQp0, ...
* N0xQp1, N0yQp1, N0zQp1, N1xQp1, N1yQp1, N1zQp1, ...
* ...
- * size = numBasis * numQuadPts * cellDim
+ * size = numQuadPts * numBasis * cellDim
* index = iQuadPt*numBasis*cellDim + iBasis*cellDim + iDim
*
* @param quadPts Array of coordinates of quadrature points in
@@ -88,12 +103,14 @@
* index = iQuadPt
*
* @param cellDim Number of dimensions in reference cell
- * @param numBasis Number of vertices in a cell
+ * @param numBasis Number of basis functions (and vertices) for a cell
* @param numQuadPts Number of quadrature points
* @param spaceDim Number of dimensions in coordinates of cell vertices
*/
- void initialize(const double* basis,
- const double* basisDeriv,
+ void initialize(const double* basisVert,
+ const double* basisDerivVert,
+ const double* basisQuad,
+ const double* basisDerivQuad,
const double* quadPtsRef,
const double* quadWts,
const int cellDim,
@@ -113,43 +130,73 @@
*/
double minJacobian(void);
+ /** Get coordinates of quadrature points in cell (NOT reference cell).
+ *
+ * @returns Array of coordinates of quadrature points in cell
+ */
+ const double_array& quadPts(void) const;
+
+ /** Get weights of quadrature points.
+ *
+ * @returns Weights of quadrature points
+ */
+ const double_array& quadWts(void) const;
+
+ /** Get basis fns evaluated at vertices.
+ *
+ * @returns Array of basis fns evaluated at vertices
+ */
+ const double_array& basisVert(void) const;
+
+ /** Get derivatives of basis fns evaluated at vertices.
+ *
+ * @returns Array of derivatives of basis fns evaluated at vertices
+ */
+ const double_array& basisDerivVert(void) const;
+
+ /** Get Jacobians evaluated at vertices.
+ *
+ * @returns Array of Jacobian inverses evaluated at vertices.
+ */
+ const double_array& jacobianVert(void) const;
+
+ /** Get determinants of Jacobian evaluated at vertices.
+ *
+ * @returns Array of determinants of Jacobian evaluated at vertices
+ */
+ const double_array& jacobianDetVert(void) const;
+
/** Get basis fns evaluated at quadrature points.
*
* @returns Array of basis fns evaluated at quadrature points
*/
- const double_array& basis(void) const;
+ const double_array& basisQuad(void) const;
/** Get derivatives of basis fns evaluated at quadrature points.
*
* @returns Array of derivatives of basis fns evaluated at
* quadrature points
*/
- const double_array& basisDeriv(void) const;
+ const double_array& basisDerivQuad(void) const;
- /** Get coordinates of quadrature points in cell (NOT reference cell).
+ /** Get Jacobians evaluated at quadrature points.
*
- * @returns Array of coordinates of quadrature points in cell
+ * @returns Array of Jacobian inverses evaluated at quadrature points.
*/
- const double_array& quadPts(void) const;
+ const double_array& jacobianQuad(void) const;
- /** Get weights of quadrature points.
+ /** Get determinants of Jacobian evaluated at quadrature points.
*
- * @returns Weights of quadrature points
+ * @returns Array of determinants of Jacobian evaluated at quadrature pts
*/
- const double_array& quadWts(void) const;
+ const double_array& jacobianDetQuad(void) const;
/** Get Jacobian inverses evaluated at quadrature points.
*
* @returns Array of Jacobian inverses evaluated at quadrature points.
*/
- const double_array& jacobianInv(void) const;
+ const double_array& jacobianInvQuad(void) const;
- /** Get determinants of Jacobian evaluated at quadrature points.
- *
- * @returns Array of determinants of Jacobian evaluated at quadrature pts
- */
- const double_array& jacobianDet(void) const;
-
/** Get number of dimensions in reference cell.
*
* @returns Number of dimensions in reference cell
@@ -174,16 +221,28 @@
*/
int spaceDim(void) const;
- /** Compute geometric quantities for a cell.
+ /** Compute geometric quantities for a cell at vertices.
*
+ * @param mesh Finite-element mesh
* @param coordinates Section containing vertex coordinates
* @param cell Finite-element cell
*/
virtual
- void computeGeometry(const ALE::Obj<Mesh>& mesh,
- const ALE::Obj<real_section_type>& coordinates,
- const Mesh::point_type& cell) = 0;
+ void computeGeometryVert(const ALE::Obj<Mesh>& mesh,
+ const ALE::Obj<real_section_type>& coordinates,
+ const Mesh::point_type& cell) = 0;
+ /** Compute geometric quantities for a cell at quadrature points.
+ *
+ * @param mesh Finite-element mesh
+ * @param coordinates Section containing vertex coordinates
+ * @param cell Finite-element cell
+ */
+ virtual
+ void computeGeometryQuad(const ALE::Obj<Mesh>& mesh,
+ const ALE::Obj<real_section_type>& coordinates,
+ const Mesh::point_type& cell) = 0;
+
// PROTECTED METHODS ////////////////////////////////////////////////////
protected :
@@ -209,26 +268,6 @@
double _minJacobian; ///< Minium allowable Jacobian determinant
- /** Array of basis functions evaluated at the quadrature points.
- *
- * N0Qp0, N1Qp0, ...
- * N0Qp1, N1Qp1, ...
- *
- * size = numQuadPts * numBasis
- * index = iQuadPt*numBasis + iBasis
- */
- double_array _basis;
-
- /** Array of basis function derivatives evaluated at the quadrature points.
- *
- * N0xQp0, N0yQp0, N0zQp0, N1xQp0, N1yQp0, N1zQp0, ...
- * N0xQp1, N0yQp1, N0zQp1, N1xQp1, N1yQp1, N1zQp1, ...
- *
- * size = numQuadPts * numBasis * cellDim
- * index = iQuadPt*numBasis*cellDim + iBasis*cellDim + iDim
- */
- double_array _basisDeriv;
-
/** Array of coordinates of quadrature points in reference cell.
*
* Reference coordinates: (p,q,r)
@@ -259,27 +298,76 @@
*/
double_array _quadWts;
- /** Array of Jacobian evaluated at quadrature points.
+ /** Array of basis functions evaluated at the vertices.
*
+ * N0Qp0, N1Qp0, ...
+ * N0Qp1, N1Qp1, ...
+ *
+ * size = numVertices * numBasis
+ * index = iVertex*numBasis + iBasis
+ */
+ double_array _basisVert;
+
+ /** Array of basis function derivatives evaluated at the vertices.
+ *
+ * N0xQp0, N0yQp0, N0zQp0, N1xQp0, N1yQp0, N1zQp0, ...
+ * N0xQp1, N0yQp1, N0zQp1, N1xQp1, N1yQp1, N1zQp1, ...
+ *
+ * size = numVertices * numBasis * cellDim
+ * index = iVertex*numBasis*cellDim + iBasis*cellDim + iDim
+ */
+ double_array _basisDerivVert;
+
+ /** Array of Jacobians evaluated at vertices.
+ *
* Qp0J00, Qp0J01, Qp0J02, ...
* Qp1J00, Qp1J01, Qp1J02, ...
* ...
*
- * size = numQuadPts*cellDim*spaceDim
- * index = iQuadPt*cellDim*spaceDim + iRow*spaceDim + iCol
+ * size = numVertices*cellDim*spaceDim
+ * index = iVertex*cellDim*spaceDim + iRow*spaceDim + iCol
*/
- double_array _jacobian;
+ double_array _jacobianVert;
- /** Array of Jacobian inverses evaluated at quadrature points.
+ /** Array of determinant of Jacobian evaluated at vertices.
*
- * Qp0Jinv00, Qp0Jinv01, Qp0Jinv02, ...
- * Qp1Jinv00, Qp1Jinv01, Qp1Jinv02, ...
+ * JdetQp0, JdetQp1, ...
+ *
+ * size = numVertices
+ * index = iVertex
+ */
+ double_array _jacobianDetVert;
+
+ /** Array of basis functions evaluated at the quadrature points.
+ *
+ * N0Qp0, N1Qp0, ...
+ * N0Qp1, N1Qp1, ...
+ *
+ * size = numQuadPts * numBasis
+ * index = iQuadPt*numBasis + iBasis
+ */
+ double_array _basisQuad;
+
+ /** Array of basis function derivatives evaluated at the quadrature points.
+ *
+ * N0xQp0, N0yQp0, N0zQp0, N1xQp0, N1yQp0, N1zQp0, ...
+ * N0xQp1, N0yQp1, N0zQp1, N1xQp1, N1yQp1, N1zQp1, ...
+ *
+ * size = numQuadPts * numBasis * cellDim
+ * index = iQuadPt*numBasis*cellDim + iBasis*cellDim + iDim
+ */
+ double_array _basisDerivQuad;
+
+ /** Array of Jacobians evaluated at quadrature points.
+ *
+ * Qp0J00, Qp0J01, Qp0J02, ...
+ * Qp1J00, Qp1J01, Qp1J02, ...
* ...
*
- * size = numQuadPts*spaceDim*cellDim
- * index = iQuadPt*spaceDim*cellDim + iRow*cellDim + iCol
+ * size = numQuadPts*cellDim*spaceDim
+ * index = iQuadPt*cellDim*spaceDim + iRow*spaceDim + iCol
*/
- double_array _jacobianInv;
+ double_array _jacobianQuad;
/** Array of determinant of Jacobian evaluated at quadrature points.
*
@@ -288,10 +376,21 @@
* size = numQuadPts
* index = iQuadPt
*/
- double_array _jacobianDet;
+ double_array _jacobianDetQuad;
+ /** Array of Jacobian inverses evaluated at quadrature points.
+ *
+ * Qp0Jinv00, Qp0Jinv01, Qp0Jinv02, ...
+ * Qp1Jinv00, Qp1Jinv01, Qp1Jinv02, ...
+ * ...
+ *
+ * size = numQuadPts*spaceDim*cellDim
+ * index = iQuadPt*spaceDim*cellDim + iRow*cellDim + iCol
+ */
+ double_array _jacobianInvQuad;
+
int _cellDim; ///< Number of dimensions in reference cell
- int _numBasis; ///< Number of basis functions for cell
+ int _numBasis; ///< Number of basis functions (and vertices) for cell
int _numQuadPts; ///< Number of quadrature points
int _spaceDim; ///< Number of dimensions in coordinates of cell vertices
Modified: short/3D/PyLith/trunk/libsrc/feassemble/Quadrature.icc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Quadrature.icc 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Quadrature.icc 2007-04-27 20:27:03 UTC (rev 6715)
@@ -28,48 +28,83 @@
_minJacobian = min;
}
-// Get basis fns evaluated at quadrature points.
+// Get coordinates of quadrature points in cell (NOT reference cell).
inline
const pylith::double_array&
-pylith::feassemble::Quadrature::basis(void) const {
- return _basis;
+pylith::feassemble::Quadrature::quadPts(void) const {
+ return _quadPts;
}
-// Get derivatives of basis fns evaluated at quadrature points.
+// Get weights of quadrature points.
inline
const pylith::double_array&
-pylith::feassemble::Quadrature::basisDeriv(void) const {
- return _basisDeriv;
+pylith::feassemble::Quadrature::quadWts(void) const {
+ return _quadWts;
}
-// Get coordinates of quadrature points in cell (NOT reference cell).
+// Get basis fns evaluated at vertices.
inline
const pylith::double_array&
-pylith::feassemble::Quadrature::quadPts(void) const {
- return _quadPts;
+pylith::feassemble::Quadrature::basisVert(void) const {
+ return _basisVert;
}
-// Get weights of quadrature points.
+// Get derivatives of basis fns evaluated at vertices.
inline
const pylith::double_array&
-pylith::feassemble::Quadrature::quadWts(void) const {
- return _quadWts;
+pylith::feassemble::Quadrature::basisDerivVert(void) const {
+ return _basisDerivVert;
}
-// Get Jacobian inverses evaluated at quadrature points.
+// Get Jacobians evaluated at vertices.
inline
const pylith::double_array&
-pylith::feassemble::Quadrature::jacobianInv(void) const {
- return _jacobianInv;
+pylith::feassemble::Quadrature::jacobianVert(void) const {
+ return _jacobianVert;
}
+// Get determinants of Jacobian evaluated at vertices.
+inline
+const pylith::double_array&
+pylith::feassemble::Quadrature::jacobianDetVert(void) const {
+ return _jacobianDetVert;
+}
+
+// Get basis fns evaluated at quadrature points.
+inline
+const pylith::double_array&
+pylith::feassemble::Quadrature::basisQuad(void) const {
+ return _basisQuad;
+}
+
+// Get derivatives of basis fns evaluated at quadrature points.
+inline
+const pylith::double_array&
+pylith::feassemble::Quadrature::basisDerivQuad(void) const {
+ return _basisDerivQuad;
+}
+
+// Get Jacobians evaluated at quadrature points.
+inline
+const pylith::double_array&
+pylith::feassemble::Quadrature::jacobianQuad(void) const {
+ return _jacobianQuad;
+}
+
// Get determinants of Jacobian evaluated at quadrature points.
inline
const pylith::double_array&
-pylith::feassemble::Quadrature::jacobianDet(void) const {
- return _jacobianDet;
+pylith::feassemble::Quadrature::jacobianDetQuad(void) const {
+ return _jacobianDetQuad;
}
+// Get Jacobian inverses evaluated at quadrature points.
+inline
+const pylith::double_array&
+pylith::feassemble::Quadrature::jacobianInvQuad(void) const {
+ return _jacobianInvQuad;
+}
+
// Get number of dimensions in reference cell.
inline
int
Modified: short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1D.cc 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1D.cc 2007-04-27 20:27:03 UTC (rev 6715)
@@ -38,13 +38,13 @@
} // copy constructor
// ----------------------------------------------------------------------
-// Compute geometric quantities for a cell.
+// Compute geometric quantities for a cell at vertoces.
void
-pylith::feassemble::Quadrature1D::computeGeometry(
+pylith::feassemble::Quadrature1D::computeGeometryVert(
const ALE::Obj<Mesh>& mesh,
const ALE::Obj<real_section_type>& coordinates,
const Mesh::point_type& cell)
-{ // computeGeometry
+{ // computeGeometryVert
assert(1 == _cellDim);
assert(1 == _spaceDim);
@@ -53,8 +53,45 @@
// Get coordinates of cell's vertices
const real_section_type::value_type* vertCoords =
mesh->restrict(coordinates, cell);
- //assert(1 == coordinates->GetFiberDimension(0));
+ assert(1 == coordinates->getFiberDimension(*mesh->depthStratum(0)->begin()));
+ // Loop over vertices
+ const int numVertices = _numBasis;
+ for (int iVertex=0; iVertex < numVertices; ++iVertex) {
+
+ // Compute Jacobian at vertices
+ // J = dx/dp = sum[i=0,n-1] (dNi/dp * xi)
+ for (int iBasis=0; iBasis < _numBasis; ++iBasis)
+ _jacobianVert[iVertex] +=
+ _basisDerivVert[iVertex*_numBasis+iBasis] * vertCoords[iBasis];
+
+ // Compute determinant of Jacobian at vertices
+ // |J| = j00
+ const double det = _jacobianVert[iVertex];
+ _checkJacobianDet(det);
+ _jacobianDetVert[iVertex] = _jacobianVert[iVertex];
+ } // for
+
+} // computeGeometryVert
+
+// ----------------------------------------------------------------------
+// Compute geometric quantities for a cell at quadrature points.
+void
+pylith::feassemble::Quadrature1D::computeGeometryQuad(
+ const ALE::Obj<Mesh>& mesh,
+ const ALE::Obj<real_section_type>& coordinates,
+ const Mesh::point_type& cell)
+{ // computeGeometryQuad
+ assert(1 == _cellDim);
+ assert(1 == _spaceDim);
+
+ _resetGeometry();
+
+ // Get coordinates of cell's vertices
+ const real_section_type::value_type* vertCoords =
+ mesh->restrict(coordinates, cell);
+ assert(1 == coordinates->getFiberDimension(*mesh->depthStratum(0)->begin()));
+
// Loop over quadrature points
for (int iQuadPt=0; iQuadPt < _numQuadPts; ++iQuadPt) {
@@ -62,25 +99,25 @@
// x = sum[i=0,n-1] (Ni * xi)
for (int iBasis=0; iBasis < _numBasis; ++iBasis)
_quadPts[iQuadPt] +=
- _basis[iQuadPt*_numBasis+iBasis]*vertCoords[iBasis];
+ _basisQuad[iQuadPt*_numBasis+iBasis]*vertCoords[iBasis];
// Compute Jacobian at quadrature point
// J = dx/dp = sum[i=0,n-1] (dNi/dp * xi)
for (int iBasis=0; iBasis < _numBasis; ++iBasis)
- _jacobian[iQuadPt] +=
- _basisDeriv[iQuadPt*_numBasis+iBasis] * vertCoords[iBasis];
+ _jacobianQuad[iQuadPt] +=
+ _basisDerivQuad[iQuadPt*_numBasis+iBasis] * vertCoords[iBasis];
// Compute determinant of Jacobian at quadrature point
// |J| = j00
- const double det = _jacobian[iQuadPt];
+ const double det = _jacobianQuad[iQuadPt];
_checkJacobianDet(det);
- _jacobianDet[iQuadPt] = _jacobian[iQuadPt];
+ _jacobianDetQuad[iQuadPt] = _jacobianQuad[iQuadPt];
// Compute inverse of Jacobian at quadrature point
// Jinv = 1/j00
- _jacobianInv[iQuadPt] = 1.0/_jacobianDet[iQuadPt];
+ _jacobianInvQuad[iQuadPt] = 1.0/_jacobianDetQuad[iQuadPt];
} // for
-} // computeGeometry
+} // computeGeometryQuad
// End of file
Modified: short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1D.hh 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1D.hh 2007-04-27 20:27:03 UTC (rev 6715)
@@ -44,10 +44,26 @@
/// Create a copy of this object.
Quadrature* clone(void) const;
- void computeGeometry(const ALE::Obj<Mesh>& mesh,
- const ALE::Obj<real_section_type>& coordinates,
- const Mesh::point_type& cell);
+ /** Compute geometric quantities for a cell at vertices.
+ *
+ * @param mesh Finite-element mesh
+ * @param coordinates Section containing vertex coordinates
+ * @param cell Finite-element cell
+ */
+ void computeGeometryVert(const ALE::Obj<Mesh>& mesh,
+ const ALE::Obj<real_section_type>& coordinates,
+ const Mesh::point_type& cell);
+ /** Compute geometric quantities for a cell at quadrature points.
+ *
+ * @param mesh Finite-element mesh
+ * @param coordinates Section containing vertex coordinates
+ * @param cell Finite-element cell
+ */
+ void computeGeometryQuad(const ALE::Obj<Mesh>& mesh,
+ const ALE::Obj<real_section_type>& coordinates,
+ const Mesh::point_type& cell);
+
// PROTECTED METHODS ////////////////////////////////////////////////////
protected :
Modified: short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1Din2D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1Din2D.cc 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1Din2D.cc 2007-04-27 20:27:03 UTC (rev 6715)
@@ -36,13 +36,13 @@
} // copy constructor
// ----------------------------------------------------------------------
-// Compute geometric quantities for a cell.
+// Compute geometric quantities for a cell at vertices.
void
-pylith::feassemble::Quadrature1Din2D::computeGeometry(
+pylith::feassemble::Quadrature1Din2D::computeGeometryVert(
const ALE::Obj<Mesh>& mesh,
const ALE::Obj<real_section_type>& coordinates,
const Mesh::point_type& cell)
-{ // computeGeometry
+{ // computeGeometryVert
assert(1 == _cellDim);
assert(2 == _spaceDim);
@@ -51,9 +51,54 @@
// Get coordinates of cell's vertices
const real_section_type::value_type* vertCoords =
mesh->restrict(coordinates, cell);
- //assert(2 == coordinates.GetFiberDimensionByDepth(patch,
- //*vertices->begin(), 0));
+ assert(2 == coordinates->getFiberDimension(*mesh->depthStratum(0)->begin()));
+ // Loop over vertices
+ const int numVertices = _numBasis;
+ for (int iVertex=0; iVertex < numVertices; ++iVertex) {
+
+ // Compute Jacobian at vertex
+ // J = [dx/dp dy/dp]
+ // dx/dp = sum[i=0,n-1] (dNi/dp * xi)
+ // dy/dp = sum[i=0,n-1] (dNi/dp * yi)
+ for (int iBasis=0; iBasis < _numBasis; ++iBasis) {
+ const double deriv = _basisDerivVert[iVertex*_numBasis+iBasis];
+ for (int iDim=0; iDim < _spaceDim; ++iDim)
+ _jacobianVert[iVertex*_spaceDim+iDim] +=
+ deriv * vertCoords[iBasis*_spaceDim+iDim];
+ } // for
+
+ // Compute determinant of Jacobian at vertex
+ // |J| = sqrt(J transpose(J))
+ double det = 0.0;
+ for (int iDim=0; iDim < _spaceDim; ++iDim)
+ det += _jacobianVert[iVertex*_spaceDim+iDim] *
+ _jacobianVert[iVertex*_spaceDim+iDim];
+ det = sqrt(det);
+ _checkJacobianDet(det);
+ _jacobianDetVert[iVertex] = det;
+ } // for
+
+} // computeGeometryVert
+
+// ----------------------------------------------------------------------
+// Compute geometric quantities for a cell at quadrature points.
+void
+pylith::feassemble::Quadrature1Din2D::computeGeometryQuad(
+ const ALE::Obj<Mesh>& mesh,
+ const ALE::Obj<real_section_type>& coordinates,
+ const Mesh::point_type& cell)
+{ // computeGeometryQuad
+ assert(1 == _cellDim);
+ assert(2 == _spaceDim);
+
+ _resetGeometry();
+
+ // Get coordinates of cell's vertices
+ const real_section_type::value_type* vertCoords =
+ mesh->restrict(coordinates, cell);
+ assert(2 == coordinates->getFiberDimension(*mesh->depthStratum(0)->begin()));
+
// Loop over quadrature points
for (int iQuadPt=0; iQuadPt < _numQuadPts; ++iQuadPt) {
@@ -61,7 +106,7 @@
// x = sum[i=0,n-1] (Ni * xi)
// y = sum[i=0,n-1] (Ni * yi)
for (int iBasis=0; iBasis < _numBasis; ++iBasis) {
- const double basis = _basis[iQuadPt*_numBasis+iBasis];
+ const double basis = _basisQuad[iQuadPt*_numBasis+iBasis];
for (int iDim=0; iDim < _spaceDim; ++iDim)
_quadPts[iQuadPt*_spaceDim+iDim] +=
basis * vertCoords[iBasis*_spaceDim+iDim];
@@ -72,9 +117,9 @@
// dx/dp = sum[i=0,n-1] (dNi/dp * xi)
// dy/dp = sum[i=0,n-1] (dNi/dp * yi)
for (int iBasis=0; iBasis < _numBasis; ++iBasis) {
- const double deriv = _basisDeriv[iQuadPt*_numBasis+iBasis];
+ const double deriv = _basisDerivQuad[iQuadPt*_numBasis+iBasis];
for (int iDim=0; iDim < _spaceDim; ++iDim)
- _jacobian[iQuadPt*_spaceDim+iDim] +=
+ _jacobianQuad[iQuadPt*_spaceDim+iDim] +=
deriv * vertCoords[iBasis*_spaceDim+iDim];
} // for
@@ -82,19 +127,19 @@
// |J| = sqrt(J transpose(J))
double det = 0.0;
for (int iDim=0; iDim < _spaceDim; ++iDim)
- det += _jacobian[iQuadPt*_spaceDim+iDim] *
- _jacobian[iQuadPt*_spaceDim+iDim];
+ det += _jacobianQuad[iQuadPt*_spaceDim+iDim] *
+ _jacobianQuad[iQuadPt*_spaceDim+iDim];
det = sqrt(det);
_checkJacobianDet(det);
- _jacobianDet[iQuadPt] = det;
+ _jacobianDetQuad[iQuadPt] = det;
// Compute inverse of Jacobian at quadrature point
// Jinv = 1.0/[J]
for (int iDim=0; iDim < _spaceDim; ++iDim)
- _jacobianInv[iQuadPt*_spaceDim+iDim] =
- 1.0 / _jacobian[iQuadPt*_spaceDim+iDim];
+ _jacobianInvQuad[iQuadPt*_spaceDim+iDim] =
+ 1.0 / _jacobianQuad[iQuadPt*_spaceDim+iDim];
} // for
-} // computeGeometry
+} // computeGeometryQuad
// End of file
Modified: short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1Din2D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1Din2D.hh 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1Din2D.hh 2007-04-27 20:27:03 UTC (rev 6715)
@@ -44,15 +44,26 @@
/// Create a copy of this object.
Quadrature* clone(void) const;
- /** Compute geometric quantities for a cell.
+ /** Compute geometric quantities for a cell at vertices.
*
+ * @param mesh Finite-element mesh
* @param coordinates Section containing vertex coordinates
* @param cell Finite-element cell
*/
- void computeGeometry(const ALE::Obj<Mesh>& mesh,
- const ALE::Obj<real_section_type>& coordinates,
- const Mesh::point_type& cell);
+ void computeGeometryVert(const ALE::Obj<Mesh>& mesh,
+ const ALE::Obj<real_section_type>& coordinates,
+ const Mesh::point_type& cell);
+ /** Compute geometric quantities for a cell at quadrature points.
+ *
+ * @param mesh Finite-element mesh
+ * @param coordinates Section containing vertex coordinates
+ * @param cell Finite-element cell
+ */
+ void computeGeometryQuad(const ALE::Obj<Mesh>& mesh,
+ const ALE::Obj<real_section_type>& coordinates,
+ const Mesh::point_type& cell);
+
// PROTECTED METHODS ////////////////////////////////////////////////////
protected :
Modified: short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1Din3D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1Din3D.cc 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1Din3D.cc 2007-04-27 20:27:03 UTC (rev 6715)
@@ -36,13 +36,13 @@
} // copy constructor
// ----------------------------------------------------------------------
-// Compute geometric quantities for a cell.
+// Compute geometric quantities for a cell at vertices.
void
-pylith::feassemble::Quadrature1Din3D::computeGeometry(
+pylith::feassemble::Quadrature1Din3D::computeGeometryVert(
const ALE::Obj<Mesh>& mesh,
const ALE::Obj<real_section_type>& coordinates,
const Mesh::point_type& cell)
-{ // computeGeometry
+{ // computeGeometryVert
assert(1 == _cellDim);
assert(3 == _spaceDim);
@@ -51,9 +51,54 @@
// Get coordinates of cell's vertices
const real_section_type::value_type* vertCoords =
mesh->restrict(coordinates, cell);
- //assert(3 == coordinates.GetFiberDimensionByDepth(patch,
- //*vertices->begin(), 0));
+ assert(3 == coordinates->getFiberDimension(*mesh->depthStratum(0)->begin()));
+ // Loop over vertices
+ const int numVertices = _numBasis;
+ for (int iVertex=0; iVertex < numVertices; ++iVertex) {
+ // Compute Jacobian at vertex
+ // J = [dx/dp dy/dp dz/dp]
+ // dx/dp = sum[i=0,n-1] (dNi/dp * xi)
+ // dy/dp = sum[i=0,n-1] (dNi/dp * yi)
+ // dz/dp = sum[i=0,n-1] (dNi/dp * zi)
+ for (int iBasis=0; iBasis < _numBasis; ++iBasis) {
+ const double deriv = _basisDerivVert[iVertex*_numBasis+iBasis];
+ for (int iDim=0; iDim < _spaceDim; ++iDim)
+ _jacobianVert[iVertex*_spaceDim+iDim] +=
+ deriv * vertCoords[iBasis*_spaceDim+iDim];
+ } // for
+
+ // Compute determinant of Jacobian at quadrature point
+ // |J| = sqrt(J transpose(J))
+ double det = 0.0;
+ for (int iDim=0; iDim < _spaceDim; ++iDim)
+ det += _jacobianVert[iVertex*_spaceDim+iDim] *
+ _jacobianVert[iVertex*_spaceDim+iDim];
+ det = sqrt(det);
+ _checkJacobianDet(det);
+ _jacobianDetVert[iVertex] = det;
+ } // for
+
+} // computeGeometryVert
+
+// ----------------------------------------------------------------------
+// Compute geometric quantities for a cell at quadrature points.
+void
+pylith::feassemble::Quadrature1Din3D::computeGeometryQuad(
+ const ALE::Obj<Mesh>& mesh,
+ const ALE::Obj<real_section_type>& coordinates,
+ const Mesh::point_type& cell)
+{ // computeGeometryQuad
+ assert(1 == _cellDim);
+ assert(3 == _spaceDim);
+
+ _resetGeometry();
+
+ // Get coordinates of cell's vertices
+ const real_section_type::value_type* vertCoords =
+ mesh->restrict(coordinates, cell);
+ assert(3 == coordinates->getFiberDimension(*mesh->depthStratum(0)->begin()));
+
// Loop over quadrature points
for (int iQuadPt=0; iQuadPt < _numQuadPts; ++iQuadPt) {
@@ -62,7 +107,7 @@
// y = sum[i=0,n-1] (Ni * yi)
// z = sum[i=0,n-1] (Ni * zi)
for (int iBasis=0; iBasis < _numBasis; ++iBasis) {
- const double basis = _basis[iQuadPt*_numBasis+iBasis];
+ const double basis = _basisQuad[iQuadPt*_numBasis+iBasis];
for (int iDim=0; iDim < _spaceDim; ++iDim)
_quadPts[iQuadPt*_spaceDim+iDim] +=
basis * vertCoords[iBasis*_spaceDim+iDim];
@@ -74,9 +119,9 @@
// dy/dp = sum[i=0,n-1] (dNi/dp * yi)
// dz/dp = sum[i=0,n-1] (dNi/dp * zi)
for (int iBasis=0; iBasis < _numBasis; ++iBasis) {
- const double deriv = _basisDeriv[iQuadPt*_numBasis+iBasis];
+ const double deriv = _basisDerivQuad[iQuadPt*_numBasis+iBasis];
for (int iDim=0; iDim < _spaceDim; ++iDim)
- _jacobian[iQuadPt*_spaceDim+iDim] +=
+ _jacobianQuad[iQuadPt*_spaceDim+iDim] +=
deriv * vertCoords[iBasis*_spaceDim+iDim];
} // for
@@ -84,19 +129,19 @@
// |J| = sqrt(J transpose(J))
double det = 0.0;
for (int iDim=0; iDim < _spaceDim; ++iDim)
- det += _jacobian[iQuadPt*_spaceDim+iDim] *
- _jacobian[iQuadPt*_spaceDim+iDim];
+ det += _jacobianQuad[iQuadPt*_spaceDim+iDim] *
+ _jacobianQuad[iQuadPt*_spaceDim+iDim];
det = sqrt(det);
_checkJacobianDet(det);
- _jacobianDet[iQuadPt] = det;
+ _jacobianDetQuad[iQuadPt] = det;
// Compute inverse of Jacobian at quadrature point
// Jinv = 1.0/[J]
for (int iDim=0; iDim < _spaceDim; ++iDim)
- _jacobianInv[iQuadPt*_spaceDim+iDim] =
- 1.0 / _jacobian[iQuadPt*_spaceDim+iDim];
+ _jacobianInvQuad[iQuadPt*_spaceDim+iDim] =
+ 1.0 / _jacobianQuad[iQuadPt*_spaceDim+iDim];
} // for
-} // computeGeometry
+} // computeGeometryQuad
// End of file
Modified: short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1Din3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1Din3D.hh 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Quadrature1Din3D.hh 2007-04-27 20:27:03 UTC (rev 6715)
@@ -44,15 +44,26 @@
/// Create a copy of this object.
Quadrature* clone(void) const;
- /** Compute geometric quantities for a cell.
+ /** Compute geometric quantities for a cell at vertices.
*
+ * @param mesh Finite-element mesh
* @param coordinates Section containing vertex coordinates
* @param cell Finite-element cell
*/
- void computeGeometry(const ALE::Obj<Mesh>& mesh,
- const ALE::Obj<real_section_type>& coordinates,
- const Mesh::point_type& cell);
+ void computeGeometryVert(const ALE::Obj<Mesh>& mesh,
+ const ALE::Obj<real_section_type>& coordinates,
+ const Mesh::point_type& cell);
+ /** Compute geometric quantities for a cell at quadrature points.
+ *
+ * @param mesh Finite-element mesh
+ * @param coordinates Section containing vertex coordinates
+ * @param cell Finite-element cell
+ */
+ void computeGeometryQuad(const ALE::Obj<Mesh>& mesh,
+ const ALE::Obj<real_section_type>& coordinates,
+ const Mesh::point_type& cell);
+
// PROTECTED METHODS ////////////////////////////////////////////////////
protected :
Modified: short/3D/PyLith/trunk/libsrc/feassemble/Quadrature2D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Quadrature2D.cc 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Quadrature2D.cc 2007-04-27 20:27:03 UTC (rev 6715)
@@ -36,13 +36,13 @@
} // copy constructor
// ----------------------------------------------------------------------
-// Compute geometric quantities for a cell.
+// Compute geometric quantities for a cell at vertices.
void
-pylith::feassemble::Quadrature2D::computeGeometry(
+pylith::feassemble::Quadrature2D::computeGeometryVert(
const ALE::Obj<Mesh>& mesh,
const ALE::Obj<real_section_type>& coordinates,
const Mesh::point_type& cell)
-{ // computeGeometry
+{ // computeGeometryVert
assert(2 == _cellDim);
assert(2 == _spaceDim);
@@ -51,9 +51,61 @@
// Get coordinates of cell's vertices
const real_section_type::value_type* vertCoords =
mesh->restrict(coordinates, cell);
- //assert(2 == coordinates.GetFiberDimensionByDepth(patch,
- //*vertices->begin(), 0));
+ assert(2 == coordinates->getFiberDimension(*mesh->depthStratum(0)->begin()));
+ // Loop over vertices
+ const int numVertices = _numBasis;
+ for (int iVertex=0; iVertex < numVertices; ++iVertex) {
+ // Compute Jacobian at vertex
+ // J = [dx/dp dy/dp]
+ // [dx/dq dy/dq]
+ // dx/dp = sum[i=0,n-1] (dNi/dp * xi)
+ // dy/dp = sum[i=0,n-1] (dNi/dp * yi)
+ // dx/dq = sum[i=0,n-1] (dNi/dq * xi)
+ // dy/dq = sum[i=0,n-1] (dNi/dq * yi)
+ for (int iBasis=0; iBasis < _numBasis; ++iBasis)
+ for (int iRow=0; iRow < _cellDim; ++iRow) {
+ const double deriv =
+ _basisDerivVert[iVertex*_numBasis*_spaceDim+iBasis*_cellDim+iRow];
+ for (int iCol=0; iCol < _spaceDim; ++iCol)
+ _jacobianVert[iVertex*_cellDim*_spaceDim+iRow*_spaceDim+iCol] +=
+ deriv * vertCoords[iBasis*_spaceDim+iCol];
+ } // for
+
+ // Compute determinant of Jacobian at quadrature point
+ // |J| = j00*j11-j01*j10
+ const int iJ = iVertex*_cellDim*_spaceDim;
+ const int i00 = iJ + 0*_spaceDim + 0;
+ const int i01 = iJ + 0*_spaceDim + 1;
+ const int i10 = iJ + 1*_spaceDim + 0;
+ const int i11 = iJ + 1*_spaceDim + 1;
+ const double det =
+ _jacobianVert[i00]*_jacobianVert[i11] -
+ _jacobianVert[i01]*_jacobianVert[i10];
+ _checkJacobianDet(det);
+ _jacobianDetVert[iVertex] = det;
+ } // for
+
+} // computeGeometryVert
+
+// ----------------------------------------------------------------------
+// Compute geometric quantities for a cell at quadrature points.
+void
+pylith::feassemble::Quadrature2D::computeGeometryQuad(
+ const ALE::Obj<Mesh>& mesh,
+ const ALE::Obj<real_section_type>& coordinates,
+ const Mesh::point_type& cell)
+{ // computeGeometryQuad
+ assert(2 == _cellDim);
+ assert(2 == _spaceDim);
+
+ _resetGeometry();
+
+ // Get coordinates of cell's vertices
+ const real_section_type::value_type* vertCoords =
+ mesh->restrict(coordinates, cell);
+ assert(2 == coordinates->getFiberDimension(*mesh->depthStratum(0)->begin()));
+
// Loop over quadrature points
for (int iQuadPt=0; iQuadPt < _numQuadPts; ++iQuadPt) {
@@ -61,7 +113,7 @@
// x = sum[i=0,n-1] (Ni * xi)
// y = sum[i=0,n-1] (Ni * yi)
for (int iBasis=0; iBasis < _numBasis; ++iBasis) {
- const double basis = _basis[iQuadPt*_numBasis+iBasis];
+ const double basis = _basisQuad[iQuadPt*_numBasis+iBasis];
for (int iDim=0; iDim < _spaceDim; ++iDim)
_quadPts[iQuadPt*_spaceDim+iDim] +=
basis * vertCoords[iBasis*_spaceDim+iDim];
@@ -77,9 +129,9 @@
for (int iBasis=0; iBasis < _numBasis; ++iBasis)
for (int iRow=0; iRow < _cellDim; ++iRow) {
const double deriv =
- _basisDeriv[iQuadPt*_numBasis*_spaceDim+iBasis*_cellDim+iRow];
+ _basisDerivQuad[iQuadPt*_numBasis*_spaceDim+iBasis*_cellDim+iRow];
for (int iCol=0; iCol < _spaceDim; ++iCol)
- _jacobian[iQuadPt*_cellDim*_spaceDim+iRow*_spaceDim+iCol] +=
+ _jacobianQuad[iQuadPt*_cellDim*_spaceDim+iRow*_spaceDim+iCol] +=
deriv * vertCoords[iBasis*_spaceDim+iCol];
} // for
@@ -91,19 +143,20 @@
const int i10 = iJ + 1*_spaceDim + 0;
const int i11 = iJ + 1*_spaceDim + 1;
const double det =
- _jacobian[i00]*_jacobian[i11] - _jacobian[i01]*_jacobian[i10];
+ _jacobianQuad[i00]*_jacobianQuad[i11] -
+ _jacobianQuad[i01]*_jacobianQuad[i10];
_checkJacobianDet(det);
- _jacobianDet[iQuadPt] = det;
+ _jacobianDetQuad[iQuadPt] = det;
// Compute inverse of Jacobian at quadrature point
// Jinv = 1/det*[ j11 -j01]
// [-j10 j00]
- _jacobianInv[i00] = _jacobian[i11] / det;
- _jacobianInv[i01] = -_jacobian[i01] / det;
- _jacobianInv[i10] = -_jacobian[i10] / det;
- _jacobianInv[i11] = _jacobian[i00] / det;
+ _jacobianInvQuad[i00] = _jacobianQuad[i11] / det;
+ _jacobianInvQuad[i01] = -_jacobianQuad[i01] / det;
+ _jacobianInvQuad[i10] = -_jacobianQuad[i10] / det;
+ _jacobianInvQuad[i11] = _jacobianQuad[i00] / det;
} // for
-} // computeGeometry
+} // computeGeometryQuad
// End of file
Modified: short/3D/PyLith/trunk/libsrc/feassemble/Quadrature2D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Quadrature2D.hh 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Quadrature2D.hh 2007-04-27 20:27:03 UTC (rev 6715)
@@ -44,15 +44,26 @@
/// Create a copy of this object.
Quadrature* clone(void) const;
- /** Compute geometric quantities for a cell.
+ /** Compute geometric quantities for a cell at vertices.
*
+ * @param mesh Finite-element mesh
* @param coordinates Section containing vertex coordinates
* @param cell Finite-element cell
*/
- void computeGeometry(const ALE::Obj<Mesh>& mesh,
- const ALE::Obj<real_section_type>& coordinates,
- const Mesh::point_type& cell);
+ void computeGeometryVert(const ALE::Obj<Mesh>& mesh,
+ const ALE::Obj<real_section_type>& coordinates,
+ const Mesh::point_type& cell);
+ /** Compute geometric quantities for a cell at quadrature points.
+ *
+ * @param mesh Finite-element mesh
+ * @param coordinates Section containing vertex coordinates
+ * @param cell Finite-element cell
+ */
+ void computeGeometryQuad(const ALE::Obj<Mesh>& mesh,
+ const ALE::Obj<real_section_type>& coordinates,
+ const Mesh::point_type& cell);
+
// PROTECTED METHODS ////////////////////////////////////////////////////
protected :
Modified: short/3D/PyLith/trunk/libsrc/feassemble/Quadrature2Din3D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Quadrature2Din3D.cc 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Quadrature2Din3D.cc 2007-04-27 20:27:03 UTC (rev 6715)
@@ -39,13 +39,13 @@
} // copy constructor
// ----------------------------------------------------------------------
-// Compute geometric quantities for a cell.
+// Compute geometric quantities for a cell at vertices.
void
-pylith::feassemble::Quadrature2Din3D::computeGeometry(
+pylith::feassemble::Quadrature2Din3D::computeGeometryVert(
const ALE::Obj<Mesh>& mesh,
const ALE::Obj<real_section_type>& coordinates,
const Mesh::point_type& cell)
-{ // computeGeometry
+{ // computeGeometryVert
assert(2 == _cellDim);
assert(3 == _spaceDim);
@@ -54,9 +54,77 @@
// Get coordinates of cell's vertices
const real_section_type::value_type* vertCoords =
mesh->restrict(coordinates, cell);
- //assert(3 == coordinates.GetFiberDimensionByDepth(patch,
- //*vertices->begin(), 0));
+ assert(3 == coordinates->getFiberDimension(*mesh->depthStratum(0)->begin()));
+ // Loop over vertices
+ const int numVertices = _numBasis;
+ for (int iVertex=0; iVertex < numVertices; ++iVertex) {
+ // Compute Jacobian at vertex
+ // J = [dx/dp dy/dp dz/dp]
+ // [dx/dq dy/dq dz/dq]
+ // dx/dp = sum[i=0,n-1] (dNi/dp * xi)
+ // dy/dp = sum[i=0,n-1] (dNi/dp * yi)
+ // dz/dp = sum[i=0,n-1] (dNi/dp * zi)
+ // dx/dq = sum[i=0,n-1] (dNi/dq * xi)
+ // dy/dq = sum[i=0,n-1] (dNi/dq * yi)
+ // dz/dq = sum[i=0,n-1] (dNi/dq * zi)
+ for (int iBasis=0; iBasis < _numBasis; ++iBasis)
+ for (int iRow=0; iRow < _cellDim; ++iRow) {
+ const double deriv =
+ _basisDerivVert[iVertex*_numBasis*_cellDim+iBasis*_cellDim+iRow];
+ for (int iCol=0; iCol < _spaceDim; ++iCol)
+ _jacobianVert[iVertex*_cellDim*_spaceDim+iRow*_spaceDim+iCol] +=
+ deriv * vertCoords[iBasis*+_spaceDim+iCol];
+ } // for
+
+ // Compute determinant of Jacobian at quadrature point
+ // |J| = sqrt(J transpose(J))
+ const int iJ = iVertex*_cellDim*_spaceDim;
+ const int i00 = iJ + 0*_spaceDim + 0;
+ const int i01 = iJ + 0*_spaceDim + 1;
+ const int i02 = iJ + 0*_spaceDim + 2;
+ const int i10 = iJ + 1*_spaceDim + 0;
+ const int i11 = iJ + 1*_spaceDim + 1;
+ const int i12 = iJ + 1*_spaceDim + 2;
+ // JJ = J transpose(J)
+ const double jj00 =
+ _jacobianVert[i00]*_jacobianVert[i00] +
+ _jacobianVert[i01]*_jacobianVert[i01] +
+ _jacobianVert[i02]*_jacobianVert[i02];
+ const double jj01 =
+ _jacobianVert[i00]*_jacobianVert[i10] +
+ _jacobianVert[i01]*_jacobianVert[i11] +
+ _jacobianVert[i02]*_jacobianVert[i12];
+ const double jj10 = jj01;
+ const double jj11 =
+ _jacobianVert[i10]*_jacobianVert[i10] +
+ _jacobianVert[i11]*_jacobianVert[i11] +
+ _jacobianVert[i12]*_jacobianVert[i12];
+ const double det = sqrt(jj00*jj11 - jj01*jj10);
+ _checkJacobianDet(det);
+ _jacobianDetVert[iVertex] = det;
+ } // for
+
+} // computeGeometryVert
+
+// ----------------------------------------------------------------------
+// Compute geometric quantities for a cell at quadrature points.
+void
+pylith::feassemble::Quadrature2Din3D::computeGeometryQuad(
+ const ALE::Obj<Mesh>& mesh,
+ const ALE::Obj<real_section_type>& coordinates,
+ const Mesh::point_type& cell)
+{ // computeGeometryQuad
+ assert(2 == _cellDim);
+ assert(3 == _spaceDim);
+
+ _resetGeometry();
+
+ // Get coordinates of cell's vertices
+ const real_section_type::value_type* vertCoords =
+ mesh->restrict(coordinates, cell);
+ assert(3 == coordinates->getFiberDimension(*mesh->depthStratum(0)->begin()));
+
// Loop over quadrature points
for (int iQuadPt=0; iQuadPt < _numQuadPts; ++iQuadPt) {
@@ -65,7 +133,7 @@
// y = sum[i=0,n-1] (Ni * yi)
// z = sum[i=0,n-1] (Ni * zi)
for (int iBasis=0; iBasis < _numBasis; ++iBasis) {
- const double basis = _basis[iQuadPt*_numBasis+iBasis];
+ const double basis = _basisQuad[iQuadPt*_numBasis+iBasis];
for (int iDim=0; iDim < _spaceDim; ++iDim)
_quadPts[iQuadPt*_spaceDim+iDim] +=
basis * vertCoords[iBasis*_spaceDim+iDim];
@@ -83,9 +151,9 @@
for (int iBasis=0; iBasis < _numBasis; ++iBasis)
for (int iRow=0; iRow < _cellDim; ++iRow) {
const double deriv =
- _basisDeriv[iQuadPt*_numBasis*_cellDim+iBasis*_cellDim+iRow];
+ _basisDerivQuad[iQuadPt*_numBasis*_cellDim+iBasis*_cellDim+iRow];
for (int iCol=0; iCol < _spaceDim; ++iCol)
- _jacobian[iQuadPt*_cellDim*_spaceDim+iRow*_spaceDim+iCol] +=
+ _jacobianQuad[iQuadPt*_cellDim*_spaceDim+iRow*_spaceDim+iCol] +=
deriv * vertCoords[iBasis*+_spaceDim+iCol];
} // for
@@ -100,86 +168,89 @@
const int i12 = iJ + 1*_spaceDim + 2;
// JJ = J transpose(J)
const double jj00 =
- _jacobian[i00]*_jacobian[i00] +
- _jacobian[i01]*_jacobian[i01] +
- _jacobian[i02]*_jacobian[i02];
+ _jacobianQuad[i00]*_jacobianQuad[i00] +
+ _jacobianQuad[i01]*_jacobianQuad[i01] +
+ _jacobianQuad[i02]*_jacobianQuad[i02];
const double jj01 =
- _jacobian[i00]*_jacobian[i10] +
- _jacobian[i01]*_jacobian[i11] +
- _jacobian[i02]*_jacobian[i12];
+ _jacobianQuad[i00]*_jacobianQuad[i10] +
+ _jacobianQuad[i01]*_jacobianQuad[i11] +
+ _jacobianQuad[i02]*_jacobianQuad[i12];
const double jj10 = jj01;
const double jj11 =
- _jacobian[i10]*_jacobian[i10] +
- _jacobian[i11]*_jacobian[i11] +
- _jacobian[i12]*_jacobian[i12];
+ _jacobianQuad[i10]*_jacobianQuad[i10] +
+ _jacobianQuad[i11]*_jacobianQuad[i11] +
+ _jacobianQuad[i12]*_jacobianQuad[i12];
const double det = sqrt(jj00*jj11 - jj01*jj10);
_checkJacobianDet(det);
- _jacobianDet[iQuadPt] = det;
+ _jacobianDetQuad[iQuadPt] = det;
// Compute inverse of Jacobian at quadrature point
const double d01 =
- _jacobian[i00]*_jacobian[i11] - _jacobian[i10]*_jacobian[i01];
+ _jacobianQuad[i00]*_jacobianQuad[i11] -
+ _jacobianQuad[i10]*_jacobianQuad[i01];
const double d12 =
- _jacobian[i01]*_jacobian[i12] - _jacobian[i11]*_jacobian[i02];
+ _jacobianQuad[i01]*_jacobianQuad[i12] -
+ _jacobianQuad[i11]*_jacobianQuad[i02];
const double d02 =
- _jacobian[i00]*_jacobian[i12] - _jacobian[i10]*_jacobian[i02];
+ _jacobianQuad[i00]*_jacobianQuad[i12] -
+ _jacobianQuad[i10]*_jacobianQuad[i02];
if (fabs(d01) > _minJacobian) {
// Jinv00 = 1/d01 * J11
// Jinv01 = 1/d01 * -J01
// Jinv10 = 1/d01 * -J10
// Jinv11 = 1/d01 * J00
- _jacobianInv[iJ+0] = _jacobian[i11] / d01; // Jinv00
- _jacobianInv[iJ+1] = -_jacobian[i01] / d01; // Jinv01
- _jacobianInv[iJ+2] = -_jacobian[i10] / d01; // Jinv10
- _jacobianInv[iJ+3] = _jacobian[i00] / d01; // Jinv11
+ _jacobianInvQuad[iJ+0] = _jacobianQuad[i11] / d01; // Jinv00
+ _jacobianInvQuad[iJ+1] = -_jacobianQuad[i01] / d01; // Jinv01
+ _jacobianInvQuad[iJ+2] = -_jacobianQuad[i10] / d01; // Jinv10
+ _jacobianInvQuad[iJ+3] = _jacobianQuad[i00] / d01; // Jinv11
if (fabs(d12) > _minJacobian) {
// Jinv20 = 1/d12 -J11
// Jinv21 = 1/d12 J01
- _jacobianInv[iJ+4] = -_jacobian[i11] / d12; // Jinv20
- _jacobianInv[iJ+5] = _jacobian[i01] / d12; // Jinv21
+ _jacobianInvQuad[iJ+4] = -_jacobianQuad[i11] / d12; // Jinv20
+ _jacobianInvQuad[iJ+5] = _jacobianQuad[i01] / d12; // Jinv21
} else if (fabs(d02) > _minJacobian) {
// Jinv20 = 1/d02 -J10
// Jinv21 = 1/d02 J00
- _jacobianInv[iJ+4] = -_jacobian[i10] / d02; // Jinv20
- _jacobianInv[iJ+5] = _jacobian[i00] / d02; // Jinv21
+ _jacobianInvQuad[iJ+4] = -_jacobianQuad[i10] / d02; // Jinv20
+ _jacobianInvQuad[iJ+5] = _jacobianQuad[i00] / d02; // Jinv21
} else {
- _jacobianInv[iJ+4] = 0.0; // Jinv20
- _jacobianInv[iJ+5] = 0.0; // Jinv21
+ _jacobianInvQuad[iJ+4] = 0.0; // Jinv20
+ _jacobianInvQuad[iJ+5] = 0.0; // Jinv21
} // if/else
} else if (fabs(d02) > _minJacobian) {
// Jinv00 = 1/d02 * J12
// Jinv01 = 1/d02 * -J02
// Jinv20 = 1/d02 * -J10
// Jinv21 = 1/d02 * J00
- _jacobianInv[iJ+0] = _jacobian[i12] / d02; // Jinv00
- _jacobianInv[iJ+1] = -_jacobian[i02] / d02; // Jinv01
- _jacobianInv[iJ+4] = -_jacobian[i10] / d02; // Jinv20
- _jacobianInv[iJ+5] = _jacobian[i00] / d02; // Jinv21
+ _jacobianInvQuad[iJ+0] = _jacobianQuad[i12] / d02; // Jinv00
+ _jacobianInvQuad[iJ+1] = -_jacobianQuad[i02] / d02; // Jinv01
+ _jacobianInvQuad[iJ+4] = -_jacobianQuad[i10] / d02; // Jinv20
+ _jacobianInvQuad[iJ+5] = _jacobianQuad[i00] / d02; // Jinv21
if (fabs(d12) > _minJacobian) {
// Jinv10 = 1/d12 J12
// Jinv11 = 1/d12 -J02
- _jacobianInv[iJ+2] = -_jacobian[i12] / d12; // Jinv10
- _jacobianInv[iJ+3] = _jacobian[i02] / d12; // Jinv11
+ _jacobianInvQuad[iJ+2] = -_jacobianQuad[i12] / d12; // Jinv10
+ _jacobianInvQuad[iJ+3] = _jacobianQuad[i02] / d12; // Jinv11
} else {
- _jacobianInv[iJ+2] = 0.0; // Jinv10
- _jacobianInv[iJ+3] = 0.0; // Jinv11
+ _jacobianInvQuad[iJ+2] = 0.0; // Jinv10
+ _jacobianInvQuad[iJ+3] = 0.0; // Jinv11
} // if/else
} else if (fabs(d12) > _minJacobian) {
- _jacobianInv[iJ+0] = 0.0; // Jinv00
- _jacobianInv[iJ+1] = 0.0; // Jinv01
+ _jacobianInvQuad[iJ+0] = 0.0; // Jinv00
+ _jacobianInvQuad[iJ+1] = 0.0; // Jinv01
// Jinv10 = 1/d12 J12
// Jinv11 = 1/d12 -J02
// Jinv20 = 1/d12 -J11
// Jinv21 = 1/d12 J01
- _jacobianInv[iJ+2] = _jacobian[i12] / d12; // Jinv10
- _jacobianInv[iJ+3] = -_jacobian[i02] / d12; // Jin11
- _jacobianInv[iJ+4] = -_jacobian[i11] / d12; // Jinv20
- _jacobianInv[iJ+5] = _jacobian[i01] / d12; // Jinv21
+ _jacobianInvQuad[iJ+2] = _jacobianQuad[i12] / d12; // Jinv10
+ _jacobianInvQuad[iJ+3] = -_jacobianQuad[i02] / d12; // Jin11
+ _jacobianInvQuad[iJ+4] = -_jacobianQuad[i11] / d12; // Jinv20
+ _jacobianInvQuad[iJ+5] = _jacobianQuad[i01] / d12; // Jinv21
} else
throw std::runtime_error("Could not invert Jacobian.");
} // for
-} // computeGeometry
+} // computeGeometryQuad
// End of file
Modified: short/3D/PyLith/trunk/libsrc/feassemble/Quadrature2Din3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Quadrature2Din3D.hh 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Quadrature2Din3D.hh 2007-04-27 20:27:03 UTC (rev 6715)
@@ -44,15 +44,26 @@
/// Create a copy of this object.
Quadrature* clone(void) const;
- /** Compute geometric quantities for a cell.
+ /** Compute geometric quantities for a cell at vertices.
*
+ * @param mesh Finite-element mesh
* @param coordinates Section containing vertex coordinates
* @param cell Finite-element cell
*/
- void computeGeometry(const ALE::Obj<Mesh>& mesh,
- const ALE::Obj<real_section_type>& coordinates,
- const Mesh::point_type& cell);
+ void computeGeometryVert(const ALE::Obj<Mesh>& mesh,
+ const ALE::Obj<real_section_type>& coordinates,
+ const Mesh::point_type& cell);
+ /** Compute geometric quantities for a cell at quadrature points.
+ *
+ * @param mesh Finite-element mesh
+ * @param coordinates Section containing vertex coordinates
+ * @param cell Finite-element cell
+ */
+ void computeGeometryQuad(const ALE::Obj<Mesh>& mesh,
+ const ALE::Obj<real_section_type>& coordinates,
+ const Mesh::point_type& cell);
+
// PROTECTED METHODS ////////////////////////////////////////////////////
protected :
Modified: short/3D/PyLith/trunk/libsrc/feassemble/Quadrature3D.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Quadrature3D.cc 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Quadrature3D.cc 2007-04-27 20:27:03 UTC (rev 6715)
@@ -36,13 +36,13 @@
} // copy constructor
// ----------------------------------------------------------------------
-// Compute geometric quantities for a cell.
+// Compute geometric quantities for a cell at vertices.
void
-pylith::feassemble::Quadrature3D::computeGeometry(
+pylith::feassemble::Quadrature3D::computeGeometryVert(
const ALE::Obj<Mesh>& mesh,
const ALE::Obj<real_section_type>& coordinates,
const Mesh::point_type& cell)
-{ // computeGeometry
+{ // computeGeometryVert
assert(3 == _cellDim);
assert(3 == _spaceDim);
@@ -51,9 +51,78 @@
// Get coordinates of cell's vertices
const real_section_type::value_type* vertCoords =
mesh->restrict(coordinates, cell);
- //assert(3 == coordinates->getFiberDimensionByDepth(patch,
- //*vertices->begin(), 0));
+ assert(3 == coordinates->getFiberDimension(*mesh->depthStratum(0)->begin()));
+ // Loop over vertices
+ const int numVertices = _numBasis;
+ for (int iVertex=0; iVertex < numVertices; ++iVertex) {
+ // Compute Jacobian at vertex
+ // J = [dx/dp dy/dp dz/dp]
+ // [dx/dq dy/dq dz/dq]
+ // [dx/dr dy/dr dz/dr]
+ // dx/dp = sum[i=0,n-1] (dNi/dp * xi)
+ // dy/dp = sum[i=0,n-1] (dNi/dp * yi)
+ // dz/dp = sum[i=0,n-1] (dNi/dp * zi)
+ // dx/dq = sum[i=0,n-1] (dNi/dq * xi)
+ // dy/dq = sum[i=0,n-1] (dNi/dq * yi)
+ // dz/dq = sum[i=0,n-1] (dNi/dq * zi)
+ // dx/dr = sum[i=0,n-1] (dNi/dr * xi)
+ // dy/dr = sum[i=0,n-1] (dNi/dr * yi)
+ // dz/dr = sum[i=0,n-1] (dNi/dr * zi)
+ for (int iBasis=0; iBasis < _numBasis; ++iBasis)
+ for (int iRow=0; iRow < _cellDim; ++iRow) {
+ const double deriv =
+ _basisDerivVert[iVertex*_numBasis*_spaceDim+iBasis*_cellDim+iRow];
+ for (int iCol=0; iCol < _spaceDim; ++iCol)
+ _jacobianVert[iVertex*_cellDim*_spaceDim+iRow*_spaceDim+iCol] +=
+ deriv * vertCoords[iBasis*_spaceDim+iCol];
+ } // for
+
+ // Compute determinant of Jacobian at vertex
+ // |J| = j00*(j11*j22-j12*j21) +
+ // -j01*(j10*j22-j12*j20) +
+ // j02*(j10*j21-j11*j20)
+ const int iJ = iVertex*_cellDim*_spaceDim;
+ const int i00 = iJ + 0*_spaceDim + 0;
+ const int i01 = iJ + 0*_spaceDim + 1;
+ const int i02 = iJ + 0*_spaceDim + 2;
+ const int i10 = iJ + 1*_spaceDim + 0;
+ const int i11 = iJ + 1*_spaceDim + 1;
+ const int i12 = iJ + 1*_spaceDim + 2;
+ const int i20 = iJ + 2*_spaceDim + 0;
+ const int i21 = iJ + 2*_spaceDim + 1;
+ const int i22 = iJ + 2*_spaceDim + 2;
+ const double det =
+ _jacobianVert[i00]*(_jacobianVert[i11]*_jacobianVert[i22] -
+ _jacobianVert[i12]*_jacobianVert[i21]) -
+ _jacobianVert[i01]*(_jacobianVert[i10]*_jacobianVert[i22] -
+ _jacobianVert[i12]*_jacobianVert[i20]) +
+ _jacobianVert[i02]*(_jacobianVert[i10]*_jacobianVert[i21] -
+ _jacobianVert[i11]*_jacobianVert[i20]);
+ _checkJacobianDet(det);
+ _jacobianDetVert[iVertex] = det;
+ } // for
+
+} // computeGeometryVert
+
+// ----------------------------------------------------------------------
+// Compute geometric quantities for a cell at quadrature points.
+void
+pylith::feassemble::Quadrature3D::computeGeometryQuad(
+ const ALE::Obj<Mesh>& mesh,
+ const ALE::Obj<real_section_type>& coordinates,
+ const Mesh::point_type& cell)
+{ // computeGeometryQuad
+ assert(3 == _cellDim);
+ assert(3 == _spaceDim);
+
+ _resetGeometry();
+
+ // Get coordinates of cell's vertices
+ const real_section_type::value_type* vertCoords =
+ mesh->restrict(coordinates, cell);
+ assert(3 == coordinates->getFiberDimension(*mesh->depthStratum(0)->begin()));
+
// Loop over quadrature points
for (int iQuadPt=0; iQuadPt < _numQuadPts; ++iQuadPt) {
@@ -62,7 +131,7 @@
// y = sum[i=0,n-1] (Ni * yi)
// z = sum[i=0,n-1] (Ni * zi)
for (int iBasis=0; iBasis < _numBasis; ++iBasis) {
- const double basis = _basis[iQuadPt*_numBasis+iBasis];
+ const double basis = _basisQuad[iQuadPt*_numBasis+iBasis];
for (int iDim=0; iDim < _spaceDim; ++iDim)
_quadPts[iQuadPt*_spaceDim+iDim] +=
basis * vertCoords[iBasis*_spaceDim+iDim];
@@ -84,9 +153,9 @@
for (int iBasis=0; iBasis < _numBasis; ++iBasis)
for (int iRow=0; iRow < _cellDim; ++iRow) {
const double deriv =
- _basisDeriv[iQuadPt*_numBasis*_spaceDim+iBasis*_cellDim+iRow];
+ _basisDerivQuad[iQuadPt*_numBasis*_spaceDim+iBasis*_cellDim+iRow];
for (int iCol=0; iCol < _spaceDim; ++iCol)
- _jacobian[iQuadPt*_cellDim*_spaceDim+iRow*_spaceDim+iCol] +=
+ _jacobianQuad[iQuadPt*_cellDim*_spaceDim+iRow*_spaceDim+iCol] +=
deriv * vertCoords[iBasis*_spaceDim+iCol];
} // for
@@ -105,36 +174,36 @@
const int i21 = iJ + 2*_spaceDim + 1;
const int i22 = iJ + 2*_spaceDim + 2;
const double det =
- _jacobian[i00]*(_jacobian[i11]*_jacobian[i22] -
- _jacobian[i12]*_jacobian[i21]) -
- _jacobian[i01]*(_jacobian[i10]*_jacobian[i22] -
- _jacobian[i12]*_jacobian[i20]) +
- _jacobian[i02]*(_jacobian[i10]*_jacobian[i21] -
- _jacobian[i11]*_jacobian[i20]);
+ _jacobianQuad[i00]*(_jacobianQuad[i11]*_jacobianQuad[i22] -
+ _jacobianQuad[i12]*_jacobianQuad[i21]) -
+ _jacobianQuad[i01]*(_jacobianQuad[i10]*_jacobianQuad[i22] -
+ _jacobianQuad[i12]*_jacobianQuad[i20]) +
+ _jacobianQuad[i02]*(_jacobianQuad[i10]*_jacobianQuad[i21] -
+ _jacobianQuad[i11]*_jacobianQuad[i20]);
_checkJacobianDet(det);
- _jacobianDet[iQuadPt] = det;
+ _jacobianDetQuad[iQuadPt] = det;
// Compute inverse of Jacobian at quadrature point
- _jacobianInv[i00] = (_jacobian[i11]*_jacobian[i22] -
- _jacobian[i12]*_jacobian[i21]) / det;
- _jacobianInv[i01] = (_jacobian[i02]*_jacobian[i21] -
- _jacobian[i01]*_jacobian[i22]) / det;
- _jacobianInv[i02] = (_jacobian[i01]*_jacobian[i12] -
- _jacobian[i02]*_jacobian[i11]) / det;
- _jacobianInv[i10] = (_jacobian[i12]*_jacobian[i20] -
- _jacobian[i10]*_jacobian[i22]) / det;
- _jacobianInv[i11] = (_jacobian[i00]*_jacobian[i22] -
- _jacobian[i02]*_jacobian[i20]) / det;
- _jacobianInv[i12] = (_jacobian[i02]*_jacobian[i10] -
- _jacobian[i00]*_jacobian[i12]) / det;
- _jacobianInv[i20] = (_jacobian[i10]*_jacobian[i21] -
- _jacobian[i11]*_jacobian[i20]) / det;
- _jacobianInv[i21] = (_jacobian[i01]*_jacobian[i20] -
- _jacobian[i00]*_jacobian[i21]) / det;
- _jacobianInv[i22] = (_jacobian[i00]*_jacobian[i11] -
- _jacobian[i01]*_jacobian[i10]) / det;
+ _jacobianInvQuad[i00] = (_jacobianQuad[i11]*_jacobianQuad[i22] -
+ _jacobianQuad[i12]*_jacobianQuad[i21]) / det;
+ _jacobianInvQuad[i01] = (_jacobianQuad[i02]*_jacobianQuad[i21] -
+ _jacobianQuad[i01]*_jacobianQuad[i22]) / det;
+ _jacobianInvQuad[i02] = (_jacobianQuad[i01]*_jacobianQuad[i12] -
+ _jacobianQuad[i02]*_jacobianQuad[i11]) / det;
+ _jacobianInvQuad[i10] = (_jacobianQuad[i12]*_jacobianQuad[i20] -
+ _jacobianQuad[i10]*_jacobianQuad[i22]) / det;
+ _jacobianInvQuad[i11] = (_jacobianQuad[i00]*_jacobianQuad[i22] -
+ _jacobianQuad[i02]*_jacobianQuad[i20]) / det;
+ _jacobianInvQuad[i12] = (_jacobianQuad[i02]*_jacobianQuad[i10] -
+ _jacobianQuad[i00]*_jacobianQuad[i12]) / det;
+ _jacobianInvQuad[i20] = (_jacobianQuad[i10]*_jacobianQuad[i21] -
+ _jacobianQuad[i11]*_jacobianQuad[i20]) / det;
+ _jacobianInvQuad[i21] = (_jacobianQuad[i01]*_jacobianQuad[i20] -
+ _jacobianQuad[i00]*_jacobianQuad[i21]) / det;
+ _jacobianInvQuad[i22] = (_jacobianQuad[i00]*_jacobianQuad[i11] -
+ _jacobianQuad[i01]*_jacobianQuad[i10]) / det;
} // for
-} // computeGeometry
+} // computeGeometryQuad
// End of file
Modified: short/3D/PyLith/trunk/libsrc/feassemble/Quadrature3D.hh
===================================================================
--- short/3D/PyLith/trunk/libsrc/feassemble/Quadrature3D.hh 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/libsrc/feassemble/Quadrature3D.hh 2007-04-27 20:27:03 UTC (rev 6715)
@@ -44,15 +44,26 @@
/// Create a copy of this object.
Quadrature* clone(void) const;
- /** Compute geometric quantities for a cell.
+ /** Compute geometric quantities for a cell at vertices.
*
+ * @param mesh Finite-element mesh
* @param coordinates Section containing vertex coordinates
* @param cell Finite-element cell
*/
- void computeGeometry(const ALE::Obj<Mesh>& mesh,
- const ALE::Obj<real_section_type>& coordinates,
- const Mesh::point_type& cell);
+ void computeGeometryVert(const ALE::Obj<Mesh>& mesh,
+ const ALE::Obj<real_section_type>& coordinates,
+ const Mesh::point_type& cell);
+ /** Compute geometric quantities for a cell at quadrature points.
+ *
+ * @param mesh Finite-element mesh
+ * @param coordinates Section containing vertex coordinates
+ * @param cell Finite-element cell
+ */
+ void computeGeometryQuad(const ALE::Obj<Mesh>& mesh,
+ const ALE::Obj<real_section_type>& coordinates,
+ const Mesh::point_type& cell);
+
// PROTECTED METHODS ////////////////////////////////////////////////////
protected :
Modified: short/3D/PyLith/trunk/libsrc/materials/Material.cc
===================================================================
--- short/3D/PyLith/trunk/libsrc/materials/Material.cc 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/libsrc/materials/Material.cc 2007-04-27 20:27:03 UTC (rev 6715)
@@ -119,7 +119,7 @@
cellIter != cellsEnd;
++cellIter) {
// Compute geometry information for current cell
- quadrature->computeGeometry(mesh, coordinates, *cellIter);
+ quadrature->computeGeometryQuad(mesh, coordinates, *cellIter);
const double_array& quadPts = quadrature->quadPts();
const int spaceDim = quadrature->spaceDim();
Modified: short/3D/PyLith/trunk/modulesrc/feassemble/feassemble.pyxe.src
===================================================================
--- short/3D/PyLith/trunk/modulesrc/feassemble/feassemble.pyxe.src 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/modulesrc/feassemble/feassemble.pyxe.src 2007-04-27 20:27:03 UTC (rev 6715)
@@ -88,28 +88,35 @@
return
- def initialize(self, basis, basisDeriv, quadPts, quadWts,
- cellDim, numCorners, numQuadPts, spaceDim):
+ def initialize(self,
+ basisVert, basisDerivVert,
+ basisQuad, basisDerivQuad,
+ quadPts, quadWts,
+ cellDim, numBasis, numQuadPts, spaceDim):
"""
Set basis functions and their derivatives, and coordinates and
weights of quadrature points.
- @param basis Basis functions evaluated at the quadrature points
- @param basisDeriv Basis function derivatives evaluated at quad pts
+ @param basisVert Basis functions evaluated at the vertices
+ @param basisDerivVert Basis function derivatives evaluated at vertices
+ @param basisQuad Basis functions evaluated at the quadrature points
+ @param basisDerivQuad Basis function derivatives evaluated at quad pts
@param quadPts Coordinates of quadrature points in reference cell
@param quadWts Weights of quadrature points
@param cellDim Dimension of reference cell
- @param numCorners Number of vertices in reference cell
+ @param numBasis Number of vertices in reference cell
@param numQuadPts Number of quadrature points
@param spaceDim Number of dimensions associated with cell vertices
"""
# create shim for method 'initialize'
- #embed{ void Quadrature_initialize(void* objVptr, double* basis, double* basisDeriv, double* quadPts, double* quadWts, int cellDim, int numCorners, int numQuadPts, int spaceDim)
+ #embed{ void Quadrature_initialize(void* objVptr, double* basisVert, double* basisDerivVert, double* basisQuad, double* basisDerivQuad, double* quadPts, double* quadWts, int cellDim, int numBasis, int numQuadPts, int spaceDim)
try {
- ((pylith::feassemble::Quadrature*) objVptr)->initialize(basis, basisDeriv,
- quadPts, quadWts,
- cellDim, numCorners,
- numQuadPts, spaceDim);
+ ((pylith::feassemble::Quadrature*) objVptr)->initialize(
+ basisVert, basisDerivVert,
+ basisQuad, basisDerivQuad,
+ quadPts, quadWts,
+ cellDim, numBasis,
+ numQuadPts, spaceDim);
} catch (const std::exception& err) {
PyErr_SetString(PyExc_RuntimeError,
const_cast<char*>(err.what()));
@@ -121,31 +128,58 @@
import spatialdata.utils.simplearray
- # basis
- basis = spatialdata.utils.simplearray.objAsSimpleArray(basis)
- if not basis.isCompatible(nd=2, simpletype="double",
- contiguous=True, notswapped=True):
+ numVertices = numBasis
+
+ # basisVert
+ basisVert = spatialdata.utils.simplearray.objAsSimpleArray(basisVert)
+ if not basisVert.isCompatible(nd=2, simpletype="double",
+ contiguous=True, notswapped=True):
raise TypeError, \
- "Argument 'basis' must be a contiguous, 2-D array " \
+ "Argument 'basisVert' must be a contiguous, 2-D array " \
"of type double."
- if numQuadPts != basis.shape[0] or numCorners != basis.shape[1]:
+ if numVertices != basisVert.shape[0] or numBasis != basisVert.shape[1]:
raise TypeError, \
- "Shape of argument 'basis' must be (numQuadPts, numCorners)."
+ "Shape of argument 'basisVert' must be (numVertices, numBasis)."
- # basisDeriv
- basisDeriv = spatialdata.utils.simplearray.objAsSimpleArray(basisDeriv)
- if not basisDeriv.isCompatible(nd=3, simpletype="double",
- contiguous=True, notswapped=True):
+ # basisDerivVert
+ basisDerivVert = spatialdata.utils.simplearray.objAsSimpleArray(basisDerivVert)
+ if not basisDerivVert.isCompatible(nd=3, simpletype="double",
+ contiguous=True, notswapped=True):
raise TypeError, \
- "Argument 'basisDeriv' must be a contiguous, 3-D array " \
+ "Argument 'basisDerivVert' must be a contiguous, 3-D array " \
"of type double."
- if numQuadPts != basisDeriv.shape[0] or \
- numCorners != basisDeriv.shape[1] or \
- cellDim != basisDeriv.shape[2]:
+ if numVertices != basisDerivVert.shape[0] or \
+ numBasis != basisDerivVert.shape[1] or \
+ cellDim != basisDerivVert.shape[2]:
raise TypeError, \
- "Shape of argument 'basisDeriv' must be (numQuadPts, " \
- "numCorners, cellDim)."
+ "Shape of argument 'basisDerivVert' must be (numVertices, " \
+ "numBasis, cellDim)."
+ # basisQuad
+ basisQuad = spatialdata.utils.simplearray.objAsSimpleArray(basisQuad)
+ if not basisQuad.isCompatible(nd=2, simpletype="double",
+ contiguous=True, notswapped=True):
+ raise TypeError, \
+ "Argument 'basisQuad' must be a contiguous, 2-D array " \
+ "of type double."
+ if numQuadPts != basisQuad.shape[0] or numBasis != basisQuad.shape[1]:
+ raise TypeError, \
+ "Shape of argument 'basisQuad' must be (numQuadPts, numBasis)."
+
+ # basisDerivQuad
+ basisDerivQuad = spatialdata.utils.simplearray.objAsSimpleArray(basisDerivQuad)
+ if not basisDerivQuad.isCompatible(nd=3, simpletype="double",
+ contiguous=True, notswapped=True):
+ raise TypeError, \
+ "Argument 'basisDerivQuad' must be a contiguous, 3-D array " \
+ "of type double."
+ if numQuadPts != basisDerivQuad.shape[0] or \
+ numBasis != basisDerivQuad.shape[1] or \
+ cellDim != basisDerivQuad.shape[2]:
+ raise TypeError, \
+ "Shape of argument 'basisDerivQuad' must be (numQuadPts, " \
+ "numBasis, cellDim)."
+
# quadPts
quadPts = spatialdata.utils.simplearray.objAsSimpleArray(quadPts)
if not quadPts.isCompatible(nd=2, simpletype="double",
@@ -168,18 +202,24 @@
raise TypeError, \
"Shape of argument 'quadWts' must be (numQuadPts)."
- cdef double* basisCpp
- cdef double* basisDerivCpp
+ cdef double* basisCppVert
+ cdef double* basisDerivCppVert
+ cdef double* basisCppQuad
+ cdef double* basisDerivCppQuad
cdef double* quadPtsCpp
cdef double* quadWtsCpp
- basisCpp = <double*> PyCObject_AsVoidPtr(basis.data)
- basisDerivCpp = <double*> PyCObject_AsVoidPtr(basisDeriv.data)
+ basisCppVert = <double*> PyCObject_AsVoidPtr(basisVert.data)
+ basisDerivCppVert = <double*> PyCObject_AsVoidPtr(basisDerivVert.data)
+ basisCppQuad = <double*> PyCObject_AsVoidPtr(basisQuad.data)
+ basisDerivCppQuad = <double*> PyCObject_AsVoidPtr(basisDerivQuad.data)
quadPtsCpp = <double*> PyCObject_AsVoidPtr(quadPts.data)
quadWtsCpp = <double*> PyCObject_AsVoidPtr(quadWts.data)
- Quadrature_initialize(self.thisptr, basisCpp, basisDerivCpp,
+ Quadrature_initialize(self.thisptr,
+ basisCppVert, basisDerivCppVert,
+ basisCppQuad, basisDerivCppQuad,
quadPtsCpp, quadWtsCpp,
- cellDim, numCorners,
+ cellDim, numBasis,
numQuadPts, spaceDim)
return
Modified: short/3D/PyLith/trunk/pylith/feassemble/FIATCell.py
===================================================================
--- short/3D/PyLith/trunk/pylith/feassemble/FIATCell.py 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/pylith/feassemble/FIATCell.py 2007-04-27 20:27:03 UTC (rev 6715)
@@ -46,34 +46,53 @@
"""
quadrature = self._setupQuadrature()
basisFns = self._setupBasisFns()
+ vertices = self._setupVertices()
+ print "VERTICES:",vertices
+ # Evaluate basis functions at vertices
+ basis = numpy.array(basisFns.tabulate(vertices)).transpose()
+ self.basisVert = numpy.reshape(basis.flatten(), basis.shape)
+ print "BASIS VERT:",self.basisVert
+
+ # Evaluate derivatives of basis functions at vertices
+ import FIAT.shapes
+ dim = FIAT.shapes.dimension(basisFns.base.shape)
+ basisDeriv = numpy.array([basisFns.deriv_all(d).tabulate(vertices) \
+ for d in range(dim)]).transpose()
+ self.basisDerivVert = numpy.reshape(basisDeriv.flatten(), basisDeriv.shape)
+
# Evaluate basis functions at quadrature points
quadpts = quadrature.get_points()
basis = numpy.array(basisFns.tabulate(quadpts)).transpose()
- self.basis = numpy.reshape(basis.flatten(), basis.shape)
+ self.basisQuad = numpy.reshape(basis.flatten(), basis.shape)
# Evaluate derivatives of basis functions at quadrature points
import FIAT.shapes
dim = FIAT.shapes.dimension(basisFns.base.shape)
basisDeriv = numpy.array([basisFns.deriv_all(d).tabulate(quadpts) \
for d in range(dim)]).transpose()
- self.basisDeriv = numpy.reshape(basisDeriv.flatten(), basisDeriv.shape)
+ self.basisDerivQuad = numpy.reshape(basisDeriv.flatten(), basisDeriv.shape)
self.quadPts = numpy.array(quadrature.get_points())
self.quadWts = numpy.array(quadrature.get_weights())
self.cellDim = dim
- self.numCorners = self.basis.shape[1]
+ self.numCorners = self.basisVert.shape[1]
self.numQuadPts = len(quadrature.get_weights())
- self._info.line("Basis:")
- self._info.line(self.basis)
- self._info.line("Basis derivatives:")
- self._info.line(self.basisDeriv)
+ self._info.line("Basis (vertices):")
+ self._info.line(self.basisVert)
+ self._info.line("Basis derivatives (vertices):")
+ self._info.line(self.basisDerivVert)
+ self._info.line("Basis (quad pts):")
+ self._info.line(self.basisQuad)
+ self._info.line("Basis derivatives (quad pts):")
+ self._info.line(self.basisDerivQuad)
self._info.line("Quad pts:")
self._info.line(quadrature.get_points())
self._info.line("Quad wts:")
self._info.line(quadrature.get_weights())
+
self._info.log()
return
@@ -97,4 +116,12 @@
return
+ def _setupVertices(self):
+ """
+ Setup vertices for reference cell.
+ """
+ raise NotImplementedError()
+ return
+
+
# End of file
Modified: short/3D/PyLith/trunk/pylith/feassemble/FIATSimplex.py
===================================================================
--- short/3D/PyLith/trunk/pylith/feassemble/FIATSimplex.py 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/pylith/feassemble/FIATSimplex.py 2007-04-27 20:27:03 UTC (rev 6715)
@@ -108,6 +108,14 @@
return Lagrange(self._getShape(), self.degree).function_space()
+ def _setupVertices(self):
+ """
+ Setup vertices for reference cell.
+ """
+ import FIAT.shapes
+ return FIAT.shapes.vertices[self._getShape()].values()
+
+
def _getShape(self):
"""
Parse string into FIAT shape.
Deleted: short/3D/PyLith/trunk/pylith/feassemble/Field.py
===================================================================
--- short/3D/PyLith/trunk/pylith/feassemble/Field.py 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/pylith/feassemble/Field.py 2007-04-27 20:27:03 UTC (rev 6715)
@@ -1,70 +0,0 @@
-#!/usr/bin/env python
-#
-# ----------------------------------------------------------------------
-#
-# Brad T. Aagaard
-# U.S. Geological Survey
-#
-# <LicenseText>
-#
-# ----------------------------------------------------------------------
-#
-
-## @file pylith/feassemble/Field.py
-
-## @brief Python PyLith field.
-
-from pyre.components.Component import Component
-
-# Field class
-class Field(Component):
- """
- Python PyLith field.
- """
-
- # INVENTORY //////////////////////////////////////////////////////////
-
- class Inventory(Component.Inventory):
- """
- Python object for managing Field facilities and properties.
- """
-
- ## @class Inventory
- ## Python object for managing Field facilities and properties.
- ##
- ## \b Properties
- ## @li None
- ##
- ## \b Facilities
- ## @li None
-
- import pyre.inventory
-
- # PUBLIC METHODS /////////////////////////////////////////////////////
-
- def initialize(self):
- """
- """
- return
-
-
- def __init__(self, name="field"):
- """
- Constructor.
- """
- Component.__init__(self, name, facility="field")
- self.sieveField = None
- return
-
-
- # PRIVATE METHODS /////////////////////////////////////////////////////
-
-
- def _configure(self):
- """
- Set members based using inventory.
- """
- return
-
-
-# End of file
Modified: short/3D/PyLith/trunk/pylith/feassemble/ReferenceCell.py
===================================================================
--- short/3D/PyLith/trunk/pylith/feassemble/ReferenceCell.py 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/pylith/feassemble/ReferenceCell.py 2007-04-27 20:27:03 UTC (rev 6715)
@@ -36,8 +36,11 @@
"""
Component.__init__(self, name, facility="reference_cell")
- self.basis = None # numpy array w/basis fns at quad pts
- self.basisDeriv = None # numpy array w/basis fn derivs at quad pts
+ self.basisVert = None # numpy array w/basis fns at vertices
+ self.basisDerivVert = None # numpy array w/basis fn derivs at vertices
+ self.basisQuad = None # numpy array w/basis fns at quad pts
+ self.basisDerivQuad = None # numpy array w/basis fn derivs at quad pts
+
self.quadPts = None # numpy array w/coordinates of quad pts
self.quadWts = None # numpy array w/wts of quad pts
Modified: short/3D/PyLith/trunk/pylith/feassemble/quadrature/Quadrature.py
===================================================================
--- short/3D/PyLith/trunk/pylith/feassemble/quadrature/Quadrature.py 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/pylith/feassemble/quadrature/Quadrature.py 2007-04-27 20:27:03 UTC (rev 6715)
@@ -87,7 +87,9 @@
self._info.log("Initializing C++ quadrature.")
- self.cppHandle.initialize(c.basis, c.basisDeriv, c.quadPts, c.quadWts,
+ self.cppHandle.initialize(c.basisVert, c.basisDerivVert,
+ c.basisQuad, c.basisDerivQuad,
+ c.quadPts, c.quadWts,
c.cellDim, c.numCorners, c.numQuadPts,
self.spaceDim)
return
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature.cc 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature.cc 2007-04-27 20:27:03 UTC (rev 6715)
@@ -31,14 +31,14 @@
const int numBasisE = 2;
const int numQuadPtsE = 1;
const int spaceDimE = 1;
- const double basisE[] = { 0.2, 0.4 };
- const double basisDerivE[] = { 0.8, 1.6 };
+ const double basisQuadE[] = { 0.2, 0.4 };
+ const double basisDerivQuadE[] = { 0.8, 1.6 };
const double quadPtsRefE[] = { 3.2 };
const double quadWtsE[] = { 6.4 };
const double quadPtsE[] = { 12.8 };
- const double jacobianE[] = { 2.56 };
- const double jacobianInvE[] = { 5.12 };
- const double jacobianDetE[] = { 10.24 };
+ const double jacobianQuadE[] = { 2.56 };
+ const double jacobianInvQuadE[] = { 5.12 };
+ const double jacobianDetQuadE[] = { 10.24 };
// Set values
Quadrature1D qOrig;
@@ -49,12 +49,12 @@
qOrig._spaceDim = spaceDimE;
size_t size = 2;
- qOrig._basis.resize(size);
- memcpy(&qOrig._basis[0], basisE, size*sizeof(double));
+ qOrig._basisQuad.resize(size);
+ memcpy(&qOrig._basisQuad[0], basisQuadE, size*sizeof(double));
size = 2;
- qOrig._basisDeriv.resize(size);
- memcpy(&qOrig._basisDeriv[0], basisDerivE, size*sizeof(double));
+ qOrig._basisDerivQuad.resize(size);
+ memcpy(&qOrig._basisDerivQuad[0], basisDerivQuadE, size*sizeof(double));
size = 1;
qOrig._quadPtsRef.resize(size);
@@ -69,16 +69,16 @@
memcpy(&qOrig._quadPts[0], quadPtsE, size*sizeof(double));
size = 1;
- qOrig._jacobian.resize(size);
- memcpy(&qOrig._jacobian[0], jacobianE, size*sizeof(double));
+ qOrig._jacobianQuad.resize(size);
+ memcpy(&qOrig._jacobianQuad[0], jacobianQuadE, size*sizeof(double));
size = 1;
- qOrig._jacobianInv.resize(size);
- memcpy(&qOrig._jacobianInv[0], jacobianInvE, size*sizeof(double));
+ qOrig._jacobianInvQuad.resize(size);
+ memcpy(&qOrig._jacobianInvQuad[0], jacobianInvQuadE, size*sizeof(double));
size = 1;
- qOrig._jacobianDet.resize(size);
- memcpy(&qOrig._jacobianDet[0], jacobianDetE, size*sizeof(double));
+ qOrig._jacobianDetQuad.resize(size);
+ memcpy(&qOrig._jacobianDetQuad[0], jacobianDetQuadE, size*sizeof(double));
// Clone
const Quadrature* qCopy = qOrig.clone();
@@ -92,17 +92,17 @@
CPPUNIT_ASSERT_EQUAL(numQuadPtsE, qCopy->numQuadPts());
CPPUNIT_ASSERT_EQUAL(spaceDimE, qCopy->spaceDim());
- const double_array& basis = qCopy->basis();
+ const double_array& basisQuad = qCopy->basisQuad();
size = numBasisE * numQuadPtsE;
- CPPUNIT_ASSERT_EQUAL(size, basis.size());
+ CPPUNIT_ASSERT_EQUAL(size, basisQuad.size());
for (int i=0; i < size; ++i)
- CPPUNIT_ASSERT_EQUAL(basisE[i], basis[i]);
+ CPPUNIT_ASSERT_EQUAL(basisQuadE[i], basisQuad[i]);
- const double_array& basisDeriv = qCopy->basisDeriv();
+ const double_array& basisDerivQuad = qCopy->basisDerivQuad();
size = numBasisE * numQuadPtsE * spaceDimE;
- CPPUNIT_ASSERT_EQUAL(size, basisDeriv.size());
+ CPPUNIT_ASSERT_EQUAL(size, basisDerivQuad.size());
for (int i=0; i < size; ++i)
- CPPUNIT_ASSERT_EQUAL(basisDerivE[i], basisDeriv[i]);
+ CPPUNIT_ASSERT_EQUAL(basisDerivQuadE[i], basisDerivQuad[i]);
const double_array& quadPtsRef = qCopy->_quadPtsRef;
size = numQuadPtsE * cellDimE;
@@ -122,23 +122,23 @@
for (int i=0; i < size; ++i)
CPPUNIT_ASSERT_EQUAL(quadPtsE[i], quadPts[i]);
- const double_array& jacobian = qCopy->_jacobian;
+ const double_array& jacobianQuad = qCopy->_jacobianQuad;
size = 1;
- CPPUNIT_ASSERT_EQUAL(size, jacobian.size());
+ CPPUNIT_ASSERT_EQUAL(size, jacobianQuad.size());
for (int i=0; i < size; ++i)
- CPPUNIT_ASSERT_EQUAL(jacobianE[i], jacobian[i]);
+ CPPUNIT_ASSERT_EQUAL(jacobianQuadE[i], jacobianQuad[i]);
- const double_array& jacobianInv = qCopy->jacobianInv();
+ const double_array& jacobianInvQuad = qCopy->jacobianInvQuad();
size = 1;
- CPPUNIT_ASSERT_EQUAL(size, jacobianInv.size());
+ CPPUNIT_ASSERT_EQUAL(size, jacobianInvQuad.size());
for (int i=0; i < size; ++i)
- CPPUNIT_ASSERT_EQUAL(jacobianInvE[i], jacobianInvE[i]);
+ CPPUNIT_ASSERT_EQUAL(jacobianInvQuadE[i], jacobianInvQuad[i]);
- const double_array& jacobianDet = qCopy->jacobianDet();
+ const double_array& jacobianDetQuad = qCopy->jacobianDetQuad();
size = 1;
- CPPUNIT_ASSERT_EQUAL(size, jacobianDet.size());
+ CPPUNIT_ASSERT_EQUAL(size, jacobianDetQuad.size());
for (int i=0; i < size; ++i)
- CPPUNIT_ASSERT_EQUAL(jacobianDetE[i], jacobianDet[i]);
+ CPPUNIT_ASSERT_EQUAL(jacobianDetQuadE[i], jacobianDetQuad[i]);
delete qCopy; qCopy = 0;
} // testCopy
@@ -164,14 +164,17 @@
const int numBasis = 2;
const int numQuadPts = 1;
const int spaceDim = 1;
- const double basis[] = { 0.5, 0.5 };
- const double basisDeriv[] = { -0.5, 0.5 };
+ const double basisVert[] = { 0.5, 0.5, 0.3, 0.7 };
+ const double basisDerivVert[] = { -0.5, 0.5, -0.4, 0.7 };
+ const double basisQuad[] = { 0.5, 0.5 };
+ const double basisDerivQuad[] = { -0.5, 0.5 };
const double quadPtsRef[] = { 0.0 };
const double quadWts[] = { 2.0 };
const double minJacobian = 1.0;
Quadrature1D q;
- q.initialize(basis, basisDeriv, quadPtsRef, quadWts,
+ q.initialize(basisVert, basisDerivVert,
+ basisQuad, basisDerivQuad, quadPtsRef, quadWts,
cellDim, numBasis, numQuadPts, spaceDim);
CPPUNIT_ASSERT_EQUAL(cellDim, q._cellDim);
@@ -179,13 +182,23 @@
CPPUNIT_ASSERT_EQUAL(numQuadPts, q._numQuadPts);
CPPUNIT_ASSERT_EQUAL(spaceDim, q._spaceDim);
- size_t size = numBasis * numQuadPts;
+ const int numVertices = numBasis;
+
+ size_t size = numBasis * numVertices;
for (int i=0; i < size; ++i)
- CPPUNIT_ASSERT_EQUAL(basis[i], q._basis[i]);
+ CPPUNIT_ASSERT_EQUAL(basisVert[i], q._basisVert[i]);
+ size = numBasis * numVertices * spaceDim;
+ for (int i=0; i < size; ++i)
+ CPPUNIT_ASSERT_EQUAL(basisDerivVert[i], q._basisDerivVert[i]);
+
+ size = numBasis * numQuadPts;
+ for (int i=0; i < size; ++i)
+ CPPUNIT_ASSERT_EQUAL(basisQuad[i], q._basisQuad[i]);
+
size = numBasis * numQuadPts * spaceDim;
for (int i=0; i < size; ++i)
- CPPUNIT_ASSERT_EQUAL(basisDeriv[i], q._basisDeriv[i]);
+ CPPUNIT_ASSERT_EQUAL(basisDerivQuad[i], q._basisDerivQuad[i]);
size = numQuadPts * cellDim;
for (int i=0; i < size; ++i)
@@ -196,23 +209,98 @@
CPPUNIT_ASSERT_EQUAL(quadWts[i], q._quadWts[i]);
// Make sure Jacobian stuff has been allocated
+ size = numVertices*cellDim*spaceDim;
+ CPPUNIT_ASSERT_EQUAL(size, q._jacobianVert.size());
+
+ size = numVertices;
+ CPPUNIT_ASSERT_EQUAL(size, q._jacobianDetVert.size());
+
+ // Make sure Jacobian stuff has been allocated
size = numQuadPts*cellDim*spaceDim;
- CPPUNIT_ASSERT_EQUAL(size, q._jacobian.size());
+ CPPUNIT_ASSERT_EQUAL(size, q._jacobianQuad.size());
size = numQuadPts*spaceDim*cellDim;
- CPPUNIT_ASSERT_EQUAL(size, q._jacobianInv.size());
+ CPPUNIT_ASSERT_EQUAL(size, q._jacobianInvQuad.size());
size = numQuadPts;
- CPPUNIT_ASSERT_EQUAL(size, q._jacobianDet.size());
+ CPPUNIT_ASSERT_EQUAL(size, q._jacobianDetQuad.size());
size = numQuadPts*spaceDim;
CPPUNIT_ASSERT_EQUAL(size, q._quadPts.size());
} // initialize
// ----------------------------------------------------------------------
+// Test initialize() & computeGeometryVert()
+void
+pylith::feassemble::TestQuadrature::_testComputeGeometryVert(
+ Quadrature* pQuad,
+ const QuadratureData& data) const
+{ // testComputeGeometry
+ const int cellDim = data.cellDim;
+ const int numBasis = data.numBasis;
+ const int numQuadPts = data.numQuadPts;
+ const int spaceDim = data.spaceDim;
+ const double* basisVert = data.basisVert;
+ const double* basisDerivVert = data.basisDerivVert;
+ const double* basisQuad = data.basisQuad;
+ const double* basisDerivQuad = data.basisDerivQuad;
+ const double* quadPtsRef = data.quadPtsRef;
+ const double* quadWts = data.quadWts;
+
+ const int numVertices = data.numVertices;
+ const int numCells = data.numCells;
+ const double* vertCoords = data.vertices;
+ const int* cells = data.cells;
+ const double* quadPts = data.quadPts;
+ const double* jacobianVert = data.jacobianVert;
+ const double* jacobianDetVert = data.jacobianDetVert;
+
+ const double minJacobian = 1.0e-06;
+
+ pQuad->minJacobian(minJacobian);
+ pQuad->initialize(basisVert, basisDerivVert,
+ basisQuad, basisDerivQuad, quadPtsRef, quadWts,
+ cellDim, numBasis, numQuadPts, spaceDim);
+
+ // Create mesh with test cell
+ typedef ALE::Mesh Mesh;
+ typedef ALE::Mesh::sieve_type sieve_type;
+ ALE::Obj<Mesh> mesh = new Mesh(PETSC_COMM_WORLD, cellDim);
+ ALE::Obj<sieve_type> sieve = new sieve_type(mesh->comm());
+
+ const bool interpolate = false;
+ ALE::SieveBuilder<Mesh>::buildTopology(sieve, cellDim, numCells,
+ (int*) cells, numVertices, interpolate, numBasis);
+ mesh->setSieve(sieve);
+ mesh->stratify();
+ ALE::SieveBuilder<Mesh>::buildCoordinates(mesh, spaceDim, vertCoords);
+
+ // Check values from computeGeometryVert()
+ const ALE::Obj<Mesh::label_sequence>& elements = mesh->heightStratum(0);
+ const Mesh::label_sequence::iterator e_iter = elements->begin();
+ const ALE::Obj<Mesh::real_section_type>& coordinates =
+ mesh->getRealSection("coordinates");
+ pQuad->computeGeometryVert(mesh, coordinates, *e_iter);
+
+ CPPUNIT_ASSERT(1 == numCells);
+
+ const double tolerance = 1.0e-06;
+ int size = numVertices * cellDim * spaceDim;
+ for (int i=0; i < size; ++i)
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(jacobianVert[i], pQuad->_jacobianVert[i],
+ tolerance);
+
+ size = numVertices;
+ for (int i=0; i < size; ++i)
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(jacobianDetVert[i],
+ pQuad->_jacobianDetVert[i],
+ tolerance);
+} // testComputeGeometryVert
+
+// ----------------------------------------------------------------------
// Test initialize() & computeGeometry()
void
-pylith::feassemble::TestQuadrature::_testComputeGeometry(
+pylith::feassemble::TestQuadrature::_testComputeGeometryQuad(
Quadrature* pQuad,
const QuadratureData& data) const
{ // testComputeGeometry
@@ -220,8 +308,10 @@
const int numBasis = data.numBasis;
const int numQuadPts = data.numQuadPts;
const int spaceDim = data.spaceDim;
- const double* basis = data.basis;
- const double* basisDeriv = data.basisDeriv;
+ const double* basisVert = data.basisVert;
+ const double* basisDerivVert = data.basisDerivVert;
+ const double* basisQuad = data.basisQuad;
+ const double* basisDerivQuad = data.basisDerivQuad;
const double* quadPtsRef = data.quadPtsRef;
const double* quadWts = data.quadWts;
@@ -230,14 +320,15 @@
const double* vertCoords = data.vertices;
const int* cells = data.cells;
const double* quadPts = data.quadPts;
- const double* jacobian = data.jacobian;
- const double* jacobianInv = data.jacobianInv;
- const double* jacobianDet = data.jacobianDet;
+ const double* jacobianQuad = data.jacobianQuad;
+ const double* jacobianInvQuad = data.jacobianInvQuad;
+ const double* jacobianDetQuad = data.jacobianDetQuad;
const double minJacobian = 1.0e-06;
pQuad->minJacobian(minJacobian);
- pQuad->initialize(basis, basisDeriv, quadPtsRef, quadWts,
+ pQuad->initialize(basisVert, basisDerivVert,
+ basisQuad, basisDerivQuad, quadPtsRef, quadWts,
cellDim, numBasis, numQuadPts, spaceDim);
// Create mesh with test cell
@@ -258,7 +349,7 @@
const Mesh::label_sequence::iterator e_iter = elements->begin();
const ALE::Obj<Mesh::real_section_type>& coordinates =
mesh->getRealSection("coordinates");
- pQuad->computeGeometry(mesh, coordinates, *e_iter);
+ pQuad->computeGeometryQuad(mesh, coordinates, *e_iter);
CPPUNIT_ASSERT(1 == numCells);
@@ -269,17 +360,21 @@
size = numQuadPts * cellDim * spaceDim;
for (int i=0; i < size; ++i)
- CPPUNIT_ASSERT_DOUBLES_EQUAL(jacobian[i], pQuad->_jacobian[i], tolerance);
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(jacobianQuad[i], pQuad->_jacobianQuad[i],
+ tolerance);
size = numQuadPts * spaceDim * cellDim;
for (int i=0; i < size; ++i)
- CPPUNIT_ASSERT_DOUBLES_EQUAL(jacobianInv[i], pQuad->_jacobianInv[i],
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(jacobianInvQuad[i],
+ pQuad->_jacobianInvQuad[i],
tolerance);
size = numQuadPts;
for (int i=0; i < size; ++i)
- CPPUNIT_ASSERT_DOUBLES_EQUAL(jacobianDet[i], pQuad->_jacobianDet[i],
+ CPPUNIT_ASSERT_DOUBLES_EQUAL(jacobianDetQuad[i],
+ pQuad->_jacobianDetQuad[i],
tolerance);
-} // testQuadratic
+} // testComputeGeometryQuad
+
// End of file
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature.hh 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature.hh 2007-04-27 20:27:03 UTC (rev 6715)
@@ -59,14 +59,22 @@
// PROTECTED METHODS //////////////////////////////////////////////////
protected :
- /** Test initialize() & computeGeometry()
+ /** Test initialize() & computeGeometryVert()
*
* @param pQuad Pointer to quadrature
* @param data Data for testing quadrature
*/
- void _testComputeGeometry(Quadrature* pQuad,
- const QuadratureData& data) const;
+ void _testComputeGeometryVert(Quadrature* pQuad,
+ const QuadratureData& data) const;
+ /** Test initialize() & computeGeometryQuad()
+ *
+ * @param pQuad Pointer to quadrature
+ * @param data Data for testing quadrature
+ */
+ void _testComputeGeometryQuad(Quadrature* pQuad,
+ const QuadratureData& data) const;
+
}; // class TestQuadrature
#endif // pylith_feassemble_testquadrature_hh
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature1D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature1D.cc 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature1D.cc 2007-04-27 20:27:03 UTC (rev 6715)
@@ -38,7 +38,8 @@
Quadrature1D q;
QuadratureData1DLinear data;
- _testComputeGeometry(&q, data);
+ _testComputeGeometryVert(&q, data);
+ _testComputeGeometryQuad(&q, data);
} // testLinear
// ----------------------------------------------------------------------
@@ -49,7 +50,9 @@
Quadrature1D q;
QuadratureData1DQuadratic data;
- _testComputeGeometry(&q, data);
+ _testComputeGeometryVert(&q, data);
+ _testComputeGeometryQuad(&q, data);
} // testQuadratic
+
// End of file
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature1Din2D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature1Din2D.cc 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature1Din2D.cc 2007-04-27 20:27:03 UTC (rev 6715)
@@ -38,7 +38,8 @@
Quadrature1Din2D q;
QuadratureData1Din2DLinear data;
- _testComputeGeometry(&q, data);
+ _testComputeGeometryVert(&q, data);
+ _testComputeGeometryQuad(&q, data);
} // testLinear
// ----------------------------------------------------------------------
@@ -49,7 +50,8 @@
Quadrature1Din2D q;
QuadratureData1Din2DQuadratic data;
- _testComputeGeometry(&q, data);
+ _testComputeGeometryVert(&q, data);
+ _testComputeGeometryQuad(&q, data);
} // testQuadratic
// End of file
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature1Din3D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature1Din3D.cc 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature1Din3D.cc 2007-04-27 20:27:03 UTC (rev 6715)
@@ -38,7 +38,8 @@
Quadrature1Din3D q;
QuadratureData1Din3DLinear data;
- _testComputeGeometry(&q, data);
+ _testComputeGeometryVert(&q, data);
+ _testComputeGeometryQuad(&q, data);
} // testLinear
// ----------------------------------------------------------------------
@@ -49,7 +50,8 @@
Quadrature1Din3D q;
QuadratureData1Din3DQuadratic data;
- _testComputeGeometry(&q, data);
+ _testComputeGeometryVert(&q, data);
+ _testComputeGeometryQuad(&q, data);
} // testQuadratic
// End of file
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature2D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature2D.cc 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature2D.cc 2007-04-27 20:27:03 UTC (rev 6715)
@@ -38,7 +38,8 @@
Quadrature2D q;
QuadratureData2DLinear data;
- _testComputeGeometry(&q, data);
+ _testComputeGeometryVert(&q, data);
+ _testComputeGeometryQuad(&q, data);
} // testLinear
// ----------------------------------------------------------------------
@@ -49,7 +50,8 @@
Quadrature2D q;
QuadratureData2DQuadratic data;
- _testComputeGeometry(&q, data);
+ _testComputeGeometryVert(&q, data);
+ _testComputeGeometryQuad(&q, data);
} // testQuadratic
// End of file
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature2Din3D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature2Din3D.cc 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature2Din3D.cc 2007-04-27 20:27:03 UTC (rev 6715)
@@ -41,7 +41,8 @@
Quadrature2Din3D q;
QuadratureData2Din3DLinearXYZ data;
- _testComputeGeometry(&q, data);
+ _testComputeGeometryVert(&q, data);
+ _testComputeGeometryQuad(&q, data);
} // testLinearXYZ
// ----------------------------------------------------------------------
@@ -52,7 +53,8 @@
Quadrature2Din3D q;
QuadratureData2Din3DLinearXY data;
- _testComputeGeometry(&q, data);
+ _testComputeGeometryVert(&q, data);
+ _testComputeGeometryQuad(&q, data);
} // testLinearXY
// ----------------------------------------------------------------------
@@ -63,7 +65,8 @@
Quadrature2Din3D q;
QuadratureData2Din3DLinearYZ data;
- _testComputeGeometry(&q, data);
+ _testComputeGeometryVert(&q, data);
+ _testComputeGeometryQuad(&q, data);
} // testLinearYZ
// ----------------------------------------------------------------------
@@ -74,7 +77,8 @@
Quadrature2Din3D q;
QuadratureData2Din3DLinearXZ data;
- _testComputeGeometry(&q, data);
+ _testComputeGeometryVert(&q, data);
+ _testComputeGeometryQuad(&q, data);
} // testLinearXZ
// ----------------------------------------------------------------------
@@ -85,7 +89,8 @@
Quadrature2Din3D q;
QuadratureData2Din3DQuadratic data;
- _testComputeGeometry(&q, data);
+ _testComputeGeometryVert(&q, data);
+ _testComputeGeometryQuad(&q, data);
} // testQuadratic
// End of file
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature3D.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature3D.cc 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/TestQuadrature3D.cc 2007-04-27 20:27:03 UTC (rev 6715)
@@ -38,7 +38,8 @@
Quadrature3D q;
QuadratureData3DLinear data;
- _testComputeGeometry(&q, data);
+ _testComputeGeometryVert(&q, data);
+ _testComputeGeometryQuad(&q, data);
} // testLinear
// ----------------------------------------------------------------------
@@ -49,7 +50,8 @@
Quadrature3D q;
QuadratureData3DQuadratic data;
- _testComputeGeometry(&q, data);
+ _testComputeGeometryVert(&q, data);
+ _testComputeGeometryQuad(&q, data);
} // testQuadratic
// End of file
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorInertia.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorInertia.py 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/IntegratorInertia.py 2007-04-27 20:27:03 UTC (rev 6715)
@@ -72,7 +72,7 @@
vertices = self.vertices[cell, :]
(jacobian, jacobianInv, jacobianDet) = \
- feutils.calculateJacobian(self.quadrature, vertices)
+ feutils.calculateJacobianQuad(self.quadrature, vertices)
density = 1.0
for iQuad in xrange(self.numQuadPts):
n *= 0.0
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature1DLinear.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature1DLinear.py 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature1DLinear.py 2007-04-27 20:27:03 UTC (rev 6715)
@@ -32,6 +32,9 @@
def N1p(p):
return +0.5
+def verticesRef():
+ return [-1.0, 1.0]
+
# ----------------------------------------------------------------------
# Quadrature1DLinear class
@@ -65,26 +68,53 @@
# PRIVATE METHODS ////////////////////////////////////////////////////
- def calculateBasis(self):
+ def calculateBasisVert(self):
"""
+ Calculate basis functions and their derivatives at reference vertices.
+ """
+
+ self.basisVert = numpy.zeros( (self.numBasis, self.numBasis),
+ dtype=numpy.float64)
+ self.basisDerivVert = numpy.zeros( (self.numBasis,
+ self.numBasis, self.cellDim),
+ dtype=numpy.float64)
+
+ iVertex = 0
+ for v in verticesRef():
+ # Basis functions at vertices
+ basis = numpy.array([N0(v), N1(v)], dtype=numpy.float64)
+ self.basisVert[iVertex,:] = basis.reshape( (self.numBasis,) )
+
+ # Derivatives of basis functions at quadrature points
+ deriv = numpy.array([[N0p(v)], [N1p(v)]], dtype=numpy.float64)
+ self.basisDerivVert[iVertex,:] = deriv.reshape((self.numBasis,
+ self.cellDim))
+
+ iVertex += 1
+ return
+
+
+ def calculateBasisQuad(self):
+ """
Calculate basis functions and their derivatives at quadrature points.
"""
- self.basis = numpy.zeros( (self.numQuadPts, self.numBasis),
- dtype=numpy.float64)
- self.basisDeriv = numpy.zeros( (self.numQuadPts,
- self.numBasis, self.cellDim),
- dtype=numpy.float64)
+ self.basisQuad = numpy.zeros( (self.numQuadPts, self.numBasis),
+ dtype=numpy.float64)
+ self.basisDerivQuad = numpy.zeros( (self.numQuadPts,
+ self.numBasis, self.cellDim),
+ dtype=numpy.float64)
iQuad = 0
for q in self.quadPtsRef:
# Basis functions at quadrature points
basis = numpy.array([N0(q), N1(q)], dtype=numpy.float64)
- self.basis[iQuad,:] = basis.reshape( (self.numBasis,) )
+ self.basisQuad[iQuad,:] = basis.reshape( (self.numBasis,) )
# Derivatives of basis functions at quadrature points
deriv = numpy.array([[N0p(q)], [N1p(q)]], dtype=numpy.float64)
- self.basisDeriv[iQuad,:] = deriv.reshape((self.numBasis, self.cellDim))
+ self.basisDerivQuad[iQuad,:] = deriv.reshape((self.numBasis,
+ self.cellDim))
iQuad += 1
return
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature1DQuadratic.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature1DQuadratic.py 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature1DQuadratic.py 2007-04-27 20:27:03 UTC (rev 6715)
@@ -38,6 +38,9 @@
def N2p(p):
return +0.5*(1.0+p) + 0.5*p
+def verticesRef():
+ return [-1.0, 0.0, 1.0]
+
# ----------------------------------------------------------------------
# Quadrature1DQuadratic class
@@ -75,27 +78,54 @@
# PRIVATE METHODS ////////////////////////////////////////////////////
- def calculateBasis(self):
+ def calculateBasisVert(self):
"""
+ Calculate basis functions and their derivatives at vertices.
+ """
+
+ self.basisVert = numpy.zeros( (self.numBasis, self.numBasis),
+ dtype=numpy.float64)
+ self.basisDerivVert = numpy.zeros( (self.numBasis,
+ self.numBasis, self.cellDim),
+ dtype=numpy.float64)
+
+ iVertex = 0
+ for v in verticesRef():
+ # Basis functions at vertices
+ basis = numpy.array([N0(v), N1(v), N2(v)], dtype=numpy.float64)
+ self.basisVert[iVertex] = basis.reshape( (self.numBasis,) )
+
+ # Derivatives of basis functions at vertices
+ deriv = numpy.array([[N0p(v)], [N1p(v)], [N2p(v)]],
+ dtype=numpy.float64)
+ self.basisDerivVert[iVertex] = deriv.reshape((self.numBasis,
+ self.cellDim))
+
+ iVertex += 1
+ return
+
+
+ def calculateBasisQuad(self):
+ """
Calculate basis functions and their derivatives at quadrature points.
"""
- self.basis = numpy.zeros( (self.numQuadPts, self.numBasis),
- dtype=numpy.float64)
- self.basisDeriv = numpy.zeros( (self.numQuadPts,
- self.numBasis, self.cellDim),
- dtype=numpy.float64)
+ self.basisQuad = numpy.zeros( (self.numQuadPts, self.numBasis),
+ dtype=numpy.float64)
+ self.basisDerivQuad = numpy.zeros( (self.numQuadPts,
+ self.numBasis, self.cellDim),
+ dtype=numpy.float64)
iQuad = 0
for q in self.quadPtsRef:
# Basis functions at quadrature points
basis = numpy.array([N0(q), N1(q), N2(q)], dtype=numpy.float64)
- self.basis[iQuad] = basis.reshape( (self.numBasis,) )
+ self.basisQuad[iQuad] = basis.reshape( (self.numBasis,) )
# Derivatives of basis functions at quadrature points
deriv = numpy.array([[N0p(q)], [N1p(q)], [N2p(q)]],
dtype=numpy.float64)
- self.basisDeriv[iQuad] = deriv.reshape((self.numBasis, self.cellDim))
+ self.basisDerivQuad[iQuad] = deriv.reshape((self.numBasis, self.cellDim))
iQuad += 1
return
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2DLinear.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2DLinear.py 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2DLinear.py 2007-04-27 20:27:03 UTC (rev 6715)
@@ -47,6 +47,11 @@
def N2q(p):
return 1.0
+def verticesRef():
+ return [ [0.0, 0.0],
+ [1.0, 0.0],
+ [0.0, 1.0] ]
+
# ----------------------------------------------------------------------
# Quadrature2DLinear class
@@ -80,28 +85,56 @@
return
- def calculateBasis(self):
+ def calculateBasisVert(self):
"""
+ Calculate basis functions and their derivatives at vertices.
+ """
+
+ self.basisVert = numpy.zeros( (self.numBasis, self.numBasis),
+ dtype=numpy.float64)
+ self.basisDerivVert = numpy.zeros( (self.numBasis,
+ self.numBasis, self.cellDim),
+ dtype=numpy.float64)
+
+ iVertex = 0
+ for v in verticesRef():
+ # Basis functions at quadrature points
+ basis = numpy.array([N0(v), N1(v), N2(v)], dtype=numpy.float64)
+ self.basisVert[iVertex] = basis.reshape( (self.numBasis,) )
+
+ # Derivatives of basis functions at quadrature points
+ deriv = numpy.array([[N0p(v), N0q(v)],
+ [N1p(v), N1q(v)],
+ [N2p(v), N2q(v)]], dtype=numpy.float64)
+ self.basisDerivVert[iVertex] = deriv.reshape((self.numBasis,
+ self.cellDim))
+
+ iVertex += 1
+ return
+
+
+ def calculateBasisQuad(self):
+ """
Calculate basis functions and their derivatives at quadrature points.
"""
- self.basis = numpy.zeros( (self.numQuadPts, self.numBasis),
- dtype=numpy.float64)
- self.basisDeriv = numpy.zeros( (self.numQuadPts,
- self.numBasis, self.cellDim),
- dtype=numpy.float64)
+ self.basisQuad = numpy.zeros( (self.numQuadPts, self.numBasis),
+ dtype=numpy.float64)
+ self.basisDerivQuad = numpy.zeros( (self.numQuadPts,
+ self.numBasis, self.cellDim),
+ dtype=numpy.float64)
iQuad = 0
for q in self.quadPtsRef:
# Basis functions at quadrature points
basis = numpy.array([N0(q), N1(q), N2(q)], dtype=numpy.float64)
- self.basis[iQuad] = basis.reshape( (self.numBasis,) )
+ self.basisQuad[iQuad] = basis.reshape( (self.numBasis,) )
# Derivatives of basis functions at quadrature points
deriv = numpy.array([[N0p(q), N0q(q)],
[N1p(q), N1q(q)],
[N2p(q), N2q(q)]], dtype=numpy.float64)
- self.basisDeriv[iQuad] = deriv.reshape((self.numBasis, self.cellDim))
+ self.basisDerivQuad[iQuad] = deriv.reshape((self.numBasis, self.cellDim))
iQuad += 1
return
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2DQuadratic.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2DQuadratic.py 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature2DQuadratic.py 2007-04-27 20:27:03 UTC (rev 6715)
@@ -74,6 +74,14 @@
def N5q(p):
return -8.0*p[1]-4.0*p[0]+4.0
+def verticesRef():
+ return [ [0.0, 0.0],
+ [1.0, 0.0],
+ [0.0, 1.0],
+ [0.5, 0.0],
+ [0.0, 0.5],
+ [0.5, 0.5] ]
+
# ----------------------------------------------------------------------
# Quadrature2DQuadratic class
@@ -116,24 +124,57 @@
return
- def calculateBasis(self):
+ def calculateBasisVert(self):
"""
+ Calculate basis functions and their derivatives at vertices.
+ """
+
+ self.basisVert = numpy.zeros( (self.numBasis, self.numBasis),
+ dtype=numpy.float64)
+ self.basisDerivVert = numpy.zeros( (self.numBasis,
+ self.numBasis, self.cellDim),
+ dtype=numpy.float64)
+
+ iVertex = 0
+ for v in verticesRef():
+ # Basis functions at vertices
+ basis = numpy.array([N0(v), N1(v), N2(v), N3(v), N4(v), N5(v)],
+ dtype=numpy.float64)
+ self.basisVert[iVertex] = basis.reshape( (self.numBasis,) )
+
+ # Derivatives of basis functions at vertices
+ deriv = numpy.array([[N0p(v), N0q(v)],
+ [N1p(v), N1q(v)],
+ [N2p(v), N2q(v)],
+ [N3p(v), N3q(v)],
+ [N4p(v), N4q(v)],
+ [N5p(v), N5q(v)]],
+ dtype=numpy.float64)
+ self.basisDerivVert[iVertex] = deriv.reshape((self.numBasis,
+ self.cellDim))
+
+ iVertex += 1
+ return
+
+
+ def calculateBasisQuad(self):
+ """
Calculate basis functions and their derivatives at quadrature points.
"""
- self.basis = numpy.zeros( (self.numQuadPts, self.numBasis),
- dtype=numpy.float64)
- self.basisDeriv = numpy.zeros( (self.numQuadPts,
- self.numBasis, self.cellDim),
- dtype=numpy.float64)
+ self.basisQuad = numpy.zeros( (self.numQuadPts, self.numBasis),
+ dtype=numpy.float64)
+ self.basisDerivQuad = numpy.zeros( (self.numQuadPts,
+ self.numBasis, self.cellDim),
+ dtype=numpy.float64)
iQuad = 0
for q in self.quadPtsRef:
# Basis functions at quadrature points
basis = numpy.array([N0(q), N1(q), N2(q), N3(q), N4(q), N5(q)],
dtype=numpy.float64)
- self.basis[iQuad] = basis.reshape( (self.numBasis,) )
-
+ self.basisQuad[iQuad] = basis.reshape( (self.numBasis,) )
+
# Derivatives of basis functions at quadrature points
deriv = numpy.array([[N0p(q), N0q(q)],
[N1p(q), N1q(q)],
@@ -142,8 +183,8 @@
[N4p(q), N4q(q)],
[N5p(q), N5q(q)]],
dtype=numpy.float64)
- self.basisDeriv[iQuad] = deriv.reshape((self.numBasis, self.cellDim))
-
+ self.basisDerivQuad[iQuad] = deriv.reshape((self.numBasis, self.cellDim))
+
iQuad += 1
return
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature3DLinear.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature3DLinear.py 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature3DLinear.py 2007-04-27 20:27:03 UTC (rev 6715)
@@ -68,6 +68,13 @@
def N3r(p):
return 1.0
+def verticesRef():
+ return [ [0.0, 0.0, 0.0],
+ [1.0, 0.0, 0.0],
+ [0.0, 1.0, 0.0],
+ [0.0, 0.0, 1.0] ]
+
+
# ----------------------------------------------------------------------
# Quadrature3DLinear class
@@ -103,14 +110,44 @@
return
- def calculateBasis(self):
+ def calculateBasisVert(self):
"""
+ Calculate basis functions and their derivatives at vertices.
+ """
+
+ self.basisVert = numpy.zeros( (self.numBasis, self.numBasis),
+ dtype=numpy.float64)
+ self.basisDerivVert = numpy.zeros( (self.numBasis,
+ self.numBasis, self.cellDim),
+ dtype=numpy.float64)
+
+ iVertex = 0
+ for v in verticesRef():
+ # Basis functions at vertices
+ basis = numpy.array([N0(v), N1(v), N2(v), N3(v)], dtype=numpy.float64)
+ self.basisVert[iVertex] = basis.reshape( (self.numBasis,) )
+
+ # Derivatives of basis functions at vertices
+ deriv = numpy.array([[N0p(v), N0q(v), N0r(v)],
+ [N1p(v), N1q(v), N1r(v)],
+ [N2p(v), N2q(v), N2r(v)],
+ [N3p(v), N3q(v), N3r(v)]],
+ dtype=numpy.float64)
+ self.basisDerivVert[iVertex] = deriv.reshape((self.numBasis,
+ self.cellDim))
+
+ iVertex += 1
+ return
+
+
+ def calculateBasisQuad(self):
+ """
Calculate basis functions and their derivatives at quadrature points.
"""
- self.basis = numpy.zeros( (self.numQuadPts, self.numBasis),
+ self.basisQuad = numpy.zeros( (self.numQuadPts, self.numBasis),
dtype=numpy.float64)
- self.basisDeriv = numpy.zeros( (self.numQuadPts,
+ self.basisDerivQuad = numpy.zeros( (self.numQuadPts,
self.numBasis, self.cellDim),
dtype=numpy.float64)
@@ -118,7 +155,7 @@
for q in self.quadPtsRef:
# Basis functions at quadrature points
basis = numpy.array([N0(q), N1(q), N2(q), N3(q)], dtype=numpy.float64)
- self.basis[iQuad] = basis.reshape( (self.numBasis,) )
+ self.basisQuad[iQuad] = basis.reshape( (self.numBasis,) )
# Derivatives of basis functions at quadrature points
deriv = numpy.array([[N0p(q), N0q(q), N0r(q)],
@@ -126,7 +163,7 @@
[N2p(q), N2q(q), N2r(q)],
[N3p(q), N3q(q), N3r(q)]],
dtype=numpy.float64)
- self.basisDeriv[iQuad] = deriv.reshape((self.numBasis, self.cellDim))
+ self.basisDerivQuad[iQuad] = deriv.reshape((self.numBasis, self.cellDim))
iQuad += 1
return
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature3DQuadratic.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature3DQuadratic.py 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature3DQuadratic.py 2007-04-27 20:27:03 UTC (rev 6715)
@@ -140,6 +140,18 @@
def N9r(p):
return 4.0*p[0]
+def verticesRef():
+ return [ [0.0, 0.0, 0.0],
+ [1.0, 0.0, 0.0],
+ [0.0, 1.0, 0.0],
+ [0.0, 0.0, 1.0],
+ [0.5, 0.0, 0.0],
+ [0.0, 0.5, 0.0],
+ [0.0, 0.0, 0.5],
+ [0.5, 0.5, 0.0],
+ [0.0, 0.5, 0.5],
+ [0.5, 0.0, 0.5] ]
+
# ----------------------------------------------------------------------
# Quadrature3DQuadratic class
@@ -190,14 +202,52 @@
return
- def calculateBasis(self):
+ def calculateBasisVert(self):
"""
+ Calculate basis functions and their derivatives at vertices.
+ """
+
+ self.basisVert = numpy.zeros( (self.numBasis, self.numBasis),
+ dtype=numpy.float64)
+ self.basisDerivVert = numpy.zeros( (self.numBasis,
+ self.numBasis, self.cellDim),
+ dtype=numpy.float64)
+
+ iVertex = 0
+ for v in verticesRef():
+ # Basis functions at vertices
+ basis = numpy.array([N0(v), N1(v), N2(v), N3(v), N4(v),
+ N5(v), N6(v), N7(v), N8(v), N9(v)],
+ dtype=numpy.float64)
+ self.basisVert[iVertex] = basis.reshape( (self.numBasis,) )
+
+ # Derivatives of basis functions at vertices
+ deriv = numpy.array([[N0p(v), N0q(v), N0r(v)],
+ [N1p(v), N1q(v), N1r(v)],
+ [N2p(v), N2q(v), N2r(v)],
+ [N3p(v), N3q(v), N3r(v)],
+ [N4p(v), N4q(v), N4r(v)],
+ [N5p(v), N5q(v), N5r(v)],
+ [N6p(v), N6q(v), N6r(v)],
+ [N7p(v), N7q(v), N7r(v)],
+ [N8p(v), N8q(v), N8r(v)],
+ [N9p(v), N9q(v), N9r(v)]],
+ dtype=numpy.float64)
+ self.basisDerivVert[iVertex] = deriv.reshape((self.numBasis,
+ self.cellDim))
+
+ iVertex += 1
+ return
+
+
+ def calculateBasisQuad(self):
+ """
Calculate basis functions and their derivatives at quadrature points.
"""
- self.basis = numpy.zeros( (self.numQuadPts, self.numBasis),
+ self.basisQuad = numpy.zeros( (self.numQuadPts, self.numBasis),
dtype=numpy.float64)
- self.basisDeriv = numpy.zeros( (self.numQuadPts,
+ self.basisDerivQuad = numpy.zeros( (self.numQuadPts,
self.numBasis, self.cellDim),
dtype=numpy.float64)
@@ -207,7 +257,7 @@
basis = numpy.array([N0(q), N1(q), N2(q), N3(q), N4(q),
N5(q), N6(q), N7(q), N8(q), N9(q)],
dtype=numpy.float64)
- self.basis[iQuad] = basis.reshape( (self.numBasis,) )
+ self.basisQuad[iQuad] = basis.reshape( (self.numBasis,) )
# Derivatives of basis functions at quadrature points
deriv = numpy.array([[N0p(q), N0q(q), N0r(q)],
@@ -221,7 +271,7 @@
[N8p(q), N8q(q), N8r(q)],
[N9p(q), N9q(q), N9r(q)]],
dtype=numpy.float64)
- self.basisDeriv[iQuad] = deriv.reshape((self.numBasis, self.cellDim))
+ self.basisDerivQuad[iQuad] = deriv.reshape((self.numBasis, self.cellDim))
iQuad += 1
return
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureApp.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureApp.py 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureApp.py 2007-04-27 20:27:03 UTC (rev 6715)
@@ -66,16 +66,21 @@
self.cellDim = None
self.numBasis = None
self.numQuadPts = None
+
self.quadPtsRef = None
self.quadWts = None
- self.basis = None
- self.basisDeriv = None
+ self.basisVert = None
+ self.basisDerivVert = None
+ self.basisQuad = None
+ self.basisDerivQuad = None
# Computed quadrature information
self.quadPts = None
- self.jacobian = None
- self.jacobianDet = None
- self.jacobianInv = None
+ self.jacobianVert = None
+ self.jacobianDetVert = None
+ self.jacobianQuad = None
+ self.jacobianDetQuad = None
+ self.jacobianInvQuad = None
return
@@ -83,32 +88,52 @@
"""
Run the application.
"""
- self.calculateBasis()
- self.calculateJacobian()
+ self.calculateBasisVert()
+ self.calculateJacobianVert()
+ self.calculateBasisQuad()
+ self.calculateJacobianQuad()
+
# Quadrature points in cell
- self.quadPts = numpy.dot(self.basis, self.vertices)
+ self.quadPts = numpy.dot(self.basisQuad, self.vertices)
self._initData()
self.data.write(self.name)
return
- def calculateBasis(self):
+ def calculateBasisVert(self):
"""
+ Calculate basis functions and derivatives at vertoces.
+ """
+ raise NotImplementedError
+
+
+ def calculateBasisQuad(self):
+ """
Calculate basis functions and derivatives at quadrature points.
"""
raise NotImplementedError
- def calculateJacobian(self):
+ def calculateJacobianVert(self):
"""
+ Calculate Jacobian and its determinant at vertices.
+ """
+ import feutils
+ (self.jacobianVert, self.jacobianDetVert) = \
+ feutils.calculateJacobianVert(self, self.vertices)
+ return
+
+
+ def calculateJacobianQuad(self):
+ """
Calculate Jacobian, its determinant, and its inverse at quadrature
pts plus coordinates of quadrature points in the cell.
"""
import feutils
- (self.jacobian, self.jacobianInv, self.jacobianDet) = \
- feutils.calculateJacobian(self, self.vertices)
+ (self.jacobianQuad, self.jacobianInvQuad, self.jacobianDetQuad) = \
+ feutils.calculateJacobianQuad(self, self.vertices)
return
@@ -150,24 +175,37 @@
format="%16.8e", ncols=self.cellDim)
self.data.addArray(vtype="double", name="_quadWts", values=self.quadWts,
format="%16.8e", ncols=self.numQuadPts)
-
- self.data.addArray(vtype="double", name="_basis", values=self.basis,
- format="%16.8e", ncols=self.cellDim)
- self.data.addArray(vtype="double", name="_basisDeriv",
- values=self.basisDeriv,
- format="%16.8e", ncols=self.cellDim)
self.data.addArray(vtype="double", name="_quadPts",
values=self.quadPts,
format="%16.8e", ncols=self.spaceDim)
-
- self.data.addArray(vtype="double", name="_jacobian",
- values=self.jacobian,
+
+ self.data.addArray(vtype="double", name="_basisVert",
+ values=self.basisVert,
+ format="%16.8e", ncols=self.cellDim)
+ self.data.addArray(vtype="double", name="_basisDerivVert",
+ values=self.basisDerivVert,
+ format="%16.8e", ncols=self.cellDim)
+ self.data.addArray(vtype="double", name="_jacobianVert",
+ values=self.jacobianVert,
format="%16.8e", ncols=self.spaceDim)
- self.data.addArray(vtype="double", name="_jacobianDet",
- values=self.jacobianDet,
+ self.data.addArray(vtype="double", name="_jacobianDetVert",
+ values=self.jacobianDetVert,
+ format="%16.8e", ncols=self.numVertices)
+
+ self.data.addArray(vtype="double", name="_basisQuad",
+ values=self.basisQuad,
+ format="%16.8e", ncols=self.cellDim)
+ self.data.addArray(vtype="double", name="_basisDerivQuad",
+ values=self.basisDerivQuad,
+ format="%16.8e", ncols=self.cellDim)
+ self.data.addArray(vtype="double", name="_jacobianQuad",
+ values=self.jacobianQuad,
+ format="%16.8e", ncols=self.spaceDim)
+ self.data.addArray(vtype="double", name="_jacobianDetQuad",
+ values=self.jacobianDetQuad,
format="%16.8e", ncols=self.numQuadPts)
- self.data.addArray(vtype="double", name="_jacobianInv",
- values=self.jacobianInv,
+ self.data.addArray(vtype="double", name="_jacobianInvQuad",
+ values=self.jacobianInvQuad,
format="%16.8e", ncols=self.cellDim)
return
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData.cc 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData.cc 2007-04-27 20:27:03 UTC (rev 6715)
@@ -25,12 +25,16 @@
cells(0),
quadPtsRef(0),
quadWts(0),
- basis(0),
- basisDeriv(0),
- jacobian(0),
- jacobianDet(0),
- jacobianInv(0),
- quadPts(0)
+ quadPts(0),
+ basisVert(0),
+ basisDerivVert(0),
+ jacobianVert(0),
+ jacobianDetVert(0),
+ basisQuad(0),
+ basisDerivQuad(0),
+ jacobianQuad(0),
+ jacobianDetQuad(0),
+ jacobianInvQuad(0)
{ // constructor
} // constructor
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData.hh 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData.hh 2007-04-27 20:27:03 UTC (rev 6715)
@@ -43,15 +43,22 @@
double* vertices; ///< Pointer to coordinates of vertices
int* cells; ///< Pointer to indices of vertices in cells
+
double* quadPtsRef; ///< Coordinates of quad pts in ref cell
double* quadWts; ///< Weights of quadrature points
- double* basis; ///< Basis fns at quadrature points
- double* basisDeriv; ///< Derivatices of basis fns at quad pts
- double* jacobian; ///< Jacobian at quadrature points
- double* jacobianDet; ///< Determinant of quadrature points
- double* jacobianInv; ///< Inverse of Jacobian at quadruature points
double* quadPts; ///< Coordinates of quad pts in cell
+ double* basisVert; ///< Basis fns at vertices
+ double* basisDerivVert; ///< Derivatices of basis fns at vertices
+ double* jacobianVert; ///< Jacobian at vertices
+ double* jacobianDetVert; ///< Determinant at vertices
+
+ double* basisQuad; ///< Basis fns at quadrature points
+ double* basisDerivQuad; ///< Derivatices of basis fns at quad pts
+ double* jacobianQuad; ///< Jacobian at quadrature points
+ double* jacobianDetQuad; ///< Determinant of quadrature points
+ double* jacobianInvQuad; ///< Inverse of Jacobian at quadruature points
+
};
#endif // pylith_feassemble_quadraturedata_hh
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DLinear.cc 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DLinear.cc 2007-04-27 20:27:03 UTC (rev 6715)
@@ -44,29 +44,52 @@
2.00000000e+00,
};
-const double pylith::feassemble::QuadratureData1DLinear::_basis[] = {
+const double pylith::feassemble::QuadratureData1DLinear::_quadPts[] = {
+ 8.75000000e-01,
+};
+
+const double pylith::feassemble::QuadratureData1DLinear::_basisVert[] = {
+ 1.00000000e+00,
+ 0.00000000e+00,
+ 0.00000000e+00,
+ 1.00000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData1DLinear::_basisDerivVert[] = {
+ -5.00000000e-01,
5.00000000e-01,
+ -5.00000000e-01,
5.00000000e-01,
};
-const double pylith::feassemble::QuadratureData1DLinear::_basisDeriv[] = {
- -5.00000000e-01,
+const double pylith::feassemble::QuadratureData1DLinear::_jacobianVert[] = {
+ 1.12500000e+00,
+ 1.12500000e+00,
+};
+
+const double pylith::feassemble::QuadratureData1DLinear::_jacobianDetVert[] = {
+ 1.12500000e+00, 1.12500000e+00,
+};
+
+const double pylith::feassemble::QuadratureData1DLinear::_basisQuad[] = {
5.00000000e-01,
+ 5.00000000e-01,
};
-const double pylith::feassemble::QuadratureData1DLinear::_quadPts[] = {
- 8.75000000e-01,
+const double pylith::feassemble::QuadratureData1DLinear::_basisDerivQuad[] = {
+ -5.00000000e-01,
+ 5.00000000e-01,
};
-const double pylith::feassemble::QuadratureData1DLinear::_jacobian[] = {
+const double pylith::feassemble::QuadratureData1DLinear::_jacobianQuad[] = {
1.12500000e+00,
};
-const double pylith::feassemble::QuadratureData1DLinear::_jacobianDet[] = {
+const double pylith::feassemble::QuadratureData1DLinear::_jacobianDetQuad[] = {
1.12500000e+00,
};
-const double pylith::feassemble::QuadratureData1DLinear::_jacobianInv[] = {
+const double pylith::feassemble::QuadratureData1DLinear::_jacobianInvQuad[] = {
8.88888889e-01,
};
@@ -82,12 +105,16 @@
cells = const_cast<int*>(_cells);
quadPtsRef = const_cast<double*>(_quadPtsRef);
quadWts = const_cast<double*>(_quadWts);
- basis = const_cast<double*>(_basis);
- basisDeriv = const_cast<double*>(_basisDeriv);
quadPts = const_cast<double*>(_quadPts);
- jacobian = const_cast<double*>(_jacobian);
- jacobianDet = const_cast<double*>(_jacobianDet);
- jacobianInv = const_cast<double*>(_jacobianInv);
+ basisVert = const_cast<double*>(_basisVert);
+ basisDerivVert = const_cast<double*>(_basisDerivVert);
+ jacobianVert = const_cast<double*>(_jacobianVert);
+ jacobianDetVert = const_cast<double*>(_jacobianDetVert);
+ basisQuad = const_cast<double*>(_basisQuad);
+ basisDerivQuad = const_cast<double*>(_basisDerivQuad);
+ jacobianQuad = const_cast<double*>(_jacobianQuad);
+ jacobianDetQuad = const_cast<double*>(_jacobianDetQuad);
+ jacobianInvQuad = const_cast<double*>(_jacobianInvQuad);
} // constructor
pylith::feassemble::QuadratureData1DLinear::~QuadratureData1DLinear(void)
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DLinear.hh 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DLinear.hh 2007-04-27 20:27:03 UTC (rev 6715)
@@ -57,18 +57,26 @@
static const double _quadWts[];
- static const double _basis[];
+ static const double _quadPts[];
- static const double _basisDeriv[];
+ static const double _basisVert[];
- static const double _quadPts[];
+ static const double _basisDerivVert[];
- static const double _jacobian[];
+ static const double _jacobianVert[];
- static const double _jacobianDet[];
+ static const double _jacobianDetVert[];
- static const double _jacobianInv[];
+ static const double _basisQuad[];
+ static const double _basisDerivQuad[];
+
+ static const double _jacobianQuad[];
+
+ static const double _jacobianDetQuad[];
+
+ static const double _jacobianInvQuad[];
+
};
#endif // pylith_feassemble_quadraturedata1dlinear_hh
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DQuadratic.cc 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DQuadratic.cc 2007-04-27 20:27:03 UTC (rev 6715)
@@ -46,7 +46,46 @@
1.00000000e+00, 1.00000000e+00,
};
-const double pylith::feassemble::QuadratureData1DQuadratic::_basis[] = {
+const double pylith::feassemble::QuadratureData1DQuadratic::_quadPts[] = {
+ 2.25480947e-01,
+ 1.52451905e+00,
+};
+
+const double pylith::feassemble::QuadratureData1DQuadratic::_basisVert[] = {
+ 1.00000000e+00,
+ 0.00000000e+00,
+ -0.00000000e+00,
+ -0.00000000e+00,
+ 1.00000000e+00,
+ 0.00000000e+00,
+ -0.00000000e+00,
+ 0.00000000e+00,
+ 1.00000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData1DQuadratic::_basisDerivVert[] = {
+ -1.50000000e+00,
+ 2.00000000e+00,
+ -5.00000000e-01,
+ -5.00000000e-01,
+ -0.00000000e+00,
+ 5.00000000e-01,
+ 5.00000000e-01,
+ -2.00000000e+00,
+ 1.50000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData1DQuadratic::_jacobianVert[] = {
+ 1.12500000e+00,
+ 1.12500000e+00,
+ 1.12500000e+00,
+};
+
+const double pylith::feassemble::QuadratureData1DQuadratic::_jacobianDetVert[] = {
+ 1.12500000e+00, 1.12500000e+00, 1.12500000e+00,
+};
+
+const double pylith::feassemble::QuadratureData1DQuadratic::_basisQuad[] = {
4.55341801e-01,
6.66666667e-01,
-1.22008468e-01,
@@ -55,7 +94,7 @@
4.55341801e-01,
};
-const double pylith::feassemble::QuadratureData1DQuadratic::_basisDeriv[] = {
+const double pylith::feassemble::QuadratureData1DQuadratic::_basisDerivQuad[] = {
-1.07735027e+00,
1.15470054e+00,
-7.73502692e-02,
@@ -64,21 +103,16 @@
1.07735027e+00,
};
-const double pylith::feassemble::QuadratureData1DQuadratic::_quadPts[] = {
- 2.25480947e-01,
- 1.52451905e+00,
-};
-
-const double pylith::feassemble::QuadratureData1DQuadratic::_jacobian[] = {
+const double pylith::feassemble::QuadratureData1DQuadratic::_jacobianQuad[] = {
1.12500000e+00,
1.12500000e+00,
};
-const double pylith::feassemble::QuadratureData1DQuadratic::_jacobianDet[] = {
+const double pylith::feassemble::QuadratureData1DQuadratic::_jacobianDetQuad[] = {
1.12500000e+00, 1.12500000e+00,
};
-const double pylith::feassemble::QuadratureData1DQuadratic::_jacobianInv[] = {
+const double pylith::feassemble::QuadratureData1DQuadratic::_jacobianInvQuad[] = {
8.88888889e-01,
8.88888889e-01,
};
@@ -95,12 +129,16 @@
cells = const_cast<int*>(_cells);
quadPtsRef = const_cast<double*>(_quadPtsRef);
quadWts = const_cast<double*>(_quadWts);
- basis = const_cast<double*>(_basis);
- basisDeriv = const_cast<double*>(_basisDeriv);
quadPts = const_cast<double*>(_quadPts);
- jacobian = const_cast<double*>(_jacobian);
- jacobianDet = const_cast<double*>(_jacobianDet);
- jacobianInv = const_cast<double*>(_jacobianInv);
+ basisVert = const_cast<double*>(_basisVert);
+ basisDerivVert = const_cast<double*>(_basisDerivVert);
+ jacobianVert = const_cast<double*>(_jacobianVert);
+ jacobianDetVert = const_cast<double*>(_jacobianDetVert);
+ basisQuad = const_cast<double*>(_basisQuad);
+ basisDerivQuad = const_cast<double*>(_basisDerivQuad);
+ jacobianQuad = const_cast<double*>(_jacobianQuad);
+ jacobianDetQuad = const_cast<double*>(_jacobianDetQuad);
+ jacobianInvQuad = const_cast<double*>(_jacobianInvQuad);
} // constructor
pylith::feassemble::QuadratureData1DQuadratic::~QuadratureData1DQuadratic(void)
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DQuadratic.hh 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1DQuadratic.hh 2007-04-27 20:27:03 UTC (rev 6715)
@@ -57,18 +57,26 @@
static const double _quadWts[];
- static const double _basis[];
+ static const double _quadPts[];
- static const double _basisDeriv[];
+ static const double _basisVert[];
- static const double _quadPts[];
+ static const double _basisDerivVert[];
- static const double _jacobian[];
+ static const double _jacobianVert[];
- static const double _jacobianDet[];
+ static const double _jacobianDetVert[];
- static const double _jacobianInv[];
+ static const double _basisQuad[];
+ static const double _basisDerivQuad[];
+
+ static const double _jacobianQuad[];
+
+ static const double _jacobianDetQuad[];
+
+ static const double _jacobianInvQuad[];
+
};
#endif // pylith_feassemble_quadraturedata1dquadratic_hh
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DLinear.cc 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DLinear.cc 2007-04-27 20:27:03 UTC (rev 6715)
@@ -44,29 +44,52 @@
2.00000000e+00,
};
-const double pylith::feassemble::QuadratureData1Din2DLinear::_basis[] = {
+const double pylith::feassemble::QuadratureData1Din2DLinear::_quadPts[] = {
+ 2.50000000e-01, -1.00000000e-01,
+};
+
+const double pylith::feassemble::QuadratureData1Din2DLinear::_basisVert[] = {
+ 1.00000000e+00,
+ 0.00000000e+00,
+ 0.00000000e+00,
+ 1.00000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData1Din2DLinear::_basisDerivVert[] = {
+ -5.00000000e-01,
5.00000000e-01,
+ -5.00000000e-01,
5.00000000e-01,
};
-const double pylith::feassemble::QuadratureData1Din2DLinear::_basisDeriv[] = {
- -5.00000000e-01,
+const double pylith::feassemble::QuadratureData1Din2DLinear::_jacobianVert[] = {
+ 4.50000000e-01, 4.00000000e-01,
+ 4.50000000e-01, 4.00000000e-01,
+};
+
+const double pylith::feassemble::QuadratureData1Din2DLinear::_jacobianDetVert[] = {
+ 6.02079729e-01, 6.02079729e-01,
+};
+
+const double pylith::feassemble::QuadratureData1Din2DLinear::_basisQuad[] = {
5.00000000e-01,
+ 5.00000000e-01,
};
-const double pylith::feassemble::QuadratureData1Din2DLinear::_quadPts[] = {
- 2.50000000e-01, -1.00000000e-01,
+const double pylith::feassemble::QuadratureData1Din2DLinear::_basisDerivQuad[] = {
+ -5.00000000e-01,
+ 5.00000000e-01,
};
-const double pylith::feassemble::QuadratureData1Din2DLinear::_jacobian[] = {
+const double pylith::feassemble::QuadratureData1Din2DLinear::_jacobianQuad[] = {
4.50000000e-01, 4.00000000e-01,
};
-const double pylith::feassemble::QuadratureData1Din2DLinear::_jacobianDet[] = {
+const double pylith::feassemble::QuadratureData1Din2DLinear::_jacobianDetQuad[] = {
6.02079729e-01,
};
-const double pylith::feassemble::QuadratureData1Din2DLinear::_jacobianInv[] = {
+const double pylith::feassemble::QuadratureData1Din2DLinear::_jacobianInvQuad[] = {
2.22222222e+00,
2.50000000e+00,
};
@@ -83,12 +106,16 @@
cells = const_cast<int*>(_cells);
quadPtsRef = const_cast<double*>(_quadPtsRef);
quadWts = const_cast<double*>(_quadWts);
- basis = const_cast<double*>(_basis);
- basisDeriv = const_cast<double*>(_basisDeriv);
quadPts = const_cast<double*>(_quadPts);
- jacobian = const_cast<double*>(_jacobian);
- jacobianDet = const_cast<double*>(_jacobianDet);
- jacobianInv = const_cast<double*>(_jacobianInv);
+ basisVert = const_cast<double*>(_basisVert);
+ basisDerivVert = const_cast<double*>(_basisDerivVert);
+ jacobianVert = const_cast<double*>(_jacobianVert);
+ jacobianDetVert = const_cast<double*>(_jacobianDetVert);
+ basisQuad = const_cast<double*>(_basisQuad);
+ basisDerivQuad = const_cast<double*>(_basisDerivQuad);
+ jacobianQuad = const_cast<double*>(_jacobianQuad);
+ jacobianDetQuad = const_cast<double*>(_jacobianDetQuad);
+ jacobianInvQuad = const_cast<double*>(_jacobianInvQuad);
} // constructor
pylith::feassemble::QuadratureData1Din2DLinear::~QuadratureData1Din2DLinear(void)
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DLinear.hh 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DLinear.hh 2007-04-27 20:27:03 UTC (rev 6715)
@@ -57,18 +57,26 @@
static const double _quadWts[];
- static const double _basis[];
+ static const double _quadPts[];
- static const double _basisDeriv[];
+ static const double _basisVert[];
- static const double _quadPts[];
+ static const double _basisDerivVert[];
- static const double _jacobian[];
+ static const double _jacobianVert[];
- static const double _jacobianDet[];
+ static const double _jacobianDetVert[];
- static const double _jacobianInv[];
+ static const double _basisQuad[];
+ static const double _basisDerivQuad[];
+
+ static const double _jacobianQuad[];
+
+ static const double _jacobianDetQuad[];
+
+ static const double _jacobianInvQuad[];
+
};
#endif // pylith_feassemble_quadraturedata1din2dlinear_hh
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DQuadratic.cc 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DQuadratic.cc 2007-04-27 20:27:03 UTC (rev 6715)
@@ -46,7 +46,46 @@
1.00000000e+00, 1.00000000e+00,
};
-const double pylith::feassemble::QuadratureData1Din2DQuadratic::_basis[] = {
+const double pylith::feassemble::QuadratureData1Din2DQuadratic::_quadPts[] = {
+ 2.35257122e-02, -3.97606774e-01,
+ 5.43140954e-01, 6.42734410e-02,
+};
+
+const double pylith::feassemble::QuadratureData1Din2DQuadratic::_basisVert[] = {
+ 1.00000000e+00,
+ 0.00000000e+00,
+ -0.00000000e+00,
+ -0.00000000e+00,
+ 1.00000000e+00,
+ 0.00000000e+00,
+ -0.00000000e+00,
+ 0.00000000e+00,
+ 1.00000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData1Din2DQuadratic::_basisDerivVert[] = {
+ -1.50000000e+00,
+ 2.00000000e+00,
+ -5.00000000e-01,
+ -5.00000000e-01,
+ -0.00000000e+00,
+ 5.00000000e-01,
+ 5.00000000e-01,
+ -2.00000000e+00,
+ 1.50000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData1Din2DQuadratic::_jacobianVert[] = {
+ 5.50000000e-01, 2.00000000e-01,
+ 4.50000000e-01, 4.00000000e-01,
+ 3.50000000e-01, 6.00000000e-01,
+};
+
+const double pylith::feassemble::QuadratureData1Din2DQuadratic::_jacobianDetVert[] = {
+ 5.85234996e-01, 6.02079729e-01, 6.94622199e-01,
+};
+
+const double pylith::feassemble::QuadratureData1Din2DQuadratic::_basisQuad[] = {
4.55341801e-01,
6.66666667e-01,
-1.22008468e-01,
@@ -55,7 +94,7 @@
4.55341801e-01,
};
-const double pylith::feassemble::QuadratureData1Din2DQuadratic::_basisDeriv[] = {
+const double pylith::feassemble::QuadratureData1Din2DQuadratic::_basisDerivQuad[] = {
-1.07735027e+00,
1.15470054e+00,
-7.73502692e-02,
@@ -64,21 +103,16 @@
1.07735027e+00,
};
-const double pylith::feassemble::QuadratureData1Din2DQuadratic::_quadPts[] = {
- 2.35257122e-02, -3.97606774e-01,
- 5.43140954e-01, 6.42734410e-02,
-};
-
-const double pylith::feassemble::QuadratureData1Din2DQuadratic::_jacobian[] = {
+const double pylith::feassemble::QuadratureData1Din2DQuadratic::_jacobianQuad[] = {
5.07735027e-01, 2.84529946e-01,
3.92264973e-01, 5.15470054e-01,
};
-const double pylith::feassemble::QuadratureData1Din2DQuadratic::_jacobianDet[] = {
+const double pylith::feassemble::QuadratureData1Din2DQuadratic::_jacobianDetQuad[] = {
5.82024181e-01, 6.47750867e-01,
};
-const double pylith::feassemble::QuadratureData1Din2DQuadratic::_jacobianInv[] = {
+const double pylith::feassemble::QuadratureData1Din2DQuadratic::_jacobianInvQuad[] = {
1.96953125e+00,
3.51456855e+00,
2.54929721e+00,
@@ -97,12 +131,16 @@
cells = const_cast<int*>(_cells);
quadPtsRef = const_cast<double*>(_quadPtsRef);
quadWts = const_cast<double*>(_quadWts);
- basis = const_cast<double*>(_basis);
- basisDeriv = const_cast<double*>(_basisDeriv);
quadPts = const_cast<double*>(_quadPts);
- jacobian = const_cast<double*>(_jacobian);
- jacobianDet = const_cast<double*>(_jacobianDet);
- jacobianInv = const_cast<double*>(_jacobianInv);
+ basisVert = const_cast<double*>(_basisVert);
+ basisDerivVert = const_cast<double*>(_basisDerivVert);
+ jacobianVert = const_cast<double*>(_jacobianVert);
+ jacobianDetVert = const_cast<double*>(_jacobianDetVert);
+ basisQuad = const_cast<double*>(_basisQuad);
+ basisDerivQuad = const_cast<double*>(_basisDerivQuad);
+ jacobianQuad = const_cast<double*>(_jacobianQuad);
+ jacobianDetQuad = const_cast<double*>(_jacobianDetQuad);
+ jacobianInvQuad = const_cast<double*>(_jacobianInvQuad);
} // constructor
pylith::feassemble::QuadratureData1Din2DQuadratic::~QuadratureData1Din2DQuadratic(void)
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DQuadratic.hh 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din2DQuadratic.hh 2007-04-27 20:27:03 UTC (rev 6715)
@@ -57,18 +57,26 @@
static const double _quadWts[];
- static const double _basis[];
+ static const double _quadPts[];
- static const double _basisDeriv[];
+ static const double _basisVert[];
- static const double _quadPts[];
+ static const double _basisDerivVert[];
- static const double _jacobian[];
+ static const double _jacobianVert[];
- static const double _jacobianDet[];
+ static const double _jacobianDetVert[];
- static const double _jacobianInv[];
+ static const double _basisQuad[];
+ static const double _basisDerivQuad[];
+
+ static const double _jacobianQuad[];
+
+ static const double _jacobianDetQuad[];
+
+ static const double _jacobianInvQuad[];
+
};
#endif // pylith_feassemble_quadraturedata1din2dquadratic_hh
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DLinear.cc 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DLinear.cc 2007-04-27 20:27:03 UTC (rev 6715)
@@ -44,29 +44,52 @@
2.00000000e+00,
};
-const double pylith::feassemble::QuadratureData1Din3DLinear::_basis[] = {
+const double pylith::feassemble::QuadratureData1Din3DLinear::_quadPts[] = {
+ 2.50000000e-01, 2.50000000e-01, 5.00000000e-01,
+};
+
+const double pylith::feassemble::QuadratureData1Din3DLinear::_basisVert[] = {
+ 1.00000000e+00,
+ 0.00000000e+00,
+ 0.00000000e+00,
+ 1.00000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData1Din3DLinear::_basisDerivVert[] = {
+ -5.00000000e-01,
5.00000000e-01,
+ -5.00000000e-01,
5.00000000e-01,
};
-const double pylith::feassemble::QuadratureData1Din3DLinear::_basisDeriv[] = {
- -5.00000000e-01,
+const double pylith::feassemble::QuadratureData1Din3DLinear::_jacobianVert[] = {
+ -7.50000000e-01, 1.75000000e+00, 2.50000000e+00,
+ -7.50000000e-01, 1.75000000e+00, 2.50000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData1Din3DLinear::_jacobianDetVert[] = {
+ 3.14245127e+00, 3.14245127e+00,
+};
+
+const double pylith::feassemble::QuadratureData1Din3DLinear::_basisQuad[] = {
5.00000000e-01,
+ 5.00000000e-01,
};
-const double pylith::feassemble::QuadratureData1Din3DLinear::_quadPts[] = {
- 2.50000000e-01, 2.50000000e-01, 5.00000000e-01,
+const double pylith::feassemble::QuadratureData1Din3DLinear::_basisDerivQuad[] = {
+ -5.00000000e-01,
+ 5.00000000e-01,
};
-const double pylith::feassemble::QuadratureData1Din3DLinear::_jacobian[] = {
+const double pylith::feassemble::QuadratureData1Din3DLinear::_jacobianQuad[] = {
-7.50000000e-01, 1.75000000e+00, 2.50000000e+00,
};
-const double pylith::feassemble::QuadratureData1Din3DLinear::_jacobianDet[] = {
+const double pylith::feassemble::QuadratureData1Din3DLinear::_jacobianDetQuad[] = {
3.14245127e+00,
};
-const double pylith::feassemble::QuadratureData1Din3DLinear::_jacobianInv[] = {
+const double pylith::feassemble::QuadratureData1Din3DLinear::_jacobianInvQuad[] = {
-1.33333333e+00,
5.71428571e-01,
4.00000000e-01,
@@ -84,12 +107,16 @@
cells = const_cast<int*>(_cells);
quadPtsRef = const_cast<double*>(_quadPtsRef);
quadWts = const_cast<double*>(_quadWts);
- basis = const_cast<double*>(_basis);
- basisDeriv = const_cast<double*>(_basisDeriv);
quadPts = const_cast<double*>(_quadPts);
- jacobian = const_cast<double*>(_jacobian);
- jacobianDet = const_cast<double*>(_jacobianDet);
- jacobianInv = const_cast<double*>(_jacobianInv);
+ basisVert = const_cast<double*>(_basisVert);
+ basisDerivVert = const_cast<double*>(_basisDerivVert);
+ jacobianVert = const_cast<double*>(_jacobianVert);
+ jacobianDetVert = const_cast<double*>(_jacobianDetVert);
+ basisQuad = const_cast<double*>(_basisQuad);
+ basisDerivQuad = const_cast<double*>(_basisDerivQuad);
+ jacobianQuad = const_cast<double*>(_jacobianQuad);
+ jacobianDetQuad = const_cast<double*>(_jacobianDetQuad);
+ jacobianInvQuad = const_cast<double*>(_jacobianInvQuad);
} // constructor
pylith::feassemble::QuadratureData1Din3DLinear::~QuadratureData1Din3DLinear(void)
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DLinear.hh 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DLinear.hh 2007-04-27 20:27:03 UTC (rev 6715)
@@ -57,18 +57,26 @@
static const double _quadWts[];
- static const double _basis[];
+ static const double _quadPts[];
- static const double _basisDeriv[];
+ static const double _basisVert[];
- static const double _quadPts[];
+ static const double _basisDerivVert[];
- static const double _jacobian[];
+ static const double _jacobianVert[];
- static const double _jacobianDet[];
+ static const double _jacobianDetVert[];
- static const double _jacobianInv[];
+ static const double _basisQuad[];
+ static const double _basisDerivQuad[];
+
+ static const double _jacobianQuad[];
+
+ static const double _jacobianDetQuad[];
+
+ static const double _jacobianInvQuad[];
+
};
#endif // pylith_feassemble_quadraturedata1din3dlinear_hh
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DQuadratic.cc 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DQuadratic.cc 2007-04-27 20:27:03 UTC (rev 6715)
@@ -46,7 +46,46 @@
1.00000000e+00, 1.00000000e+00,
};
-const double pylith::feassemble::QuadratureData1Din3DQuadratic::_basis[] = {
+const double pylith::feassemble::QuadratureData1Din3DQuadratic::_quadPts[] = {
+ 7.16346035e-01, -7.27029638e-01, -7.43375673e-01,
+ -1.49679369e-01, 1.29369630e+00, 2.14337567e+00,
+};
+
+const double pylith::feassemble::QuadratureData1Din3DQuadratic::_basisVert[] = {
+ 1.00000000e+00,
+ 0.00000000e+00,
+ -0.00000000e+00,
+ -0.00000000e+00,
+ 1.00000000e+00,
+ 0.00000000e+00,
+ -0.00000000e+00,
+ 0.00000000e+00,
+ 1.00000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData1Din3DQuadratic::_basisDerivVert[] = {
+ -1.50000000e+00,
+ 2.00000000e+00,
+ -5.00000000e-01,
+ -5.00000000e-01,
+ -0.00000000e+00,
+ 5.00000000e-01,
+ 5.00000000e-01,
+ -2.00000000e+00,
+ 1.50000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData1Din3DQuadratic::_jacobianVert[] = {
+ -6.50000000e-01, 1.85000000e+00, 3.10000000e+00,
+ -7.50000000e-01, 1.75000000e+00, 2.50000000e+00,
+ -8.50000000e-01, 1.65000000e+00, 1.90000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData1Din3DQuadratic::_jacobianDetVert[] = {
+ 3.66810578e+00, 3.14245127e+00, 2.65612500e+00,
+};
+
+const double pylith::feassemble::QuadratureData1Din3DQuadratic::_basisQuad[] = {
4.55341801e-01,
6.66666667e-01,
-1.22008468e-01,
@@ -55,7 +94,7 @@
4.55341801e-01,
};
-const double pylith::feassemble::QuadratureData1Din3DQuadratic::_basisDeriv[] = {
+const double pylith::feassemble::QuadratureData1Din3DQuadratic::_basisDerivQuad[] = {
-1.07735027e+00,
1.15470054e+00,
-7.73502692e-02,
@@ -64,21 +103,16 @@
1.07735027e+00,
};
-const double pylith::feassemble::QuadratureData1Din3DQuadratic::_quadPts[] = {
- 7.16346035e-01, -7.27029638e-01, -7.43375673e-01,
- -1.49679369e-01, 1.29369630e+00, 2.14337567e+00,
-};
-
-const double pylith::feassemble::QuadratureData1Din3DQuadratic::_jacobian[] = {
+const double pylith::feassemble::QuadratureData1Din3DQuadratic::_jacobianQuad[] = {
-6.92264973e-01, 1.80773503e+00, 2.84641016e+00,
-8.07735027e-01, 1.69226497e+00, 2.15358984e+00,
};
-const double pylith::feassemble::QuadratureData1Din3DQuadratic::_jacobianDet[] = {
+const double pylith::feassemble::QuadratureData1Din3DQuadratic::_jacobianDetQuad[] = {
3.44226488e+00, 2.85554650e+00,
};
-const double pylith::feassemble::QuadratureData1Din3DQuadratic::_jacobianInv[] = {
+const double pylith::feassemble::QuadratureData1Din3DQuadratic::_jacobianInvQuad[] = {
-1.44453358e+00,
5.53178417e-01,
3.51319713e-01,
@@ -99,12 +133,16 @@
cells = const_cast<int*>(_cells);
quadPtsRef = const_cast<double*>(_quadPtsRef);
quadWts = const_cast<double*>(_quadWts);
- basis = const_cast<double*>(_basis);
- basisDeriv = const_cast<double*>(_basisDeriv);
quadPts = const_cast<double*>(_quadPts);
- jacobian = const_cast<double*>(_jacobian);
- jacobianDet = const_cast<double*>(_jacobianDet);
- jacobianInv = const_cast<double*>(_jacobianInv);
+ basisVert = const_cast<double*>(_basisVert);
+ basisDerivVert = const_cast<double*>(_basisDerivVert);
+ jacobianVert = const_cast<double*>(_jacobianVert);
+ jacobianDetVert = const_cast<double*>(_jacobianDetVert);
+ basisQuad = const_cast<double*>(_basisQuad);
+ basisDerivQuad = const_cast<double*>(_basisDerivQuad);
+ jacobianQuad = const_cast<double*>(_jacobianQuad);
+ jacobianDetQuad = const_cast<double*>(_jacobianDetQuad);
+ jacobianInvQuad = const_cast<double*>(_jacobianInvQuad);
} // constructor
pylith::feassemble::QuadratureData1Din3DQuadratic::~QuadratureData1Din3DQuadratic(void)
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DQuadratic.hh 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData1Din3DQuadratic.hh 2007-04-27 20:27:03 UTC (rev 6715)
@@ -57,18 +57,26 @@
static const double _quadWts[];
- static const double _basis[];
+ static const double _quadPts[];
- static const double _basisDeriv[];
+ static const double _basisVert[];
- static const double _quadPts[];
+ static const double _basisDerivVert[];
- static const double _jacobian[];
+ static const double _jacobianVert[];
- static const double _jacobianDet[];
+ static const double _jacobianDetVert[];
- static const double _jacobianInv[];
+ static const double _basisQuad[];
+ static const double _basisDerivQuad[];
+
+ static const double _jacobianQuad[];
+
+ static const double _jacobianDetQuad[];
+
+ static const double _jacobianInvQuad[];
+
};
#endif // pylith_feassemble_quadraturedata1din3dquadratic_hh
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DLinear.cc 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DLinear.cc 2007-04-27 20:27:03 UTC (rev 6715)
@@ -45,30 +45,62 @@
5.00000000e-01,
};
-const double pylith::feassemble::QuadratureData2DLinear::_basis[] = {
+const double pylith::feassemble::QuadratureData2DLinear::_quadPts[] = {
+ -1.66666667e-01, -3.33333333e-02,
+};
+
+const double pylith::feassemble::QuadratureData2DLinear::_basisVert[] = {
+ 1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00,
+ 1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00,
+ 1.00000000e+00,};
+
+const double pylith::feassemble::QuadratureData2DLinear::_basisDerivVert[] = {
+ -1.00000000e+00, -1.00000000e+00,
+ 1.00000000e+00, 0.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,
+ -1.00000000e+00, -1.00000000e+00,
+ 1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 1.00000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData2DLinear::_jacobianVert[] = {
+ 1.00000000e-01, 9.00000000e-01,
+ -1.20000000e+00, 2.00000000e-01,
+ 1.00000000e-01, 9.00000000e-01,
+ -1.20000000e+00, 2.00000000e-01,
+ 1.00000000e-01, 9.00000000e-01,
+ -1.20000000e+00, 2.00000000e-01,
+};
+
+const double pylith::feassemble::QuadratureData2DLinear::_jacobianDetVert[] = {
+ 1.10000000e+00, 1.10000000e+00, 1.10000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData2DLinear::_basisQuad[] = {
3.33333333e-01, 3.33333333e-01,
3.33333333e-01,};
-const double pylith::feassemble::QuadratureData2DLinear::_basisDeriv[] = {
+const double pylith::feassemble::QuadratureData2DLinear::_basisDerivQuad[] = {
-1.00000000e+00, -1.00000000e+00,
1.00000000e+00, 0.00000000e+00,
0.00000000e+00, 1.00000000e+00,
};
-const double pylith::feassemble::QuadratureData2DLinear::_quadPts[] = {
- -1.66666667e-01, -3.33333333e-02,
-};
-
-const double pylith::feassemble::QuadratureData2DLinear::_jacobian[] = {
+const double pylith::feassemble::QuadratureData2DLinear::_jacobianQuad[] = {
1.00000000e-01, 9.00000000e-01,
-1.20000000e+00, 2.00000000e-01,
};
-const double pylith::feassemble::QuadratureData2DLinear::_jacobianDet[] = {
+const double pylith::feassemble::QuadratureData2DLinear::_jacobianDetQuad[] = {
1.10000000e+00,
};
-const double pylith::feassemble::QuadratureData2DLinear::_jacobianInv[] = {
+const double pylith::feassemble::QuadratureData2DLinear::_jacobianInvQuad[] = {
1.81818182e-01, -8.18181818e-01,
1.09090909e+00, 9.09090909e-02,
};
@@ -85,12 +117,16 @@
cells = const_cast<int*>(_cells);
quadPtsRef = const_cast<double*>(_quadPtsRef);
quadWts = const_cast<double*>(_quadWts);
- basis = const_cast<double*>(_basis);
- basisDeriv = const_cast<double*>(_basisDeriv);
quadPts = const_cast<double*>(_quadPts);
- jacobian = const_cast<double*>(_jacobian);
- jacobianDet = const_cast<double*>(_jacobianDet);
- jacobianInv = const_cast<double*>(_jacobianInv);
+ basisVert = const_cast<double*>(_basisVert);
+ basisDerivVert = const_cast<double*>(_basisDerivVert);
+ jacobianVert = const_cast<double*>(_jacobianVert);
+ jacobianDetVert = const_cast<double*>(_jacobianDetVert);
+ basisQuad = const_cast<double*>(_basisQuad);
+ basisDerivQuad = const_cast<double*>(_basisDerivQuad);
+ jacobianQuad = const_cast<double*>(_jacobianQuad);
+ jacobianDetQuad = const_cast<double*>(_jacobianDetQuad);
+ jacobianInvQuad = const_cast<double*>(_jacobianInvQuad);
} // constructor
pylith::feassemble::QuadratureData2DLinear::~QuadratureData2DLinear(void)
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DLinear.hh 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DLinear.hh 2007-04-27 20:27:03 UTC (rev 6715)
@@ -57,18 +57,26 @@
static const double _quadWts[];
- static const double _basis[];
+ static const double _quadPts[];
- static const double _basisDeriv[];
+ static const double _basisVert[];
- static const double _quadPts[];
+ static const double _basisDerivVert[];
- static const double _jacobian[];
+ static const double _jacobianVert[];
- static const double _jacobianDet[];
+ static const double _jacobianDetVert[];
- static const double _jacobianInv[];
+ static const double _basisQuad[];
+ static const double _basisDerivQuad[];
+
+ static const double _jacobianQuad[];
+
+ static const double _jacobianDetQuad[];
+
+ static const double _jacobianInvQuad[];
+
};
#endif // pylith_feassemble_quadraturedata2dlinear_hh
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DQuadratic.cc 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DQuadratic.cc 2007-04-27 20:27:03 UTC (rev 6715)
@@ -50,7 +50,92 @@
1.66666667e-01, 1.66666667e-01, 1.66666667e-01,
};
-const double pylith::feassemble::QuadratureData2DQuadratic::_basis[] = {
+const double pylith::feassemble::QuadratureData2DQuadratic::_quadPts[] = {
+ 4.72222222e-01, -3.88888889e-02,
+ -7.77777778e-01, 1.77777778e-01,
+ -6.94444444e-01, -6.38888889e-01,
+};
+
+const double pylith::feassemble::QuadratureData2DQuadratic::_basisVert[] = {
+ 1.00000000e+00, -0.00000000e+00,
+ -0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00,
+ -0.00000000e+00, 1.00000000e+00,
+ -0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00,
+ -0.00000000e+00, -0.00000000e+00,
+ 1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00,
+ -0.00000000e+00, 1.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 1.00000000e+00,
+ -0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00,
+ 1.00000000e+00, 0.00000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData2DQuadratic::_basisDerivVert[] = {
+ -3.00000000e+00, -3.00000000e+00,
+ -1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -1.00000000e+00,
+ 4.00000000e+00, -0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00,
+ -0.00000000e+00, 4.00000000e+00,
+ 1.00000000e+00, 1.00000000e+00,
+ 3.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -1.00000000e+00,
+ -4.00000000e+00, -4.00000000e+00,
+ 0.00000000e+00, 4.00000000e+00,
+ -0.00000000e+00, 0.00000000e+00,
+ 1.00000000e+00, 1.00000000e+00,
+ -1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 3.00000000e+00,
+ 0.00000000e+00, -0.00000000e+00,
+ 4.00000000e+00, 0.00000000e+00,
+ -4.00000000e+00, -4.00000000e+00,
+ -1.00000000e+00, -1.00000000e+00,
+ 1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -1.00000000e+00,
+ 0.00000000e+00, -2.00000000e+00,
+ 0.00000000e+00, 2.00000000e+00,
+ -0.00000000e+00, 2.00000000e+00,
+ -1.00000000e+00, -1.00000000e+00,
+ -1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 1.00000000e+00,
+ 2.00000000e+00, -0.00000000e+00,
+ 2.00000000e+00, 0.00000000e+00,
+ -2.00000000e+00, 0.00000000e+00,
+ 1.00000000e+00, 1.00000000e+00,
+ 1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 1.00000000e+00,
+ -2.00000000e+00, -2.00000000e+00,
+ 2.00000000e+00, 2.00000000e+00,
+ -2.00000000e+00, -2.00000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData2DQuadratic::_jacobianVert[] = {
+ 2.00000000e+00, 4.00000000e-01,
+ -5.00000000e-01, 1.50000000e+00,
+ 2.00000000e+00, 2.00000000e+00,
+ 1.50000000e+00, 2.30000000e+00,
+ 4.00000000e+00, 1.20000000e+00,
+ -5.00000000e-01, 1.50000000e+00,
+ 2.00000000e+00, 1.20000000e+00,
+ 5.00000000e-01, 1.90000000e+00,
+ 3.00000000e+00, 8.00000000e-01,
+ -5.00000000e-01, 1.50000000e+00,
+ 3.00000000e+00, 1.60000000e+00,
+ 5.00000000e-01, 1.90000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData2DQuadratic::_jacobianDetVert[] = {
+ 3.20000000e+00, 1.60000000e+00, 6.60000000e+00, 3.20000000e+00, 4.90000000e+00, 4.90000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData2DQuadratic::_basisQuad[] = {
-1.11111111e-01, 2.22222222e-01,
-1.11111111e-01, 4.44444444e-01,
4.44444444e-01, 1.11111111e-01,
@@ -62,7 +147,7 @@
1.11111111e-01, 4.44444444e-01,
};
-const double pylith::feassemble::QuadratureData2DQuadratic::_basisDeriv[] = {
+const double pylith::feassemble::QuadratureData2DQuadratic::_basisDerivQuad[] = {
3.33333333e-01, 3.33333333e-01,
1.66666667e+00, 0.00000000e+00,
0.00000000e+00, -3.33333333e-01,
@@ -83,13 +168,7 @@
-6.66666667e-01, 2.00000000e+00,
};
-const double pylith::feassemble::QuadratureData2DQuadratic::_quadPts[] = {
- 4.72222222e-01, -3.88888889e-02,
- -7.77777778e-01, 1.77777778e-01,
- -6.94444444e-01, -6.38888889e-01,
-};
-
-const double pylith::feassemble::QuadratureData2DQuadratic::_jacobian[] = {
+const double pylith::feassemble::QuadratureData2DQuadratic::_jacobianQuad[] = {
2.33333333e+00, 1.60000000e+00,
8.33333333e-01, 2.03333333e+00,
3.33333333e+00, 1.20000000e+00,
@@ -98,11 +177,11 @@
-1.66666667e-01, 1.63333333e+00,
};
-const double pylith::feassemble::QuadratureData2DQuadratic::_jacobianDet[] = {
+const double pylith::feassemble::QuadratureData2DQuadratic::_jacobianDetQuad[] = {
3.41111111e+00, 5.64444444e+00, 3.94444444e+00,
};
-const double pylith::feassemble::QuadratureData2DQuadratic::_jacobianInv[] = {
+const double pylith::feassemble::QuadratureData2DQuadratic::_jacobianInvQuad[] = {
5.96091205e-01, -4.69055375e-01,
-2.44299674e-01, 6.84039088e-01,
2.89370079e-01, -2.12598425e-01,
@@ -123,12 +202,16 @@
cells = const_cast<int*>(_cells);
quadPtsRef = const_cast<double*>(_quadPtsRef);
quadWts = const_cast<double*>(_quadWts);
- basis = const_cast<double*>(_basis);
- basisDeriv = const_cast<double*>(_basisDeriv);
quadPts = const_cast<double*>(_quadPts);
- jacobian = const_cast<double*>(_jacobian);
- jacobianDet = const_cast<double*>(_jacobianDet);
- jacobianInv = const_cast<double*>(_jacobianInv);
+ basisVert = const_cast<double*>(_basisVert);
+ basisDerivVert = const_cast<double*>(_basisDerivVert);
+ jacobianVert = const_cast<double*>(_jacobianVert);
+ jacobianDetVert = const_cast<double*>(_jacobianDetVert);
+ basisQuad = const_cast<double*>(_basisQuad);
+ basisDerivQuad = const_cast<double*>(_basisDerivQuad);
+ jacobianQuad = const_cast<double*>(_jacobianQuad);
+ jacobianDetQuad = const_cast<double*>(_jacobianDetQuad);
+ jacobianInvQuad = const_cast<double*>(_jacobianInvQuad);
} // constructor
pylith::feassemble::QuadratureData2DQuadratic::~QuadratureData2DQuadratic(void)
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DQuadratic.hh 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2DQuadratic.hh 2007-04-27 20:27:03 UTC (rev 6715)
@@ -57,18 +57,26 @@
static const double _quadWts[];
- static const double _basis[];
+ static const double _quadPts[];
- static const double _basisDeriv[];
+ static const double _basisVert[];
- static const double _quadPts[];
+ static const double _basisDerivVert[];
- static const double _jacobian[];
+ static const double _jacobianVert[];
- static const double _jacobianDet[];
+ static const double _jacobianDetVert[];
- static const double _jacobianInv[];
+ static const double _basisQuad[];
+ static const double _basisDerivQuad[];
+
+ static const double _jacobianQuad[];
+
+ static const double _jacobianDetQuad[];
+
+ static const double _jacobianInvQuad[];
+
};
#endif // pylith_feassemble_quadraturedata2dquadratic_hh
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXY.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXY.cc 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXY.cc 2007-04-27 20:27:03 UTC (rev 6715)
@@ -45,30 +45,62 @@
5.00000000e-01,
};
-const double pylith::feassemble::QuadratureData2Din3DLinearXY::_basis[] = {
+const double pylith::feassemble::QuadratureData2Din3DLinearXY::_quadPts[] = {
+ 3.33333333e-01, 3.33333333e-01, 0.00000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearXY::_basisVert[] = {
+ 1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00,
+ 1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00,
+ 1.00000000e+00,};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearXY::_basisDerivVert[] = {
+ -1.00000000e+00, -1.00000000e+00,
+ 1.00000000e+00, 0.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,
+ -1.00000000e+00, -1.00000000e+00,
+ 1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 1.00000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearXY::_jacobianVert[] = {
+ 1.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 1.00000000e+00, 0.00000000e+00,
+ 1.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 1.00000000e+00, 0.00000000e+00,
+ 1.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 1.00000000e+00, 0.00000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearXY::_jacobianDetVert[] = {
+ 1.00000000e+00, 1.00000000e+00, 1.00000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearXY::_basisQuad[] = {
3.33333333e-01, 3.33333333e-01,
3.33333333e-01,};
-const double pylith::feassemble::QuadratureData2Din3DLinearXY::_basisDeriv[] = {
+const double pylith::feassemble::QuadratureData2Din3DLinearXY::_basisDerivQuad[] = {
-1.00000000e+00, -1.00000000e+00,
1.00000000e+00, 0.00000000e+00,
0.00000000e+00, 1.00000000e+00,
};
-const double pylith::feassemble::QuadratureData2Din3DLinearXY::_quadPts[] = {
- 3.33333333e-01, 3.33333333e-01, 0.00000000e+00,
-};
-
-const double pylith::feassemble::QuadratureData2Din3DLinearXY::_jacobian[] = {
+const double pylith::feassemble::QuadratureData2Din3DLinearXY::_jacobianQuad[] = {
1.00000000e+00, 0.00000000e+00, 0.00000000e+00,
0.00000000e+00, 1.00000000e+00, 0.00000000e+00,
};
-const double pylith::feassemble::QuadratureData2Din3DLinearXY::_jacobianDet[] = {
+const double pylith::feassemble::QuadratureData2Din3DLinearXY::_jacobianDetQuad[] = {
1.00000000e+00,
};
-const double pylith::feassemble::QuadratureData2Din3DLinearXY::_jacobianInv[] = {
+const double pylith::feassemble::QuadratureData2Din3DLinearXY::_jacobianInvQuad[] = {
1.00000000e+00, 0.00000000e+00,
0.00000000e+00, 1.00000000e+00,
0.00000000e+00, 0.00000000e+00,
@@ -86,12 +118,16 @@
cells = const_cast<int*>(_cells);
quadPtsRef = const_cast<double*>(_quadPtsRef);
quadWts = const_cast<double*>(_quadWts);
- basis = const_cast<double*>(_basis);
- basisDeriv = const_cast<double*>(_basisDeriv);
quadPts = const_cast<double*>(_quadPts);
- jacobian = const_cast<double*>(_jacobian);
- jacobianDet = const_cast<double*>(_jacobianDet);
- jacobianInv = const_cast<double*>(_jacobianInv);
+ basisVert = const_cast<double*>(_basisVert);
+ basisDerivVert = const_cast<double*>(_basisDerivVert);
+ jacobianVert = const_cast<double*>(_jacobianVert);
+ jacobianDetVert = const_cast<double*>(_jacobianDetVert);
+ basisQuad = const_cast<double*>(_basisQuad);
+ basisDerivQuad = const_cast<double*>(_basisDerivQuad);
+ jacobianQuad = const_cast<double*>(_jacobianQuad);
+ jacobianDetQuad = const_cast<double*>(_jacobianDetQuad);
+ jacobianInvQuad = const_cast<double*>(_jacobianInvQuad);
} // constructor
pylith::feassemble::QuadratureData2Din3DLinearXY::~QuadratureData2Din3DLinearXY(void)
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXY.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXY.hh 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXY.hh 2007-04-27 20:27:03 UTC (rev 6715)
@@ -57,18 +57,26 @@
static const double _quadWts[];
- static const double _basis[];
+ static const double _quadPts[];
- static const double _basisDeriv[];
+ static const double _basisVert[];
- static const double _quadPts[];
+ static const double _basisDerivVert[];
- static const double _jacobian[];
+ static const double _jacobianVert[];
- static const double _jacobianDet[];
+ static const double _jacobianDetVert[];
- static const double _jacobianInv[];
+ static const double _basisQuad[];
+ static const double _basisDerivQuad[];
+
+ static const double _jacobianQuad[];
+
+ static const double _jacobianDetQuad[];
+
+ static const double _jacobianInvQuad[];
+
};
#endif // pylith_feassemble_quadraturedata2din3dlinearxy_hh
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXYZ.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXYZ.cc 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXYZ.cc 2007-04-27 20:27:03 UTC (rev 6715)
@@ -45,30 +45,62 @@
5.00000000e-01,
};
-const double pylith::feassemble::QuadratureData2Din3DLinearXYZ::_basis[] = {
+const double pylith::feassemble::QuadratureData2Din3DLinearXYZ::_quadPts[] = {
+ 8.33333333e-01, 1.66666667e-01, 1.16666667e+00,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearXYZ::_basisVert[] = {
+ 1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00,
+ 1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00,
+ 1.00000000e+00,};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearXYZ::_basisDerivVert[] = {
+ -1.00000000e+00, -1.00000000e+00,
+ 1.00000000e+00, 0.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,
+ -1.00000000e+00, -1.00000000e+00,
+ 1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 1.00000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearXYZ::_jacobianVert[] = {
+ 2.50000000e+00, 2.50000000e+00, 5.00000000e-01,
+ -1.50000000e+00, 4.00000000e+00, 4.50000000e+00,
+ 2.50000000e+00, 2.50000000e+00, 5.00000000e-01,
+ -1.50000000e+00, 4.00000000e+00, 4.50000000e+00,
+ 2.50000000e+00, 2.50000000e+00, 5.00000000e-01,
+ -1.50000000e+00, 4.00000000e+00, 4.50000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearXYZ::_jacobianDetVert[] = {
+ 2.04603275e+01, 2.04603275e+01, 2.04603275e+01,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearXYZ::_basisQuad[] = {
3.33333333e-01, 3.33333333e-01,
3.33333333e-01,};
-const double pylith::feassemble::QuadratureData2Din3DLinearXYZ::_basisDeriv[] = {
+const double pylith::feassemble::QuadratureData2Din3DLinearXYZ::_basisDerivQuad[] = {
-1.00000000e+00, -1.00000000e+00,
1.00000000e+00, 0.00000000e+00,
0.00000000e+00, 1.00000000e+00,
};
-const double pylith::feassemble::QuadratureData2Din3DLinearXYZ::_quadPts[] = {
- 8.33333333e-01, 1.66666667e-01, 1.16666667e+00,
-};
-
-const double pylith::feassemble::QuadratureData2Din3DLinearXYZ::_jacobian[] = {
+const double pylith::feassemble::QuadratureData2Din3DLinearXYZ::_jacobianQuad[] = {
2.50000000e+00, 2.50000000e+00, 5.00000000e-01,
-1.50000000e+00, 4.00000000e+00, 4.50000000e+00,
};
-const double pylith::feassemble::QuadratureData2Din3DLinearXYZ::_jacobianDet[] = {
+const double pylith::feassemble::QuadratureData2Din3DLinearXYZ::_jacobianDetQuad[] = {
2.04603275e+01,
};
-const double pylith::feassemble::QuadratureData2Din3DLinearXYZ::_jacobianInv[] = {
+const double pylith::feassemble::QuadratureData2Din3DLinearXYZ::_jacobianInvQuad[] = {
2.90909091e-01, -1.81818182e-01,
1.09090909e-01, 1.81818182e-01,
-4.32432432e-01, 2.70270270e-01,
@@ -86,12 +118,16 @@
cells = const_cast<int*>(_cells);
quadPtsRef = const_cast<double*>(_quadPtsRef);
quadWts = const_cast<double*>(_quadWts);
- basis = const_cast<double*>(_basis);
- basisDeriv = const_cast<double*>(_basisDeriv);
quadPts = const_cast<double*>(_quadPts);
- jacobian = const_cast<double*>(_jacobian);
- jacobianDet = const_cast<double*>(_jacobianDet);
- jacobianInv = const_cast<double*>(_jacobianInv);
+ basisVert = const_cast<double*>(_basisVert);
+ basisDerivVert = const_cast<double*>(_basisDerivVert);
+ jacobianVert = const_cast<double*>(_jacobianVert);
+ jacobianDetVert = const_cast<double*>(_jacobianDetVert);
+ basisQuad = const_cast<double*>(_basisQuad);
+ basisDerivQuad = const_cast<double*>(_basisDerivQuad);
+ jacobianQuad = const_cast<double*>(_jacobianQuad);
+ jacobianDetQuad = const_cast<double*>(_jacobianDetQuad);
+ jacobianInvQuad = const_cast<double*>(_jacobianInvQuad);
} // constructor
pylith::feassemble::QuadratureData2Din3DLinearXYZ::~QuadratureData2Din3DLinearXYZ(void)
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXYZ.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXYZ.hh 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXYZ.hh 2007-04-27 20:27:03 UTC (rev 6715)
@@ -57,18 +57,26 @@
static const double _quadWts[];
- static const double _basis[];
+ static const double _quadPts[];
- static const double _basisDeriv[];
+ static const double _basisVert[];
- static const double _quadPts[];
+ static const double _basisDerivVert[];
- static const double _jacobian[];
+ static const double _jacobianVert[];
- static const double _jacobianDet[];
+ static const double _jacobianDetVert[];
- static const double _jacobianInv[];
+ static const double _basisQuad[];
+ static const double _basisDerivQuad[];
+
+ static const double _jacobianQuad[];
+
+ static const double _jacobianDetQuad[];
+
+ static const double _jacobianInvQuad[];
+
};
#endif // pylith_feassemble_quadraturedata2din3dlinearxyz_hh
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXZ.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXZ.cc 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXZ.cc 2007-04-27 20:27:03 UTC (rev 6715)
@@ -45,30 +45,62 @@
5.00000000e-01,
};
-const double pylith::feassemble::QuadratureData2Din3DLinearXZ::_basis[] = {
+const double pylith::feassemble::QuadratureData2Din3DLinearXZ::_quadPts[] = {
+ -3.33333333e-01, 0.00000000e+00, 3.33333333e-01,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearXZ::_basisVert[] = {
+ 1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00,
+ 1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00,
+ 1.00000000e+00,};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearXZ::_basisDerivVert[] = {
+ -1.00000000e+00, -1.00000000e+00,
+ 1.00000000e+00, 0.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,
+ -1.00000000e+00, -1.00000000e+00,
+ 1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 1.00000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearXZ::_jacobianVert[] = {
+ -1.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 1.00000000e+00,
+ -1.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 1.00000000e+00,
+ -1.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 1.00000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearXZ::_jacobianDetVert[] = {
+ 1.00000000e+00, 1.00000000e+00, 1.00000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearXZ::_basisQuad[] = {
3.33333333e-01, 3.33333333e-01,
3.33333333e-01,};
-const double pylith::feassemble::QuadratureData2Din3DLinearXZ::_basisDeriv[] = {
+const double pylith::feassemble::QuadratureData2Din3DLinearXZ::_basisDerivQuad[] = {
-1.00000000e+00, -1.00000000e+00,
1.00000000e+00, 0.00000000e+00,
0.00000000e+00, 1.00000000e+00,
};
-const double pylith::feassemble::QuadratureData2Din3DLinearXZ::_quadPts[] = {
- -3.33333333e-01, 0.00000000e+00, 3.33333333e-01,
-};
-
-const double pylith::feassemble::QuadratureData2Din3DLinearXZ::_jacobian[] = {
+const double pylith::feassemble::QuadratureData2Din3DLinearXZ::_jacobianQuad[] = {
-1.00000000e+00, 0.00000000e+00, 0.00000000e+00,
0.00000000e+00, 0.00000000e+00, 1.00000000e+00,
};
-const double pylith::feassemble::QuadratureData2Din3DLinearXZ::_jacobianDet[] = {
+const double pylith::feassemble::QuadratureData2Din3DLinearXZ::_jacobianDetQuad[] = {
1.00000000e+00,
};
-const double pylith::feassemble::QuadratureData2Din3DLinearXZ::_jacobianInv[] = {
+const double pylith::feassemble::QuadratureData2Din3DLinearXZ::_jacobianInvQuad[] = {
-1.00000000e+00, -0.00000000e+00,
0.00000000e+00, 0.00000000e+00,
0.00000000e+00, 1.00000000e+00,
@@ -86,12 +118,16 @@
cells = const_cast<int*>(_cells);
quadPtsRef = const_cast<double*>(_quadPtsRef);
quadWts = const_cast<double*>(_quadWts);
- basis = const_cast<double*>(_basis);
- basisDeriv = const_cast<double*>(_basisDeriv);
quadPts = const_cast<double*>(_quadPts);
- jacobian = const_cast<double*>(_jacobian);
- jacobianDet = const_cast<double*>(_jacobianDet);
- jacobianInv = const_cast<double*>(_jacobianInv);
+ basisVert = const_cast<double*>(_basisVert);
+ basisDerivVert = const_cast<double*>(_basisDerivVert);
+ jacobianVert = const_cast<double*>(_jacobianVert);
+ jacobianDetVert = const_cast<double*>(_jacobianDetVert);
+ basisQuad = const_cast<double*>(_basisQuad);
+ basisDerivQuad = const_cast<double*>(_basisDerivQuad);
+ jacobianQuad = const_cast<double*>(_jacobianQuad);
+ jacobianDetQuad = const_cast<double*>(_jacobianDetQuad);
+ jacobianInvQuad = const_cast<double*>(_jacobianInvQuad);
} // constructor
pylith::feassemble::QuadratureData2Din3DLinearXZ::~QuadratureData2Din3DLinearXZ(void)
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXZ.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXZ.hh 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearXZ.hh 2007-04-27 20:27:03 UTC (rev 6715)
@@ -57,18 +57,26 @@
static const double _quadWts[];
- static const double _basis[];
+ static const double _quadPts[];
- static const double _basisDeriv[];
+ static const double _basisVert[];
- static const double _quadPts[];
+ static const double _basisDerivVert[];
- static const double _jacobian[];
+ static const double _jacobianVert[];
- static const double _jacobianDet[];
+ static const double _jacobianDetVert[];
- static const double _jacobianInv[];
+ static const double _basisQuad[];
+ static const double _basisDerivQuad[];
+
+ static const double _jacobianQuad[];
+
+ static const double _jacobianDetQuad[];
+
+ static const double _jacobianInvQuad[];
+
};
#endif // pylith_feassemble_quadraturedata2din3dlinearxz_hh
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearYZ.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearYZ.cc 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearYZ.cc 2007-04-27 20:27:03 UTC (rev 6715)
@@ -45,30 +45,62 @@
5.00000000e-01,
};
-const double pylith::feassemble::QuadratureData2Din3DLinearYZ::_basis[] = {
+const double pylith::feassemble::QuadratureData2Din3DLinearYZ::_quadPts[] = {
+ 0.00000000e+00, 3.33333333e-01, 3.33333333e-01,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearYZ::_basisVert[] = {
+ 1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00,
+ 1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00,
+ 1.00000000e+00,};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearYZ::_basisDerivVert[] = {
+ -1.00000000e+00, -1.00000000e+00,
+ 1.00000000e+00, 0.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,
+ -1.00000000e+00, -1.00000000e+00,
+ 1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 1.00000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearYZ::_jacobianVert[] = {
+ 0.00000000e+00, 1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 1.00000000e+00,
+ 0.00000000e+00, 1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 1.00000000e+00,
+ 0.00000000e+00, 1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 1.00000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearYZ::_jacobianDetVert[] = {
+ 1.00000000e+00, 1.00000000e+00, 1.00000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DLinearYZ::_basisQuad[] = {
3.33333333e-01, 3.33333333e-01,
3.33333333e-01,};
-const double pylith::feassemble::QuadratureData2Din3DLinearYZ::_basisDeriv[] = {
+const double pylith::feassemble::QuadratureData2Din3DLinearYZ::_basisDerivQuad[] = {
-1.00000000e+00, -1.00000000e+00,
1.00000000e+00, 0.00000000e+00,
0.00000000e+00, 1.00000000e+00,
};
-const double pylith::feassemble::QuadratureData2Din3DLinearYZ::_quadPts[] = {
- 0.00000000e+00, 3.33333333e-01, 3.33333333e-01,
-};
-
-const double pylith::feassemble::QuadratureData2Din3DLinearYZ::_jacobian[] = {
+const double pylith::feassemble::QuadratureData2Din3DLinearYZ::_jacobianQuad[] = {
0.00000000e+00, 1.00000000e+00, 0.00000000e+00,
0.00000000e+00, 0.00000000e+00, 1.00000000e+00,
};
-const double pylith::feassemble::QuadratureData2Din3DLinearYZ::_jacobianDet[] = {
+const double pylith::feassemble::QuadratureData2Din3DLinearYZ::_jacobianDetQuad[] = {
1.00000000e+00,
};
-const double pylith::feassemble::QuadratureData2Din3DLinearYZ::_jacobianInv[] = {
+const double pylith::feassemble::QuadratureData2Din3DLinearYZ::_jacobianInvQuad[] = {
0.00000000e+00, 0.00000000e+00,
1.00000000e+00, 0.00000000e+00,
0.00000000e+00, 1.00000000e+00,
@@ -86,12 +118,16 @@
cells = const_cast<int*>(_cells);
quadPtsRef = const_cast<double*>(_quadPtsRef);
quadWts = const_cast<double*>(_quadWts);
- basis = const_cast<double*>(_basis);
- basisDeriv = const_cast<double*>(_basisDeriv);
quadPts = const_cast<double*>(_quadPts);
- jacobian = const_cast<double*>(_jacobian);
- jacobianDet = const_cast<double*>(_jacobianDet);
- jacobianInv = const_cast<double*>(_jacobianInv);
+ basisVert = const_cast<double*>(_basisVert);
+ basisDerivVert = const_cast<double*>(_basisDerivVert);
+ jacobianVert = const_cast<double*>(_jacobianVert);
+ jacobianDetVert = const_cast<double*>(_jacobianDetVert);
+ basisQuad = const_cast<double*>(_basisQuad);
+ basisDerivQuad = const_cast<double*>(_basisDerivQuad);
+ jacobianQuad = const_cast<double*>(_jacobianQuad);
+ jacobianDetQuad = const_cast<double*>(_jacobianDetQuad);
+ jacobianInvQuad = const_cast<double*>(_jacobianInvQuad);
} // constructor
pylith::feassemble::QuadratureData2Din3DLinearYZ::~QuadratureData2Din3DLinearYZ(void)
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearYZ.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearYZ.hh 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DLinearYZ.hh 2007-04-27 20:27:03 UTC (rev 6715)
@@ -57,18 +57,26 @@
static const double _quadWts[];
- static const double _basis[];
+ static const double _quadPts[];
- static const double _basisDeriv[];
+ static const double _basisVert[];
- static const double _quadPts[];
+ static const double _basisDerivVert[];
- static const double _jacobian[];
+ static const double _jacobianVert[];
- static const double _jacobianDet[];
+ static const double _jacobianDetVert[];
- static const double _jacobianInv[];
+ static const double _basisQuad[];
+ static const double _basisDerivQuad[];
+
+ static const double _jacobianQuad[];
+
+ static const double _jacobianDetQuad[];
+
+ static const double _jacobianInvQuad[];
+
};
#endif // pylith_feassemble_quadraturedata2din3dlinearyz_hh
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DQuadratic.cc 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DQuadratic.cc 2007-04-27 20:27:03 UTC (rev 6715)
@@ -50,7 +50,92 @@
1.66666667e-01, 1.66666667e-01, 1.66666667e-01,
};
-const double pylith::feassemble::QuadratureData2Din3DQuadratic::_basis[] = {
+const double pylith::feassemble::QuadratureData2Din3DQuadratic::_quadPts[] = {
+ 6.55555556e-01, 1.84444444e+00, 1.77777778e-01,
+ 1.55555556e-01, 3.44444444e-01, 1.17777778e+00,
+ 1.38888889e+00, 1.11111111e-01, -5.55555556e-02,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DQuadratic::_basisVert[] = {
+ 1.00000000e+00, -0.00000000e+00,
+ -0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00,
+ -0.00000000e+00, 1.00000000e+00,
+ -0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00,
+ -0.00000000e+00, -0.00000000e+00,
+ 1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00,
+ -0.00000000e+00, 1.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 1.00000000e+00,
+ -0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00,
+ 1.00000000e+00, 0.00000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DQuadratic::_basisDerivVert[] = {
+ -3.00000000e+00, -3.00000000e+00,
+ -1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -1.00000000e+00,
+ 4.00000000e+00, -0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00,
+ -0.00000000e+00, 4.00000000e+00,
+ 1.00000000e+00, 1.00000000e+00,
+ 3.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -1.00000000e+00,
+ -4.00000000e+00, -4.00000000e+00,
+ 0.00000000e+00, 4.00000000e+00,
+ -0.00000000e+00, 0.00000000e+00,
+ 1.00000000e+00, 1.00000000e+00,
+ -1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 3.00000000e+00,
+ 0.00000000e+00, -0.00000000e+00,
+ 4.00000000e+00, 0.00000000e+00,
+ -4.00000000e+00, -4.00000000e+00,
+ -1.00000000e+00, -1.00000000e+00,
+ 1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -1.00000000e+00,
+ 0.00000000e+00, -2.00000000e+00,
+ 0.00000000e+00, 2.00000000e+00,
+ -0.00000000e+00, 2.00000000e+00,
+ -1.00000000e+00, -1.00000000e+00,
+ -1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 1.00000000e+00,
+ 2.00000000e+00, -0.00000000e+00,
+ 2.00000000e+00, 0.00000000e+00,
+ -2.00000000e+00, 0.00000000e+00,
+ 1.00000000e+00, 1.00000000e+00,
+ 1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 1.00000000e+00,
+ -2.00000000e+00, -2.00000000e+00,
+ 2.00000000e+00, 2.00000000e+00,
+ -2.00000000e+00, -2.00000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DQuadratic::_jacobianVert[] = {
+ -1.30000000e+00, 3.30000000e+00, 3.00000000e-01,
+ -2.30000000e+00, 3.00000000e-01, 2.30000000e+00,
+ -1.70000000e+00, 3.70000000e+00, 7.00000000e-01,
+ -2.30000000e+00, 3.00000000e-01, 2.30000000e+00,
+ -1.30000000e+00, 3.30000000e+00, 3.00000000e-01,
+ -2.70000000e+00, 7.00000000e-01, 2.70000000e+00,
+ -1.50000000e+00, 3.50000000e+00, 5.00000000e-01,
+ -2.30000000e+00, 3.00000000e-01, 2.30000000e+00,
+ -1.30000000e+00, 3.30000000e+00, 3.00000000e-01,
+ -2.50000000e+00, 5.00000000e-01, 2.50000000e+00,
+ -1.50000000e+00, 3.50000000e+00, 5.00000000e-01,
+ -2.50000000e+00, 5.00000000e-01, 2.50000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DQuadratic::_jacobianDetVert[] = {
+ 1.06480045e+01, 1.17549989e+01, 1.21235308e+01, 1.12008928e+01, 1.13850780e+01, 1.19373364e+01,
+};
+
+const double pylith::feassemble::QuadratureData2Din3DQuadratic::_basisQuad[] = {
-1.11111111e-01, 2.22222222e-01,
-1.11111111e-01, 4.44444444e-01,
4.44444444e-01, 1.11111111e-01,
@@ -62,7 +147,7 @@
1.11111111e-01, 4.44444444e-01,
};
-const double pylith::feassemble::QuadratureData2Din3DQuadratic::_basisDeriv[] = {
+const double pylith::feassemble::QuadratureData2Din3DQuadratic::_basisDerivQuad[] = {
3.33333333e-01, 3.33333333e-01,
1.66666667e+00, 0.00000000e+00,
0.00000000e+00, -3.33333333e-01,
@@ -83,13 +168,7 @@
-6.66666667e-01, 2.00000000e+00,
};
-const double pylith::feassemble::QuadratureData2Din3DQuadratic::_quadPts[] = {
- 6.55555556e-01, 1.84444444e+00, 1.77777778e-01,
- 1.55555556e-01, 3.44444444e-01, 1.17777778e+00,
- 1.38888889e+00, 1.11111111e-01, -5.55555556e-02,
-};
-
-const double pylith::feassemble::QuadratureData2Din3DQuadratic::_jacobian[] = {
+const double pylith::feassemble::QuadratureData2Din3DQuadratic::_jacobianQuad[] = {
-1.56666667e+00, 3.56666667e+00, 5.66666667e-01,
-2.36666667e+00, 3.66666667e-01, 2.36666667e+00,
-1.36666667e+00, 3.36666667e+00, 3.66666667e-01,
@@ -98,11 +177,11 @@
-2.36666667e+00, 3.66666667e-01, 2.36666667e+00,
};
-const double pylith::feassemble::QuadratureData2Din3DQuadratic::_jacobianDet[] = {
+const double pylith::feassemble::QuadratureData2Din3DQuadratic::_jacobianDetQuad[] = {
1.16307065e+01, 1.18149623e+01, 1.10776050e+01,
};
-const double pylith::feassemble::QuadratureData2Din3DQuadratic::_jacobianInv[] = {
+const double pylith::feassemble::QuadratureData2Din3DQuadratic::_jacobianInvQuad[] = {
4.66101695e-02, -4.53389831e-01,
3.00847458e-01, -1.99152542e-01,
-4.45344130e-02, 4.33198381e-01,
@@ -126,12 +205,16 @@
cells = const_cast<int*>(_cells);
quadPtsRef = const_cast<double*>(_quadPtsRef);
quadWts = const_cast<double*>(_quadWts);
- basis = const_cast<double*>(_basis);
- basisDeriv = const_cast<double*>(_basisDeriv);
quadPts = const_cast<double*>(_quadPts);
- jacobian = const_cast<double*>(_jacobian);
- jacobianDet = const_cast<double*>(_jacobianDet);
- jacobianInv = const_cast<double*>(_jacobianInv);
+ basisVert = const_cast<double*>(_basisVert);
+ basisDerivVert = const_cast<double*>(_basisDerivVert);
+ jacobianVert = const_cast<double*>(_jacobianVert);
+ jacobianDetVert = const_cast<double*>(_jacobianDetVert);
+ basisQuad = const_cast<double*>(_basisQuad);
+ basisDerivQuad = const_cast<double*>(_basisDerivQuad);
+ jacobianQuad = const_cast<double*>(_jacobianQuad);
+ jacobianDetQuad = const_cast<double*>(_jacobianDetQuad);
+ jacobianInvQuad = const_cast<double*>(_jacobianInvQuad);
} // constructor
pylith::feassemble::QuadratureData2Din3DQuadratic::~QuadratureData2Din3DQuadratic(void)
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DQuadratic.hh 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData2Din3DQuadratic.hh 2007-04-27 20:27:03 UTC (rev 6715)
@@ -57,18 +57,26 @@
static const double _quadWts[];
- static const double _basis[];
+ static const double _quadPts[];
- static const double _basisDeriv[];
+ static const double _basisVert[];
- static const double _quadPts[];
+ static const double _basisDerivVert[];
- static const double _jacobian[];
+ static const double _jacobianVert[];
- static const double _jacobianDet[];
+ static const double _jacobianDetVert[];
- static const double _jacobianInv[];
+ static const double _basisQuad[];
+ static const double _basisDerivQuad[];
+
+ static const double _jacobianQuad[];
+
+ static const double _jacobianDetQuad[];
+
+ static const double _jacobianInvQuad[];
+
};
#endif // pylith_feassemble_quadraturedata2din3dquadratic_hh
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DLinear.cc 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DLinear.cc 2007-04-27 20:27:03 UTC (rev 6715)
@@ -46,32 +46,78 @@
1.66666667e-01,
};
-const double pylith::feassemble::QuadratureData3DLinear::_basis[] = {
+const double pylith::feassemble::QuadratureData3DLinear::_quadPts[] = {
+ 5.75000000e-01, -2.75000000e-01, 2.00000000e-01,
+};
+
+const double pylith::feassemble::QuadratureData3DLinear::_basisVert[] = {
+ 1.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 1.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 1.00000000e+00,};
+
+const double pylith::feassemble::QuadratureData3DLinear::_basisDerivVert[] = {
+ -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
+ 1.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 1.00000000e+00,
+ -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
+ 1.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 1.00000000e+00,
+ -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
+ 1.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 1.00000000e+00,
+ -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
+ 1.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 1.00000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData3DLinear::_jacobianVert[] = {
+ 2.50000000e+00, 5.00000000e-01, 1.00000000e-01,
+ 1.50000000e+00, 9.00000000e-01, 2.00000000e-01,
+ 3.00000000e-01, 1.50000000e+00, 2.50000000e+00,
+ 2.50000000e+00, 5.00000000e-01, 1.00000000e-01,
+ 1.50000000e+00, 9.00000000e-01, 2.00000000e-01,
+ 3.00000000e-01, 1.50000000e+00, 2.50000000e+00,
+ 2.50000000e+00, 5.00000000e-01, 1.00000000e-01,
+ 1.50000000e+00, 9.00000000e-01, 2.00000000e-01,
+ 3.00000000e-01, 1.50000000e+00, 2.50000000e+00,
+ 2.50000000e+00, 5.00000000e-01, 1.00000000e-01,
+ 1.50000000e+00, 9.00000000e-01, 2.00000000e-01,
+ 3.00000000e-01, 1.50000000e+00, 2.50000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData3DLinear::_jacobianDetVert[] = {
+ 3.22800000e+00, 3.22800000e+00, 3.22800000e+00, 3.22800000e+00,
+};
+
+const double pylith::feassemble::QuadratureData3DLinear::_basisQuad[] = {
2.50000000e-01, 2.50000000e-01, 2.50000000e-01,
2.50000000e-01,};
-const double pylith::feassemble::QuadratureData3DLinear::_basisDeriv[] = {
+const double pylith::feassemble::QuadratureData3DLinear::_basisDerivQuad[] = {
-1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
1.00000000e+00, 0.00000000e+00, 0.00000000e+00,
0.00000000e+00, 1.00000000e+00, 0.00000000e+00,
0.00000000e+00, 0.00000000e+00, 1.00000000e+00,
};
-const double pylith::feassemble::QuadratureData3DLinear::_quadPts[] = {
- 5.75000000e-01, -2.75000000e-01, 2.00000000e-01,
-};
-
-const double pylith::feassemble::QuadratureData3DLinear::_jacobian[] = {
+const double pylith::feassemble::QuadratureData3DLinear::_jacobianQuad[] = {
2.50000000e+00, 5.00000000e-01, 1.00000000e-01,
1.50000000e+00, 9.00000000e-01, 2.00000000e-01,
3.00000000e-01, 1.50000000e+00, 2.50000000e+00,
};
-const double pylith::feassemble::QuadratureData3DLinear::_jacobianDet[] = {
+const double pylith::feassemble::QuadratureData3DLinear::_jacobianDetQuad[] = {
3.22800000e+00,
};
-const double pylith::feassemble::QuadratureData3DLinear::_jacobianInv[] = {
+const double pylith::feassemble::QuadratureData3DLinear::_jacobianInvQuad[] = {
6.04089219e-01, -3.40768278e-01, 3.09789343e-03,
-1.14312268e+00, 1.92688971e+00, -1.08426270e-01,
6.13382900e-01, -1.11524164e+00, 4.64684015e-01,
@@ -89,12 +135,16 @@
cells = const_cast<int*>(_cells);
quadPtsRef = const_cast<double*>(_quadPtsRef);
quadWts = const_cast<double*>(_quadWts);
- basis = const_cast<double*>(_basis);
- basisDeriv = const_cast<double*>(_basisDeriv);
quadPts = const_cast<double*>(_quadPts);
- jacobian = const_cast<double*>(_jacobian);
- jacobianDet = const_cast<double*>(_jacobianDet);
- jacobianInv = const_cast<double*>(_jacobianInv);
+ basisVert = const_cast<double*>(_basisVert);
+ basisDerivVert = const_cast<double*>(_basisDerivVert);
+ jacobianVert = const_cast<double*>(_jacobianVert);
+ jacobianDetVert = const_cast<double*>(_jacobianDetVert);
+ basisQuad = const_cast<double*>(_basisQuad);
+ basisDerivQuad = const_cast<double*>(_basisDerivQuad);
+ jacobianQuad = const_cast<double*>(_jacobianQuad);
+ jacobianDetQuad = const_cast<double*>(_jacobianDetQuad);
+ jacobianInvQuad = const_cast<double*>(_jacobianInvQuad);
} // constructor
pylith::feassemble::QuadratureData3DLinear::~QuadratureData3DLinear(void)
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DLinear.hh 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DLinear.hh 2007-04-27 20:27:03 UTC (rev 6715)
@@ -57,18 +57,26 @@
static const double _quadWts[];
- static const double _basis[];
+ static const double _quadPts[];
- static const double _basisDeriv[];
+ static const double _basisVert[];
- static const double _quadPts[];
+ static const double _basisDerivVert[];
- static const double _jacobian[];
+ static const double _jacobianVert[];
- static const double _jacobianDet[];
+ static const double _jacobianDetVert[];
- static const double _jacobianInv[];
+ static const double _basisQuad[];
+ static const double _basisDerivQuad[];
+
+ static const double _jacobianQuad[];
+
+ static const double _jacobianDetQuad[];
+
+ static const double _jacobianInvQuad[];
+
};
#endif // pylith_feassemble_quadraturedata3dlinear_hh
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DQuadratic.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DQuadratic.cc 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DQuadratic.cc 2007-04-27 20:27:03 UTC (rev 6715)
@@ -55,7 +55,190 @@
1.25000000e-01, 1.25000000e-01, 1.25000000e-01, 1.25000000e-01,
};
-const double pylith::feassemble::QuadratureData3DQuadratic::_basis[] = {
+const double pylith::feassemble::QuadratureData3DQuadratic::_quadPts[] = {
+ -1.20833333e-01, -1.58194444e+00, -6.40277778e-01,
+ 1.54583333e+00, -1.60416667e+00, -3.06944444e-01,
+ 9.01388889e-01, 4.40277778e-01, 2.63888889e-02,
+ 3.45833333e-01, 1.06944444e-01, 1.33750000e+00,
+};
+
+const double pylith::feassemble::QuadratureData3DQuadratic::_basisVert[] = {
+ 1.00000000e+00, -0.00000000e+00, -0.00000000e+00,
+ -0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -0.00000000e+00, 1.00000000e+00,
+ -0.00000000e+00, -0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, -0.00000000e+00,
+ -0.00000000e+00, 1.00000000e+00, -0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ -0.00000000e+00, -0.00000000e+00, -0.00000000e+00,
+ 1.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ -0.00000000e+00, -0.00000000e+00, 1.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ -0.00000000e+00, 0.00000000e+00, -0.00000000e+00,
+ 0.00000000e+00, 1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -0.00000000e+00, -0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 1.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 1.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, -0.00000000e+00,
+ -0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 1.00000000e+00, 0.00000000e+00,
+ -0.00000000e+00, 0.00000000e+00, -0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 1.00000000e+00,};
+
+const double pylith::feassemble::QuadratureData3DQuadratic::_basisDerivVert[] = {
+ -3.00000000e+00, -3.00000000e+00, -3.00000000e+00,
+ -1.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, -1.00000000e+00,
+ 4.00000000e+00, -0.00000000e+00, -0.00000000e+00,
+ -0.00000000e+00, 4.00000000e+00, -0.00000000e+00,
+ -0.00000000e+00, -0.00000000e+00, 4.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 1.00000000e+00, 1.00000000e+00, 1.00000000e+00,
+ 3.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, -1.00000000e+00,
+ -4.00000000e+00, -4.00000000e+00, -4.00000000e+00,
+ -0.00000000e+00, 0.00000000e+00, -0.00000000e+00,
+ -0.00000000e+00, -0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 4.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 4.00000000e+00,
+ 1.00000000e+00, 1.00000000e+00, 1.00000000e+00,
+ -1.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 3.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, -1.00000000e+00,
+ 0.00000000e+00, -0.00000000e+00, -0.00000000e+00,
+ -4.00000000e+00, -4.00000000e+00, -4.00000000e+00,
+ -0.00000000e+00, -0.00000000e+00, 0.00000000e+00,
+ 4.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 4.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 1.00000000e+00, 1.00000000e+00, 1.00000000e+00,
+ -1.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 3.00000000e+00,
+ 0.00000000e+00, -0.00000000e+00, -0.00000000e+00,
+ -0.00000000e+00, 0.00000000e+00, -0.00000000e+00,
+ -4.00000000e+00, -4.00000000e+00, -4.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 4.00000000e+00, 0.00000000e+00,
+ 4.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
+ 1.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, -1.00000000e+00,
+ 0.00000000e+00, -2.00000000e+00, -2.00000000e+00,
+ -0.00000000e+00, 2.00000000e+00, -0.00000000e+00,
+ -0.00000000e+00, -0.00000000e+00, 2.00000000e+00,
+ 0.00000000e+00, 2.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 2.00000000e+00,
+ -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
+ -1.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, -1.00000000e+00,
+ 2.00000000e+00, -0.00000000e+00, -0.00000000e+00,
+ -2.00000000e+00, 0.00000000e+00, -2.00000000e+00,
+ -0.00000000e+00, -0.00000000e+00, 2.00000000e+00,
+ 2.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 2.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ -1.00000000e+00, -1.00000000e+00, -1.00000000e+00,
+ -1.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 1.00000000e+00,
+ 2.00000000e+00, -0.00000000e+00, -0.00000000e+00,
+ -0.00000000e+00, 2.00000000e+00, -0.00000000e+00,
+ -2.00000000e+00, -2.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 2.00000000e+00, 0.00000000e+00,
+ 2.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 1.00000000e+00, 1.00000000e+00, 1.00000000e+00,
+ 1.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, -1.00000000e+00,
+ -2.00000000e+00, -2.00000000e+00, -2.00000000e+00,
+ -2.00000000e+00, -2.00000000e+00, -2.00000000e+00,
+ -0.00000000e+00, -0.00000000e+00, 0.00000000e+00,
+ 2.00000000e+00, 2.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 2.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 2.00000000e+00,
+ 1.00000000e+00, 1.00000000e+00, 1.00000000e+00,
+ -1.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 1.00000000e+00,
+ 0.00000000e+00, -0.00000000e+00, -0.00000000e+00,
+ -2.00000000e+00, -2.00000000e+00, -2.00000000e+00,
+ -2.00000000e+00, -2.00000000e+00, -2.00000000e+00,
+ 2.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 2.00000000e+00, 2.00000000e+00,
+ 2.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 1.00000000e+00, 1.00000000e+00, 1.00000000e+00,
+ 1.00000000e+00, 0.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, -1.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 0.00000000e+00, 1.00000000e+00,
+ -2.00000000e+00, -2.00000000e+00, -2.00000000e+00,
+ -0.00000000e+00, 0.00000000e+00, -0.00000000e+00,
+ -2.00000000e+00, -2.00000000e+00, -2.00000000e+00,
+ 0.00000000e+00, 2.00000000e+00, 0.00000000e+00,
+ 0.00000000e+00, 2.00000000e+00, 0.00000000e+00,
+ 2.00000000e+00, 0.00000000e+00, 2.00000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData3DQuadratic::_jacobianVert[] = {
+ 2.30000000e+00, -4.00000000e-01, 3.00000000e-01,
+ 1.70000000e+00, 3.00000000e+00, 1.00000000e+00,
+ 5.00000000e-01, 2.30000000e+00, 3.00000000e+00,
+ 2.70000000e+00, 4.00000000e-01, 7.00000000e-01,
+ 1.70000000e+00, 3.00000000e+00, 1.40000000e+00,
+ 9.00000000e-01, 2.70000000e+00, 3.00000000e+00,
+ 2.30000000e+00, -4.00000000e-01, 7.00000000e-01,
+ 1.30000000e+00, 3.00000000e+00, 1.00000000e+00,
+ 5.00000000e-01, 2.70000000e+00, 2.60000000e+00,
+ 2.70000000e+00, 0.00000000e+00, 3.00000000e-01,
+ 1.70000000e+00, 3.40000000e+00, 6.00000000e-01,
+ 9.00000000e-01, 2.70000000e+00, 3.00000000e+00,
+ 2.50000000e+00, 0.00000000e+00, 5.00000000e-01,
+ 1.70000000e+00, 3.00000000e+00, 1.20000000e+00,
+ 7.00000000e-01, 2.50000000e+00, 3.00000000e+00,
+ 2.30000000e+00, -4.00000000e-01, 5.00000000e-01,
+ 1.50000000e+00, 3.00000000e+00, 1.00000000e+00,
+ 5.00000000e-01, 2.50000000e+00, 2.80000000e+00,
+ 2.50000000e+00, -2.00000000e-01, 3.00000000e-01,
+ 1.70000000e+00, 3.20000000e+00, 8.00000000e-01,
+ 7.00000000e-01, 2.50000000e+00, 3.00000000e+00,
+ 2.50000000e+00, 2.22044605e-16, 7.00000000e-01,
+ 1.50000000e+00, 3.00000000e+00, 1.20000000e+00,
+ 7.00000000e-01, 2.70000000e+00, 2.80000000e+00,
+ 2.50000000e+00, -2.00000000e-01, 5.00000000e-01,
+ 1.50000000e+00, 3.20000000e+00, 8.00000000e-01,
+ 7.00000000e-01, 2.70000000e+00, 2.80000000e+00,
+ 2.70000000e+00, 2.00000000e-01, 5.00000000e-01,
+ 1.70000000e+00, 3.20000000e+00, 1.00000000e+00,
+ 9.00000000e-01, 2.70000000e+00, 3.00000000e+00,
+};
+
+const double pylith::feassemble::QuadratureData3DQuadratic::_jacobianDetVert[] = {
+ 1.79730000e+01, 1.38810000e+01, 1.42890000e+01, 2.36250000e+01, 1.60750000e+01, 1.61750000e+01, 2.05110000e+01, 1.42650000e+01, 1.86330000e+01, 1.86450000e+01,
+};
+
+const double pylith::feassemble::QuadratureData3DQuadratic::_basisQuad[] = {
3.75000000e-01, -6.94444444e-02, -6.94444444e-02,
-6.94444444e-02, 2.50000000e-01, 2.50000000e-01,
2.50000000e-01, 2.77777778e-02, 2.77777778e-02,
@@ -71,7 +254,7 @@
2.50000000e-01, 2.77777778e-02, 2.50000000e-01,
2.50000000e-01,};
-const double pylith::feassemble::QuadratureData3DQuadratic::_basisDeriv[] = {
+const double pylith::feassemble::QuadratureData3DQuadratic::_basisDerivQuad[] = {
-2.00000000e+00, -2.00000000e+00, -2.00000000e+00,
-6.66666667e-01, 0.00000000e+00, 0.00000000e+00,
0.00000000e+00, -6.66666667e-01, 0.00000000e+00,
@@ -114,14 +297,7 @@
3.00000000e+00, 0.00000000e+00, 3.33333333e-01,
};
-const double pylith::feassemble::QuadratureData3DQuadratic::_quadPts[] = {
- -1.20833333e-01, -1.58194444e+00, -6.40277778e-01,
- 1.54583333e+00, -1.60416667e+00, -3.06944444e-01,
- 9.01388889e-01, 4.40277778e-01, 2.63888889e-02,
- 3.45833333e-01, 1.06944444e-01, 1.33750000e+00,
-};
-
-const double pylith::feassemble::QuadratureData3DQuadratic::_jacobian[] = {
+const double pylith::feassemble::QuadratureData3DQuadratic::_jacobianQuad[] = {
2.36666667e+00, -3.00000000e-01, 3.66666667e-01,
1.66666667e+00, 3.03333333e+00, 1.00000000e+00,
5.66666667e-01, 2.40000000e+00, 2.96666667e+00,
@@ -136,11 +312,11 @@
8.33333333e-01, 2.66666667e+00, 2.96666667e+00,
};
-const double pylith::feassemble::QuadratureData3DQuadratic::_jacobianDet[] = {
+const double pylith::feassemble::QuadratureData3DQuadratic::_jacobianDetQuad[] = {
1.77671111e+01, 1.51087407e+01, 1.53117037e+01, 2.13964444e+01,
};
-const double pylith::feassemble::QuadratureData3DQuadratic::_jacobianInv[] = {
+const double pylith::feassemble::QuadratureData3DQuadratic::_jacobianInvQuad[] = {
3.71410346e-01, 9.96222734e-02, -7.94851911e-02,
-2.46397839e-01, 3.83480088e-01, -9.88092856e-02,
1.28389534e-01, -3.29260056e-01, 4.32196818e-01,
@@ -167,12 +343,16 @@
cells = const_cast<int*>(_cells);
quadPtsRef = const_cast<double*>(_quadPtsRef);
quadWts = const_cast<double*>(_quadWts);
- basis = const_cast<double*>(_basis);
- basisDeriv = const_cast<double*>(_basisDeriv);
quadPts = const_cast<double*>(_quadPts);
- jacobian = const_cast<double*>(_jacobian);
- jacobianDet = const_cast<double*>(_jacobianDet);
- jacobianInv = const_cast<double*>(_jacobianInv);
+ basisVert = const_cast<double*>(_basisVert);
+ basisDerivVert = const_cast<double*>(_basisDerivVert);
+ jacobianVert = const_cast<double*>(_jacobianVert);
+ jacobianDetVert = const_cast<double*>(_jacobianDetVert);
+ basisQuad = const_cast<double*>(_basisQuad);
+ basisDerivQuad = const_cast<double*>(_basisDerivQuad);
+ jacobianQuad = const_cast<double*>(_jacobianQuad);
+ jacobianDetQuad = const_cast<double*>(_jacobianDetQuad);
+ jacobianInvQuad = const_cast<double*>(_jacobianInvQuad);
} // constructor
pylith::feassemble::QuadratureData3DQuadratic::~QuadratureData3DQuadratic(void)
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DQuadratic.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DQuadratic.hh 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DQuadratic.hh 2007-04-27 20:27:03 UTC (rev 6715)
@@ -57,18 +57,26 @@
static const double _quadWts[];
- static const double _basis[];
+ static const double _quadPts[];
- static const double _basisDeriv[];
+ static const double _basisVert[];
- static const double _quadPts[];
+ static const double _basisDerivVert[];
- static const double _jacobian[];
+ static const double _jacobianVert[];
- static const double _jacobianDet[];
+ static const double _jacobianDetVert[];
- static const double _jacobianInv[];
+ static const double _basisQuad[];
+ static const double _basisDerivQuad[];
+
+ static const double _jacobianQuad[];
+
+ static const double _jacobianDetQuad[];
+
+ static const double _jacobianInvQuad[];
+
};
#endif // pylith_feassemble_quadraturedata3dquadratic_hh
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/feutils.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/feutils.py 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/feutils.py 2007-04-27 20:27:03 UTC (rev 6715)
@@ -18,8 +18,36 @@
import numpy
# ----------------------------------------------------------------------
-def calculateJacobian(quadrature, vertices):
+def calculateJacobianVert(quadrature, vertices):
"""
+ Calculate jacobian and its determinant at vertices.
+
+ @param quadrature Quadrature information
+ @param vertices Coordinates of cell's vertices
+ """
+ jacobian = numpy.zeros( (quadrature.numBasis,
+ quadrature.cellDim, quadrature.spaceDim),
+ dtype=numpy.float64)
+ jacobianDet = numpy.zeros( (quadrature.numBasis,), dtype=numpy.float64)
+
+ for iVertex in xrange(quadrature.numBasis):
+ # Jacobian
+ deriv = quadrature.basisDerivVert[iVertex]
+ j = numpy.dot(deriv.transpose(), vertices)
+ jacobian[iVertex] = j
+
+ # Determinant of Jacobian
+ if quadrature.spaceDim == quadrature.cellDim:
+ jacobianDet[iVertex] = numpy.linalg.det(j)
+ else:
+ det = numpy.linalg.det(numpy.dot(j, j.transpose()))**0.5
+ jacobianDet[iVertex] = det
+ return (jacobian, jacobianDet)
+
+
+# ----------------------------------------------------------------------
+def calculateJacobianQuad(quadrature, vertices):
+ """
Calculate jacobian, its determinant, and its inverse at quadrature
points for a given cell.
@@ -37,7 +65,7 @@
iQuad = 0
for q in quadrature.quadPtsRef:
# Jacobian at quadrature points
- deriv = quadrature.basisDeriv[iQuad]
+ deriv = quadrature.basisDerivQuad[iQuad]
j = numpy.dot(deriv.transpose(), vertices)
jacobian[iQuad] = j
Modified: short/3D/PyLith/trunk/unittests/pytests/feassemble/TestFIATSimplex.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/feassemble/TestFIATSimplex.py 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/pytests/feassemble/TestFIATSimplex.py 2007-04-27 20:27:03 UTC (rev 6715)
@@ -37,7 +37,10 @@
def N2p(p):
return -2.0*p
+def verticesRef():
+ return [-1.0, 1.0, 0.5]
+
# ----------------------------------------------------------------------
class TestFIATSimplex(unittest.TestCase):
"""
@@ -81,15 +84,29 @@
(+1.0/3**0.5,)],
dtype=numpy.float64 )
quadWtsE = numpy.array( [1.0, 1.0], dtype=numpy.float64 )
- basis = numpy.zeros( (2, 3), dtype=numpy.float64)
- basisDeriv = numpy.zeros( (2, 3, 1), dtype=numpy.float64)
+
+ # Compute basis fns and derivatives at vertices
+ basisVert = numpy.zeros( (3, 3), dtype=numpy.float64)
+ basisDerivVert = numpy.zeros( (3, 3, 1), dtype=numpy.float64)
+ iVertex = 0
+ for v in verticesRef():
+ basisVert[iVertex] = numpy.array([N0(v), N1(v), N2(v)],
+ dtype=numpy.float64).reshape( (3,) )
+ deriv = numpy.array([[N0p(v)], [N1p(v)], [N2p(v)]],
+ dtype=numpy.float64)
+ basisDerivVert[iVertex] = deriv.reshape((3, 1))
+ iVertex += 1
+
+ # Compute basis fns and derivatives at quadrature points
+ basisQuad = numpy.zeros( (2, 3), dtype=numpy.float64)
+ basisDerivQuad = numpy.zeros( (2, 3, 1), dtype=numpy.float64)
iQuad = 0
for q in quadPtsE:
- basis[iQuad] = numpy.array([N0(q), N1(q), N2(q)],
+ basisQuad[iQuad] = numpy.array([N0(q), N1(q), N2(q)],
dtype=numpy.float64).reshape( (3,) )
deriv = numpy.array([[N0p(q)], [N1p(q)], [N2p(q)]],
dtype=numpy.float64)
- basisDeriv[iQuad] = deriv.reshape((3, 1))
+ basisDerivQuad[iQuad] = deriv.reshape((3, 1))
iQuad += 1
cell.initialize()
@@ -102,8 +119,10 @@
# Check arrays
test_double(self, quadPtsE, cell.quadPts)
test_double(self, quadWtsE, cell.quadWts)
- test_double(self, basis, cell.basis)
- test_double(self, basisDeriv, cell.basisDeriv)
+ test_double(self, basisVert, cell.basisVert)
+ test_double(self, basisDerivVert, cell.basisDerivVert)
+ test_double(self, basisQuad, cell.basisQuad)
+ test_double(self, basisDerivQuad, cell.basisDerivQuad)
return
Deleted: short/3D/PyLith/trunk/unittests/pytests/feassemble/TestQuadrature.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/feassemble/TestQuadrature.cc 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/pytests/feassemble/TestQuadrature.cc 2007-04-27 20:27:03 UTC (rev 6715)
@@ -1,272 +0,0 @@
-// -*- C++ -*-
-//
-// ----------------------------------------------------------------------
-//
-// Brad T. Aagaard
-// U.S. Geological Survey
-//
-// {LicenseText}
-//
-// ----------------------------------------------------------------------
-//
-
-#include <portinfo>
-
-#include "TestQuadrature.hh" // Implementation of class methods
-
-// ----------------------------------------------------------------------
-// Test clone
-void
-pylith::feassemble::TestQuadrature::testClone(void)
-{ // testClone
- // Semi-random values manually set to check cloning
- const double minJacobian = 1.0;
- const int cellDim = 1;
- const int numBasis = 2;
- const int numQuadPts = 1;
- const int spaceDim = 1;
- const double basis[] = { 0.2, 0.4 };
- const double basisDeriv[] = { 0.8, 1.6 };
- const double quadPtsRef[] = { 3.2 };
- const double quadWts[] = { 6.4 };
- const double quadPts[] = { 12.8 };
- const double jacobian[] = { 2.56 };
- const double jacobianInv[] = { 5.12 };
- const double jacobianDet[] = { 10.24 };
-
- // Set values
- Quadrature1D qOrig;
- qOrig._minJacobian = minJacobian;
- qOrig._cellDim = cellDim;
- qOrig._numBasis = numBasis;
- qOrig._numQuadPts = numQuadPts;
- qOrig._spaceDim = spaceDim;
-
- int size = 2;
- qOrig._basis = (size > 0) ? new double[size] : 0;
- memcpy(qOrig._basis, basis, size*sizeof(double));
-
- size = 2;
- qOrig._basisDeriv = (size > 0) ? new double[size] : 0;
- memcpy(qOrig._basisDeriv, basisDeriv, size*sizeof(double));
-
- size = 1;
- qOrig._quadPtsRef = (size > 0) ? new double[size] : 0;
- memcpy(qOrig._quadPtsRef, quadPtsRef, size*sizeof(double));
-
- size = 1;
- qOrig._quadWts = (size > 0) ? new double[size] : 0;
- memcpy(qOrig._quadWts, quadWts, size*sizeof(double));
-
- size = 1;
- qOrig._quadPts = (size > 0) ? new double[size] : 0;
- memcpy(qOrig._quadPts, quadPts, size*sizeof(double));
-
- size = 1;
- qOrig._jacobian = (size > 0) ? new double[size] : 0;
- memcpy(qOrig._jacobian, jacobian, size*sizeof(double));
-
- size = 1;
- qOrig._jacobianInv = (size > 0) ? new double[size] : 0;
- memcpy(qOrig._jacobianInv, jacobianInv, size*sizeof(double));
-
- size = 1;
- qOrig._jacobianDet = (size > 0) ? new double[size] : 0;
- memcpy(qOrig._jacobianDet, jacobianDet, size*sizeof(double));
-
- // Clone
- const Quadrature* qCopy = qOrig.clone();
-
- // Check clone
- CPPUNIT_ASSERT(0 != qCopy);
-
- CPPUNIT_ASSERT_EQUAL(minJacobian, qCopy->_minJacobian);
- CPPUNIT_ASSERT_EQUAL(cellDim, qCopy->_cellDim);
- CPPUNIT_ASSERT_EQUAL(numBasis, qCopy->_numBasis);
- CPPUNIT_ASSERT_EQUAL(numQuadPts, qCopy->_numQuadPts);
- CPPUNIT_ASSERT_EQUAL(spaceDim, qCopy->_spaceDim);
-
- CPPUNIT_ASSERT(0 != qCopy->_basis);
- size = numBasis * numQuadPts;
- for (int i=0; i < size; ++i)
- CPPUNIT_ASSERT_EQUAL(basis[i], qCopy->_basis[i]);
-
- CPPUNIT_ASSERT(0 != qCopy->_basisDeriv);
- size = numBasis * numQuadPts * spaceDim;
- for (int i=0; i < size; ++i)
- CPPUNIT_ASSERT_EQUAL(basisDeriv[i], qCopy->_basisDeriv[i]);
-
- CPPUNIT_ASSERT(0 != qCopy->_quadPtsRef);
- size = numQuadPts * cellDim;
- for (int i=0; i < size; ++i)
- CPPUNIT_ASSERT_EQUAL(quadPtsRef[i], qCopy->_quadPtsRef[i]);
-
- CPPUNIT_ASSERT(0 != qCopy->_quadWts);
- size = numQuadPts;
- for (int i=0; i < size; ++i)
- CPPUNIT_ASSERT_EQUAL(quadWts[i], qCopy->_quadWts[i]);
-
- size = 1;
-
- CPPUNIT_ASSERT(0 != qCopy->_quadPts);
- for (int i=0; i < size; ++i)
- CPPUNIT_ASSERT_EQUAL(quadPts[i], qCopy->_quadPts[i]);
- CPPUNIT_ASSERT(0 != qCopy->_jacobian);
- for (int i=0; i < size; ++i)
- CPPUNIT_ASSERT_EQUAL(jacobian[i], qCopy->_jacobian[i]);
- CPPUNIT_ASSERT(0 != qCopy->_jacobianInv);
- for (int i=0; i < size; ++i)
- CPPUNIT_ASSERT_EQUAL(jacobianInv[i], qCopy->_jacobianInv[i]);
- CPPUNIT_ASSERT(0 != qCopy->_jacobianDet);
- for (int i=0; i < size; ++i)
- CPPUNIT_ASSERT_EQUAL(jacobianDet[i], qCopy->_jacobianDet[i]);
-} // testCopy
-
-// ----------------------------------------------------------------------
-// Test minJacobian()
-void
-pylith::feassemble::TestQuadrature::testMinJacobian(void)
-{ // testMinJacobian
- Quadrature1D q;
- const double min = 1.0;
- q.minJacobian(min);
- CPPUNIT_ASSERT_EQUAL(min, q._minJacobian);
-} // testMinJacobian
-
-// ----------------------------------------------------------------------
-// Test initialize()
-void
-pylith::feassemble::TestQuadrature::testInitialize(void)
-{ // initialize
-
- const int cellDim = 1;
- const int numBasis = 2;
- const int numQuadPts = 1;
- const int spaceDim = 1;
- const double basis[] = { 0.5, 0.5 };
- const double basisDeriv[] = { -0.5, 0.5 };
- const double quadPtsRef[] = { 0.0 };
- const double quadWts[] = { 2.0 };
- const double minJacobian = 1.0;
-
- Quadrature1D q;
- q.initialize(basis, basisDeriv, quadPtsRef, quadWts,
- cellDim, numBasis, numQuadPts, spaceDim);
-
- CPPUNIT_ASSERT_EQUAL(cellDim, q._cellDim);
- CPPUNIT_ASSERT_EQUAL(numBasis, q._numBasis);
- CPPUNIT_ASSERT_EQUAL(numQuadPts, q._numQuadPts);
- CPPUNIT_ASSERT_EQUAL(spaceDim, q._spaceDim);
-
- int size = numBasis * numQuadPts;
- for (int i=0; i < size; ++i)
- CPPUNIT_ASSERT_EQUAL(basis[i], q._basis[i]);
-
- size = numBasis * numQuadPts * spaceDim;
- for (int i=0; i < size; ++i)
- CPPUNIT_ASSERT_EQUAL(basisDeriv[i], q._basisDeriv[i]);
-
- size = numQuadPts * cellDim;
- for (int i=0; i < size; ++i)
- CPPUNIT_ASSERT_EQUAL(quadPtsRef[i], q._quadPtsRef[i]);
-
- size = numQuadPts;
- for (int i=0; i < size; ++i)
- CPPUNIT_ASSERT_EQUAL(quadWts[i], q._quadWts[i]);
-
- // Make sure Jacobian stuff has been allocated
- CPPUNIT_ASSERT(0 != q._jacobian);
- CPPUNIT_ASSERT(0 != q._jacobianInv);
- CPPUNIT_ASSERT(0 != q._jacobianDet);
- CPPUNIT_ASSERT(0 != q._quadPts);
-} // initialize
-
-// ----------------------------------------------------------------------
-// Test initialize() & computeGeometry()
-void
-pylith::feassemble::TestQuadrature::_testComputeGeometry(
- Quadrature* pQuad,
- const QuadratureData& data) const
-{ // testComputeGeometry
- const int cellDim = data.cellDim;
- const int numBasis = data.numBasis;
- const int numQuadPts = data.numQuadPts;
- const int spaceDim = data.spaceDim;
- const double* basis = data.basis;
- const double* basisDeriv = data.basisDeriv;
- const double* quadPtsRef = data.quadPtsRef;
- const double* quadWts = data.quadWts;
-
- const int numVertices = data.numVertices;
- const int numCells = data.numCells;
- const double* vertCoords = data.vertices;
- const int* cells = data.cells;
- const double* quadPts = data.quadPts;
- const double* jacobian = data.jacobian;
- const double* jacobianInv = data.jacobianInv;
- const double* jacobianDet = data.jacobianDet;
-
- const double minJacobian = 1.0e-06;
-
- CPPUNIT_ASSERT(0 != basis);
- CPPUNIT_ASSERT(0 != basisDeriv);
- CPPUNIT_ASSERT(0 != quadPtsRef);
- CPPUNIT_ASSERT(0 != quadWts);
- CPPUNIT_ASSERT(0 != vertCoords);
- CPPUNIT_ASSERT(0 != cells);
- CPPUNIT_ASSERT(0 != quadPts);
- CPPUNIT_ASSERT(0 != jacobian);
- CPPUNIT_ASSERT(0 != jacobianInv);
- CPPUNIT_ASSERT(0 != jacobianDet);
-
- pQuad->minJacobian(minJacobian);
- pQuad->initialize(basis, basisDeriv, quadPtsRef, quadWts,
- cellDim, numBasis, numQuadPts, spaceDim);
-
- // Create mesh with test cell
- typedef ALE::Field::Mesh mesh;
- typedef Mesh::sieve_type sieve_type;
- ALE::Obj<Mesh> mesh = new Mesh(PETSC_COMM_WORLD, cellDim);
- ALE::Obj<sieve_type> sieve = new sieve_type(mesh->comm());
-
- const bool interpolate = false;
- ALE::New::SieveBuilder<Mesh>::buildTopology(sieve, cellDim, numCells,
- (int*) cells, numVertices, interpolate, numBasis);
- mesh->setSieve(sieve);
- mesh->stratify();
- ALE::New::SieveBuilder<Mesh>::buildCoordinatesNew(mesh, spaceDim, vertCoords);
-
- // Check values from _computeGeometry()
- const ALE::Obj<Mesh::label_sequence>& elements = mesh->heightStratum(0);
- const Mesh::label_sequence::iterator e_iter = elements->begin();
- const ALE::Obj<Mesh::real_section_type>& coordinates =
- mesh->getRealSection("coordinates");
- pQuad->_computeGeometry(coordinates, *e_iter);
-
- CPPUNIT_ASSERT(1 == numCells);
-
- const double tolerance = 1.0e-06;
- int size = numQuadPts * spaceDim;
- CPPUNIT_ASSERT(0 != pQuad->_quadPts);
- for (int i=0; i < size; ++i)
- CPPUNIT_ASSERT_DOUBLES_EQUAL(quadPts[i], pQuad->_quadPts[i], tolerance);
-
- size = numQuadPts * cellDim * spaceDim;
- CPPUNIT_ASSERT(0 != pQuad->_jacobian);
- for (int i=0; i < size; ++i)
- CPPUNIT_ASSERT_DOUBLES_EQUAL(jacobian[i], pQuad->_jacobian[i], tolerance);
-
- size = numQuadPts * spaceDim * cellDim;
- CPPUNIT_ASSERT(0 != pQuad->_jacobianInv);
- for (int i=0; i < size; ++i)
- CPPUNIT_ASSERT_DOUBLES_EQUAL(jacobianInv[i], pQuad->_jacobianInv[i],
- tolerance);
-
- size = numQuadPts;
- CPPUNIT_ASSERT(0 != pQuad->_jacobianDet);
- for (int i=0; i < size; ++i)
- CPPUNIT_ASSERT_DOUBLES_EQUAL(jacobianDet[i], pQuad->_jacobianDet[i],
- tolerance);
-} // testQuadratic
-
-// End of file
Modified: short/3D/PyLith/trunk/unittests/pytests/feassemble/TestQuadrature.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/feassemble/TestQuadrature.hh 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/pytests/feassemble/TestQuadrature.hh 2007-04-27 20:27:03 UTC (rev 6715)
@@ -61,17 +61,29 @@
*/
static int spaceDim(const Quadrature& q);
+ /** Get basis functions evaluated at vertices.
+ *
+ * @returns Array of basis functions evaluated at vertices
+ */
+ static const double* basisVert(const Quadrature& q);
+
+ /** Get derivatives of basis functions evaluated at vertices.
+ *
+ * @returns Array of derivatives of basis fns evaluated at vertices
+ */
+ static const double* basisDerivVert(const Quadrature& q);
+
/** Get basis functions evaluated at quadrature points.
*
* @returns Array of basis functions evaluated at quadrature points
*/
- static const double* basis(const Quadrature& q);
+ static const double* basisQuad(const Quadrature& q);
/** Get derivatives of basis functions evaluated at quadrature points.
*
* @returns Array of derivatives of basis fns evaluated at quad pts
*/
- static const double* basisDeriv(const Quadrature& q);
+ static const double* basisDerivQuad(const Quadrature& q);
/** Get coordinates of quadrature points in reference cell.
*
Modified: short/3D/PyLith/trunk/unittests/pytests/feassemble/TestQuadrature.icc
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/feassemble/TestQuadrature.icc 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/pytests/feassemble/TestQuadrature.icc 2007-04-27 20:27:03 UTC (rev 6715)
@@ -15,48 +15,70 @@
#else
// Get number of dimensions in reference cell.
+inline
int
pylith::feassemble::TestQuadrature::cellDim(const Quadrature& q) {
return q._cellDim;
}
// Get number of vertices in cell.
+inline
int
pylith::feassemble::TestQuadrature::numBasis(const Quadrature& q) {
return q._numBasis;
}
// Get number of quadrature points.
+inline
int
pylith::feassemble::TestQuadrature::numQuadPts(const Quadrature& q) {
return q._numQuadPts;
}
// Get number of dimensions in coordinates of cell vertices.
+inline
int
pylith::feassemble::TestQuadrature::spaceDim(const Quadrature& q) {
return q._spaceDim;
}
+// Get basis functions evaluated at vertices.
+inline
+const double*
+pylith::feassemble::TestQuadrature::basisVert(const Quadrature& q) {
+ return &q._basisVert[0];
+}
+
+// Get derivatives of basis functions evaluated at vertices.
+inline
+const double*
+pylith::feassemble::TestQuadrature::basisDerivVert(const Quadrature& q) {
+ return &q._basisDerivVert[0];
+}
+
// Get basis functions evaluated at quadrature points.
+inline
const double*
-pylith::feassemble::TestQuadrature::basis(const Quadrature& q) {
- return &q._basis[0];
+pylith::feassemble::TestQuadrature::basisQuad(const Quadrature& q) {
+ return &q._basisQuad[0];
}
// Get derivatives of basis functions evaluated at quadrature points.
+inline
const double*
-pylith::feassemble::TestQuadrature::basisDeriv(const Quadrature& q) {
- return &q._basisDeriv[0];
+pylith::feassemble::TestQuadrature::basisDerivQuad(const Quadrature& q) {
+ return &q._basisDerivQuad[0];
}
// Get coordinates of quadrature points
+inline
const double*
pylith::feassemble::TestQuadrature::quadPtsRef(const Quadrature& q) {
return &q._quadPtsRef[0];
}
// Get weights of quadrature points
+inline
const double*
pylith::feassemble::TestQuadrature::quadWts(const Quadrature& q) {
return &q._quadWts[0];
Modified: short/3D/PyLith/trunk/unittests/pytests/feassemble/TestQuadrature.py
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/feassemble/TestQuadrature.py 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/pytests/feassemble/TestQuadrature.py 2007-04-27 20:27:03 UTC (rev 6715)
@@ -44,6 +44,8 @@
def N2p(p):
return -2.0*p
+def verticesRef():
+ return [-1.0, 1.0, 0.0]
# ----------------------------------------------------------------------
class TestQuadrature(unittest.TestCase):
@@ -75,15 +77,29 @@
(+1.0/3**0.5,)],
dtype=numpy.float64 )
quadWtsE = numpy.array( [1.0, 1.0], dtype=numpy.float64 )
- basisE = numpy.zeros( (2, 3), dtype=numpy.float64)
- basisDerivE = numpy.zeros( (2, 3, 1), dtype=numpy.float64)
+
+ # Compute basis functions and derivatives at vertices
+ basisVertE = numpy.zeros( (3, 3), dtype=numpy.float64)
+ basisDerivVertE = numpy.zeros( (3, 3, 1), dtype=numpy.float64)
+ iVertex = 0
+ for v in verticesRef():
+ basisVertE[iVertex] = numpy.array([N0(v), N1(v), N2(v)],
+ dtype=numpy.float64).reshape( (3,) )
+ deriv = numpy.array([[N0p(v)], [N1p(v)], [N2p(v)]],
+ dtype=numpy.float64)
+ basisDerivVertE[iVertex] = deriv.reshape((3, 1))
+ iVertex += 1
+
+ # Compute basis functions and derivatives at quadrature points
+ basisQuadE = numpy.zeros( (2, 3), dtype=numpy.float64)
+ basisDerivQuadE = numpy.zeros( (2, 3, 1), dtype=numpy.float64)
iQuad = 0
for q in quadPtsE:
- basisE[iQuad] = numpy.array([N0(q), N1(q), N2(q)],
- dtype=numpy.float64).reshape( (3,) )
+ basisQuadE[iQuad] = numpy.array([N0(q), N1(q), N2(q)],
+ dtype=numpy.float64).reshape( (3,) )
deriv = numpy.array([[N0p(q)], [N1p(q)], [N2p(q)]],
dtype=numpy.float64)
- basisDerivE[iQuad] = deriv.reshape((3, 1))
+ basisDerivQuadE[iQuad] = deriv.reshape((3, 1))
iQuad += 1
quadrature = Quadrature1D()
@@ -94,12 +110,18 @@
from pylith.utils.testarray import test_double
import pylith.feassemble.testfeassemble as testmodule
- basis = testmodule.basis(quadrature.cppHandle)
- test_double(self, basisE, basis)
+ basisVert = testmodule.basisVert(quadrature.cppHandle)
+ test_double(self, basisVertE, basisVert)
- basisDeriv = testmodule.basisDeriv(quadrature.cppHandle)
- test_double(self, basisDerivE, basisDeriv)
+ basisDerivVert = testmodule.basisDerivVert(quadrature.cppHandle)
+ test_double(self, basisDerivVertE, basisDerivVert)
+ basisQuad = testmodule.basisQuad(quadrature.cppHandle)
+ test_double(self, basisQuadE, basisQuad)
+
+ basisDerivQuad = testmodule.basisDerivQuad(quadrature.cppHandle)
+ test_double(self, basisDerivQuadE, basisDerivQuad)
+
quadWts = testmodule.quadWts(quadrature.cppHandle)
test_double(self, quadWtsE, quadWts)
Modified: short/3D/PyLith/trunk/unittests/pytests/feassemble/testfeassemble.pyxe.src
===================================================================
--- short/3D/PyLith/trunk/unittests/pytests/feassemble/testfeassemble.pyxe.src 2007-04-27 19:47:42 UTC (rev 6714)
+++ short/3D/PyLith/trunk/unittests/pytests/feassemble/testfeassemble.pyxe.src 2007-04-27 20:27:03 UTC (rev 6715)
@@ -59,27 +59,27 @@
return pylith::feassemble::TestQuadrature::spaceDim(*q);
#}embed
-# create shim for TestQuadrature::basis
-#embed{ double* TestQuadrature_basis(void* obj)
+# create shim for TestQuadrature::basisQuad
+#embed{ double* TestQuadrature_basisQuad(void* obj)
const pylith::feassemble::Quadrature* q =
(pylith::feassemble::Quadrature*) obj;
const int size = TestQuadrature_numQuadPts(obj) *
TestQuadrature_numBasis(obj);
double* vals = (size > 0) ? new double[size] : 0;
-const double* basis = pylith::feassemble::TestQuadrature::basis(*q);
+const double* basis = pylith::feassemble::TestQuadrature::basisQuad(*q);
memcpy(vals, basis, size*sizeof(double));
return vals;
#}embed
-# create shim for TestQuadrature::basisDeriv
-#embed{ double* TestQuadrature_basisDeriv(void* obj)
+# create shim for TestQuadrature::basisDerivQuad
+#embed{ double* TestQuadrature_basisDerivQuad(void* obj)
const pylith::feassemble::Quadrature* q =
(pylith::feassemble::Quadrature*) obj;
const int size = TestQuadrature_numQuadPts(obj) *
TestQuadrature_numBasis(obj) *
TestQuadrature_cellDim(obj);
double* vals = (size > 0) ? new double[size] : 0;
-const double* basisDeriv = pylith::feassemble::TestQuadrature::basisDeriv(*q);
+const double* basisDeriv = pylith::feassemble::TestQuadrature::basisDerivQuad(*q);
memcpy(vals, basisDeriv, size*sizeof(double));
return vals;
#}embed
@@ -108,9 +108,9 @@
#}embed
# ----------------------------------------------------------------------
-def basis(qhandle):
+def basisQuad(qhandle):
"""
- Call TestQuadrature::basis().
+ Call TestQuadrature::basisQuad().
"""
if not qhandle.name == "pylith_feassemble_Quadrature":
raise TypeError, \
@@ -125,16 +125,16 @@
numBasis = TestQuadrature_numBasis(qptr)
cdef double* values
- values = TestQuadrature_basis(qptr)
+ values = TestQuadrature_basisQuad(qptr)
dims = [numQuadPts, numBasis]
valuesObj = PyCObject_FromVoidPtr(values, NULL)
return spatialdata.utils.simplearray.SimpleCppArray(valuesObj, dims, "double")
# ----------------------------------------------------------------------
-def basisDeriv(qhandle):
+def basisDerivQuad(qhandle):
"""
- Call TestQuadrature::basisDeriv().
+ Call TestQuadrature::basisDerivQuad().
"""
if not qhandle.name == "pylith_feassemble_Quadrature":
raise TypeError, \
@@ -151,7 +151,7 @@
cellDim = TestQuadrature_cellDim(qptr)
cdef double* values
- values = TestQuadrature_basisDeriv(qptr)
+ values = TestQuadrature_basisDerivQuad(qptr)
dims = [numQuadPts, numBasis, cellDim]
valuesObj = PyCObject_FromVoidPtr(values, NULL)
return spatialdata.utils.simplearray.SimpleCppArray(valuesObj, dims,
More information about the cig-commits
mailing list