Example #1
0
    def _setupQuadrature(self):
        """
    Setup quadrature rule for reference cell.
    """
        from FIAT.reference_element import default_simplex
        from FIAT.quadrature import make_quadrature
        from FIATQuadrature import CollocatedQuadratureRule

        if not self.collocateQuad:
            q = make_quadrature(default_simplex(1), self.order)
        else:
            q = CollocatedQuadratureRule(default_simplex(1), self.order)

        return q
Example #2
0
  def _setupQuadrature(self):
    """
    Setup quadrature rule for reference cell.
    """
    from FIAT.reference_element import default_simplex
    from FIAT.quadrature import make_quadrature
    from FIATQuadrature import CollocatedQuadratureRule
      
    if not self.collocateQuad:
      q = make_quadrature(default_simplex(1), self.order)
    else:
      q = CollocatedQuadratureRule(default_simplex(1), self.order)

    return q
Example #3
0
 def _setupElement(self):
     """
 Setup the finite element for reference cell.
 """
     from FIAT.lagrange import Lagrange
     from FIAT.reference_element import default_simplex
     return Lagrange(default_simplex(1), self.degree)
Example #4
0
 def _setupElement(self):
   """
   Setup the finite element for reference cell.
   """
   from FIAT.lagrange import Lagrange
   from FIAT.reference_element import default_simplex
   return Lagrange(default_simplex(1), self.degree)
Example #5
0
  def test_shape(self):
    """
    Test _getShape().
    """
    cell = FIATSimplex()

    from FIAT.reference_element import default_simplex

    cell.cellDim = 1
    shape = cell._getShape()
    self.assertEqual(default_simplex(1).get_shape(), shape.get_shape())

    cell.cellDim = 2
    shape = cell._getShape()
    self.assertEqual(default_simplex(2).get_shape(), shape.get_shape())

    cell.cellDim = 3
    shape = cell._getShape()
    self.assertEqual(default_simplex(3).get_shape(), shape.get_shape())
    return
Example #6
0
  def test_shape(self):
    """
    Test _getShape().
    """
    cell = FIATSimplex()

    from FIAT.reference_element import default_simplex

    cell.cellDim = 1
    shape = cell._getShape()
    self.assertEqual(default_simplex(1).get_shape(), shape.get_shape())

    cell.cellDim = 2
    shape = cell._getShape()
    self.assertEqual(default_simplex(2).get_shape(), shape.get_shape())

    cell.cellDim = 3
    shape = cell._getShape()
    self.assertEqual(default_simplex(3).get_shape(), shape.get_shape())
    return
Example #7
0
import os, sys

# Find PETSc/BuildSystem
if 'PETSC_DIR' in os.environ:
  configDir = os.path.join(os.environ['PETSC_DIR'], 'config')
  bsDir     = os.path.join(configDir, 'BuildSystem')
  sys.path.insert(0, bsDir)
  sys.path.insert(0, configDir)

import PETSc.FEM
from FIAT.reference_element import default_simplex
from FIAT.lagrange import Lagrange

generator  = PETSc.FEM.QuadratureGenerator()
generator.setup()
elements   = []
if not (len(sys.argv)-2) % 5 == 0:
  sys.exit('Incomplete set of arguments')
for n in range((len(sys.argv)-2) / 5):
  dim        = int(sys.argv[n*5+1])
  order      = int(sys.argv[n*5+2])
  components = int(sys.argv[n*5+3])
  numBlocks  = int(sys.argv[n*5+4])
  operator   = sys.argv[n*5+5]
  element    = Lagrange(default_simplex(dim), order)
  element.numComponents = components
  elements.append(element)
filename = sys.argv[-1]
generator.quadDegree = max([e.order for e in elements])
generator.run(elements, numBlocks, operator, filename)
    sys.path.insert(0, bsDir)
    sys.path.insert(0, configDir)
    if os.path.isdir(os.path.join(fiatDir, 'FIAT')):
        sys.path.insert(0, fiatDir)

import PETSc.FEM
from FIAT.reference_element import default_simplex
from FIAT.lagrange import Lagrange
from FIAT.discontinuous_lagrange import DiscontinuousLagrange

generator = PETSc.FEM.QuadratureGenerator()
generator.setup()
elements = []
if not (len(sys.argv) - 2) % 5 == 0:
    sys.exit('Incomplete set of arguments')
for n in range((len(sys.argv) - 2) / 5):
    dim = int(sys.argv[n * 5 + 1])
    order = int(sys.argv[n * 5 + 2])
    components = int(sys.argv[n * 5 + 3])
    numBlocks = int(sys.argv[n * 5 + 4])
    operator = sys.argv[n * 5 + 5]
    if order == 0:
        element = DiscontinuousLagrange(default_simplex(1), order)
    else:
        element = Lagrange(default_simplex(1), order)
    element.numComponents = components
    elements.append(element)
filename = sys.argv[-1]
generator.quadDegree = max([e.order + 1 for e in elements])
generator.runTensorProduct(dim, elements, numBlocks, operator, filename)
  sys.path.insert(0, bsDir)
  sys.path.insert(0, configDir)
  if os.path.isdir(os.path.join(fiatDir,'FIAT')):
    sys.path.insert(0, fiatDir)

import PETSc.FEM
from FIAT.reference_element import default_simplex
from FIAT.lagrange import Lagrange
from FIAT.discontinuous_lagrange import DiscontinuousLagrange

generator  = PETSc.FEM.QuadratureGenerator()
generator.setup()
elements   = []
if not (len(sys.argv)-2) % 5 == 0:
  sys.exit('Incomplete set of arguments')
for n in range((len(sys.argv)-2) / 5):
  dim        = int(sys.argv[n*5+1])
  order      = int(sys.argv[n*5+2])
  components = int(sys.argv[n*5+3])
  numBlocks  = int(sys.argv[n*5+4])
  operator   = sys.argv[n*5+5]
  if order == 0:
    element  = DiscontinuousLagrange(default_simplex(dim), order)
  else:
    element  = Lagrange(default_simplex(dim), order)
  element.numComponents = components
  elements.append(element)
filename = sys.argv[-1]
generator.quadDegree = max([e.order for e in elements])
generator.run(elements, numBlocks, operator, filename)
Example #10
0
import numpy
from FIAT.polynomial_set import mis
from FIAT.reference_element import default_simplex
from FIAT.quadrature import make_quadrature

order = 1
quadrature = make_quadrature(default_simplex(1), order)

from FIAT.lagrange import Lagrange

degree = 1
element = Lagrange(default_simplex(1), degree)

vertices = [n.get_point_dict().keys()[0] for n in element.dual.get_nodes()]

quadpts = numpy.array(quadrature.get_points(), dtype=numpy.float64)
quadwts = numpy.array(quadrature.get_weights(), dtype=numpy.float64)
numQuadPts = len(quadpts)
evals = element.get_nodal_basis().tabulate(quadrature.get_points(), 1)
basis = numpy.array(evals[mis(1, 0)[0]], dtype=numpy.float64).transpose()
numBasis = element.get_nodal_basis().get_num_members()
basisDeriv = numpy.array([evals[alpha] for alpha in mis(1, 1)], dtype=numpy.float64).transpose()

print "order: %d" % order
print "degree: %d" % degree
print "numQuadPts: %d" % numQuadPts
print "basis:" 
print basis
print "basisDeriv:"
print basisDeriv