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

System struct for solid mechanics with an additional internal variable (L2 state). More...

#include <solid_mechanics_with_internal_vars_system.hpp>

Collaboration diagram for smith::SolidMechanicsWithInternalVarsSystem< dim, disp_order, StateSpace, DisplacementTimeRule, InternalVarTimeRule, 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 >, StateSpace, StateSpace, parameter_space... > >
 using
 
using StateWeakFormType = TimeDiscretizedWeakForm< dim, StateSpace, Parameters< StateSpace, StateSpace, H1< disp_order, dim >, H1< disp_order, dim >, H1< disp_order, dim >, H1< disp_order, dim >, parameter_space... > >
 using
 
using CycleZeroSolidWeakFormType = TimeDiscretizedWeakForm< dim, H1< disp_order, dim >, Parameters< H1< disp_order, dim >, H1< disp_order, dim >, H1< disp_order, dim >, StateSpace, parameter_space... > >
 using
 

Public Member Functions

std::vector< FieldStategetStateFields () const
 Get the list of all state fields (disp_pred, disp, vel, accel, state_pred, state). More...
 
std::vector< FieldStategetOutputFieldStates () const
 Get the list of physical, non-solve state fields. 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 the solid mechanics part. More...
 
template<int... active_parameters, typename BodyForceType >
void addBodyForce (DependsOn< active_parameters... > depends_on, const std::string &domain_name, BodyForceType force_function)
 Add a body force to the solid mechanics part (with DependsOn). More...
 
template<typename BodyForceType >
void addBodyForce (const std::string &domain_name, BodyForceType force_function)
 Add a body force that depends on all state and parameter fields. More...
 
template<int... active_parameters, typename TractionType >
void addTraction (DependsOn< active_parameters... > depends_on, const std::string &domain_name, TractionType traction_function)
 Add a surface traction to the solid mechanics part (with DependsOn). More...
 
template<typename TractionType >
void addTraction (const std::string &domain_name, TractionType traction_function)
 Add a surface traction that depends on all state and parameter fields. More...
 
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) (with DependsOn). More...
 
template<typename PressureType >
void addPressure (const std::string &domain_name, PressureType pressure_function)
 Add a pressure boundary condition that depends on all state and parameter fields. More...
 
template<typename EvolutionType >
void addStateEvolution (const std::string &domain_name, EvolutionType evolution_law)
 Add the evolution law for the internal variable. More...
 
- 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< StateWeakFormTypestate_weak_form
 Internal variable weak form.
 
std::shared_ptr< CycleZeroSolidWeakFormTypecycle_zero_solid_weak_form
 Cycle-zero weak form.
 
std::shared_ptr< DirichletBoundaryConditionsdisp_bc
 Displacement boundary conditions.
 
std::shared_ptr< DirichletBoundaryConditionsstate_bc
 Internal variable boundary conditions.
 
std::shared_ptr< DisplacementTimeRule > disp_time_rule
 Time integration for displacement.
 
std::shared_ptr< InternalVarTimeRule > state_time_rule
 Time integration for internal variable.
 
- 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, typename StateSpace, typename DisplacementTimeRule = QuasiStaticSecondOrderTimeIntegrationRule, typename InternalVarTimeRule = BackwardEulerFirstOrderTimeIntegrationRule, typename... parameter_space>
struct smith::SolidMechanicsWithInternalVarsSystem< dim, disp_order, StateSpace, DisplacementTimeRule, InternalVarTimeRule, parameter_space >

System struct for solid mechanics with an additional internal variable (L2 state).

Displacement uses a 4-state second-order layout (displacement_solve_state, displacement, velocity, acceleration). Internal variable uses a 2-state first-order layout (state_solve_state, state). Total: 6 state fields.

Template Parameters
dimSpatial dimension.
disp_orderPolynomial order for displacement field.
StateSpaceFinite element space for the internal variable (e.g., L2<order>).
DisplacementTimeRuleTime integration rule for displacement (must have num_states == 4).
InternalVarTimeRuleTime integration rule for the internal variable (must have num_states == 2).
parameter_spaceParameter spaces for material properties.

Definition at line 46 of file solid_mechanics_with_internal_vars_system.hpp.

Member Function Documentation

◆ addBodyForce() [1/2]

