[cig-commits] [commit] baagaard/remove-1d: Remove more 1-D stuff from Python unit tests. (fee2d21)

cig_noreply at geodynamics.org cig_noreply at geodynamics.org
Thu Nov 7 13:05:00 PST 2013


Repository : ssh://geoshell/pylith

On branch  : baagaard/remove-1d
Link       : https://github.com/geodynamics/pylith/compare/10bcfba6a95bb40194bae7f5118dcec6ecec37ea...fee2d21087aa203cf566bb3844f5706379cfbc36

>---------------------------------------------------------------

commit fee2d21087aa203cf566bb3844f5706379cfbc36
Author: Brad Aagaard <baagaard at usgs.gov>
Date:   Thu Nov 7 13:07:33 2013 -0800

    Remove more 1-D stuff from Python unit tests.


>---------------------------------------------------------------

fee2d21087aa203cf566bb3844f5706379cfbc36
 pylith/feassemble/FIATSimplex.py                   | 71 +++++++++-------------
 unittests/pytests/feassemble/TestMeshQuadrature.py | 70 ++++++++++-----------
 unittests/pytests/materials/TestMaterial.py        |  4 +-
 3 files changed, 68 insertions(+), 77 deletions(-)

diff --git a/pylith/feassemble/FIATSimplex.py b/pylith/feassemble/FIATSimplex.py
index 4185410..e96f3e1 100644
--- a/pylith/feassemble/FIATSimplex.py
+++ b/pylith/feassemble/FIATSimplex.py
@@ -91,47 +91,36 @@ class FIATSimplex(ReferenceCell):
     """
     self._setupGeometry(spaceDim)
 
-    if self.cellDim == 0:
-      # Need 0-D quadrature for boundary conditions of 1-D meshes
-      self.cellDim = 0
-      self.numCorners = 1
-      self.numQuadPts = 1
-      self.basis = numpy.array([[1.0]], dtype=numpy.float64)
-      self.basisDeriv = numpy.array([[[1.0]]], dtype=numpy.float64)
-      self.quadPts = numpy.array([[0.0]], dtype=numpy.float64)
-      self.quadWts = numpy.array([1.0], dtype=numpy.float64)
-      self.vertices = numpy.array([[0.0]], dtype=numpy.float64)
-    else:
-      quadrature = self._setupQuadrature()
-      basisFns = self._setupBasisFns()
-
-      # Get coordinates of vertices (dual basis)
-      vertices = numpy.array(self._setupVertices(), dtype=numpy.float64)
-
-      # Evaluate basis functions at quadrature points
-      from FIAT.polynomial_set import mis
-      quadpts = quadrature.get_points()
-      dim     = basisFns.ref_el.get_spatial_dimension()
-      evals   = basisFns.tabulate(quadpts, 1)
-      basis   = numpy.array(evals[mis(dim, 0)[0]], dtype=numpy.float64).transpose()
-
-      # Evaluate derivatives of basis functions at quadrature points
-      basisDeriv = numpy.array([evals[alpha] for alpha in mis(dim, 1)], dtype=numpy.float64).transpose()
-
-      self.cellDim = dim
-      self.numCorners = basisFns.get_num_members()
-      self.numQuadPts = len(quadrature.get_weights())
-
-      # Permute from FIAT order to Sieve order
-      p = self._permutationFIATToSieve()
-      self.vertices = vertices[p,:]
-      self.basis = numpy.reshape(basis[:,p].flatten(), basis.shape)
-      self.basisDeriv = numpy.reshape(basisDeriv[:,p,:].flatten(), 
-                                      basisDeriv.shape)
-
-      # No permutation in order of quadrature points
-      self.quadPts = numpy.array(quadrature.get_points(), dtype=numpy.float64)
-      self.quadWts = numpy.array(quadrature.get_weights(), dtype=numpy.float64)
+    quadrature = self._setupQuadrature()
+    basisFns = self._setupBasisFns()
+
+    # Get coordinates of vertices (dual basis)
+    vertices = numpy.array(self._setupVertices(), dtype=numpy.float64)
+
+    # Evaluate basis functions at quadrature points
+    from FIAT.polynomial_set import mis
+    quadpts = quadrature.get_points()
+    dim     = basisFns.ref_el.get_spatial_dimension()
+    evals   = basisFns.tabulate(quadpts, 1)
+    basis   = numpy.array(evals[mis(dim, 0)[0]], dtype=numpy.float64).transpose()
+
+    # Evaluate derivatives of basis functions at quadrature points
+    basisDeriv = numpy.array([evals[alpha] for alpha in mis(dim, 1)], dtype=numpy.float64).transpose()
+
+    self.cellDim = dim
+    self.numCorners = basisFns.get_num_members()
+    self.numQuadPts = len(quadrature.get_weights())
+
+    # Permute from FIAT order to Sieve order
+    p = self._permutationFIATToSieve()
+    self.vertices = vertices[p,:]
+    self.basis = numpy.reshape(basis[:,p].flatten(), basis.shape)
+    self.basisDeriv = numpy.reshape(basisDeriv[:,p,:].flatten(), 
+                                    basisDeriv.shape)
+
+    # No permutation in order of quadrature points
+    self.quadPts = numpy.array(quadrature.get_points(), dtype=numpy.float64)
+    self.quadWts = numpy.array(quadrature.get_weights(), dtype=numpy.float64)
 
 
     from pylith.mpi.Communicator import mpi_comm_world
diff --git a/unittests/pytests/feassemble/TestMeshQuadrature.py b/unittests/pytests/feassemble/TestMeshQuadrature.py
index 3cd27b7..68b58a2 100644
--- a/unittests/pytests/feassemble/TestMeshQuadrature.py
+++ b/unittests/pytests/feassemble/TestMeshQuadrature.py
@@ -29,22 +29,31 @@ from pylith.feassemble.FIATLagrange import FIATLagrange
 
 # ----------------------------------------------------------------------
 def N0(p):
-  return -0.5*p*(1.0-p)
+  return 0.5*(-p[0]-p[1])
 
 def N0p(p):
-  return -0.5*(1.0-p) + 0.5*p
+  return -0.5
+
+def N0q(p):
+  return -0.5
 
 def N1(p):
-  return 0.5*p*(1.0+p)
+  return 0.5*(1.0+p[0])
 
 def N1p(p):
-  return +0.5*(1.0+p) + 0.5*p
+  return +0.5
+
+def N1q(p):
+  return 0.0
 
 def N2(p):
-  return (1.0-p**2)
+  return 0.5*(1.0+p[1])
 
 def N2p(p):
-  return -2.0*p
+  return 0.0
+
+def N2q(p):
+  return 0.5
 
 # ----------------------------------------------------------------------
 class TestMeshQuadrature(unittest.TestCase):
@@ -88,9 +97,8 @@ class TestMeshQuadrature(unittest.TestCase):
     Test initialize().
     """
     cell = FIATSimplex()
