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 |
node_fields |
AbstractField or None
|
Describes the derivative quantities each node must carry.
|
weights |
list[str]
|
Ordered weight names, e.g. |
deriv |
list[Callable]
|
Derivative evaluation functions: |
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')