Smith  0.1
Smith is an implicit thermal structural mechanics simulation code.
Public Types | Public Member Functions | Public Attributes | List of all members
smith::ThermoMechanicsSystem< dim, disp_order, temp_order, DisplacementTimeRule, TemperatureTimeRule, parameter_space > Struct Template Reference

Container for a coupled thermo-mechanical system with configurable time integration. More...

#include <thermo_mechanics_system.hpp>

Collaboration diagram for smith::ThermoMechanicsSystem< dim, disp_order, temp_order, DisplacementTimeRule, TemperatureTimeRule, parameter_space >:
Collaboration graph
[legend]

Public Types

using SolidWeakFormType = TimeDiscretizedWeakForm< dim, H1< disp_order, dim >, Parameters< H1< disp_order, dim >, H1< disp_order, dim >, H1< disp_order, dim >, H1< disp_order, dim >, H1< temp_order >, H1< temp_order >, parameter_space... > >
 using for SolidWeakFormType
 
using ThermalWeakFormType = TimeDiscretizedWeakForm< dim, H1< temp_order >, Parameters< H1< temp_order >, H1< temp_order >, H1< disp_order, dim >, H1< disp_order, dim >, H1< disp_order, dim >, H1< disp_order, dim >, parameter_space... > >
 using for ThermalWeakFormType
 
using CycleZeroWeakFormType = TimeDiscretizedWeakForm< dim, H1< disp_order, dim >, Parameters< H1< disp_order, dim >, H1< disp_order, dim >, H1< disp_order, dim >, H1< temp_order >, H1< temp_order >, parameter_space... > >
 using for CycleZeroWeakFormType
 

Public Member Functions

std::vector< FieldStategetStateFields () const
 Get the list of all state fields (disp_pred, disp, vel, accel, temp_pred, temp). More...
 
std::vector< ReactionInfogetReactionInfos () const
 Get information about reaction fields for this system. More...
 
std::unique_ptr< DifferentiablePhysicscreateDifferentiablePhysics (std::string physics_name)
 Create a DifferentiablePhysics object for this system. More...
 
template<typename MaterialType >
void setMaterial (const MaterialType &material, const std::string &domain_name)
 Set the material model for a domain, defining integrals for solid and thermal weak forms. More...
 
template<int... active_parameters, typename BodyForceType >
void addSolidBodyForce (DependsOn< active_parameters... > depends_on, const std::string &domain_name, BodyForceType force_function)
 Add a body force to the solid mechanics part of the system (with DependsOn).
 
template<typename BodyForceType >
void addSolidBodyForce (const std::string &domain_name, BodyForceType force_function)
 Add a body force to the solid mechanics part of the system.
 
template<int... active_parameters, typename SurfaceFluxType >
void addSolidTraction (DependsOn< active_parameters... > depends_on, const std::string &domain_name, SurfaceFluxType flux_function)
 Add a surface traction to the solid mechanics part (with DependsOn).
 
template<typename SurfaceFluxType >
void addSolidTraction (const std::string &domain_name, SurfaceFluxType flux_function)
 Add a surface traction to the solid mechanics part.
 
template<int... active_parameters, typename BodySourceType >
void addHeatSource (DependsOn< active_parameters... > depends_on, const std::string &domain_name, BodySourceType source_function)
 Add a body heat source to the thermal part (with DependsOn).
 
template<typename BodySourceType >
void addHeatSource (const std::string &domain_name, BodySourceType source_function)
 Add a body heat source to the thermal part.
 
template<int... active_parameters, typename SurfaceFluxType >
void addHeatFlux (DependsOn< active_parameters... > depends_on, const std::string &domain_name, SurfaceFluxType flux_function)
 Add a boundary heat flux to the thermal part (with DependsOn).
 
template<typename SurfaceFluxType >
void addHeatFlux (const std::string &domain_name, SurfaceFluxType flux_function)
 Add a boundary heat flux to the thermal part.
 
template<int... active_parameters, typename PressureType >
void addPressure (DependsOn< active_parameters... > depends_on, const std::string &domain_name, PressureType pressure_function)
 Add a pressure boundary condition (follower force) to the solid part (with DependsOn).
 
template<typename PressureType >
void addPressure (const std::string &domain_name, PressureType pressure_function)
 Add a pressure boundary condition (follower force) to the solid part.
 
- Public Member Functions inherited from smith::SystemBase
const std::vector< FieldState > & getParameterFields () const
 Get the list of all parameter fields. More...
 
std::string prefix (const std::string &name) const
 Helper function to prepend the physics name to a string. More...
 
std::vector< ReactionInfogetReactionInfos () const
 Metadata for dual outputs exported by this system.
 

Public Attributes

std::shared_ptr< SolidWeakFormTypesolid_weak_form
 Solid mechanics weak form.
 
std::shared_ptr< ThermalWeakFormTypethermal_weak_form
 Thermal weak form.
 
std::shared_ptr< CycleZeroWeakFormTypecycle_zero_weak_form
 Cycle-zero weak form.
 