-    cell.inventory.dimension = 1
-    cell.inventory.degree = 2
-    cell.inventory.order = 2
+    cell.inventory.dimension = 2
+    cell.inventory.order = 1
     cell._configure()
 
     scalarType = None
@@ -102,46 +110,40 @@ class TestMeshQuadrature(unittest.TestCase):
     else:
       raise ValueError("Unknown size for PylithScalar.")
 
-    verticesE = numpy.array([ [-1.0], [1.0], [0.0] ])
-    quadPtsE = numpy.array( [[-1.0/3**0.5],
-                             [+1.0/3**0.5]],
-                            dtype=scalarType )
-    quadWtsE = numpy.array( [1.0, 1.0], dtype=scalarType )
+    verticesE = numpy.array([ [-1.0, -1.0],
+                              [+1.0, -1.0],
+                              [-1.0, +1.0] ])
+    quadPtsE = numpy.array( [[-1.0/3.0, -1.0/3.0]], dtype=scalarType )
+    quadWtsE = numpy.array( [2.0], dtype=scalarType )
 
     # Compute basis functions and derivatives at quadrature points
-    basisE = numpy.zeros( (2, 3), dtype=scalarType)
-    basisDerivE = numpy.zeros( (2, 3, 1), dtype=scalarType)
+    basisE = numpy.zeros( (1, 3), dtype=scalarType)
+    basisDerivE = numpy.zeros( (1, 3, 2), dtype=scalarType)
     iQuad = 0
