MoReFEM
Loading...
Searching...
No Matches
Public Types | Public Member Functions | Private Member Functions | Private Attributes
MoReFEM::Solid< TimeManagerT > Class Template Reference

Contains all the Parameter that are related to the properties of a solid. More...

#include <Solid.hpp>

Inheritance diagram for MoReFEM::Solid< TimeManagerT >:
Collaboration diagram for MoReFEM::Solid< TimeManagerT >:

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_typeGetVolumicMass () const
 Constant accessor to the volumic mass.
 
const scalar_parameter_typeGetHyperelasticBulk () const
 Constant accessor to the hyperelastic bulk.
 
const scalar_parameter_typeGetKappa1 () const
 Constant accessor to Kappa1.
 
const scalar_parameter_typeGetKappa2 () const
 Constant accessor to Kappa2.
 
const scalar_parameter_typeGetYoungModulus () const
 Constant accessor to the Young modulus.
 
const scalar_parameter_typeGetPoissonRatio () const
 Constant accessor to the Poisson ratio.
 
const scalar_parameter_typeGetLameLambda () const
 Constant accessor to Lame lambda.
 
const scalar_parameter_typeGetLameMu () const
 Constant accessor to Lame mu.
 
const scalar_parameter_typeGetMu1 () const
 Constant accessor to mu1.
 
const scalar_parameter_typeGetMu2 () const
 Constant accessor to mu2.
 
const scalar_parameter_typeGetC0 () const
 Constant accessor to C0.
 
const scalar_parameter_typeGetC1 () const
 Constant accessor to C1.
 
const scalar_parameter_typeGetC2 () const
 Constant accessor to C2.
 
const scalar_parameter_typeGetC3 () const
 Constant accessor to C3.
 
const scalar_parameter_typeGetC4 () const
 Constant accessor to C4.
 
const scalar_parameter_typeGetC5 () const
 Constant accessor to C5.
 
const scalar_parameter_typeGetViscosity () 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 DomainGetDomain () const noexcept
 Domain upon which the solid is described.
 
const QuadratureRulePerTopologyGetQuadratureRulePerTopology () const noexcept
 Quadrature rule to use for each type of topology.
 

Private Attributes

const Domaindomain_
 Domain upon which the solid is described.
 
const QuadratureRulePerTopologyquadrature_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.
 

Detailed Description

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
class MoReFEM::Solid< TimeManagerT >

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.

Member Typedef Documentation

◆ self

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
using MoReFEM::Solid< TimeManagerT >::self = Solid<TimeManagerT>

Alias to the type of the class.

◆ scalar_parameter_type

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
using MoReFEM::Solid< TimeManagerT >::scalar_parameter_type = ScalarParameter<TimeManagerT, ParameterNS::TimeDependencyNS::None>

Alias to the type of scalar parameter used along with current operator.

Constructor & Destructor Documentation

◆ Solid() [1/3]

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
template<::MoReFEM::Advanced::Concept::MoReFEMDataType MoReFEMDataT>
MoReFEM::Solid< TimeManagerT >::Solid ( const MoReFEMDataT & morefem_data,
const Domain & domain,
const QuadratureRulePerTopology & quadrature_rule_per_topology,
double relative_tolerance = 1.e-5 )
explicit

Constructor.

Parameters
[in]relative_toleranceRelative 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.
Parameters
[in]morefem_dataThe object which encapsulates some stuff that acts as global data, such as:
  • The content of the input data.
  • Mpi related information.
  • The directory into which output is to be written.
  • Management of time iterations
[in]quadrature_rule_per_topologyQuadrature 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.
Parameters
[in]domainDomain 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.

◆ Solid() [2/3]

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
MoReFEM::Solid< TimeManagerT >::Solid ( const Solid< TimeManagerT > & rhs)
delete

The copy constructor.

Parameters
[in]rhsThe object from which the construction occurs.

◆ Solid() [3/3]

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
MoReFEM::Solid< TimeManagerT >::Solid ( Solid< TimeManagerT > && rhs)
delete

The move constructor.

Parameters
[in]rhsThe object from which the construction occurs.

Member Function Documentation

