SERiF v0.0.1a
Stellar Evolution and Rotation in Four Dimensions
Loading...
Searching...
No Matches
nodal_inputs.hpp File Reference
Include dependency graph for nodal_inputs.hpp:
This graph shows which files directly or indirectly include this file:

Classes

struct  serif::operators::backend::mfem::nodal_keys::Scoped< Scope >
 Name the private point selection and accepted results of one equation. More...
 
struct  serif::operators::backend::mfem::nodal_keys::Scoped< Scope >::Bindings
 
struct  serif::operators::backend::mfem::nodal_keys::Scoped< Scope >::Samples
 
struct  serif::operators::backend::mfem::nodal_keys::Scoped< Scope >::Linearization
 
struct  serif::operators::backend::mfem::nodal_keys::Scoped< Scope >::BorderLinearization
 
struct  serif::operators::backend::mfem::NodalBindings
 Reference-coordinate edits invalidate a point selection even when coefficients are unchanged. More...
 
struct  serif::operators::backend::mfem::NodalBindingTracking
 Validate the live selection before comparing equation-local metadata snapshots. More...
 
struct  serif::operators::backend::mfem::SelectedNodalValues
 Selected coefficients are owned by the context; the selection has a stable shared identity. More...
 
struct  serif::operators::backend::mfem::NodalValueTracking
 Moving the context or copying equal coefficients does not invalidate the nodal calculation. More...
 

Namespaces

namespace  serif
 
namespace  serif::operators
 
namespace  serif::operators::backend
 
namespace  serif::operators::backend::mfem
 
namespace  serif::operators::backend::mfem::nodal_keys
 

Typedefs

using serif::operators::backend::mfem::nodal_keys::Linearization = Scoped<void>::Linearization
 
using serif::operators::backend::mfem::nodal_keys::BorderLinearization = Scoped<void>::BorderLinearization
 
template<typename Scope, typename Test>
using serif::operators::backend::mfem::nodal_keys::SelectedInput = std::conditional_t<std::is_void_v<Scope>, Test, typename Scoped<Scope>::Samples>
 Preserve the standalone source spelling while distinguishing scoped selections.
 

Functions

template<NodalValueEquation EquationT, discretization::domain::schema::IsSchema SchemaT>
void serif::operators::backend::mfem::validate_nodal_selection (const NodalDiscretization< EquationT, SchemaT > &discretization)
 Check stored selection invariants before dereferencing or gathering any coefficient.
 
template<NodalValueEquation EquationT, discretization::domain::schema::IsSchema SchemaT>
void serif::operators::backend::mfem::validate_nodal_discretization (const NodalDiscretization< EquationT, SchemaT > &discretization)
 Admit only nodal spaces and the complete selection required by the equation's point or boundary support.
 
template<NodalValueEquation EquationT, discretization::domain::schema::IsSchema SchemaT>
auto serif::operators::backend::mfem::make_nodal_discretization (const discretization::backend::mfem::TermBinding< typename EquationT::Test, SchemaT > &residual_binding, discretization::backend::mfem::DofSelection selected_rows)
 Validate a caller-supplied selection immediately, before constructing its computation graph.
 
template<NodalValueEquation EquationT, discretization::domain::schema::IsSchema SchemaT>
requires requires { EquationT::reference_position; }
auto serif::operators::backend::mfem::make_point_discretization (const discretization::backend::mfem::TermBinding< typename EquationT::Test, SchemaT > &residual_binding)
 Select the equation's physical point once; coordinate changes require a new selection.
 
template<NodalValueEquation EquationT, discretization::domain::schema::IsSchema SchemaT>
requires (discretization::domain::IsBoundary<equations::SupportOf<EquationT>> && discretization::blocks::SpatialTermTraits<typename EquationT::Test>::rank == 0)
auto serif::operators::backend::mfem::make_boundary_discretization (const discretization::backend::mfem::TermBinding< typename EquationT::Test, SchemaT > &residual_binding)
 Select the scalar equation's boundary through its declared schema support.
 
template<AffinePointEquation EquationT, discretization::domain::schema::IsSchema SchemaT>
auto serif::operators::backend::mfem::make_point_border_discretization (const discretization::backend::mfem::TermBinding< typename EquationT::Test, SchemaT > &residual_binding, const discretization::backend::mfem::TermBinding< typename EquationT::Border, SchemaT > &border_binding)
 Couple the selected scalar point to a global scalar on the same mesh.
 
template<NodalValueEquation EquationT, discretization::domain::schema::IsSchema SchemaT, typename CoefficientsT>
SelectedNodalValues serif::operators::backend::mfem::select_nodal_values (const NodalDiscretization< EquationT, SchemaT > &discretization, const CoefficientsT &term_coefficients)
 Validate the whole supplied vector, but cache only coefficients selected by this equation.
 
template<typename Scope = void, NodalValueEquation EquationT, discretization::domain::schema::IsSchema SchemaT, typename CoefficientsT>
auto serif::operators::backend::mfem::make_nodal_dependency_context (const NodalDiscretization< EquationT, SchemaT > &discretization, const CoefficientsT &term_coefficients)
 The test term keys the selected coefficients needed by a nodal equation.
 
template<typename Scope = void, AffinePointEquation EquationT, discretization::domain::schema::IsSchema SchemaT, typename CoefficientsT>
auto serif::operators::backend::mfem::make_point_border_dependency_context (const PointBorderDiscretization< EquationT, SchemaT > &discretization, const CoefficientsT &term_coefficients)
 A border scalar is a separate tracked source; changing it does not reevaluate the point equation.
 
template<typename Scope = void, NodalValueEquation EquationT, discretization::domain::schema::IsSchema SchemaT, typename CoefficientsT>
auto serif::operators::backend::mfem::make_nodal_binding_input (const NodalDiscretization< EquationT, SchemaT > &discretization, const CoefficientsT &term_coefficients)
 Supply equation-local selection metadata and the common physical coefficient source.
 
template<typename Scope = void, NodalValueEquation EquationT, discretization::domain::schema::IsSchema SchemaT, typename CoefficientsT>
auto serif::operators::backend::mfem::make_nodal_inputs (const NodalDiscretization< EquationT, SchemaT > &discretization, const CoefficientsT &term_coefficients)
 Supply a standalone nodal equation with its metadata and physical source.
 
template<typename Scope = void, AffinePointEquation EquationT, discretization::domain::schema::IsSchema SchemaT, typename CoefficientsT>
auto serif::operators::backend::mfem::make_point_border_binding_input (const PointBorderDiscretization< EquationT, SchemaT > &discretization, const CoefficientsT &term_coefficients)
 Validate a point border while sharing its field coefficients with other model equations.
 
template<typename Scope = void, AffinePointEquation EquationT, discretization::domain::schema::IsSchema SchemaT, typename CoefficientsT>
auto serif::operators::backend::mfem::make_point_border_inputs (const PointBorderDiscretization< EquationT, SchemaT > &discretization, const CoefficientsT &term_coefficients)
 Add the common physical sources consumed by a standalone affine point-border computation.