GMatElastic 0.5.3
Loading...
Searching...
No Matches
GMatElastic::Cartesian3d::Elastic< N > Class Template Reference

Array of material points with a linear elastic constitutive response. More...

#include <GMatElastic/Cartesian3d.h>

Inheritance diagram for GMatElastic::Cartesian3d::Elastic< N >:
GMatTensor::Cartesian3d::Array< N >

Public Member Functions

template<class T >
 Elastic (const T &K, const T &G)
 Construct system. More...
 
const array_type::tensor< double, N > & K () const
 Bulk modulus per item. More...
 
const array_type::tensor< double, N > & G () const
 Shear modulus per item. More...
 
template<class T >
void set_Eps (const T &arg)
 Set strain tensors. More...
 
template<class T >
void set_Eps (const T &arg, bool compute_tangent)
 Set strain tensors. More...
 
virtual void refresh (bool compute_tangent=true)
 Recompute stress from strain. More...
 
const array_type::tensor< double, N+2 > & Eps () const
 Strain tensor per item. More...
 
array_type::tensor< double, N+2 > & Eps ()
 Strain tensor per item. More...
 
const array_type::tensor< double, N+2 > & Sig () const
 Stress tensor per item. More...
 
const array_type::tensor< double, N+4 > & C () const
 Tangent tensor per item. More...
 
virtual array_type::tensor< double, N > energy () const
 Potential energy per item. More...
 
- Public Member Functions inherited from GMatTensor::Cartesian3d::Array< N >
 Array (const std::array< size_t, N > &shape)
 Constructor. More...
 
const std::array< size_t, N > & shape () const
 Shape of the array (of scalars). More...
 
const std::array< size_t, N+2 > & shape_tensor2 () const
 Shape of the array of second-order tensors. More...
 
const std::array< size_t, N+4 > & shape_tensor4 () const
 Shape of the array of fourth-order tensors. More...
 
array_type::tensor< double, N+2 > O2 () const
 Array of Cartesian3d::O2() More...
 
array_type::tensor< double, N+4 > O4 () const
 Array of Cartesian3d::O4() More...
 
array_type::tensor< double, N+2 > I2 () const
 Array of Cartesian3d::I2() More...
 
array_type::tensor< double, N+4 > II () const
 Array of Cartesian3d::II() More...
 
array_type::tensor< double, N+4 > I4 () const
 Array of Cartesian3d::I4() More...
 
array_type::tensor< double, N+4 > I4rt () const
 Array of Cartesian3d::I4rt() More...
 
array_type::tensor< double, N+4 > I4s () const
 Array of Cartesian3d::I4s() More...
 
array_type::tensor< double, N+4 > I4d () const
 Array of Cartesian3d::I4d() More...
 

Protected Member Functions

template<class T >
void init_Elastic (const T &K, const T &G)
 Construct system. More...
 
- Protected Member Functions inherited from GMatTensor::Cartesian3d::Array< N >
void init (const std::array< size_t, N > &shape)
 Constructor 'alias'. More...
 

Protected Attributes

array_type::tensor< double, N > m_K
 Bulk modulus per item. More...
 
array_type::tensor< double, N > m_G
 Shear modulus per item. More...
 
array_type::tensor< double, N+2 > m_Eps
 Strain tensor per item. More...
 
array_type::tensor< double, N+2 > m_Sig
 Stress tensor per item. More...
 
array_type::tensor< double, N+4 > m_C
 Tangent per item. More...
 
- Protected Attributes inherited from GMatTensor::Cartesian3d::Array< N >
size_t m_size
 Size of the array (of scalars) == prod(m_shape). More...
 
std::array< size_t, N > m_shape
 Shape of the array (of scalars). More...
 
std::array< size_t, N+2 > m_shape_tensor2
 Shape of an array of 2nd-order tensors == [m_shape, 3, 3]. More...
 
std::array< size_t, N+4 > m_shape_tensor4
 Shape of an array of 4th-order tensors == [m_shape, 3, 3, 3, 3]. More...
 

Additional Inherited Members

- Static Public Attributes inherited from GMatTensor::Cartesian3d::Array< N >
static constexpr std::size_t rank = N
 Rank of the array (the actual rank is increased with the tensor-rank). More...
 
- Static Protected Attributes inherited from GMatTensor::Cartesian3d::Array< N >
static constexpr size_t m_ndim = 3
 Number of dimensions of tensors. More...
 
static constexpr size_t m_stride_tensor2 = 9
 Storage stride for 2nd-order tensors ( \( 3^2 \)). More...
 
static constexpr size_t m_stride_tensor4 = 81
 Storage stride for 4th-order tensors ( \( 3^4 \)). More...
 

Detailed Description

template<size_t N>
class GMatElastic::Cartesian3d::Elastic< N >

Array of material points with a linear elastic constitutive response.

Template Parameters
NRank of the array.

Definition at line 109 of file Cartesian3d.h.

Constructor & Destructor Documentation

◆ Elastic()

template<size_t N>
template<class T >
GMatElastic::Cartesian3d::Elastic< N >::Elastic ( const T &  K,
const T &  G 
)
inline

Construct system.

Parameters
KBulk modulus per item.
GShear modulus per item.

Definition at line 136 of file Cartesian3d.h.