◆ operator=() [1/2]

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
Solid< TimeManagerT > & MoReFEM::Solid< TimeManagerT >::operator= ( const Solid< TimeManagerT > & rhs)
delete

The (copy) operator=.

Parameters
[in]rhsThe object from which the affectation occurs.
Returns
Reference to the object (to enable chained affectation).

◆ operator=() [2/2]

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
Solid< TimeManagerT > & MoReFEM::Solid< TimeManagerT >::operator= ( Solid< TimeManagerT > && rhs)
delete

The (move) operator=.

Parameters
[in]rhsThe object from which the affectation occurs.
Returns
Reference to the object (to enable chained affectation).

◆ Print()

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
void MoReFEM::Solid< TimeManagerT >::Print ( std::ostream & stream) const

Print the content of Solid assuming all parameters are spatially constant.

Parameters
[in,out]streamStream upon which object information are written.

◆ GetHyperelasticBulk()

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
const scalar_parameter_type & MoReFEM::Solid< TimeManagerT >::GetHyperelasticBulk ( ) const

Constant accessor to the hyperelastic bulk.

Attention
This method assumes the parameter is relevant for your model (i.e. it was addressed in the input data file). If not, it should not be called at all!

You may check existence priori to the call with IsXXX() methods, for instance:

if (solid.IsKappa1())
{
decltype(auto) kappa1 = solid.GetKappa1();
...
}
Returns
The Parameter object.

◆ GetKappa1()

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
const scalar_parameter_type & MoReFEM::Solid< TimeManagerT >::GetKappa1 ( ) const

Constant accessor to Kappa1.

Attention
This method assumes the parameter is relevant for your model (i.e. it was addressed in the input data file). If not, it should not be called at all!

You may check existence priori to the call with IsXXX() methods, for instance:

if (solid.IsKappa1())
{
decltype(auto) kappa1 = solid.GetKappa1();
...
}
Returns
The Parameter object.

◆ GetKappa2()

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
const scalar_parameter_type & MoReFEM::Solid< TimeManagerT >::GetKappa2 ( ) const

Constant accessor to Kappa2.

Attention
This method assumes the parameter is relevant for your model (i.e. it was addressed in the input data file). If not, it should not be called at all!

You may check existence priori to the call with IsXXX() methods, for instance:

if (solid.IsKappa1())
{
decltype(auto) kappa1 = solid.GetKappa1();
...
}
Returns
The Parameter object.

◆ GetYoungModulus()

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
const scalar_parameter_type & MoReFEM::Solid< TimeManagerT >::GetYoungModulus ( ) const

Constant accessor to the Young modulus.

Attention
This method assumes the parameter is relevant for your model (i.e. it was addressed in the input data file). If not, it should not be called at all!

You may check existence priori to the call with IsXXX() methods, for instance:

if (solid.IsKappa1())
{
decltype(auto) kappa1 = solid.GetKappa1();
...
}
Returns
The Parameter object.

◆ GetPoissonRatio()

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
const scalar_parameter_type & MoReFEM::Solid< TimeManagerT >::GetPoissonRatio ( ) const

Constant accessor to the Poisson ratio.

Attention
This method assumes the parameter is relevant for your model (i.e. it was addressed in the input data file). If not, it should not be called at all!

You may check existence priori to the call with IsXXX() methods, for instance:

if (solid.IsKappa1())
{
decltype(auto) kappa1 = solid.GetKappa1();
...
}
Returns
The Parameter object.

◆ GetLameLambda()

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
const scalar_parameter_type & MoReFEM::Solid< TimeManagerT >::GetLameLambda ( ) const

Constant accessor to Lame lambda.

Attention
This method assumes the parameter is relevant for your model (i.e. it was addressed in the input data file). If not, it should not be called at all!

You may check existence priori to the call with IsXXX() methods, for instance:

if (solid.IsKappa1())
{
decltype(auto) kappa1 = solid.GetKappa1();
...
}
Returns
The Parameter object.

◆ GetLameMu()

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
const scalar_parameter_type & MoReFEM::Solid< TimeManagerT >::GetLameMu ( ) const

Constant accessor to Lame mu.

Attention
This method assumes the parameter is relevant for your model (i.e. it was addressed in the input data file). If not, it should not be called at all!

You may check existence priori to the call with IsXXX() methods, for instance:

