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

Defines the SystemBase struct for common system functionality. More...

#include <string>
#include <vector>
#include <memory>
#include <utility>
#include "field_state.hpp"
#include "field_store.hpp"
#include "system_solver.hpp"
#include "state_advancer.hpp"
#include "smith/physics/common.hpp"
#include "mfem.hpp"
Include dependency graph for system_base.hpp:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  smith::SystemBase
 Base struct for physics systems containing common members and helper functions. More...
 

Namespaces

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

Typedefs

template<std::size_t , typename T >
using smith::detail::always_t = T
 Helper: given an index and a type, always produces the type (used to repeat a type N times via pack expansion)
 
template<typename Rule , typename Space , typename... Tail>
using smith::TimeRuleParams = decltype(detail::time_rule_params_impl< Space, Tail... >(std::make_index_sequence< Rule::num_states >{}))
 Generate a Parameters<...> type with Rule::num_states copies of Space followed by additional Tail types. Used to build weak form parameter lists that adapt to the time integration rule's arity.
 

Functions

template<typename Space , typename... Tail, std::size_t... Is>
auto smith::detail::time_rule_params_impl (std::index_sequence< Is... >) -> Parameters< always_t< Is, Space >..., Tail... >
 Implementation for TimeRuleParams: repeat Space N times, then append Tail...
 
std::shared_ptr< SystemBase > smith::makeSystem (std::shared_ptr< FieldStore > field_store, std::shared_ptr< SystemSolver > solver, std::vector< std::shared_ptr< WeakForm >> weak_forms)
 Convenience factory for a plain SystemBase.
 
template<typename WeakFormT , typename FieldStorePtr , typename... Args, std::size_t... Is>
auto smith::detail::buildWeakFormWithCouplingImpl (const FieldStorePtr &field_store, const std::string &weak_form_name, const std::string &unknown_field_name, const std::tuple< Args... > &args_tuple, std::index_sequence< Is... >)
 Expands coupling tuple into trailing weak-form space arguments.
 
template<typename WeakFormT , typename FieldStorePtr , typename... Args>
auto smith::detail::buildWeakFormWithCoupling (const FieldStorePtr &field_store, const std::string &weak_form_name, const std::string &unknown_field_name, const Args &... args)
 Builds weak form using regular args plus final coupling pack argument.
 

Detailed Description

Defines the SystemBase struct for common system functionality.

Definition in file system_base.hpp.