|
|
using | SolidWeakFormType = FunctionalWeakForm< dim, H1< order, dim >, detail::TimeRuleParams< DisplacementTimeRule, H1< order, dim >, Coupling > > |
| | Main weak form: (u, u_old, v_old, a_old, coupling_fields..., params...)
|
| |
| using | StressOutputWeakFormType = FunctionalWeakForm< dim, L2< 0, dim *dim >, typename detail::AppendCouplingToParams< Coupling, Parameters< L2< 0, dim *dim >, H1< order, dim >, H1< order, dim >, H1< order, dim >, H1< order, dim > >>::type > |
| |
|
| template<typename MaterialType > |
| void | setMaterial (const MaterialType &material, const std::string &domain_name) |
| | Set material model for domain. More...
|
| |
| template<typename BodyForceType > |
| void | addBodyForce (const std::string &domain_name, BodyForceType force_function) |
| | Add a body force to the system. More...
|
| |
| template<typename TractionType > |
| void | addTraction (const std::string &domain_name, TractionType traction_function) |
| | Add a surface traction (flux) to the system. More...
|
| |
| template<typename PressureType > |
| void | addPressure (const std::string &domain_name, PressureType pressure_function) |
| | Add a pressure boundary condition (follower force). More...
|
| |
|
void | setDisplacementBC (const Domain &domain) |
| | Set zero-displacement Dirichlet BC on all components.
|
| |
|
void | setDisplacementBC (const Domain &domain, std::vector< int > components) |
| | Set zero-displacement BC on specific components.
|
| |
|
template<typename AppliedDisplacementFunction > |
| void | setDisplacementBC (const Domain &domain, AppliedDisplacementFunction f) |
| | Set displacement BC with a prescribed function.
|
| |
|
| SystemBase ()=default |
| | Construct an empty system shell.
|
| |
| | SystemBase (std::shared_ptr< FieldStore > fs, std::shared_ptr< SystemSolver > sol=nullptr, std::vector< std::shared_ptr< WeakForm >> wfs={}) |
| | Construct a system from a field store, solver, and weak forms. More...
|
| |
|
| SystemBase ()=default |
| | Construct an empty system shell.
|
| |
| | SystemBase (std::shared_ptr< FieldStore > fs, std::shared_ptr< SystemSolver > sol=nullptr, std::vector< std::shared_ptr< WeakForm >> wfs={}) |
| | Construct a system from a field store, solver, and weak forms. More...
|
| |
| virtual std::vector< FieldState > | solve (const TimeInfo &time_info) const |
| | Solve the system using the internal weak_forms and solver. More...
|
| |
| virtual std::vector< ReactionState > | computeReactions (const TimeInfo &time_info, const std::vector< FieldState > &states_for_reactions) const |
| | Compute reactions after solving the main state. More...
|
| |
template<int dim, int order, typename DisplacementTimeRule = ImplicitNewmarkSecondOrderTimeIntegrationRule, typename Coupling = std::tuple<>>
struct smith::SolidMechanicsSystem< dim, order, DisplacementTimeRule, Coupling >
System struct for solid dynamics with configurable time integration.
Always uses a 4-state field layout (displacement_solve_state, displacement, velocity, acceleration). Use ImplicitNewmarkSecondOrderTimeIntegrationRule for transient dynamics, or QuasiStaticSecondOrderTimeIntegrationRule for quasi-static problems.
- Template Parameters
-
| dim | Spatial dimension. |
| order | Polynomial order for displacement field. |
| DisplacementTimeRule | Time integration rule type (must have num_states == 4). |
| Coupling | Tuple of coupling and parameter packs (default: none). Coupling fields occupy leading positions in the tail after the 4 time-rule state fields, before user parameter_space fields. |
| parameter_space | Parameter spaces for material properties. |
Definition at line 47 of file solid_mechanics_system.hpp.
template<int dim, int order, typename DisplacementTimeRule = ImplicitNewmarkSecondOrderTimeIntegrationRule, typename Coupling = std::tuple<>>
| using smith::SolidMechanicsSystem< dim, order, DisplacementTimeRule, Coupling >::StressOutputWeakFormType = FunctionalWeakForm< dim, L2<0, dim * dim>, typename detail::AppendCouplingToParams<Coupling, Parameters<L2<0, dim * dim>, H1<order, dim>, H1<order, dim>, H1<order, dim>, H1<order, dim> >>::type> |
L2 projection weak form for PK1 stress output (dim*dim components). Args: (stress_unknown, u, u_old, v_old, a_old, coupling_fields..., params...).
Definition at line 58 of file solid_mechanics_system.hpp.
template<int dim, int order, typename DisplacementTimeRule = ImplicitNewmarkSecondOrderTimeIntegrationRule, typename Coupling = std::tuple<>>
template<typename BodyForceType >
| void smith::SolidMechanicsSystem< dim, order, DisplacementTimeRule, Coupling >::addBodyForce |
( |
const std::string & |
domain_name, |
|
|
BodyForceType |
force_function |
|
) |
| |
|
inline |
Add a body force to the system.
- Template Parameters
-
| BodyForceType | The body force function type. |
- Parameters
-
| domain_name | The name of the domain to apply the force to. |
| force_function | The force function (t, X, u, v, a, params...). |
Definition at line 134 of file solid_mechanics_system.hpp.
template<int dim, int order, typename DisplacementTimeRule = ImplicitNewmarkSecondOrderTimeIntegrationRule, typename Coupling = std::tuple<>>
template<typename PressureType >
| void smith::SolidMechanicsSystem< dim, order, DisplacementTimeRule, Coupling >::addPressure |
( |
const std::string & |
domain_name, |
|
|
PressureType |
pressure_function |
|
) |
| |
|
inline |
Add a pressure boundary condition (follower force).
- Template Parameters
-
| PressureType | The pressure function type. |
- Parameters
-
| domain_name | The name of the boundary domain. |
| pressure_function | The pressure function (t, X, params...). |
Definition at line 176 of file solid_mechanics_system.hpp.
template<int dim, int order, typename DisplacementTimeRule = ImplicitNewmarkSecondOrderTimeIntegrationRule, typename Coupling = std::tuple<>>
template<typename TractionType >
| void smith::SolidMechanicsSystem< dim, order, DisplacementTimeRule, Coupling >::addTraction |
( |
const std::string & |
domain_name, |
|
|
TractionType |
traction_function |
|
) |
| |
|
inline |
Add a surface traction (flux) to the system.
- Template Parameters
-
| TractionType | The traction function type. |
- Parameters
-
| domain_name | The name of the boundary domain to apply the traction to. |
| traction_function | The traction function (t, X, n, u, v, a, params...). |
Definition at line 155 of file solid_mechanics_system.hpp.
template<int dim, int order, typename DisplacementTimeRule = ImplicitNewmarkSecondOrderTimeIntegrationRule, typename Coupling = std::tuple<>>
template<typename MaterialType >
| void smith::SolidMechanicsSystem< dim, order, DisplacementTimeRule, Coupling >::setMaterial |
( |
const MaterialType & |
material, |
|
|
const std::string & |
domain_name |
|
) |
| |
|
inline |
Set material model for domain.
- Template Parameters
-
| MaterialType | The material model type. |
- Parameters
-
| material | The material model instance. |
| domain_name | The name of the domain to apply the material to. |
Definition at line 79 of file solid_mechanics_system.hpp.
template<int dim, int order, typename DisplacementTimeRule = ImplicitNewmarkSecondOrderTimeIntegrationRule, typename Coupling = std::tuple<>>
| smith::SystemBase::SystemBase |
|
inlineexplicit |
Construct a system from a field store, solver, and weak forms.
- Parameters
-
| fs | Field store shared by all weak forms. |
| sol | Solver used for solve. |
| wfs | Weak forms owned by this system. |
Definition at line 76 of file system_base.hpp.