4#ifndef SVMP_FE_BASIS_BASISFACTORY_H
5#define SVMP_FE_BASIS_BASISFACTORY_H
12#include "BasisFunction.h"
18namespace svmp::FE::basis {
51namespace basis_factory {
68[[nodiscard]] std::unique_ptr<BasisFunction>
create(
const BasisRequest& req);
std::unique_ptr< BasisFunction > create_default_for(ElementType element_type)
Create the default basis for an element type.
Definition BasisFactory.cpp:103
BasisRequest default_basis_request(ElementType element_type)
Return the default basis request (family and order) for an element type.
Definition BasisFactory.cpp:83
BasisTopology
Reference-cell topology of a basis (the shape, independent of order).
Definition BasisTraits.h:28
std::unique_ptr< BasisFunction > create(const BasisRequest &req)
Create a basis from a runtime request.
Definition BasisFactory.cpp:72
@ Unknown
Unrecognized or uninitialized topology.
BasisType
Basis function families.
Definition Types.h:247
FieldType
Field types for function spaces.
Definition Types.h:257
Continuity
Continuity requirements for function spaces.
Definition Types.h:268
ElementType
Reference element types supported by the FE library.
Definition Types.h:215
@ Lagrange
Standard nodal Lagrange basis.
@ Scalar
Scalar field (temperature, pressure)
@ C0
Continuous (standard FEM)
@ Unknown
Unrecognized or uninitialized element type.
Runtime description of a basis to construct.
Definition BasisFactory.h:30
ElementType element_type
Named element layout, or Unknown to request by topology.
Definition BasisFactory.h:31
Continuity continuity
Inter-element continuity (Lagrange/Serendipity are C0).
Definition BasisFactory.h:34
std::optional< int > order
Polynomial order; required by the factory.
Definition BasisFactory.h:33
std::string custom_id
Definition BasisFactory.h:42
FieldType field_type
Field type (Lagrange/Serendipity support Scalar).
Definition BasisFactory.h:35
BasisType basis_type
Basis family to construct.
Definition BasisFactory.h:32
std::vector< double > weights
Reserved for rational (NURBS) families; unused here.
Definition BasisFactory.h:37
std::vector< int > tensor_extents
Reserved for tensor-product extents; unused here.
Definition BasisFactory.h:41
BasisTopology topology
Definition BasisFactory.h:45
std::vector< std::vector< double > > axis_knot_vectors
Reserved for per-axis spline knots; unused here.
Definition BasisFactory.h:39
std::vector< int > axis_orders
Reserved for per-axis tensor spline orders; unused here.
Definition BasisFactory.h:38
std::vector< std::vector< double > > axis_weights
Reserved for per-axis rational weights; unused here.
Definition BasisFactory.h:40
std::vector< double > knot_vector
Reserved for spline/NURBS families; unused here.
Definition BasisFactory.h:36