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

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

#include <GMatElastoPlasticQPot/Cartesian3d.h>

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

Public Member Functions

template<class T , class Y >
 Smooth (const T &K, const T &G, const Y &epsy)
 Construct system. 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 GMatElastoPlasticQPot::Cartesian3d::Cusp< N >
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...
 

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...
 
- Protected Member Functions inherited from GMatElastoPlasticQPot::Cartesian3d::Cusp< N >
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 inherited from GMatElastoPlasticQPot::Cartesian3d::Cusp< N >
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...
 
- 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::Smooth< 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 smooth wells.

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

Template Parameters
NRank of the array.

Definition at line 374 of file Cartesian3d.h.

Constructor & Destructor Documentation

◆ Smooth()

template<size_t N>
template<class T , class Y >
GMatElastoPlasticQPot::Cartesian3d::Smooth< N >::Smooth ( 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 407 of file Cartesian3d.h.

Member Function Documentation

◆ energy()

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

Potential energy per item.

Returns
[shape()].

Reimplemented from GMatElastoPlasticQPot::Cartesian3d::Cusp< N >.

Definition at line 459 of file Cartesian3d.h.

◆ refresh()

template<size_t N>
void GMatElastoPlasticQPot::Cartesian3d::Smooth< 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 GMatElastoPlasticQPot::Cartesian3d::Cusp< N >.

Definition at line 412 of file Cartesian3d.h.


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