MoReFEM
|
Contains all the Parameter that are related to the properties of a solid. More...
#include <Solid.hpp>
Public Types | |
using | self = Solid<TimeManagerT> |
Alias to the type of the class. | |
using | const_unique_ptr = std::unique_ptr<const self> |
Alias to unique pointer to const object. | |
template<std::size_t N> | |
using | array_const_unique_ptr = std::array<const_unique_ptr, N> |
Alias to array of unique pointer to const object. | |
using | scalar_parameter_type = ScalarParameter<TimeManagerT, ParameterNS::TimeDependencyNS::None> |
Alias to the type of scalar parameter used along with current operator. | |
Public Member Functions | |
void | Print (std::ostream &stream) const |
Print the content of Solid assuming all parameters are spatially constant. | |
const scalar_parameter_type & | GetVolumicMass () const |
Constant accessor to the volumic mass. | |
const scalar_parameter_type & | GetHyperelasticBulk () const |
Constant accessor to the hyperelastic bulk. | |
const scalar_parameter_type & | GetKappa1 () const |
Constant accessor to Kappa1. | |
const scalar_parameter_type & | GetKappa2 () const |
Constant accessor to Kappa2. | |
const scalar_parameter_type & | GetYoungModulus () const |
Constant accessor to the Young modulus. | |
const scalar_parameter_type & | GetPoissonRatio () const |
Constant accessor to the Poisson ratio. | |
const scalar_parameter_type & | GetLameLambda () const |
Constant accessor to Lame lambda. | |
const scalar_parameter_type & | GetLameMu () const |
Constant accessor to Lame mu. | |
const scalar_parameter_type & | GetMu1 () const |
Constant accessor to mu1. | |
const scalar_parameter_type & | GetMu2 () const |
Constant accessor to mu2. | |
const scalar_parameter_type & | GetC0 () const |
Constant accessor to C0. | |
const scalar_parameter_type & | GetC1 () const |
Constant accessor to C1. | |
const scalar_parameter_type & | GetC2 () const |
Constant accessor to C2. | |
const scalar_parameter_type & | GetC3 () const |
Constant accessor to C3. | |
const scalar_parameter_type & | GetC4 () const |
Constant accessor to C4. | |
const scalar_parameter_type & | GetC5 () const |
Constant accessor to C5. | |
const scalar_parameter_type & | GetViscosity () const |
Constant accessor to the viscosity. | |
bool | IsHyperelasticBulk () const noexcept |
Whether the parameter is relevant for the Model considered. | |
bool | IsKappa1 () const noexcept |
Whether the parameter is relevant for the Model considered. | |
bool | IsKappa2 () const noexcept |
Whether the parameter is relevant for the Model considered. | |
bool | IsYoungModulus () const noexcept |
Whether the parameter is relevant for the Model considered. | |
bool | IsPoissonRatio () const noexcept |
Whether the parameter is relevant for the Model considered. | |
bool | IsLameLambda () const noexcept |
Whether the parameter is relevant for the Model considered. | |
bool | IsLameMu () const noexcept |
Whether the parameter is relevant for the Model considered. | |
bool | IsMu1 () const noexcept |
Whether the parameter is relevant for the Model considered. | |
bool | IsMu2 () const noexcept |
Whether the parameter is relevant for the Model considered. | |
bool | IsC0 () const noexcept |
Whether the parameter is relevant for the Model considered. | |
bool | IsC1 () const noexcept |
Whether the parameter is relevant for the Model considered. | |
bool | IsC2 () const noexcept |
Whether the parameter is relevant for the Model considered. | |
bool | IsC3 () const noexcept |
Whether the parameter is relevant for the Model considered. | |
bool | IsC4 () const noexcept |
Whether the parameter is relevant for the Model considered. | |
bool | IsC5 () const noexcept |
Whether the parameter is relevant for the Model considered. | |
bool | IsViscosity () const noexcept |
Whether the parameter is relevant for the Model considered. | |
Special members. | |
template<::MoReFEM::Advanced::Concept::MoReFEMDataType MoReFEMDataT> | |
Solid (const MoReFEMDataT &morefem_data, const Domain &domain, const QuadratureRulePerTopology &quadrature_rule_per_topology, double relative_tolerance=1.e-5) | |
Constructor. | |
~Solid ()=default | |
Destructor. | |
Solid (const Solid< TimeManagerT > &rhs)=delete | |
The copy constructor. | |
Solid (Solid< TimeManagerT > &&rhs)=delete | |
The move constructor. | |
Solid< TimeManagerT > & | operator= (const Solid< TimeManagerT > &rhs)=delete |
The (copy) operator=. | |
Solid< TimeManagerT > & | operator= (Solid< TimeManagerT > &&rhs)=delete |
The (move) operator=. | |
Private Member Functions | |
void | CheckConsistency (double relative_tolerance) const |
Check the material parameters are auto-consistent. | |
const Domain & | GetDomain () const noexcept |
Domain upon which the solid is described. | |
const QuadratureRulePerTopology & | GetQuadratureRulePerTopology () const noexcept |
Quadrature rule to use for each type of topology. | |
Private Attributes | |
const Domain & | domain_ |
Domain upon which the solid is described. | |
const QuadratureRulePerTopology & | quadrature_rule_per_topology_ |
Quadrature rule to use for each type of topology. | |
scalar_parameter_type::unique_ptr | volumic_mass_ = nullptr |
Volumic mass. | |
scalar_parameter_type::unique_ptr | hyperelastic_bulk_ = nullptr |
Hyperelastic bulk. | |
scalar_parameter_type::template array_unique_ptr< 2 > | kappa_list_ { { nullptr, nullptr } } |
Kappa1 and kappa2. | |
scalar_parameter_type::template array_unique_ptr< 2 > | young_poisson_ { { nullptr, nullptr } } |
Young modulus and poisson ratio. | |
scalar_parameter_type::template array_unique_ptr< 2 > | lame_coeff_ { { nullptr, nullptr } } |
Lame coefficients (lambda first then mu). | |
scalar_parameter_type::template array_unique_ptr< 8 > | mu_i_C_i_ |
Mu1, Mu2, C0 to C5. | |
scalar_parameter_type::unique_ptr | viscosity_ = nullptr |
Viscosity. | |
Contains all the Parameter that are related to the properties of a solid.
Some of them might be deactivated if not used, with a properly placed "ignore" in the input data file given as constructor argument.
using MoReFEM::Solid< TimeManagerT >::self = Solid<TimeManagerT> |
Alias to the type of the class.
using MoReFEM::Solid< TimeManagerT >::scalar_parameter_type = ScalarParameter<TimeManagerT, ParameterNS::TimeDependencyNS::None> |
Alias to the type of scalar parameter used along with current operator.
|
explicit |
Constructor.
[in] | relative_tolerance | Relative tolerance acceptable between a parameter and its recomputation (for instance Young modulus read against Young modulus recomputed from Lame parameters). If they are not deemed exactly equal but close enough, a warning is printed rather than an exception thrown. If a negative value is provided, skip entirely those checks. |
[in] | morefem_data | The object which encapsulates some stuff that acts as global data, such as:
|
[in] | quadrature_rule_per_topology | Quadrature rule for each relevant topology (if one useful in the Model is not specified there an exception will be thrown when usage is attempted). Do not deallocate this raw pointer: it is assumed the actual object is stored in an object such as VariationalFormulation or a Model, probably under a const_unique_ptr to avoid bothering with manual deallocation. |
[in] | domain | Domain upon which the Parameter is defined; this Domain MUST be associated with a Mesh (more often than not domain encompasses all the Coords of its associated Mesh). The reason it is a Domain and not a Mesh is that in some cases (fibers for instance) we might want to define it only on a subset of a Mesh. |
|
delete |
The copy constructor.
[in] | rhs | The object from which the construction occurs. |
|
delete |
The move constructor.
[in] | rhs | The object from which the construction occurs. |
|
delete |
The (copy) operator=.
[in] | rhs | The object from which the affectation occurs. |
|
delete |
The (move) operator=.
[in] | rhs | The object from which the affectation occurs. |
void MoReFEM::Solid< TimeManagerT >::Print | ( | std::ostream & | stream | ) | const |
Print the content of Solid assuming all parameters are spatially constant.
[in,out] | stream | Stream upon which object information are written. |
const scalar_parameter_type & MoReFEM::Solid< TimeManagerT >::GetHyperelasticBulk | ( | ) | const |
Constant accessor to the hyperelastic bulk.
You may check existence priori to the call with IsXXX() methods, for instance:
const scalar_parameter_type & MoReFEM::Solid< TimeManagerT >::GetKappa1 | ( | ) | const |
Constant accessor to Kappa1.
You may check existence priori to the call with IsXXX() methods, for instance:
const scalar_parameter_type & MoReFEM::Solid< TimeManagerT >::GetKappa2 | ( | ) | const |
Constant accessor to Kappa2.
You may check existence priori to the call with IsXXX() methods, for instance:
const scalar_parameter_type & MoReFEM::Solid< TimeManagerT >::GetYoungModulus | ( | ) | const |
Constant accessor to the Young modulus.
You may check existence priori to the call with IsXXX() methods, for instance:
const scalar_parameter_type & MoReFEM::Solid< TimeManagerT >::GetPoissonRatio | ( | ) | const |
Constant accessor to the Poisson ratio.
You may check existence priori to the call with IsXXX() methods, for instance:
const scalar_parameter_type & MoReFEM::Solid< TimeManagerT >::GetLameLambda | ( | ) | const |
Constant accessor to Lame lambda.
You may check existence priori to the call with IsXXX() methods, for instance:
const scalar_parameter_type & MoReFEM::Solid< TimeManagerT >::GetLameMu | ( | ) | const |
Constant accessor to Lame mu.
You may check existence priori to the call with IsXXX() methods, for instance:
const scalar_parameter_type & MoReFEM::Solid< TimeManagerT >::GetMu1 | ( | ) | const |
Constant accessor to mu1.
You may check existence priori to the call with IsXXX() methods, for instance:
const scalar_parameter_type & MoReFEM::Solid< TimeManagerT >::GetMu2 | ( | ) | const |
Constant accessor to mu2.
You may check existence priori to the call with IsXXX() methods, for instance:
const scalar_parameter_type & MoReFEM::Solid< TimeManagerT >::GetC0 | ( | ) | const |
Constant accessor to C0.
You may check existence priori to the call with IsXXX() methods, for instance:
const scalar_parameter_type & MoReFEM::Solid< TimeManagerT >::GetC1 | ( | ) | const |
Constant accessor to C1.
You may check existence priori to the call with IsXXX() methods, for instance:
const scalar_parameter_type & MoReFEM::Solid< TimeManagerT >::GetC2 | ( | ) | const |
Constant accessor to C2.
You may check existence priori to the call with IsXXX() methods, for instance:
const scalar_parameter_type & MoReFEM::Solid< TimeManagerT >::GetC3 | ( | ) | const |
Constant accessor to C3.
You may check existence priori to the call with IsXXX() methods, for instance:
const scalar_parameter_type & MoReFEM::Solid< TimeManagerT >::GetC4 | ( | ) | const |
Constant accessor to C4.
You may check existence priori to the call with IsXXX() methods, for instance:
const scalar_parameter_type & MoReFEM::Solid< TimeManagerT >::GetC5 | ( | ) | const |
Constant accessor to C5.
You may check existence priori to the call with IsXXX() methods, for instance:
const scalar_parameter_type & MoReFEM::Solid< TimeManagerT >::GetViscosity | ( | ) | const |
Constant accessor to the viscosity.
You may check existence priori to the call with IsXXX() methods, for instance:
|
noexcept |
Whether the parameter is relevant for the Model considered.
It might be irrelevant in two ways:
|
noexcept |
Whether the parameter is relevant for the Model considered.
It might be irrelevant in two ways:
|
noexcept |
Whether the parameter is relevant for the Model considered.
It might be irrelevant in two ways:
|
noexcept |
Whether the parameter is relevant for the Model considered.
It might be irrelevant in two ways:
|
noexcept |
Whether the parameter is relevant for the Model considered.
It might be irrelevant in two ways:
|
noexcept |
Whether the parameter is relevant for the Model considered.
It might be irrelevant in two ways:
|
noexcept |
Whether the parameter is relevant for the Model considered.
It might be irrelevant in two ways:
|
noexcept |
Whether the parameter is relevant for the Model considered.
It might be irrelevant in two ways:
|
noexcept |
Whether the parameter is relevant for the Model considered.
It might be irrelevant in two ways:
|
noexcept |
Whether the parameter is relevant for the Model considered.
It might be irrelevant in two ways:
|
noexcept |
Whether the parameter is relevant for the Model considered.
It might be irrelevant in two ways:
|
noexcept |
Whether the parameter is relevant for the Model considered.
It might be irrelevant in two ways:
|
noexcept |
Whether the parameter is relevant for the Model considered.
It might be irrelevant in two ways:
|
noexcept |
Whether the parameter is relevant for the Model considered.
It might be irrelevant in two ways:
|
noexcept |
Whether the parameter is relevant for the Model considered.
It might be irrelevant in two ways:
|
noexcept |
Whether the parameter is relevant for the Model considered.
It might be irrelevant in two ways:
|
private |
Check the material parameters are auto-consistent.
[in] | relative_tolerance | Relative tolerance acceptable between a parameter and its recomputation. If they are not deemed exactly equal but close enough, a warning is printed rather than an exception thrown. |
|
private |
Hyperelastic bulk.
Might stay nullptr if this solid parameter is not relevant for the current Model (i.e. it is not an entry in the input data file).
|
private |
Kappa1 and kappa2.
Might stay nullptr if these solid parameters are not relevant for the current Model (i.e. it is not entries in the input data file).
|
private |
Young modulus and poisson ratio.
Might stay nullptr if these solid parameters are not relevant for the current Model (i.e. it is not entries in the input data file).
|
private |
Lame coefficients (lambda first then mu).
Might stay nullptr if these solid parameters are not relevant for the current Model (i.e. it is not entries in the input data file).
|
private |
Mu1, Mu2, C0 to C5.
Might stay nullptr if these solid parameters are not relevant for the current Model (i.e. it is not entries in the input data file).
|
private |
Viscosity.
Might stay nullptr if this solid parameter is not relevant for the current Model (i.e. it is not an entry in the input data file).