SERiF v0.0.1a
Stellar Evolution and Rotation in Four Dimensions
Loading...
Searching...
No Matches
serif::operators::backend::mfem::PreparedPointConstraint< EquationT, SchemaT > Class Template Reference

Select one material point, then use the same nodal equation and row actions as a boundary. More...

#include <prepared_point_constraint.hpp>

Inheritance diagram for serif::operators::backend::mfem::PreparedPointConstraint< EquationT, SchemaT >:
[legend]
Collaboration diagram for serif::operators::backend::mfem::PreparedPointConstraint< EquationT, SchemaT >:
[legend]

Public Types

using RowBinding = typename Base::RowBinding
 
- Public Types inherited from serif::operators::backend::mfem::PreparedNodalConstraint< EquationT, SchemaT >
using Test = EquationT::Test
 
using Value = discretization::forms::OperandValue<equations::TestOperandOf<EquationT>>
 
using RowBinding = discretization::backend::mfem::TermBinding<Test, SchemaT>
 

Public Member Functions

 PreparedPointConstraint (EquationT equation, const RowBinding &row)
 The equation specifies a point in the fixed computational mesh.
 
- Public Member Functions inherited from serif::operators::backend::mfem::PreparedNodalConstraint< EquationT, SchemaT >
 PreparedNodalConstraint (EquationT equation, const RowBinding &row, discretization::backend::mfem::DofSelection rows)
 Borrow selected nodal rows; vector selections contain exactly one point in component order.
 
template<typename StateT>
std::expected< void, PreparationRejection > try_prepare (const StateT &state, const PreparationMode mode=PreparationMode::rebuild)
 Freeze the local equation and derivative; rejection invalidates the previous preparation.
 
template<typename StateT>
void prepare (const StateT &state, const PreparationMode mode=PreparationMode::rebuild)
 Prepare or translate a numerical rejection to a caller-visible exception.
 
void apply_residual_rows (::mfem::Vector &result) const
 Replace the selected entries of an assembled residual.
 
template<typename StateT>
void apply_jacobian_rows (const StateT &direction, ::mfem::Vector &result) const
 Replace complete row actions, removing every unconstrained coupling at these rows.
 
void apply_jacobian_rows (const ::mfem::Vector &direction, ::mfem::Vector &result) const
 Apply the same row replacement to a coefficient vector without a state wrapper.
 
void mask_residual_dual (const ::mfem::Vector &dual, ::mfem::Vector &volume_dual) const
 Remove constrained rows BEFORE applying the volume Jacobian transpose.
 
void add_jacobian_transpose_rows (const ::mfem::Vector &dual, ::mfem::Vector &result) const
 Add the nodal transpose AFTER the volume transpose of the masked residual dual.
 
void invalidate () noexcept
 Invalidate frozen residuals and derivatives.
 
bool is_prepared () const noexcept
 Report whether a complete preparation exists.
 
std::size_t preparation_count () const noexcept
 Count successful preparations.
 
const PreparationReport & preparation_report () const noexcept
 Report whether the selected nodal equations were reevaluated.
 
const discretization::backend::mfem::DofSelection & rows () const noexcept
 Return the selected supported coefficient indices.
 
const EquationT & equation () const noexcept
 Expose immutable physics metadata to constraint diagnostics.
 

Private Types

using Base = PreparedNodalConstraint<EquationT, SchemaT>
 

Additional Inherited Members

- Static Public Attributes inherited from serif::operators::backend::mfem::PreparedNodalConstraint< EquationT, SchemaT >
static constexpr int components = discretization::forms::component_count<Value>
 
- Protected Member Functions inherited from serif::operators::backend::mfem::PreparedNodalConstraint< EquationT, SchemaT >
void validate_result (const ::mfem::Vector &result) const
 Reject missing preparation, stale selection, and incorrect output sizes.
 
const NodalData & prepared_data () const
 Read frozen nodal values shared by row replacement and point borders.
 
- Protected Attributes inherited from serif::operators::backend::mfem::PreparedNodalConstraint< EquationT, SchemaT >
std::unique_ptr< const EquationT > m_equation
 
const RowBinding & m_row
 
discretization::backend::mfem::DofSelection m_rows
 

Detailed Description

template<NodalValueEquation EquationT, discretization::domain::schema::IsSchema SchemaT>
requires requires { EquationT::reference_position; }
class serif::operators::backend::mfem::PreparedPointConstraint< EquationT, SchemaT >

Select one material point, then use the same nodal equation and row actions as a boundary.

Member Typedef Documentation

◆ Base

template<NodalValueEquation EquationT, discretization::domain::schema::IsSchema SchemaT>
using serif::operators::backend::mfem::PreparedPointConstraint< EquationT, SchemaT >::Base = PreparedNodalConstraint<EquationT, SchemaT>
private

◆ RowBinding

template<NodalValueEquation EquationT, discretization::domain::schema::IsSchema SchemaT>
using serif::operators::backend::mfem::PreparedPointConstraint< EquationT, SchemaT >::RowBinding = typename Base::RowBinding

Constructor & Destructor Documentation

◆ PreparedPointConstraint()

template<NodalValueEquation EquationT, discretization::domain::schema::IsSchema SchemaT>
serif::operators::backend::mfem::PreparedPointConstraint< EquationT, SchemaT >::PreparedPointConstraint ( EquationT equation,
const RowBinding & row )
inline

The equation specifies a point in the fixed computational mesh.


The documentation for this class was generated from the following file: