# sfepy.discrete.common.poly_spaces module

class sfepy.discrete.common.poly_spaces.PolySpace(name, geometry, order)

  Abstract polynomial space class.

  static any_from_args(name, geometry, order, basis='lagrange', force_bubble=False)

    Construct a particular polynomial space classes according to the arguments passed in.

  eval_basis(coors, diff=0, ori=None, force_axis=False, transform=None, suppress_errors=False, eps=1e-15)

    Evaluate the basis or its first or second derivatives in points given by coordinates. The real work is done in _eval_basis() implemented in subclasses.

    Note that the second derivative code is a work-in-progress and only coors and transform arguments are used.

    Parameters:
      coors array_like

        The coordinates of points where the basis is evaluated. See Notes.

      diff 0, 1 or 2

        If nonzero, return the given derivative.

      ori array_like, optional

        Optional orientation of element facets for per element basis.

      force_axis bool

        If True, force the resulting array shape to have one more axis even when ori is None.

      transform array_like, optional

        The basis transform array.

      suppress_errors bool

        If True, do not report points outside the reference domain.

      eps float

        Accuracy for comparing coordinates.

    Returns:
      basis array

        The basis (shape (n_coor, 1, n_basis)) or its first derivative (shape (n_coor, dim, n_basis)) or its second derivative (shape (n_coor, dim, dim, n_basis)) evaluated in the given points. An additional axis is pre-pended of length n_cell, if ori is given, or of length 1, if force_axis is True.

    Notes

    If coors.ndim == 3, several point sets are assumed, with equal number of points in each of them. This is the case, for example, of the values of the volume basis functions on the element facets. The indexing (of bf_b(g)) is then (ifa,iqp,:,n_ep), so that the facet can be set in C using FMF_SetCell.

  keys = {(0, 1): 'simplex', (1, 2): 'simplex', (2, 3): 'simplex', (2, 4): 'tensor_product', (3, 4): 'simplex', (3, 6): 'wedge', (3, 8): 'tensor_product'}
  static suggest_name(geometry, order, basis='lagrange', force_bubble=False)

    Suggest the polynomial space name given its constructor parameters.

sfepy.discrete.common.poly_spaces.register_poly_space(cls)

sfepy.discrete.common.poly_spaces.transform_basis(transform, bf)

  Transform a basis bf using transform array of matrices.