template<int dim, int disp_order, typename StateSpace , typename DisplacementTimeRule = QuasiStaticSecondOrderTimeIntegrationRule, typename InternalVarTimeRule = BackwardEulerFirstOrderTimeIntegrationRule, typename... parameter_space>
template<typename BodyForceType >
void smith::SolidMechanicsWithInternalVarsSystem< dim, disp_order, StateSpace, DisplacementTimeRule, InternalVarTimeRule, parameter_space >::addBodyForce ( const std::string &  domain_name,
BodyForceType  force_function 
)
inline

Add a body force that depends on all state and parameter fields.

Parameters
domain_nameThe name of the domain where the body force is applied.
force_function(t, X, u, v, a, alpha, alpha_dot, params...) -> force vector.

Definition at line 202 of file solid_mechanics_with_internal_vars_system.hpp.

◆ addBodyForce() [2/2]

template<int dim, int disp_order, typename StateSpace , typename DisplacementTimeRule = QuasiStaticSecondOrderTimeIntegrationRule, typename InternalVarTimeRule = BackwardEulerFirstOrderTimeIntegrationRule, typename... parameter_space>
template<int... active_parameters, typename BodyForceType >
void smith::SolidMechanicsWithInternalVarsSystem< dim, disp_order, StateSpace, DisplacementTimeRule, InternalVarTimeRule, parameter_space >::addBodyForce ( DependsOn< active_parameters... >  depends_on,
const std::string &  domain_name,
BodyForceType  force_function 
)
inline

Add a body force to the solid mechanics part (with DependsOn).

Parameters
depends_onSelects which primal and parameter fields the contribution depends on.
domain_nameThe name of the domain where the body force is applied.
force_function(t, X, u, v, a, alpha, alpha_dot, params...) -> force vector.

Definition at line 173 of file solid_mechanics_with_internal_vars_system.hpp.

◆ addPressure() [1/2]

template<int dim, int disp_order, typename StateSpace , typename DisplacementTimeRule = QuasiStaticSecondOrderTimeIntegrationRule, typename InternalVarTimeRule = BackwardEulerFirstOrderTimeIntegrationRule, typename... parameter_space>
template<typename PressureType >
void smith::SolidMechanicsWithInternalVarsSystem< dim, disp_order, StateSpace, DisplacementTimeRule, InternalVarTimeRule, parameter_space >::addPressure ( const std::string &  domain_name,
PressureType  pressure_function 
)
inline

Add a pressure boundary condition that depends on all state and parameter fields.

Parameters
domain_nameThe name of the boundary where the pressure is applied.
pressure_function(t, X, u, v, a, alpha, alpha_dot, params...) -> pressure scalar.

Definition at line 302 of file solid_mechanics_with_internal_vars_system.hpp.

◆ addPressure() [2/2]

template<int dim, int disp_order, typename StateSpace , typename DisplacementTimeRule = QuasiStaticSecondOrderTimeIntegrationRule, typename InternalVarTimeRule = BackwardEulerFirstOrderTimeIntegrationRule, typename... parameter_space>
template<int... active_parameters, typename PressureType >
void smith::SolidMechanicsWithInternalVarsSystem< dim, disp_order, StateSpace, DisplacementTimeRule, InternalVarTimeRule, parameter_space >::addPressure ( DependsOn< active_parameters... >  depends_on,
const std::string &  domain_name,
PressureType  pressure_function 
)
inline

Add a pressure boundary condition (follower force) (with DependsOn).

Parameters
depends_onSelects which primal and parameter fields the contribution depends on.
domain_nameThe name of the boundary where the pressure is applied.
pressure_function(t, X, u, v, a, alpha, alpha_dot, params...) -> pressure scalar.

Definition at line 256 of file solid_mechanics_with_internal_vars_system.hpp.

◆ addStateEvolution()

template<int dim, int disp_order, typename StateSpace , typename DisplacementTimeRule = QuasiStaticSecondOrderTimeIntegrationRule, typename InternalVarTimeRule = BackwardEulerFirstOrderTimeIntegrationRule, typename... parameter_space>
template<typename EvolutionType >
void smith::SolidMechanicsWithInternalVarsSystem< dim, disp_order, StateSpace, DisplacementTimeRule, InternalVarTimeRule, parameter_space >::addStateEvolution ( const std::string &  domain_name,
EvolutionType  evolution_law 
)
inline

