|
| | EquilibriumEvaluator (std::shared_ptr< const Bound > bound, Graph graph, Layout layout, AdditionalInputs additional, Observers observers=Observers{}) |
| | Retain the physical and finite-element owners before constructing the reusable cache.
|
| |
| const Layout & | layout () const noexcept |
| | Inspect the independently ordered physical unknown and residual coordinates.
|
| |
| const Cache & | cache () const noexcept |
| | Inspect the latest evaluation's work report and requested graph services.
|
| |
| const auto & | model () const noexcept |
| | Inspect the immutable physical definition used by every evaluation.
|
| |
| const Bound & | binding () const noexcept |
| | Inspect the owned physical and FE bindings for solver geometry and numerical policies.
|
| |
template<typename... InputsT>
requires requires(EquilibriumEvaluator& evaluator, const InputsT&... inputs) { evaluator.template evaluate_result<ResultKey>(inputs...); } |
| Evaluation | evaluate (const InputsT &... inputs) |
| | Evaluate a candidate without preparing its inverse.
|
| |
template<typename... InputsT>
requires utils::dependencies::ContainsKey<preconditioning::PreparedSystem, typename Graph::Results> && requires(EquilibriumEvaluator& evaluator, const InputsT&... inputs) { evaluator.template evaluate_result<preconditioning::PreparedSystem>(inputs...); } |
| auto | prepare_linear_system (const InputsT &... inputs) -> decltype(evaluate_result< preconditioning::PreparedSystem >(inputs...)) |
| | Prepare an owning Jacobian and matching inverse only when a linear correction is needed.
|
| |
|
template<typename RequestedKey, typename Coefficients, typename Geometry>
requires (detail::coefficient_inputs<Coefficients>(typename Plan::Coefficients{})) |
| auto | evaluate_result (const Coefficients &coefficients, const Geometry &geometry, utils::dependencies::PreparationMode mode=utils::dependencies::PreparationMode::reuse_unchanged) -> EvaluationFor< RequestedKey > |
| | Evaluate explicitly bound fields and geometry, allowing arbitrary caller-owned storage.
|
| |
template<typename RequestedKey, utils::dependencies::IsDependencyContext Prescribed = utils::dependencies::DependencyContext<>>
requires Plan::has_shape |
| &&detail::PrescribedInputsFor< Plan, Prescribed > auto | evaluate_result (const StellarState< Layout > &state, const Prescribed &prescribed=Prescribed{}, utils::dependencies::PreparationMode mode=utils::dependencies::PreparationMode::reuse_unchanged) -> EvaluationFor< RequestedKey > |
| | Evaluate a moving star directly from its physical fields and shape in one owning state.
|
| |
template<typename RequestedKey, utils::dependencies::IsDependencyContext Prescribed = utils::dependencies::DependencyContext<>>
requires (!Plan::has_shape) && detail::PrescribedInputsFor<Plan, Prescribed> |
| auto | evaluate_result (const StellarState< Layout > &state, const ::mfem::Vector &displacement, const Prescribed &prescribed=Prescribed{}, utils::dependencies::PreparationMode mode=utils::dependencies::PreparationMode::reuse_unchanged) -> EvaluationFor< RequestedKey > |
| | Evaluate a fixed-geometry star; prescribed displacement is independent of its solved fields.
|
| |
| void | validate_state (const StellarState< Layout > &state) |
| | Reject a same-type state with incompatible coordinate sizes before constructing backend views.
|
| |
template<typename Bound, typename Graph, typename Inputs, typename AdditionalInputs = utils::dependencies::DependencyContext<>, typename ResultKey = keys::PhysicalSystem, utils::dependencies::IsKeyList EvaluationServices = utils::dependencies::KeyList<>, utils::dependencies::IsKeyList LinearServices = utils::dependencies::KeyList<>, typename Observers = utils::dependencies::Observers<>>
class serif::model::backend::mfem::EquilibriumEvaluator< Bound, Graph, Inputs, AdditionalInputs, ResultKey, EvaluationServices, LinearServices, Observers >
Evaluate explicit stellar candidates using one reusable dependency cache.
- Note
- Successful evaluation returns an owning frozen result; it does not accept a solver step. Retain that handle while evaluating other candidates. Numerical rejection makes the current cache unavailable without changing previously returned results. This object never owns the caller's state.
template<typename Bound, typename Graph, typename Inputs, typename AdditionalInputs = utils::dependencies::DependencyContext<>, typename ResultKey = keys::PhysicalSystem, utils::dependencies::IsKeyList EvaluationServices = utils::dependencies::KeyList<>, utils::dependencies::IsKeyList LinearServices = utils::dependencies::KeyList<>, typename Observers = utils::dependencies::Observers<>>
template<typename RequestedKey>
template<typename Bound, typename Graph, typename Inputs, typename AdditionalInputs = utils::dependencies::DependencyContext<>, typename ResultKey = keys::PhysicalSystem, utils::dependencies::IsKeyList EvaluationServices = utils::dependencies::KeyList<>, utils::dependencies::IsKeyList LinearServices = utils::dependencies::KeyList<>, typename Observers = utils::dependencies::Observers<>>
| serif::model::backend::mfem::EquilibriumEvaluator< Bound, Graph, Inputs, AdditionalInputs, ResultKey, EvaluationServices, LinearServices, Observers >::EquilibriumEvaluator |
( |
std::shared_ptr< const Bound > | bound, |
|
|
Graph | graph, |
|
|
Layout | layout, |
|
|
AdditionalInputs | additional, |
|
|
Observers | observers = Observers{} ) |
|
inline |
Retain the physical and finite-element owners before constructing the reusable cache.
template<typename Bound, typename Graph, typename Inputs, typename AdditionalInputs = utils::dependencies::DependencyContext<>, typename ResultKey = keys::PhysicalSystem, utils::dependencies::IsKeyList EvaluationServices = utils::dependencies::KeyList<>, utils::dependencies::IsKeyList LinearServices = utils::dependencies::KeyList<>, typename Observers = utils::dependencies::Observers<>>
Inspect the owned physical and FE bindings for solver geometry and numerical policies.
template<typename Bound, typename Graph, typename Inputs, typename AdditionalInputs = utils::dependencies::DependencyContext<>, typename ResultKey = keys::PhysicalSystem, utils::dependencies::IsKeyList EvaluationServices = utils::dependencies::KeyList<>, utils::dependencies::IsKeyList LinearServices = utils::dependencies::KeyList<>, typename Observers = utils::dependencies::Observers<>>
Inspect the latest evaluation's work report and requested graph services.
template<typename Bound, typename Graph, typename Inputs, typename AdditionalInputs = utils::dependencies::DependencyContext<>, typename ResultKey = keys::PhysicalSystem, utils::dependencies::IsKeyList EvaluationServices = utils::dependencies::KeyList<>, utils::dependencies::IsKeyList LinearServices = utils::dependencies::KeyList<>, typename Observers = utils::dependencies::Observers<>>
Evaluate a candidate without preparing its inverse.
- Parameters
-
| inputs | An owning state (and prescribed inputs), or explicit coefficient and geometry views. Fixed-geometry states also take the prescribed displacement. A final PreparationMode is optional. Selected evaluation services are prepared in the same transaction; linear-only services remain unrequested. |
template<typename Bound, typename Graph, typename Inputs, typename AdditionalInputs = utils::dependencies::DependencyContext<>, typename ResultKey = keys::PhysicalSystem, utils::dependencies::IsKeyList EvaluationServices = utils::dependencies::KeyList<>, utils::dependencies::IsKeyList LinearServices = utils::dependencies::KeyList<>, typename Observers = utils::dependencies::Observers<>>
template<typename RequestedKey, typename Coefficients, typename Geometry>
requires (
detail::coefficient_inputs<Coefficients>(typename Plan::Coefficients{}))
Evaluate explicitly bound fields and geometry, allowing arbitrary caller-owned storage.
- Note
- Nonfinite coefficients are numerical rejections. Incorrect bindings and sizes are caller errors. Either failure invalidates current cache access before returning or reporting the error.
template<typename Bound, typename Graph, typename Inputs, typename AdditionalInputs = utils::dependencies::DependencyContext<>, typename ResultKey = keys::PhysicalSystem, utils::dependencies::IsKeyList EvaluationServices = utils::dependencies::KeyList<>, utils::dependencies::IsKeyList LinearServices = utils::dependencies::KeyList<>, typename Observers = utils::dependencies::Observers<>>
template<typename RequestedKey, utils::dependencies::IsDependencyContext Prescribed = utils::dependencies::DependencyContext<>>
requires (!Plan::has_shape) && detail::PrescribedInputsFor<
Plan, Prescribed>
| auto serif::model::backend::mfem::EquilibriumEvaluator< Bound, Graph, Inputs, AdditionalInputs, ResultKey, EvaluationServices, LinearServices, Observers >::evaluate_result |
( |
const StellarState< Layout > & | state, |
|
|
const ::mfem::Vector & | displacement, |
|
|
const Prescribed & | prescribed = Prescribed{}, |
|
|
utils::dependencies::PreparationMode | mode = utils::dependencies::PreparationMode::reuse_unchanged ) -> EvaluationFor<RequestedKey> |
|
inlinenodiscardprivate |
Evaluate a fixed-geometry star; prescribed displacement is independent of its solved fields.
template<typename Bound, typename Graph, typename Inputs, typename AdditionalInputs = utils::dependencies::DependencyContext<>, typename ResultKey = keys::PhysicalSystem, utils::dependencies::IsKeyList EvaluationServices = utils::dependencies::KeyList<>, utils::dependencies::IsKeyList LinearServices = utils::dependencies::KeyList<>, typename Observers = utils::dependencies::Observers<>>
template<typename RequestedKey, utils::dependencies::IsDependencyContext Prescribed = utils::dependencies::DependencyContext<>>
requires Plan::has_shape
| &&detail::PrescribedInputsFor< Plan, Prescribed > auto serif::model::backend::mfem::EquilibriumEvaluator< Bound, Graph, Inputs, AdditionalInputs, ResultKey, EvaluationServices, LinearServices, Observers >::evaluate_result |
( |
const StellarState< Layout > & | state, |
|
|
const Prescribed & | prescribed = Prescribed{}, |
|
|
utils::dependencies::PreparationMode | mode = utils::dependencies::PreparationMode::reuse_unchanged ) -> EvaluationFor<RequestedKey> |
|
inlinenodiscardprivate |
Evaluate a moving star directly from its physical fields and shape in one owning state.
template<typename Bound, typename Graph, typename Inputs, typename AdditionalInputs = utils::dependencies::DependencyContext<>, typename ResultKey = keys::PhysicalSystem, utils::dependencies::IsKeyList EvaluationServices = utils::dependencies::KeyList<>, utils::dependencies::IsKeyList LinearServices = utils::dependencies::KeyList<>, typename Observers = utils::dependencies::Observers<>>
Inspect the independently ordered physical unknown and residual coordinates.
template<typename Bound, typename Graph, typename Inputs, typename AdditionalInputs = utils::dependencies::DependencyContext<>, typename ResultKey = keys::PhysicalSystem, utils::dependencies::IsKeyList EvaluationServices = utils::dependencies::KeyList<>, utils::dependencies::IsKeyList LinearServices = utils::dependencies::KeyList<>, typename Observers = utils::dependencies::Observers<>>
Inspect the immutable physical definition used by every evaluation.
template<typename Bound, typename Graph, typename Inputs, typename AdditionalInputs = utils::dependencies::DependencyContext<>, typename ResultKey = keys::PhysicalSystem, utils::dependencies::IsKeyList EvaluationServices = utils::dependencies::KeyList<>, utils::dependencies::IsKeyList LinearServices = utils::dependencies::KeyList<>, typename Observers = utils::dependencies::Observers<>>
Prepare an owning Jacobian and matching inverse only when a linear correction is needed.
- Parameters
-
| inputs | The same candidate and optional preparation arguments accepted by evaluate(). |
- Note
- A numerical inverse failure preserves every previously returned preparation.
template<typename Bound, typename Graph, typename Inputs, typename AdditionalInputs = utils::dependencies::DependencyContext<>, typename ResultKey = keys::PhysicalSystem, utils::dependencies::IsKeyList EvaluationServices = utils::dependencies::KeyList<>, utils::dependencies::IsKeyList LinearServices = utils::dependencies::KeyList<>, typename Observers = utils::dependencies::Observers<>>
Reject a same-type state with incompatible coordinate sizes before constructing backend views.