equilibrium.hpp serif/backend/mfem/solver/equilibrium.hpp serif/solver/nonlinear/newton.hpp serif/model/finite_elements.hpp src/include/serif/solver/continuation/equilibrium.hpp src/include/serif/solver/solver.hpp serif serif::solver #pragmaonce #include"serif/backend/mfem/solver/equilibrium.hpp" #include"serif/solver/nonlinear/newton.hpp" #include"serif/model/finite_elements.hpp" namespaceserif::solver{ usingVolumeOptions=operators::backend::mfem::VolumeOptions; template<typenameConfiguration,typenameLayout,typenameOptions=SolverOptions<>,typenameObserver=NoObserver,utils::dependencies::IsDependencyContextInputs=utils::dependencies::DependencyContext<>, typenameObserverFactory=utils::dependencies::NoGraphObservers> requiresutils::dependencies::ContainsKey<discretization::blocks::surface_deformation::coefficients,typenameLayout::Values> [[nodiscard]]autosolve_equilibrium( Configurationconfiguration, model::StellarState<Layout>initial_state, Optionsoptions={}, Observerobserver={}, VolumeOptionsvolume_options={}, Inputsprescribed=Inputs{}, ObserverFactoryobserver_factory={} ){ autoproblem=backend::mfem::make_observed_stellar_problem(std::move(configuration),initial_state,options.strategies, volume_options,std::move(prescribed),std::move(observer_factory)); returnsolve_newton(problem,std::move(initial_state),std::move(options),std::move(observer)); } template<typenameConfiguration,typenameLayout,typenameOptions=SolverOptions<>,typenameObserver=NoObserver, utils::dependencies::IsDependencyContextInputs=utils::dependencies::DependencyContext<>, typenameObserverFactory=utils::dependencies::NoGraphObservers> requires(!utils::dependencies::ContainsKey<discretization::blocks::surface_deformation::coefficients,typenameLayout::Values>) [[nodiscard]]autosolve_equilibrium(Configurationconfiguration,model::StellarState<Layout>initial_state, constVector&displacement,Optionsoptions={},Observerobserver={}, VolumeOptionsvolume_options={},Inputsprescribed=Inputs{},ObserverFactoryobserver_factory={}){ autoproblem=backend::mfem::make_observed_stellar_problem(std::move(configuration),initial_state,options.strategies, volume_options,std::move(prescribed),std::move(observer_factory),displacement); returnsolve_newton(problem,std::move(initial_state),std::move(options),std::move(observer)); } template<typenameConfiguration,typenameLayout,typenameOptions=SolverOptions<>,typenameObserver=NoObserver, utils::dependencies::IsDependencyContextInputs=utils::dependencies::DependencyContext<>, typenameObserverFactory=utils::dependencies::NoGraphObservers> requiresutils::dependencies::ContainsKey<discretization::blocks::surface_deformation::coefficients,typenameLayout::Values> [[nodiscard]]autoresume_equilibrium(Configurationconfiguration,NewtonCheckpoint<model::StellarState<Layout>>checkpoint, Optionsoptions={},Observerobserver={},VolumeOptionsvolume_options={},Inputsprescribed=Inputs{},ObserverFactoryobserver_factory={}){ autoproblem=backend::mfem::make_observed_stellar_problem(std::move(configuration),checkpoint.state,options.strategies, volume_options,std::move(prescribed),std::move(observer_factory)); returnresume_newton(problem,std::move(checkpoint),std::move(options),std::move(observer)); } template<typenameConfiguration,typenameLayout,typenameOptions=SolverOptions<>,typenameObserver=NoObserver, utils::dependencies::IsDependencyContextInputs=utils::dependencies::DependencyContext<>, typenameObserverFactory=utils::dependencies::NoGraphObservers> requires(!utils::dependencies::ContainsKey<discretization::blocks::surface_deformation::coefficients,typenameLayout::Values>) [[nodiscard]]autoresume_equilibrium(Configurationconfiguration,NewtonCheckpoint<model::StellarState<Layout>>checkpoint, constVector&displacement,Optionsoptions={},Observerobserver={}, VolumeOptionsvolume_options={},Inputsprescribed=Inputs{},ObserverFactoryobserver_factory={}){ autoproblem=backend::mfem::make_observed_stellar_problem(std::move(configuration),checkpoint.state,options.strategies, volume_options,std::move(prescribed),std::move(observer_factory),displacement); returnresume_newton(problem,std::move(checkpoint),std::move(options),std::move(observer)); } }