[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