def test_initialize(self): """ Test initialize(). """ cell = FIATSimplex() cell.inventory.dimension = 2 cell.inventory.order = 1 cell._configure() scalarType = None from pylith.utils.utils import sizeofPylithScalar if 8 == sizeofPylithScalar(): scalarType = numpy.float64 elif 4 == sizeofPylithScalar(): scalarType = numpy.float32 else: raise ValueError("Unknown size for PylithScalar.") 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( (1, 3), dtype=scalarType) basisDerivE = numpy.zeros( (1, 3, 2), dtype=scalarType) iQuad = 0 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=2) quadrature.initialize() self.assertEqual(2, quadrature.cellDim()) self.assertEqual(2, quadrature.spaceDim()) self.assertEqual(3, quadrature.numBasis()) 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())) quadrature.initializeGeometry() return
def test_lagrange3D(self): """ Test setup of quadrature for Lagrange cells for a 3-D problem. """ spaceDim = 3 cell = FIATLagrange() cell.inventory.dimension = 3 cell._configure() quadrature = Quadrature() quadrature.inventory.cell = cell quadrature._configure() quadrature.preinitialize(spaceDim) self.assertEqual(3, quadrature.cellDim()) self.assertEqual(spaceDim, quadrature.spaceDim()) self.assertEqual(8, quadrature.numBasis()) return
def test_simplex2D(self): """ Test setup of quadrature for simplex cells for a 2-D problem. """ spaceDim = 2 cell = FIATSimplex() cell.inventory.dimension = 2 cell._configure() quadrature = Quadrature() quadrature.inventory.cell = cell quadrature._configure() quadrature.preinitialize(spaceDim) self.assertEqual(2, quadrature.cellDim()) self.assertEqual(spaceDim, quadrature.spaceDim()) self.assertEqual(3, quadrature.numBasis()) return
def test_lagrange3D(self): """ Test setup of quadrature for Lagrange cells for a 3-D problem. """ spaceDim = 3 cell = FIATLagrange() cell.inventory.dimension = 3 cell._configure() quadrature = Quadrature() quadrature.inventory.cell = cell quadrature._configure() quadrature.preinitialize(spaceDim) self.assertEqual(3, quadrature.cellDim()) self.assertEqual(spaceDim, quadrature.spaceDim()) self.assertEqual(8, quadrature.numBasis()) return
def test_simplex2D(self): """ Test setup of quadrature for simplex cells for a 2-D problem. """ spaceDim = 2 cell = FIATSimplex() cell.inventory.dimension = 2 cell._configure() quadrature = Quadrature() quadrature.inventory.cell = cell quadrature._configure() quadrature.preinitialize(spaceDim) self.assertEqual(2, quadrature.cellDim()) self.assertEqual(spaceDim, quadrature.spaceDim()) self.assertEqual(3, quadrature.numBasis()) return
def test_initialize(self): """ Test initialize(). """ cell = FIATSimplex() cell.inventory.dimension = 2 cell.inventory.order = 1 cell._configure() scalarType = None from pylith.utils.utils import sizeofPylithScalar if 8 == sizeofPylithScalar(): scalarType = numpy.float64 elif 4 == sizeofPylithScalar(): scalarType = numpy.float32 else: raise ValueError("Unknown size for PylithScalar.") 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((1, 3), dtype=scalarType) basisDerivE = numpy.zeros((1, 3, 2), dtype=scalarType) iQuad = 0 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=2) quadrature.initialize() self.assertEqual(2, quadrature.cellDim()) self.assertEqual(2, quadrature.spaceDim()) self.assertEqual(3, quadrature.numBasis()) 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())) quadrature.initializeGeometry() return