Skip to content

API – basis_definitions

HOMER.basis_definitions.AbstractBasis(fn=None, node_fields=None, weights=None, deriv=None, order=None, node_locs=None) dataclass

Abstract base class for all 1-D basis function definitions.

Concrete subclasses (e.g. :class:H3Basis, :class:L2Basis) are frozen dataclasses that define the class attributes below. They are passed as classes (not instances) to :class:~HOMER.mesher.MeshElement.

Attributes:

Name Type Description
fn Callable

Basis evaluation function fn(x) -> ndarray (n_pts, n_basis).

node_fields AbstractField or None

Describes the derivative quantities each node must carry. None for pure Lagrange bases.

weights list[str]

Ordered weight names, e.g. ['x0', 'dx0', 'x1', 'dx1']. Names starting with 'dx' indicate derivative entries.

deriv list[Callable]

Derivative evaluation functions: [fn, d1_fn, d2_fn, …].

order int

Polynomial order of the basis.

node_locs list[float]

Canonical node positions in [0, 1].


HOMER.basis_definitions.H3Basis(fn=None, node_fields=None, weights=None, deriv=None, order=None, node_locs=None) dataclass

Bases: AbstractBasis

Cubic Hermite basis (C¹ continuity, 2 nodes, 4 weights per direction).

Each node contributes a position and a tangent derivative: ['x0', 'dx0', 'x1', 'dx1']. Requires each :class:~HOMER.mesher.MeshNode to carry Hermite derivative fields (du, dv, … depending on the element dimensionality).

Best choice for smooth geometry where derivative continuity across element boundaries is important.


HOMER.basis_definitions.L1Basis(fn=None, node_fields=None, weights=None, deriv=None, order=None, node_locs=None) dataclass

Bases: AbstractBasis

Linear Lagrange basis (C⁰ continuity, 2 nodes per direction).

Each node contributes only a position weight. No derivative fields are required on the associated :class:~HOMER.mesher.MeshNode objects.

Useful for coarse linear meshes that are subsequently :meth:~HOMER.mesher.MeshField.rebase-d to a higher-order basis.


HOMER.basis_definitions.L2Basis(fn=None, node_fields=None, weights=None, deriv=None, order=None, node_locs=None) dataclass

Bases: AbstractBasis

Quadratic Lagrange basis (C⁰ continuity, 3 nodes per direction).

Provides second-order accuracy with 3 nodes per direction and no derivative fields on nodes.


HOMER.basis_definitions.L3Basis(fn=None, node_fields=None, weights=None, deriv=None, order=None, node_locs=None) dataclass

Bases: AbstractBasis

Cubic Lagrange basis (C⁰ continuity, 4 nodes per direction).

Third-order accuracy with uniformly-spaced node positions at 0, 1/3, 2/3, 1. No derivative fields required on nodes.


HOMER.basis_definitions.L4Basis(fn=None, node_fields=None, weights=None, deriv=None, order=None, node_locs=None) dataclass

Bases: AbstractBasis

Quartic Lagrange basis (C⁰ continuity, 5 nodes per direction).

Fourth-order accuracy with uniformly-spaced node positions at 0, 1/4, 2/4, 3/4, 1. No derivative fields required on nodes.


HOMER.basis_definitions.DerivativeField(n_field=1, _field_scaling=deriv_fields) dataclass

Bases: AbstractField

Descriptor for Hermite-style derivative fields on a node.

When a mesh element uses :class:H3Basis in n parametric directions, each node needs an increasing set of mixed-derivative vectors:

  • 1 Hermite direction → ('du',)
  • 2 Hermite directions → ('du', 'dv', 'dudv')
  • 3 Hermite directions → ('du', 'dv', 'dw', 'dudv', 'dudw', 'dvdw', 'dudvdw')