if (solid.IsKappa1())
{
decltype(auto) kappa1 = solid.GetKappa1();
...
}
Returns
The Parameter object.

◆ GetMu1()

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
const scalar_parameter_type & MoReFEM::Solid< TimeManagerT >::GetMu1 ( ) const

Constant accessor to mu1.

Attention
This method assumes the parameter is relevant for your model (i.e. it was addressed in the input data file). If not, it should not be called at all!

You may check existence priori to the call with IsXXX() methods, for instance:

if (solid.IsKappa1())
{
decltype(auto) kappa1 = solid.GetKappa1();
...
}
Returns
The Parameter object.

◆ GetMu2()

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
const scalar_parameter_type & MoReFEM::Solid< TimeManagerT >::GetMu2 ( ) const

Constant accessor to mu2.

Attention
This method assumes the parameter is relevant for your model (i.e. it was addressed in the input data file). If not, it should not be called at all!

You may check existence priori to the call with IsXXX() methods, for instance:

if (solid.IsKappa1())
{
decltype(auto) kappa1 = solid.GetKappa1();
...
}
Returns
The Parameter object.

◆ GetC0()

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
const scalar_parameter_type & MoReFEM::Solid< TimeManagerT >::GetC0 ( ) const

Constant accessor to C0.

Attention
This method assumes the parameter is relevant for your model (i.e. it was addressed in the input data file). If not, it should not be called at all!

You may check existence priori to the call with IsXXX() methods, for instance:

if (solid.IsKappa1())
{
decltype(auto) kappa1 = solid.GetKappa1();
...
}
Returns
The Parameter object.

◆ GetC1()

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
const scalar_parameter_type & MoReFEM::Solid< TimeManagerT >::GetC1 ( ) const

Constant accessor to C1.

Attention
This method assumes the parameter is relevant for your model (i.e. it was addressed in the input data file). If not, it should not be called at all!

You may check existence priori to the call with IsXXX() methods, for instance:

if (solid.IsKappa1())
{
decltype(auto) kappa1 = solid.GetKappa1();
...
}
Returns
The Parameter object.

◆ GetC2()

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
const scalar_parameter_type & MoReFEM::Solid< TimeManagerT >::GetC2 ( ) const

Constant accessor to C2.

Attention
This method assumes the parameter is relevant for your model (i.e. it was addressed in the input data file). If not, it should not be called at all!

You may check existence priori to the call with IsXXX() methods, for instance:

if (solid.IsKappa1())
{
decltype(auto) kappa1 = solid.GetKappa1();
...
}
Returns
The Parameter object.

◆ GetC3()

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
const scalar_parameter_type & MoReFEM::Solid< TimeManagerT >::GetC3 ( ) const

Constant accessor to C3.

Attention
This method assumes the parameter is relevant for your model (i.e. it was addressed in the input data file). If not, it should not be called at all!

You may check existence priori to the call with IsXXX() methods, for instance:

if (solid.IsKappa1())
{
decltype(auto) kappa1 = solid.GetKappa1();
...
}
Returns
The Parameter object.

◆ GetC4()

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
const scalar_parameter_type & MoReFEM::Solid< TimeManagerT >::GetC4 ( ) const

Constant accessor to C4.

Attention
This method assumes the parameter is relevant for your model (i.e. it was addressed in the input data file). If not, it should not be called at all!

You may check existence priori to the call with IsXXX() methods, for instance:

if (solid.IsKappa1())
{
decltype(auto) kappa1 = solid.GetKappa1();
...
}
Returns
The Parameter object.

◆ GetC5()

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
const scalar_parameter_type & MoReFEM::Solid< TimeManagerT >::GetC5 ( ) const

Constant accessor to C5.

Attention
This method assumes the parameter is relevant for your model (i.e. it was addressed in the input data file). If not, it should not be called at all!

You may check existence priori to the call with IsXXX() methods, for instance:

if (solid.IsKappa1())
{
decltype(auto) kappa1 = solid.GetKappa1();
...
}
Returns
The Parameter object.

◆ GetViscosity()

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
const scalar_parameter_type & MoReFEM::Solid< TimeManagerT >::GetViscosity ( ) const

Constant accessor to the viscosity.