-    for q in quadPtsE:
-      basisE[iQuad] = numpy.array([N0(q), N1(q), N2(q)],
-                                  dtype=scalarType).reshape( (3,) )
-      deriv = numpy.array([[N0p(q)], [N1p(q)], [N2p(q)]],
-                          dtype=scalarType)      
-      basisDerivE[iQuad] = deriv.reshape((3, 1))
+    for x in quadPtsE:
+      basisE[iQuad] = numpy.array([N0(x), N1(x), N2(x)], dtype=scalarType).reshape( (3,) )
+      deriv = numpy.array([[N0p(x), N0q(x)], [N1p(x), N1q(x)], [N2p(x), N2q(x)]], dtype=scalarType)      
+      basisDerivE[iQuad] = deriv.reshape((1, 3, 2))
       iQuad += 1
 
     quadrature = Quadrature()
     quadrature.inventory.cell = cell
     quadrature._configure()
 
-    quadrature.preinitialize(spaceDim=1)
+    quadrature.preinitialize(spaceDim=2)
     quadrature.initialize()
 
-    self.assertEqual(1, quadrature.cellDim())
-    self.assertEqual(1, quadrature.spaceDim())
+    self.assertEqual(2, quadrature.cellDim())
+    self.assertEqual(2, quadrature.spaceDim())
     self.assertEqual(3, quadrature.numBasis())
-    self.assertEqual(2, quadrature.numQuadPts())
+    self.assertEqual(1, quadrature.numQuadPts())
 
     from pylith.utils.utils import TestArray_checkScalar
 
-    self.failUnless(TestArray_checkScalar(basisE.ravel(),
-                                          quadrature.basis()))
-    self.failUnless(TestArray_checkScalar(basisDerivE.ravel(),
-                                          quadrature.basisDerivRef()))
-    self.failUnless(TestArray_checkScalar(quadPtsE.ravel(),
-                                          quadrature.quadPtsRef()))
-    self.failUnless(TestArray_checkScalar(quadWtsE.ravel(),
-                                          quadrature.quadWts()))
+    self.failUnless(TestArray_checkScalar(basisE.ravel(), quadrature.basis()))
+    self.failUnless(TestArray_checkScalar(basisDerivE.ravel(), quadrature.basisDerivRef()))
+    self.failUnless(TestArray_checkScalar(quadPtsE.ravel(), quadrature.quadPtsRef()))
+    self.failUnless(TestArray_checkScalar(quadWtsE.ravel(), quadrature.quadWts()))
 
     quadrature.initializeGeometry()
     return
diff --git a/unittests/pytests/materials/TestMaterial.py b/unittests/pytests/materials/TestMaterial.py
index feea39a..00bab4c 100644
--- a/unittests/pytests/materials/TestMaterial.py
+++ b/unittests/pytests/materials/TestMaterial.py
@@ -141,7 +141,7 @@ class TestMaterial(unittest.TestCase):
     """
     from pylith.feassemble.FIATSimplex import FIATSimplex
     cell = FIATSimplex()
-    cell.inventory.dimension = 1
+    cell.inventory.dimension = 2
     cell.inventory.order = 1
     cell.inventory.degree = 1
     cell._configure()
@@ -172,7 +172,7 @@ class TestMaterial(unittest.TestCase):
 
     from spatialdata.geocoords.CSCart import CSCart
     cs = CSCart()
-    cs.inventory.spaceDim = 1
+    cs.inventory.spaceDim = 2
     cs._configure()
 
     from spatialdata.units.Nondimensional import Nondimensional



More information about the CIG-COMMITS mailing list