# sfepy.discrete.fem.fields_nodal module

## Notes

Important attributes of continuous (order > 0) `Field` and `SurfaceField` instances:

- vertex_remap : econn[:, :n_vertex] = vertex_remap[conn]

- vertex_remap_i : conn = vertex_remap_i[econn[:, :n_vertex]]

where conn is the mesh vertex connectivity, econn is the region-local field connectivity.

class sfepy.discrete.fem.fields_nodal.GlobalNodalLikeBasis(**kwargs)
  get_surface_basis(region)

    Get basis for projections to region’s facets.

    Notes

    Cannot be uses for all fields because IGA does not support surface mappings.

class sfepy.discrete.fem.fields_nodal.H1DiscontinuousField(name, dtype, shape, region, approx_order=1)

  The C0 constant-per-cell approximation.

  average_to_vertices(dofs)

    Average DOFs of the discontinuous field into the field region vertices.

  extend_dofs(dofs, fill_value=None)

    Extend DOFs to the whole domain using the fill_value, or the smallest value in dofs if fill_value is None.

  family_name = 'volume_H1_lagrange_discontinuous'
  remove_extra_dofs(dofs)

    Remove DOFs defined in higher order nodes (order > 1).

class sfepy.discrete.fem.fields_nodal.H1NodalMixin(**kwargs)
  create_basis_context()

    Create the context required for evaluating the field basis.

  set_dofs(fun=0.0, region=None, dpn=None, warn=None)

    Set the values of DOFs in a given region using a function of space coordinates or value fun.

class sfepy.discrete.fem.fields_nodal.H1NodalSurfaceField(name, dtype, shape, region, approx_order=1)

  A field defined on a surface region.

  family_name = 'surface_H1_lagrange'
  interp_v_vals_to_n_vals(vec)

    Interpolate a function defined by vertex DOF values using the FE surface geometry basis (P1 or Q1) into the extra nodes, i.e. define the extra DOF values.

class sfepy.discrete.fem.fields_nodal.H1NodalVolumeField(name, dtype, shape, region, approx_order=1)

  Lagrange basis nodal approximation.

  family_name = 'volume_H1_lagrange'
  interp_v_vals_to_n_vals(vec)

    Interpolate a function defined by vertex DOF values using the FE geometry basis (P1 or Q1) into the extra nodes, i.e. define the extra DOF values.

class sfepy.discrete.fem.fields_nodal.H1SEMSurfaceField(name, dtype, shape, region, approx_order=1)
  family_name = 'surface_H1_sem'

class sfepy.discrete.fem.fields_nodal.H1SEMVolumeField(name, dtype, shape, region, approx_order=1)

  Spectral element method approximation.

  Uses the Lagrange basis with Legendre-Gauss-Lobatto nodes and quadrature.

  create_basis_context()

    Create the context required for evaluating the field basis.

  family_name = 'volume_H1_sem'

class sfepy.discrete.fem.fields_nodal.H1SNodalSurfaceField(name, dtype, shape, region, approx_order=1)
  family_name = 'surface_H1_serendipity'

class sfepy.discrete.fem.fields_nodal.H1SNodalVolumeField(name, dtype, shape, region, approx_order=1)

  Lagrange basis nodal serendipity approximation with order <= 3.

  create_basis_context()

    Create the context required for evaluating the field basis.

  family_name = 'volume_H1_serendipity'