Attention
This method assumes the parameter is relevant for your model (i.e. it was addressed in the input data file). If not, it should not be called at all!

You may check existence priori to the call with IsXXX() methods, for instance:

if (solid.IsKappa1())
{
decltype(auto) kappa1 = solid.GetKappa1();
...
}
Returns
The Parameter object.

◆ IsHyperelasticBulk()

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
bool MoReFEM::Solid< TimeManagerT >::IsHyperelasticBulk ( ) const
noexcept

Whether the parameter is relevant for the Model considered.

It might be irrelevant in two ways:

  • Either it's truly pointless for the Model, and it's not even present in the InputData.
  • Or it's present but the user chose the value 'ignore' as the nature of the parameter.
Returns
True if the related accessor may be used safely.

◆ IsKappa1()

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
bool MoReFEM::Solid< TimeManagerT >::IsKappa1 ( ) const
noexcept

Whether the parameter is relevant for the Model considered.

It might be irrelevant in two ways:

  • Either it's truly pointless for the Model, and it's not even present in the InputData.
  • Or it's present but the user chose the value 'ignore' as the nature of the parameter.
Returns
True if the related accessor may be used safely.

◆ IsKappa2()

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
bool MoReFEM::Solid< TimeManagerT >::IsKappa2 ( ) const
noexcept

Whether the parameter is relevant for the Model considered.

It might be irrelevant in two ways:

  • Either it's truly pointless for the Model, and it's not even present in the InputData.
  • Or it's present but the user chose the value 'ignore' as the nature of the parameter.
Returns
True if the related accessor may be used safely.

◆ IsYoungModulus()

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
bool MoReFEM::Solid< TimeManagerT >::IsYoungModulus ( ) const
noexcept

Whether the parameter is relevant for the Model considered.

It might be irrelevant in two ways:

  • Either it's truly pointless for the Model, and it's not even present in the InputData.
  • Or it's present but the user chose the value 'ignore' as the nature of the parameter.
Returns
True if the related accessor may be used safely.

◆ IsPoissonRatio()

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
bool MoReFEM::Solid< TimeManagerT >::IsPoissonRatio ( ) const
noexcept

Whether the parameter is relevant for the Model considered.

It might be irrelevant in two ways:

  • Either it's truly pointless for the Model, and it's not even present in the InputData.
  • Or it's present but the user chose the value 'ignore' as the nature of the parameter.
Returns
True if the related accessor may be used safely.

◆ IsLameLambda()

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
bool MoReFEM::Solid< TimeManagerT >::IsLameLambda ( ) const
noexcept

Whether the parameter is relevant for the Model considered.

It might be irrelevant in two ways:

  • Either it's truly pointless for the Model, and it's not even present in the InputData.
  • Or it's present but the user chose the value 'ignore' as the nature of the parameter.
Returns
True if the related accessor may be used safely.

◆ IsLameMu()

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
bool MoReFEM::Solid< TimeManagerT >::IsLameMu ( ) const
noexcept

Whether the parameter is relevant for the Model considered.

It might be irrelevant in two ways:

  • Either it's truly pointless for the Model, and it's not even present in the InputData.
  • Or it's present but the user chose the value 'ignore' as the nature of the parameter.
Returns
True if the related accessor may be used safely.

◆ IsMu1()

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
bool MoReFEM::Solid< TimeManagerT >::IsMu1 ( ) const
noexcept

Whether the parameter is relevant for the Model considered.

It might be irrelevant in two ways:

  • Either it's truly pointless for the Model, and it's not even present in the InputData.
  • Or it's present but the user chose the value 'ignore' as the nature of the parameter.
Returns
True if the related accessor may be used safely.

◆ IsMu2()

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
bool MoReFEM::Solid< TimeManagerT >::IsMu2 ( ) const
noexcept

Whether the parameter is relevant for the Model considered.

It might be irrelevant in two ways:

  • Either it's truly pointless for the Model, and it's not even present in the InputData.
  • Or it's present but the user chose the value 'ignore' as the nature of the parameter.
Returns
True if the related accessor may be used safely.

◆ IsC0()

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
bool MoReFEM::Solid< TimeManagerT >::IsC0 ( ) const
noexcept

