15 #include "smith/differentiable_numerics/field_store.hpp"
22 class DirichletBoundaryConditions;
23 class BoundaryConditionManager;
37 std::vector<std::shared_ptr<SystemBase>> cycle_zero_systems = {},
38 std::vector<std::shared_ptr<SystemBase>> post_solve_systems = {});
51 std::pair<std::vector<FieldState>, std::vector<ReactionState>>
advanceState(
52 const TimeInfo& time_info,
const FieldState& shape_disp,
const std::vector<FieldState>& states,
53 const std::vector<FieldState>& params)
const override;
56 std::shared_ptr<SystemBase> system_;
57 std::vector<std::shared_ptr<SystemBase>> cycle_zero_systems_;
58 std::vector<std::shared_ptr<SystemBase>> post_solve_systems_;
60 std::map<std::string, size_t> main_unknown_name_to_local_idx_;
64 inline std::shared_ptr<MultiphysicsTimeIntegrator>
makeAdvancer(std::shared_ptr<SystemBase> system)
66 auto cycle_zero_systems = system->cycle_zero_systems;
67 auto post_solve_systems = system->post_solve_systems;
68 return std::make_shared<MultiphysicsTimeIntegrator>(std::move(system), std::move(cycle_zero_systems),
69 std::move(post_solve_systems));
Time integrator for multiphysics problems, coordinating multiple weak forms.
MultiphysicsTimeIntegrator(std::shared_ptr< SystemBase > system, std::vector< std::shared_ptr< SystemBase >> cycle_zero_systems={}, std::vector< std::shared_ptr< SystemBase >> post_solve_systems={})
Construct a multiphysics advancer around main and auxiliary systems.
std::pair< std::vector< FieldState >, std::vector< ReactionState > > advanceState(const TimeInfo &time_info, const FieldState &shape_disp, const std::vector< FieldState > &states, const std::vector< FieldState > ¶ms) const override
Advance the multiphysics state by one time step.
void addPostSolveSystem(std::shared_ptr< SystemBase > system)
Register a system to be solved after the main solve and reaction computation.
Base state advancer class, allows specification for quasi-static solve strategies,...
CombinedSystem and combineSystems for composing independent physics into a coupled system.
Smith mesh class which assists in constructing the appropriate parallel mfem meshes and registering a...
Accelerator functionality.
gretl::State< FEFieldPtr, FEDualPtr > FieldState
typedef
std::shared_ptr< MultiphysicsTimeIntegrator > makeAdvancer(std::shared_ptr< SystemBase > system)
Build a MultiphysicsTimeIntegrator using the system's own auxiliary systems.
This file contains nonlinear block solver interfaces and helpers.
This file contains enumerations and record types for physics solver configuration.
Interface and implementations for advancing from one step to the next. Typically these are time integ...
struct storing time and timestep information
Defines the SystemBase struct for common system functionality.
Provides templated implementations for discretizing values, velocities and accelerations from current...