std::shared_ptr< DirichletBoundaryConditionsdisp_bc
 Displacement boundary conditions.
 
std::shared_ptr< DirichletBoundaryConditionstemperature_bc
 Temperature boundary conditions.
 
std::shared_ptr< DisplacementTimeRule > disp_time_rule
 Time integration for displacement.
 
std::shared_ptr< TemperatureTimeRule > temperature_time_rule
 Time integration for temperature.
 
- Public Attributes inherited from smith::SystemBase
std::shared_ptr< FieldStorefield_store
 Field store managing the system's fields.
 
std::shared_ptr< CoupledSystemSolversolver
 The solver for the system.
 
std::shared_ptr< StateAdvanceradvancer
 The state advancer.
 
std::vector< FieldStateparameter_fields
 Optional parameter fields.
 
std::string prepend_name
 Optional prepended name for all fields.
 

Detailed Description

template<int dim, int disp_order, int temp_order, typename DisplacementTimeRule = QuasiStaticSecondOrderTimeIntegrationRule, typename TemperatureTimeRule = BackwardEulerFirstOrderTimeIntegrationRule, typename... parameter_space>
struct smith::ThermoMechanicsSystem< dim, disp_order, temp_order, DisplacementTimeRule, TemperatureTimeRule, parameter_space >

Container for a coupled thermo-mechanical system with configurable time integration.

Displacement uses a 4-state second-order layout (displacement_solve_state, displacement, velocity, acceleration). Temperature uses a 2-state first-order layout (temperature_solve_state, temperature). Total: 6 state fields.

Template Parameters
dimSpatial dimension.
disp_orderOrder of the displacement basis.
temp_orderOrder of the temperature basis.
DisplacementTimeRuleTime integration rule type for displacement (must have num_states == 4).
TemperatureTimeRuleTime integration rule type for temperature (must have num_states == 2).
parameter_spaceFinite element spaces for optional parameters.

Definition at line 43 of file thermo_mechanics_system.hpp.

Member Function Documentation

◆ createDifferentiablePhysics()

template<int dim, int disp_order, int temp_order, typename DisplacementTimeRule = QuasiStaticSecondOrderTimeIntegrationRule, typename TemperatureTimeRule = BackwardEulerFirstOrderTimeIntegrationRule, typename... parameter_space>
std::unique_ptr<DifferentiablePhysics> smith::ThermoMechanicsSystem< dim, disp_order, temp_order, DisplacementTimeRule, TemperatureTimeRule, parameter_space >::createDifferentiablePhysics ( std::string  physics_name)
inline

Create a DifferentiablePhysics object for this system.

Parameters
physics_nameThe name of the physics.
Returns
std::unique_ptr<DifferentiablePhysics> The differentiable physics object.

Definition at line 104 of file thermo_mechanics_system.hpp.

◆ getReactionInfos()

template<int dim, int disp_order, int temp_order, typename DisplacementTimeRule = QuasiStaticSecondOrderTimeIntegrationRule, typename TemperatureTimeRule = BackwardEulerFirstOrderTimeIntegrationRule, typename... parameter_space>
std::vector<ReactionInfo> smith::ThermoMechanicsSystem< dim, disp_order, temp_order, DisplacementTimeRule, TemperatureTimeRule, parameter_space >::getReactionInfos ( ) const
inline

Get information about reaction fields for this system.

Returns
List of ReactionInfo structures.

Definition at line 93 of file thermo_mechanics_system.hpp.

◆ getStateFields()

template<int dim, int disp_order, int temp_order, typename DisplacementTimeRule = QuasiStaticSecondOrderTimeIntegrationRule, typename TemperatureTimeRule = BackwardEulerFirstOrderTimeIntegrationRule, typename... parameter_space>
std::vector<FieldState> smith::ThermoMechanicsSystem< dim, disp_order, temp_order, DisplacementTimeRule, TemperatureTimeRule, parameter_space >::getStateFields ( ) const
inline

Get the list of all state fields (disp_pred, disp, vel, accel, temp_pred, temp).

Returns
std::vector<FieldState> List of state fields.

Definition at line 79 of file thermo_mechanics_system.hpp.

◆ setMaterial()

template<int dim, int disp_order, int temp_order, typename DisplacementTimeRule = QuasiStaticSecondOrderTimeIntegrationRule, typename TemperatureTimeRule = BackwardEulerFirstOrderTimeIntegrationRule, typename... parameter_space>
template<typename MaterialType >
void smith::ThermoMechanicsSystem< dim, disp_order, temp_order, DisplacementTimeRule, TemperatureTimeRule, parameter_space >::setMaterial ( const MaterialType &  material,
const std::string &  domain_name 
)
inline

Set the material model for a domain, defining integrals for solid and thermal weak forms.

The material is called as material(dt, state, grad_u, grad_v, T, grad_T, params...) and must expose a density member for the cycle-zero acceleration solve.

Template Parameters
MaterialTypeThe material model type.
Parameters
materialThe material model instance.
domain_nameThe name of the domain to apply the material to.

Definition at line 122 of file thermo_mechanics_system.hpp.


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