24 template <
typename MaterialType,
typename StateType,
typename GradUType,
typename GradVType,
typename ThetaType,
25 typename GradThetaType,
typename... ParamTypes>
27 const GradUType& grad_u,
const GradVType& grad_v, ThetaType theta,
28 const GradThetaType& grad_theta, ParamTypes&&... params)
30 return material(t_info, state, grad_u, grad_v, theta, grad_theta, std::forward<ParamTypes>(params)...);
33 template <
typename MaterialType>
37 using State =
typename MaterialType::State;
42 template <
typename StateType,
typename GradUType,
typename GradVType,
typename TemperatureType,
43 typename TemperatureDotType,
typename... ParamTypes>
46 TemperatureType temperature, TemperatureDotType , ParamTypes&&... params)
const
48 auto [pk, C_v, s0, q0] =
50 get<DERIVATIVE>(temperature), std::forward<ParamTypes>(params)...);
83 template <
int dim,
int disp_order_,
int temp_order_,
typename DispRule,
typename TempRule,
typename SolidCoupling,
84 typename ThermalCoupling,
typename MaterialType>
88 const std::string& domain_name)
92 solid->setMaterial(solid_material, domain_name);
94 thermal->setMaterialAndHeatSource(
95 [=](
const TimeInfo& t_info,
auto temperature,
auto grad_temperature,
auto u,
auto v,
auto ,
auto... params) {
96 typename MaterialType::State state{};
98 material, t_info, state, get<DERIVATIVE>(u), get<DERIVATIVE>(v), temperature, grad_temperature, params...);
auto evaluateCoupledThermoMechanicsMaterial(const MaterialType &material, const TimeInfo &t_info, StateType &state, const GradUType &grad_u, const GradVType &grad_v, ThetaType theta, const GradThetaType &grad_theta, ParamTypes &&... params)
Evaluate coupled thermo-mechanical material using TimeInfo-aware signature.
Accelerator functionality.
mfem::future::tuple< T... > tuple
Expose MFEM tuple in the Smith namespace.
void setCoupledThermoMechanicsMaterial(std::shared_ptr< SolidMechanicsSystem< dim, disp_order_, DispRule, SolidCoupling >> solid, std::shared_ptr< ThermalSystem< dim, temp_order_, TempRule, ThermalCoupling >> thermal, const MaterialType &material, const std::string &domain_name)
Register a coupled thermo-mechanical material integrand on a SolidMechanicsSystem and ThermalSystem t...
Defines the SolidMechanicsSystem struct and its factory function.
System struct for solid dynamics with configurable time integration.
Container for a thermal system with configurable time integration.
struct storing time and timestep information
Adapts coupled thermo-mechanical material to solid-system material interface.
typename MaterialType::State State
Material state type forwarded to solid system.
double density
Material density exposed for solid residual.
auto operator()(const TimeInfo &t_info, StateType &state, GradUType grad_u, GradVType grad_v, TemperatureType temperature, TemperatureDotType, ParamTypes &&... params) const
Evaluate wrapped material and return solid PK1 contribution.
MaterialType material
Wrapped thermo-mechanical material.
Defines the ThermalSystem struct and its factory function.