Add the evolution law for the internal variable.

Template Parameters
EvolutionTypeThe evolution law function type.
Parameters
domain_nameThe name of the domain.
evolution_lawFunction (t_info, alpha, alpha_dot, grad_u, params...) returning the ODE residual.

Definition at line 314 of file solid_mechanics_with_internal_vars_system.hpp.

◆ addTraction() [1/2]

template<int dim, int disp_order, typename StateSpace , typename DisplacementTimeRule = QuasiStaticSecondOrderTimeIntegrationRule, typename InternalVarTimeRule = BackwardEulerFirstOrderTimeIntegrationRule, typename... parameter_space>
template<typename TractionType >
void smith::SolidMechanicsWithInternalVarsSystem< dim, disp_order, StateSpace, DisplacementTimeRule, InternalVarTimeRule, parameter_space >::addTraction ( const std::string &  domain_name,
TractionType  traction_function 
)
inline

Add a surface traction that depends on all state and parameter fields.

Parameters
domain_nameThe name of the boundary where the traction is applied.
traction_function(t, X, n, u, v, a, alpha, alpha_dot, params...) -> traction vector.

Definition at line 244 of file solid_mechanics_with_internal_vars_system.hpp.

◆ addTraction() [2/2]

template<int dim, int disp_order, typename StateSpace , typename DisplacementTimeRule = QuasiStaticSecondOrderTimeIntegrationRule, typename InternalVarTimeRule = BackwardEulerFirstOrderTimeIntegrationRule, typename... parameter_space>
template<int... active_parameters, typename TractionType >
void smith::SolidMechanicsWithInternalVarsSystem< dim, disp_order, StateSpace, DisplacementTimeRule, InternalVarTimeRule, parameter_space >::addTraction ( DependsOn< active_parameters... >  depends_on,
const std::string &  domain_name,
TractionType  traction_function 
)
inline

Add a surface traction to the solid mechanics part (with DependsOn).

Parameters
depends_onSelects which primal and parameter fields the contribution depends on.
domain_nameThe name of the boundary where the traction is applied.
traction_function(t, X, n, u, v, a, alpha, alpha_dot, params...) -> traction vector.

Definition at line 214 of file solid_mechanics_with_internal_vars_system.hpp.

◆ createDifferentiablePhysics()

template<int dim, int disp_order, typename StateSpace , typename DisplacementTimeRule = QuasiStaticSecondOrderTimeIntegrationRule, typename InternalVarTimeRule = BackwardEulerFirstOrderTimeIntegrationRule, typename... parameter_space>
std::unique_ptr<DifferentiablePhysics> smith::SolidMechanicsWithInternalVarsSystem< dim, disp_order, StateSpace, DisplacementTimeRule, InternalVarTimeRule, 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 121 of file solid_mechanics_with_internal_vars_system.hpp.

◆ getOutputFieldStates()

template<int dim, int disp_order, typename StateSpace , typename DisplacementTimeRule = QuasiStaticSecondOrderTimeIntegrationRule, typename InternalVarTimeRule = BackwardEulerFirstOrderTimeIntegrationRule, typename... parameter_space>
std::vector<FieldState> smith::SolidMechanicsWithInternalVarsSystem< dim, disp_order, StateSpace, DisplacementTimeRule, InternalVarTimeRule, parameter_space >::getOutputFieldStates ( ) const
inline

Get the list of physical, non-solve state fields.

Returns
std::vector<FieldState> List of physical fields suitable for output.

Definition at line 100 of file solid_mechanics_with_internal_vars_system.hpp.

◆ getReactionInfos()

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

Get information about reaction fields for this system.

Returns
List of ReactionInfo structures.

Definition at line 110 of file solid_mechanics_with_internal_vars_system.hpp.

◆ getStateFields()

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

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

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

Definition at line 86 of file solid_mechanics_with_internal_vars_system.hpp.

◆ setMaterial()

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

Set the material model for the solid mechanics part.

The material is called as material(state, grad_u_current, alpha_current, 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 139 of file solid_mechanics_with_internal_vars_system.hpp.


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