[cig-commits] r4675 -
short/3D/PyLith/trunk/unittests/libtests/feassemble/data
brad at geodynamics.org
brad at geodynamics.org
Sun Oct 1 20:08:12 PDT 2006
Author: brad
Date: 2006-10-01 20:08:12 -0700 (Sun, 01 Oct 2006)
New Revision: 4675
Added:
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DLinear.cc
short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DLinear.hh
Modified:
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/generate.sh
Log:
Started working on tests for 3D quadrature.
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature3DLinear.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature3DLinear.py 2006-09-30 20:28:50 UTC (rev 4674)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature3DLinear.py 2006-10-02 03:08:12 UTC (rev 4675)
@@ -10,10 +10,10 @@
# ----------------------------------------------------------------------
#
-## @file unittests/libtests/feassemble/data/Quadrature2DLinear.py
+## @file unittests/libtests/feassemble/data/Quadrature3DLinear.py
## @brief Python application for generating C++ data files for testing
-## C++ Quadrature2D object w/linear basis functions.
+## C++ Quadrature3D object w/linear basis functions.
from QuadratureApp import QuadratureApp
@@ -21,7 +21,7 @@
# ----------------------------------------------------------------------
def N0(p):
- return 1.0-p[0]-p[1]
+ return 1.0-p[0]-p[1]-p[2]
def N0p(p):
return -1.0
@@ -29,6 +29,9 @@
def N0q(p):
return -1.0
+def N0r(p):
+ return -1.0
+
def N1(p):
return p[0]
@@ -38,6 +41,9 @@
def N1q(p):
return 0.0
+def N1r(p):
+ return 0.0
+
def N2(p):
return p[1]
@@ -47,13 +53,28 @@
def N2q(p):
return 1.0
+def N2r(p):
+ return 0.0
+
+def N3(p):
+ return p[2]
+
+def N3p(p):
+ return 0.0
+
+def N3q(p):
+ return 0.0
+
+def N3r(p):
+ return 1.0
+
# ----------------------------------------------------------------------
-# Quadrature2DLinear class
-class Quadrature2DLinear(QuadratureApp):
+# Quadrature3DLinear class
+class Quadrature3DLinear(QuadratureApp):
"""
Python application for generating C++ data files for testing C++
- Quadrature2D object w/linear basis functions.
+ Quadrature3D object w/linear basis functions.
"""
# PUBLIC METHODS /////////////////////////////////////////////////////
@@ -64,19 +85,21 @@
"""
QuadratureApp.__init__(self, name)
- self.numVertices = 3
- self.spaceDim = 2
+ self.numVertices = 4
+ self.spaceDim = 3
self.numCells = 1
- self.cellDim = 2
- self.numCorners = 3
+ self.cellDim = 3
+ self.numCorners = 4
self.numQuadPts = 1
- self.quadPtsRef = numpy.array( [[1.0/3.0, 1.0/3.0]], dtype=numpy.Float64)
- self.quadWts = numpy.array([0.5], dtype=numpy.Float64)
- self.vertices = numpy.array( [[0.2, -0.4],
- [0.3, 0.5],
- [-1.0, -0.2]], dtype=numpy.Float64)
- self.cells = numpy.array( [[0, 1, 2]], dtype=numpy.Int32)
+ self.quadPtsRef = numpy.array( [[1.0/3.0, 1.0/3.0, 1.0/3.0]],
+ dtype=numpy.Float64)
+ self.quadWts = numpy.array([1.0/6.0], dtype=numpy.Float64)
+ self.vertices = numpy.array( [[-0.5, -1.0, -0.5],
+ [ 2.0, -0.5, -0.4],
+ [ 1.0, -0.1, -0.3],
+ [-0.2, 0.5, 2.0]], dtype=numpy.Float64)
+ self.cells = numpy.array( [[0, 1, 2, 3]], dtype=numpy.Int32)
return
@@ -96,13 +119,15 @@
iQuad = 0
for q in self.quadPtsRef:
# Basis functions at quadrature points
- basis = numpy.array([N0(q), N1(q), N2(q)], dtype=numpy.Float64)
+ basis = numpy.array([N0(q), N1(q), N2(q), N3(q)], dtype=numpy.Float64)
self.basis[iQuad] = basis.reshape( (self.numCorners,) )
# 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)
+ deriv = numpy.array([[N0p(q), N0q(q), N0r(q)],
+ [N1p(q), N1q(q), N1r(q)],
+ [N2p(q), N2q(q), N2r(q)],
+ [N3p(q), N3q(q), N3r(q)]],
+ dtype=numpy.Float64)
self.basisDeriv[iQuad] = deriv.reshape((self.numCorners, self.cellDim))
iQuad += 1
@@ -112,7 +137,7 @@
# MAIN /////////////////////////////////////////////////////////////////
if __name__ == "__main__":
- app = Quadrature2DLinear()
+ app = Quadrature3DLinear()
app.run()
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature3DQuadratic.py
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature3DQuadratic.py 2006-09-30 20:28:50 UTC (rev 4674)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/Quadrature3DQuadratic.py 2006-10-02 03:08:12 UTC (rev 4675)
@@ -10,10 +10,10 @@
# ----------------------------------------------------------------------
#
-## @file unittests/libtests/feassemble/data/Quadrature2DQuadratic.py
+## @file unittests/libtests/feassemble/data/Quadrature3DQuadratic.py
## @brief Python application for generating C++ data files for testing
-## C++ Quadrature2D object w/quadratic basis functions.
+## C++ Quadrature3D object w/quadratic basis functions.
from QuadratureApp import QuadratureApp
@@ -21,23 +21,29 @@
# ----------------------------------------------------------------------
def N0(p):
- return (1.0-p[0]-p[1])*(1-2.0*p[0]-2.0*p[1])
+ return (1.0-p[0]-p[1]-p[2])*(1-2.0*p[0]-2.0*p[1]-2.0*p[2])
def N0p(p):
- return 4.0*p[0]+4.0*p[1]-3.0
+ return 3.0*p[0]+3.0*p[1]+3.0*p[2]+3.0
def N0q(p):
- return 4.0*p[0]+4.0*p[1]-3.0
+ return 3.0*p[0]+3.0*p[1]+3.0*p[2]+3.0
+def N0r(p):
+ return 3.0*p[0]+3.0*p[1]+3.0*p[2]+3.0
+
def N1(p):
return p[0]*(2.0*p[0]-1.0)
def N1p(p):
- return 4.0*p[0]-1.0
+ return 4.0*p[0]-1
def N1q(p):
return 0.0
+def N1r(p):
+ return 0.0
+
def N2(p):
return p[1]*(2.0*p[1]-1.0)
@@ -47,45 +53,105 @@
def N2q(p):
return 4.0*p[1]-1.0
+def N2r(p):
+ return 0.0
+
def N3(p):
- return 4.0*p[0]*(1.0-p[0]-p[1])
+ return p[2]*(2.0*p[2]-1.0)
def N3p(p):
- return -8.0*p[0]-4.0*p[1]+4.0
+ return 0.0
def N3q(p):
- return -4.0*p[0]
+ return 0.0
+def N3r(p):
+ return 4.0*p[2]-1.0
+
def N4(p):
- return 4.0*p[0]*p[1]
+ return 4.0*p[0]*(1.0-p[0]-p[1]-p[2])
def N4p(p):
- return 4.0*p[1]
+ return -8.0*p[0]+4.0*(1.0-p[1]-p[2])
def N4q(p):
- return 4.0*p[0]
+ return -4.0*p[0]
+def N4r(p):
+ return -4.0*p[0]
+
def N5(p):
- return 4.0*p[1]*(1.0-p[0]-p[1])
+ return 4.0*p[1]*(1.0-p[0]-p[1]-p[2])
def N5p(p):
return -4.0*p[1]
def N5q(p):
- return -8.0*p[1]-4.0*p[0]+4.0
+ return -8.0*p[1]+4.0*(1.0-p[0]-p[2])
+def N5r(p):
+ return -4.0*p[1]
+
+def N6(p):
+ return 4.0*p[2]*(1.0-p[0]-p[1]-p[2])
+
+def N6p(p):
+ return -4.0*p[2]
+
+def N6q(p):
+ return -4.0*p[2]
+
+def N6r(p):
+ return -8.0*p[2]+4.0*(1.0-p[0]-p[1])
+
+def N7(p):
+ return 4.0*p[0]*p[1]*(1.0-2.0*p[2])
+
+def N7p(p):
+ return 4.0*p[1]-8.0*p[1]*p[2]
+
+def N7q(p):
+ return 4.0*p[0]-8.0*p[0]*p[2]
+
+def N7r(p):
+ return -8.0*p[0]*p[1]
+
+def N8(p):
+ return 4.0*p[1]*p[2]*(1.0-2.0*p[0])
+
+def N8p(p):
+ return -8.0*p[1]*p[2]
+
+def N8q(p):
+ return 4.0*p[2]-8.0*p[0]*p[2]
+
+def N8r(p):
+ return 4.0*p[1]-8.0*p[0]*p[1]
+
+def N9(p):
+ return 4.0*p[0]*p[2]*(1.0-2.0*p[1])
+
+def N9p(p):
+ return 4.0*p[2]-8.0*p[1]*p[2]
+
+def N9q(p):
+ return -8.0*p[0]*p[2]
+
+def N9r(p):
+ return 4.0*p[0]-8.0*p[0]*p[1]
+
# ----------------------------------------------------------------------
-# Quadrature2DQuadratic class
-class Quadrature2DQuadratic(QuadratureApp):
+# Quadrature3DQuadratic class
+class Quadrature3DQuadratic(QuadratureApp):
"""
Python application for generating C++ data files for testing C++
- Quadrature2D object w/quadratic basis functions.
+ Quadrature3D object w/quadratic basis functions.
"""
# PUBLIC METHODS /////////////////////////////////////////////////////
- def __init__(self, name="quadrature2dquadratic"):
+ def __init__(self, name="quadrature3dquadratic"):
"""
Constructor.
"""
@@ -104,12 +170,16 @@
dtype=numpy.Float64)
self.quadWts = numpy.array([1.0/6.0, 1.0/6.0, 1.0/6.0],
dtype=numpy.Float64)
- self.vertices = numpy.array( [[-1.0, -1.0],
- [+1.0, +0.2],
- [-1.5, +0.5],
- [+0.0, -0.6],
- [+0.25, +0.35],
- [-1.25, -0.25]],
+ self.vertices = numpy.array( [[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]],
dtype=numpy.Float64)
self.cells = numpy.array( [[0, 1, 2, 3, 4, 5]], dtype=numpy.Int32)
@@ -153,7 +223,7 @@
# MAIN /////////////////////////////////////////////////////////////////
if __name__ == "__main__":
- app = Quadrature2DQuadratic()
+ app = Quadrature3DQuadratic()
app.run()
Added: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DLinear.cc
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DLinear.cc 2006-09-30 20:28:50 UTC (rev 4674)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DLinear.cc 2006-10-02 03:08:12 UTC (rev 4675)
@@ -0,0 +1,104 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+// DO NOT EDIT THIS FILE
+// This file was generated from python application quadrature1dlinear.
+
+#include "QuadratureData3DLinear.hh"
+
+const int pylith::feassemble::QuadratureData3DLinear::_numVertices = 4;
+
+const int pylith::feassemble::QuadratureData3DLinear::_spaceDim = 3;
+
+const int pylith::feassemble::QuadratureData3DLinear::_numCells = 1;
+
+const int pylith::feassemble::QuadratureData3DLinear::_cellDim = 3;
+
+const int pylith::feassemble::QuadratureData3DLinear::_numCorners = 4;
+
+const int pylith::feassemble::QuadratureData3DLinear::_numQuadPts = 1;
+
+const double pylith::feassemble::QuadratureData3DLinear::_vertices[] = {
+ -5.00000000e-01, -1.00000000e+00, -5.00000000e-01,
+ 2.00000000e+00, -5.00000000e-01, -4.00000000e-01,
+ 1.00000000e+00, -1.00000000e-01, -3.00000000e-01,
+ -2.00000000e-01, 5.00000000e-01, 2.00000000e+00,
+};
+
+const int pylith::feassemble::QuadratureData3DLinear::_cells[] = {
+ 0, 1, 2, 3,
+};
+
+const double pylith::feassemble::QuadratureData3DLinear::_quadPtsRef[] = {
+ 3.33333333e-01, 3.33333333e-01, 3.33333333e-01,
+};
+
+const double pylith::feassemble::QuadratureData3DLinear::_quadWts[] = {
+ 1.66666667e-01,
+};
+
+const double pylith::feassemble::QuadratureData3DLinear::_basis[] = {
+ 1.11022302e-16, 3.33333333e-01, 3.33333333e-01,
+ 3.33333333e-01,};
+
+const double pylith::feassemble::QuadratureData3DLinear::_basisDeriv[] = {
+ -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[] = {
+ 9.33333333e-01, -3.33333333e-02, 4.33333333e-01,
+};
+
+const double pylith::feassemble::QuadratureData3DLinear::_jacobian[] = {
+ 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[] = {
+ 3.22800000e+00,
+};
+
+const double pylith::feassemble::QuadratureData3DLinear::_jacobianInv[] = {
+ 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,
+};
+
+pylith::feassemble::QuadratureData3DLinear::QuadratureData3DLinear(void)
+{ // constructor
+ numVertices = _numVertices;
+ spaceDim = _spaceDim;
+ numCells = _numCells;
+ cellDim = _cellDim;
+ numCorners = _numCorners;
+ numQuadPts = _numQuadPts;
+ vertices = const_cast<double*>(_vertices);
+ 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);
+} // constructor
+
+pylith::feassemble::QuadratureData3DLinear::~QuadratureData3DLinear(void)
+{}
+
+
+// End of file
Added: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DLinear.hh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DLinear.hh 2006-09-30 20:28:50 UTC (rev 4674)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/QuadratureData3DLinear.hh 2006-10-02 03:08:12 UTC (rev 4675)
@@ -0,0 +1,76 @@
+// -*- C++ -*-
+//
+// ======================================================================
+//
+// Brad T. Aagaard
+// U.S. Geological Survey
+//
+// {LicenseText}
+//
+// ======================================================================
+//
+
+// DO NOT EDIT THIS FILE
+// This file was generated from python application quadrature1dlinear.
+
+#if !defined(pylith_feassemble_quadraturedata3dlinear_hh)
+#define pylith_feassemble_quadraturedata3dlinear_hh
+
+#include "QuadratureData.hh"
+
+namespace pylith {
+ namespace feassemble {
+ class QuadratureData3DLinear;
+ } // pylith
+} // feassemble
+
+class pylith::feassemble::QuadratureData3DLinear : public QuadratureData
+{
+
+public:
+
+ /// Constructor
+ QuadratureData3DLinear(void);
+
+ /// Destructor
+ ~QuadratureData3DLinear(void);
+
+private:
+
+ static const int _numVertices;
+
+ static const int _spaceDim;
+
+ static const int _numCells;
+
+ static const int _cellDim;
+
+ static const int _numCorners;
+
+ static const int _numQuadPts;
+
+ static const double _vertices[];
+
+ static const int _cells[];
+
+ static const double _quadPtsRef[];
+
+ static const double _quadWts[];
+
+ static const double _basis[];
+
+ static const double _basisDeriv[];
+
+ static const double _quadPts[];
+
+ static const double _jacobian[];
+
+ static const double _jacobianDet[];
+
+ static const double _jacobianInv[];
+
+};
+
+#endif // pylith_feassemble_quadraturedata3dlinear_hh
+
+// End of file
Modified: short/3D/PyLith/trunk/unittests/libtests/feassemble/data/generate.sh
===================================================================
--- short/3D/PyLith/trunk/unittests/libtests/feassemble/data/generate.sh 2006-09-30 20:28:50 UTC (rev 4674)
+++ short/3D/PyLith/trunk/unittests/libtests/feassemble/data/generate.sh 2006-10-02 03:08:12 UTC (rev 4675)
@@ -79,4 +79,11 @@
--data.object=QuadratureData2Din3DQuadratic \
--data.parent=QuadratureData
+# 3-D ------------------------------------------------------------------
+
+python Quadrature3DLinear.py \
+ --data.namespace=pylith,feassemble \
+ --data.object=QuadratureData3DLinear \
+ --data.parent=QuadratureData
+
# End of file
More information about the cig-commits
mailing list