Whether the parameter is relevant for the Model considered.

It might be irrelevant in two ways:

  • Either it's truly pointless for the Model, and it's not even present in the InputData.
  • Or it's present but the user chose the value 'ignore' as the nature of the parameter.
Returns
True if the related accessor may be used safely.

◆ IsC1()

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
bool MoReFEM::Solid< TimeManagerT >::IsC1 ( ) const
noexcept

Whether the parameter is relevant for the Model considered.

It might be irrelevant in two ways:

  • Either it's truly pointless for the Model, and it's not even present in the InputData.
  • Or it's present but the user chose the value 'ignore' as the nature of the parameter.
Returns
True if the related accessor may be used safely.

◆ IsC2()

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
bool MoReFEM::Solid< TimeManagerT >::IsC2 ( ) const
noexcept

Whether the parameter is relevant for the Model considered.

It might be irrelevant in two ways:

  • Either it's truly pointless for the Model, and it's not even present in the InputData.
  • Or it's present but the user chose the value 'ignore' as the nature of the parameter.
Returns
True if the related accessor may be used safely.

◆ IsC3()

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
bool MoReFEM::Solid< TimeManagerT >::IsC3 ( ) const
noexcept

Whether the parameter is relevant for the Model considered.

It might be irrelevant in two ways:

  • Either it's truly pointless for the Model, and it's not even present in the InputData.
  • Or it's present but the user chose the value 'ignore' as the nature of the parameter.
Returns
True if the related accessor may be used safely.

◆ IsC4()

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
bool MoReFEM::Solid< TimeManagerT >::IsC4 ( ) const
noexcept

Whether the parameter is relevant for the Model considered.

It might be irrelevant in two ways:

  • Either it's truly pointless for the Model, and it's not even present in the InputData.
  • Or it's present but the user chose the value 'ignore' as the nature of the parameter.
Returns
True if the related accessor may be used safely.

◆ IsC5()

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
bool MoReFEM::Solid< TimeManagerT >::IsC5 ( ) const
noexcept

Whether the parameter is relevant for the Model considered.

It might be irrelevant in two ways:

  • Either it's truly pointless for the Model, and it's not even present in the InputData.
  • Or it's present but the user chose the value 'ignore' as the nature of the parameter.
Returns
True if the related accessor may be used safely.

◆ IsViscosity()

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
bool MoReFEM::Solid< TimeManagerT >::IsViscosity ( ) const
noexcept

Whether the parameter is relevant for the Model considered.

It might be irrelevant in two ways:

  • Either it's truly pointless for the Model, and it's not even present in the InputData.
  • Or it's present but the user chose the value 'ignore' as the nature of the parameter.
Returns
True if the related accessor may be used safely.

◆ CheckConsistency()

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
void MoReFEM::Solid< TimeManagerT >::CheckConsistency ( double relative_tolerance) const
private

Check the material parameters are auto-consistent.

Parameters
[in]relative_toleranceRelative 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.

Field Documentation

◆ hyperelastic_bulk_

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
scalar_parameter_type::unique_ptr MoReFEM::Solid< TimeManagerT >::hyperelastic_bulk_ = nullptr
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).

◆ kappa_list_

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
scalar_parameter_type::template array_unique_ptr<2> MoReFEM::Solid< TimeManagerT >::kappa_list_ { { nullptr, nullptr } }
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).

◆ young_poisson_

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
scalar_parameter_type::template array_unique_ptr<2> MoReFEM::Solid< TimeManagerT >::young_poisson_ { { nullptr, nullptr } }
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).

◆ lame_coeff_

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
scalar_parameter_type::template array_unique_ptr<2> MoReFEM::Solid< TimeManagerT >::lame_coeff_ { { nullptr, nullptr } }
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).

◆ mu_i_C_i_

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
scalar_parameter_type::template array_unique_ptr<8> MoReFEM::Solid< TimeManagerT >::mu_i_C_i_
private
Initial value:
{
{ nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr, nullptr }
}

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).

◆ viscosity_

template<TIME_MANAGER_TEMPLATE_KEYWORD TimeManagerT>
scalar_parameter_type::unique_ptr MoReFEM::Solid< TimeManagerT >::viscosity_ = nullptr
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).


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