Smith  0.1
Smith is an implicit thermal structural mechanics simulation code.
Classes | Namespaces | Functions
state_variable_system.hpp File Reference

Standalone composable system for a first-order internal variable (damage, plasticity, etc.). More...

#include "smith/differentiable_numerics/field_store.hpp"
#include "smith/differentiable_numerics/nonlinear_block_solver.hpp"
#include "smith/differentiable_numerics/dirichlet_boundary_conditions.hpp"
#include "smith/differentiable_numerics/state_advancer.hpp"
#include "smith/differentiable_numerics/multiphysics_time_integrator.hpp"
#include "smith/differentiable_numerics/time_integration_rule.hpp"
#include "smith/physics/functional_weak_form.hpp"
#include "smith/differentiable_numerics/differentiable_physics.hpp"
#include "smith/physics/weak_form.hpp"
#include "smith/differentiable_numerics/system_base.hpp"
#include "smith/differentiable_numerics/coupling_params.hpp"
Include dependency graph for state_variable_system.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  smith::InternalVariableSystem< dim, StateSpace, InternalVarTimeRule, Coupling >
 System for a single internal variable using a two-state first-order rule. More...
 

Namespaces

 smith
 Accelerator functionality.
 
 smith::detail
 Internal solid mechanics builder after coupling fields are assembled.
 

Functions

template<int dim, typename StateSpace , typename InternalVarTimeRule , typename... parameter_space>
auto smith::registerInternalVariableFields (std::shared_ptr< FieldStore > field_store, FieldType< parameter_space >... parameter_types)
 Register state variable fields into a FieldStore. More...
 
template<int dim, typename StateSpace , typename InternalVarTimeRule , typename... parameter_space>
auto smith::registerStateVariableFields (std::shared_ptr< FieldStore > field_store, FieldType< parameter_space >... parameter_types)
 Backward-compatible alias for registerInternalVariableFields.
 
template<int dim, typename StateSpace , typename InternalVarTimeRule , typename Coupling >
requires detail::is_coupling_packs_v< Coupling > auto smith::detail::buildInternalVariableSystemImpl (std::shared_ptr< FieldStore > field_store, const Coupling &coupling, std::shared_ptr< SystemSolver > solver)
 Internal builder for an internal-variable system after public registration and coupling collection.
 
template<typename SelfFields >
 smith::requires (detail::has_time_rule_v< SelfFields >) auto buildSolidMechanicsSystem(std
 Build a SolidMechanicsSystem from already-registered field packs. More...
 
template<typename SelfFields , typename... PFs>
 smith::requires (detail::has_time_rule_v< SelfFields >) auto buildSolidMechanicsSystem(std
 Build a SolidMechanicsSystem from registered self fields plus coupled physics fields. More...
 
template<typename SelfFields , typename... PFs, typename... ParamSpaces>
 smith::requires (detail::has_time_rule_v< SelfFields >) auto buildSolidMechanicsSystem(std
 Build a SolidMechanicsSystem from registered self fields, coupled physics fields, and parameter fields. More...
 

Detailed Description

Standalone composable system for a first-order internal variable (damage, plasticity, etc.).

Two-phase factory: auto internal_variable_fields = registerInternalVariableFields<StateSpace, StateRule>( field_store, params...);

auto internal_variable_system = buildInternalVariableSystem<dim, StateSpace, StateRule>( solver, internal_variable_fields, couplingFields(solid_fields), param_fields);

The returned PhysicsFields from registerInternalVariableFields carries field tokens (state_solve_state, state) that can be injected into another physics system (e.g. SolidMechanicsSystem) as coupling input.

addEvolution registers an ODE residual of the form: evolution_law(t_info, alpha_val, alpha_dot, interpolated_coupling_fields..., params...) == 0

With solid displacement coupling, the callback receives (u, v, a) rather than raw (u_solve_state, u_old, v_old, a_old).

Definition in file state_variable_system.hpp.