GMatElastoPlasticQPot 0.18.3
Loading...
Searching...
No Matches
GMatElastoPlasticQPot::Cartesian3d::Cusp< N > Class Template Reference

Array of material points with an elasto-plastic material model. More...

#include <GMatElastoPlasticQPot/Cartesian3d.h>

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

Public Member Functions

template<class T , class Y >
 Cusp (const T &K, const T &G, const Y &epsy)
 Construct system. More...
 
const array_type::tensor< double, N+1 > & epsy () const
 Yield strains per item. More...
 
template<class T >
void set_epsy (const T &epsy)
 Overwrite yield strains per item. More...
 
const array_type::tensor< size_t, N > & i () const
 Index of the current yield strain per item. More...
 
const array_type::tensor< double, N > & eps () const
 Equivalent strain per item. More...
 
array_type::tensor< double, N > epsy_left () const
 Current yield strain left per item. More...
 
array_type::tensor< double, N > epsy_right () const
 Current yield strain right per item. More...
 
array_type::tensor< double, N > epsp () const
 Plastic strain per item. More...
 
void refresh (bool compute_tangent=true) override
 Recompute stress from strain. More...
 
array_type::tensor< double, N > energy () const override
 Potential energy per item. More...
 
- Public Member Functions inherited from GMatElastic::Cartesian3d::Elastic< N >
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 , class Y >
void init_Cusp (const T &K, const T &G, const Y &epsy)
 Construct system. More...
 
- Protected Member Functions inherited from GMatElastic::Cartesian3d::Elastic< N >
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< size_t, N > m_i
 Index of the current yield strain per item. More...
 
array_type::tensor< double, N > m_eps
 Equivalent strain. More...
 
array_type::tensor< double, N+1 > m_epsy
 Yield strain sequence. More...
 
size_t m_nyield
 shape(-1) More...
 
- Protected Attributes inherited from GMatElastic::Cartesian3d::Elastic< N >
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 GMatElastoPlasticQPot::Cartesian3d::Cusp< N >

Array of material points with an elasto-plastic material model.

The response is defined by a potential energy landscape consisting of a sequence of parabolic wells.

The corresponding elastic response is GMatElastic::Cartesian3d::Elastic.

Template Parameters
NRank of the array.

Definition at line 129 of file Cartesian3d.h.

Constructor & Destructor Documentation

◆ Cusp()

template<size_t N>
template<class T , class Y >
GMatElastoPlasticQPot::Cartesian3d::Cusp< N >::Cusp ( const T &  K,
const T &  G,
const Y &  epsy 
)
inline

Construct system.

Parameters
KBulk modulus per item.
GShear modulus per item.
epsyYield strain sequence per item.

Definition at line 162 of file Cartesian3d.h.

Member Function Documentation

◆ energy()

template<size_t N>
array_type::tensor< double, N > GMatElastoPlasticQPot::Cartesian3d::Cusp< N >::energy ( ) const
inlineoverridevirtual

Potential energy per item.

Returns
[shape()].

Reimplemented from GMatElastic::Cartesian3d::Elastic< N >.

Reimplemented in GMatElastoPlasticQPot::Cartesian3d::Smooth< N >.

Definition at line 332 of file Cartesian3d.h.

◆ eps()

template<size_t N>
const array_type::tensor< double, N > & GMatElastoPlasticQPot::Cartesian3d::Cusp< N >::eps ( ) const
inline

Equivalent strain per item.

Returns
[shape()].

Definition at line 232 of file Cartesian3d.h.

◆ epsp()

template<size_t N>
array_type::tensor< double, N > GMatElastoPlasticQPot::Cartesian3d::Cusp< N >::epsp ( ) const
inline

Plastic strain per item.

Convenience function, same as (epsy[..., i] + epsy[..., i + 1]) / 2.

Returns
[shape()].

Definition at line 274 of file Cartesian3d.h.

◆ epsy()

template<size_t N>
const array_type::tensor< double, N+1 > & GMatElastoPlasticQPot::Cartesian3d::Cusp< N >::epsy ( ) const
inline

Yield strains per item.

Returns
[shape()].

Definition at line 188 of file Cartesian3d.h.

◆ epsy_left()

template<size_t N>
array_type::tensor< double, N > GMatElastoPlasticQPot::Cartesian3d::Cusp< N >::epsy_left ( ) const
inline

Current yield strain left per item.

Convenience function, same as epsy[..., i].

Returns
[shape()].

Definition at line 242 of file Cartesian3d.h.

◆ epsy_right()

template<size_t N>
array_type::tensor< double, N > GMatElastoPlasticQPot::Cartesian3d::Cusp< N >::epsy_right ( ) const
inline

Current yield strain right per item.

Convenience function, same as epsy[..., i + 1].

Returns
[shape()].

Definition at line 258 of file Cartesian3d.h.

◆ i()

template<size_t N>
const array_type::tensor< size_t, N > & GMatElastoPlasticQPot::Cartesian3d::Cusp< N >::i ( ) const
inline

Index of the current yield strain per item.

By definition epsy[..., i] < eps[...] <= epsy[..., i + 1]

Returns
[shape()].

Definition at line 223 of file Cartesian3d.h.

◆ init_Cusp()

template<size_t N>
template<class T , class Y >
void GMatElastoPlasticQPot::Cartesian3d::Cusp< N >::init_Cusp ( const T &  K,
const T &  G,
const Y &  epsy 
)
inlineprotected

Construct system.

Parameters
KBulk modulus per item.
GShear modulus per item.
epsyYield strain sequence per item.

Definition at line 175 of file Cartesian3d.h.

◆ refresh()

template<size_t N>
void GMatElastoPlasticQPot::Cartesian3d::Cusp< N >::refresh ( bool  compute_tangent = true)
inlineoverridevirtual

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

Reimplemented from GMatElastic::Cartesian3d::Elastic< N >.

Reimplemented in GMatElastoPlasticQPot::Cartesian3d::Smooth< N >.

Definition at line 286 of file Cartesian3d.h.

◆ set_epsy()

template<size_t N>
template<class T >
void GMatElastoPlasticQPot::Cartesian3d::Cusp< N >::set_epsy ( const T &  epsy)
inline

Overwrite yield strains per item.

Parameters
epsyYield strain sequence per item.

Definition at line 198 of file Cartesian3d.h.

Member Data Documentation

◆ m_eps

template<size_t N>
array_type::tensor<double, N> GMatElastoPlasticQPot::Cartesian3d::Cusp< N >::m_eps
protected

Equivalent strain.

Definition at line 132 of file Cartesian3d.h.

◆ m_epsy

template<size_t N>
array_type::tensor<double, N + 1> GMatElastoPlasticQPot::Cartesian3d::Cusp< N >::m_epsy
protected

Yield strain sequence.

Definition at line 133 of file Cartesian3d.h.

◆ m_i

template<size_t N>
array_type::tensor<size_t, N> GMatElastoPlasticQPot::Cartesian3d::Cusp< N >::m_i
protected

Index of the current yield strain per item.

Definition at line 131 of file Cartesian3d.h.

◆ m_nyield

template<size_t N>
size_t GMatElastoPlasticQPot::Cartesian3d::Cusp< N >::m_nyield
protected

shape(-1)

Definition at line 134 of file Cartesian3d.h.


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