[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