Member Function Documentation

◆ C()

template<size_t N>
const array_type::tensor< double, N+4 > & GMatElastic::Cartesian3d::Elastic< N >::C ( ) const
inline

Tangent tensor per item.

Returns
[shape(), 3, 3, 3, 3].

Definition at line 307 of file Cartesian3d.h.

◆ energy()

template<size_t N>
virtual array_type::tensor< double, N > GMatElastic::Cartesian3d::Elastic< N >::energy ( ) const
inlinevirtual

Potential energy per item.

Returns
[shape()].

Definition at line 316 of file Cartesian3d.h.

◆ Eps() [1/2]

template<size_t N>
array_type::tensor< double, N+2 > & GMatElastic::Cartesian3d::Elastic< N >::Eps ( )
inline

Strain tensor per item.

The user is responsible for calling refresh() after modifying entries.

Returns
[shape(), 3, 3].

Definition at line 289 of file Cartesian3d.h.

◆ Eps() [2/2]

template<size_t N>
const array_type::tensor< double, N+2 > & GMatElastic::Cartesian3d::Elastic< N >::Eps ( ) const
inline

Strain tensor per item.

Returns
[shape(), 3, 3].

Definition at line 279 of file Cartesian3d.h.

◆ G()

template<size_t N>
const array_type::tensor< double, N > & GMatElastic::Cartesian3d::Elastic< N >::G ( ) const
inline

Shear modulus per item.

Returns
[shape()].

Definition at line 193 of file Cartesian3d.h.

◆ init_Elastic()

template<size_t N>
template<class T >
void GMatElastic::Cartesian3d::Elastic< N >::init_Elastic ( const T &  K,
const T &  G 
)
inlineprotected

Construct system.

Parameters
KBulk modulus per item.
GShear modulus per item.

Definition at line 148 of file Cartesian3d.h.

◆ K()

template<size_t N>
const array_type::tensor< double, N > & GMatElastic::Cartesian3d::Elastic< N >::K ( ) const
inline

Bulk modulus per item.

Returns
[shape()].

Definition at line 184 of file Cartesian3d.h.

◆ refresh()

template<size_t N>
virtual void GMatElastic::Cartesian3d::Elastic< N >::refresh ( bool  compute_tangent = true)
inlinevirtual

Recompute stress from strain.

From C++, this function need never be called: the API takes care of this.

For Python, this function should only be called when you modify elements of Eps(). For example

mat.Eps[e, q, 0, 1] = value
...
mat.refresh() # "Eps" was changed without "mat" knowing

Instead, if you write an nd-array, the API takes care of the refresh. I.e.

mat.Eps = new_Eps
# no further action needed, "mat" was refreshed

Note though that you can call this function as often as you like, you will only loose time.

Parameters
compute_tangentUpdate tangent (if needed).

Definition at line 248 of file Cartesian3d.h.

◆ set_Eps() [1/2]

template<size_t N>
template<class T >
void GMatElastic::Cartesian3d::Elastic< N >::set_Eps ( const T &  arg)
inline

Set strain tensors.

Internally, this calls refresh() to update stress.

Template Parameters
Te.g. array_type::tensor<double, N + 2>
Parameters
argStrain tensor per item [shape(), 3, 3].

Definition at line 205 of file Cartesian3d.h.

◆ set_Eps() [2/2]

template<size_t N>
template<class T >
void GMatElastic::Cartesian3d::Elastic< N >::set_Eps ( const T &  arg,
bool  compute_tangent 
)
inline

Set strain tensors.

Internally, this calls refresh() to update stress.

Template Parameters
Te.g. array_type::tensor<double, N + 2>
Parameters
argStrain tensor per item [shape(), 3, 3].
compute_tangentUpdate tangent (if needed).

Definition at line 220 of file Cartesian3d.h.

◆ Sig()

template<size_t N>
const array_type::tensor< double, N+2 > & GMatElastic::Cartesian3d::Elastic< N >::Sig ( ) const
inline

Stress tensor per item.

Returns
[shape(), 3, 3].

Definition at line 298 of file Cartesian3d.h.

Member Data Documentation

◆ m_C

template<size_t N>
array_type::tensor<double, N + 4> GMatElastic::Cartesian3d::Elastic< N >::m_C
protected

Tangent per item.

Definition at line 115 of file Cartesian3d.h.

◆ m_Eps

template<size_t N>
array_type::tensor<double, N + 2> GMatElastic::Cartesian3d::Elastic< N >::m_Eps
protected

Strain tensor per item.

Definition at line 113 of file Cartesian3d.h.

◆ m_G

template<size_t N>
array_type::tensor<double, N> GMatElastic::Cartesian3d::Elastic< N >::m_G
protected

Shear modulus per item.

Definition at line 112 of file Cartesian3d.h.

◆ m_K

template<size_t N>
array_type::tensor<double, N> GMatElastic::Cartesian3d::Elastic< N >::m_K
protected

Bulk modulus per item.

Definition at line 111 of file Cartesian3d.h.

◆ m_Sig

template<size_t N>
array_type::tensor<double, N + 2> GMatElastic::Cartesian3d::Elastic< N >::m_Sig
protected

Stress tensor per item.

Definition at line 114 of file Cartesian3d.h.


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