FrictionQPotFEM 0.23.3
|
Trigger element by a linear combination of simple shear and a pure shear perturbations. More...
#include <FrictionQPotFEM/UniformSingleLayer2d.h>
Public Member Functions | |
LocalTriggerFineLayerFull (const System &sys) | |
Constructor, reading the basic properties of the System, and computing the perturbation for all plastic elements. More... | |
array_type::tensor< double, 2 > | u_s (size_t trigger_plastic) const |
Displacement field for the simple shear eigen-stress applied to a specific element. More... | |
array_type::tensor< double, 2 > | u_p (size_t trigger_plastic) const |
Displacement field for the pure shear eigen-stress applied to a specific element. More... | |
virtual array_type::tensor< double, 4 > | Eps_s (size_t trigger_plastic) const |
Integration point strain tensors for LocalTriggerFineLayerFull::u_s. More... | |
virtual array_type::tensor< double, 4 > | Eps_p (size_t trigger_plastic) const |
Integration point strain tensors for LocalTriggerFineLayerFull::u_p. More... | |
virtual array_type::tensor< double, 4 > | Sig_s (size_t trigger_plastic) const |
Integration point stress tensors for LocalTriggerFineLayerFull::u_s. More... | |
virtual array_type::tensor< double, 4 > | Sig_p (size_t trigger_plastic) const |
Integration point stress tensors for LocalTriggerFineLayerFull::u_p. More... | |
virtual array_type::tensor< double, 2 > | slice (const array_type::tensor< double, 2 > &arg, size_t e) const |
Empty function, used by LocalTriggerFineLayer. More... | |
virtual array_type::tensor< double, 4 > | slice (const array_type::tensor< double, 4 > &arg, size_t e) const |
Empty function, used by LocalTriggerFineLayer. More... | |
void | setState (const array_type::tensor< double, 4 > &Eps, const array_type::tensor< double, 4 > &Sig, const array_type::tensor< double, 2 > &epsy, size_t N=100) |
Set current state and compute energy barriers to reach the specified yield surface (for all plastic elements). More... | |
void | setStateMinimalSearch (const array_type::tensor< double, 4 > &Eps, const array_type::tensor< double, 4 > &Sig, const array_type::tensor< double, 2 > &epsy) |
Set current state and compute energy barriers to reach the specified yield surface (for all plastic elements). More... | |
void | setStateSimpleShear (const array_type::tensor< double, 4 > &Eps, const array_type::tensor< double, 4 > &Sig, const array_type::tensor< double, 2 > &epsy) |
Set current state and compute energy barriers to reach the specified yield surface, for a purely simple shear perturbation (for all plastic elements) More... | |
array_type::tensor< double, 2 > | barriers () const |
Get all energy barriers, as energy density. More... | |
const array_type::tensor< double, 2 > & | p () const |
The energy barrier in LocalTriggerFineLayerFull::barriers is reached with a displacement LocalTriggerFineLayerFull::delta_u = p * LocalTriggerFineLayerFull::u_p + s * LocalTriggerFineLayerFull::u_s. More... | |
const array_type::tensor< double, 2 > & | s () const |
The energy barrier in LocalTriggerFineLayerFull::barriers is reached with a displacement LocalTriggerFineLayerFull::delta_u = p * LocalTriggerFineLayerFull::u_p + s * LocalTriggerFineLayerFull::u_s. More... | |
const array_type::tensor< double, 2 > & | dgamma () const |
Simple shear mode for all integration points of the triggered element, for all elements. More... | |
const array_type::tensor< double, 2 > & | dE () const |
Pure shear mode for all integration points of the triggered element, for all elements. More... | |
array_type::tensor< double, 2 > | delta_u (size_t e, size_t q) const |
The energy barrier in LocalTriggerFineLayerFull::barriers is reached with this displacement field. More... | |
Protected Member Functions | |
template<class T > | |
void | computePerturbation (size_t trigger_plastic, const array_type::tensor< double, 2 > &sig_star, array_type::tensor< double, 2 > &u, array_type::tensor< double, 4 > &Eps, array_type::tensor< double, 4 > &Sig, GooseFEM::MatrixPartitioned &K, GooseFEM::MatrixPartitionedSolver<> &solver, const GooseFEM::Element::Quad4::Quadrature &quad, const GooseFEM::VectorPartitioned &vector, T &material) |
Compute the displacement response to an eigen-stress applied to a plastic element. More... | |
Protected Attributes | |
size_t | m_nip |
Number of integration points. More... | |
size_t | m_nelem_plas |
Number of plastic elements. More... | |
array_type::tensor< size_t, 1 > | m_elem_plas |
Plastic elements. More... | |
std::vector< array_type::tensor< double, 2 > > | m_u_s |
Perturbation for each plastic element. More... | |
std::vector< array_type::tensor< double, 2 > > | m_u_p |
Displacement field for pure shear perturbation. More... | |
std::vector< array_type::tensor< double, 4 > > | m_Eps_s |
Strain field for simple shear perturbation. More... | |
std::vector< array_type::tensor< double, 4 > > | m_Eps_p |
Strain field for pure shear perturbation. More... | |
std::vector< array_type::tensor< double, 4 > > | m_Sig_s |
Stress field for simple shear perturbation. More... | |
std::vector< array_type::tensor< double, 4 > > | m_Sig_p |
Stress field for pure shear perturbation. More... | |
std::vector< array_type::tensor< size_t, 1 > > | m_nodemap |
Node-map for the roll. More... | |
std::vector< array_type::tensor< size_t, 1 > > | m_elemmap |
Element-map for the roll. More... | |
array_type::tensor< double, 2 > | m_dV |
Integration point volume. More... | |
double | m_V |
Volume of a plastic element: assumed homogeneous! More... | |
std::array< size_t, 4 > | m_shape_T2 |
Shape of an integration point tensor. More... | |
array_type::tensor< double, 2 > | m_smin |
value of "s" at minimal work "W" [nip, N] More... | |
array_type::tensor< double, 2 > | m_pmin |
value of "p" at minimal work "W" [nip, N] More... | |
array_type::tensor< double, 2 > | m_Wmin |
value of minimal work "W" [nip, N] More... | |
array_type::tensor< double, 2 > | m_dgamma |
Strain change in the element for each plastic element:: More... | |
array_type::tensor< double, 2 > | m_dE |
== Eps_p(plastic(e), q, 0, 0) [nip, N] More... | |
Trigger element by a linear combination of simple shear and a pure shear perturbations.
The contribution of both perturbation is computed as the minimal energy barrier needed to reach a yield surface for the triggered element, see:
The perturbations are established as the displacement field needed to reach mechanical equilibrium when an eigen-stress is applied to the triggered element (assuming elasticity everywhere). To get the two perturbations a sinple shear and pure shear eigen-stress are applied.
The configuration, including the definition of elasticity is read from the input System.
Definition at line 374 of file UniformSingleLayer2d.h.
|
inline |
Constructor, reading the basic properties of the System, and computing the perturbation for all plastic elements.
The perturbations of all elements are stored internally, making the computation of the energy barriers cheap. Note that this can use significant memory.
sys | The System (or derived class) to trigger. |
Definition at line 387 of file UniformSingleLayer2d.h.
|
inlinevirtual |
Definition at line 494 of file UniformSingleLayer2d.h.
|
inline |
Get all energy barriers, as energy density.
Shape of output: [LocalTriggerFineLayerFull::nelem_elas, LocalTriggerFineLayerFull::nip]. Function reads from memory, all computations are done in the construction and LocalTriggerFineLayerFull::setState (or one of its approximations).
Definition at line 976 of file UniformSingleLayer2d.h.
|
inlineprotected |
Compute the displacement response to an eigen-stress applied to a plastic element.
trigger_plastic | Index of the plastic element. |
sig_star | Eigen-stress applied to trigger_plastic . |
u | Output displacement field. |
Eps | Output integration point strain corresponding to u . |
Sig | Output integration point stress corresponding to u . |
K | Stiffness matrix of the System. |
solver | Diagonalisation of K . |
quad | Numerical quadrature of the System. |
vector | Book-keeping of the System. |
material | Material definition of the System. |
Definition at line 512 of file UniformSingleLayer2d.h.
|
inline |
Pure shear mode for all integration points of the triggered element, for all elements.
The output is thus::
dE(e, q) = Deviatoric(Eps_p)(plastic(e), q).
Definition at line 1034 of file UniformSingleLayer2d.h.
|
inline |
The energy barrier in LocalTriggerFineLayerFull::barriers is reached with this displacement field.
This function takes the index of the plastic element; the real element number is obtained by LocalTriggerFineLayerFull::m_elem_plas(e). Function reads from memory, all computations are done in the construction and LocalTriggerFineLayerFull::setState (or one of its approximations).
e | Index of the plastic element. |
q | Index of the integration point. |
Definition at line 1051 of file UniformSingleLayer2d.h.
|
inline |
Simple shear mode for all integration points of the triggered element, for all elements.
The output is thus::
dgamma(e, q) = Eps_s(plastic(e), q).
Definition at line 1021 of file UniformSingleLayer2d.h.
|
inlinevirtual |
Integration point strain tensors for LocalTriggerFineLayerFull::u_p.
This function takes the index of the plastic element; the real element number is obtained by LocalTriggerFineLayerFull::m_elem_plas(trigger_plastic). Function reads from memory, all computations are done in the constructor.
trigger_plastic | Index of the plastic element. |
Reimplemented in FrictionQPotFEM::UniformSingleLayer2d::LocalTriggerFineLayer.
Definition at line 611 of file UniformSingleLayer2d.h.
|
inlinevirtual |
Integration point strain tensors for LocalTriggerFineLayerFull::u_s.
This function takes the index of the plastic element; the real element number is obtained by LocalTriggerFineLayerFull::m_elem_plas(trigger_plastic). Function reads from memory, all computations are done in the constructor.
trigger_plastic | Index of the plastic element. |
Reimplemented in FrictionQPotFEM::UniformSingleLayer2d::LocalTriggerFineLayer.
Definition at line 593 of file UniformSingleLayer2d.h.
|
inline |
The energy barrier in LocalTriggerFineLayerFull::barriers is reached with a displacement LocalTriggerFineLayerFull::delta_u = p
* LocalTriggerFineLayerFull::u_p + s
* LocalTriggerFineLayerFull::u_s.
This function returns the value of p
. Shape of output: [LocalTriggerFineLayerFull::nelem_elas, LocalTriggerFineLayerFull::nip]. Function reads from memory, all computations are done in the construction and LocalTriggerFineLayerFull::setState (or one of its approximations).
Definition at line 992 of file UniformSingleLayer2d.h.
|
inline |
The energy barrier in LocalTriggerFineLayerFull::barriers is reached with a displacement LocalTriggerFineLayerFull::delta_u = p
* LocalTriggerFineLayerFull::u_p + s
* LocalTriggerFineLayerFull::u_s.
This function returns the value of s
. Shape of output: [LocalTriggerFineLayerFull::nelem_elas, LocalTriggerFineLayerFull::nip]. Function reads from memory, all computations are done in the construction and LocalTriggerFineLayerFull::setState (or one of its approximations).
Definition at line 1008 of file UniformSingleLayer2d.h.
|
inline |
Set current state and compute energy barriers to reach the specified yield surface (for all plastic elements).
The yield surface is discretised in N
steps.
Eps | Integration point strain, see System::Eps. |
Sig | Integration point stress, see System::Sig. |
epsy | Next yield strains, see System::plastic_CurrentYieldRight. |
N | Number of steps in which to discretise the yield surface. |
Definition at line 694 of file UniformSingleLayer2d.h.
|
inline |
Set current state and compute energy barriers to reach the specified yield surface (for all plastic elements).
The yield surface is discretised in only 8
steps.
Eps | Integration point strain, see System::Eps. |
Sig | Integration point stress, see System::Sig. |
epsy | Next yield strains, see System::plastic_CurrentYieldRight. |
Definition at line 810 of file UniformSingleLayer2d.h.
|
inline |
Set current state and compute energy barriers to reach the specified yield surface, for a purely simple shear perturbation (for all plastic elements)
Eps | Integration point strain, see System::Eps. |
Sig | Integration point stress, see System::Sig. |
epsy | Next yield strains, see System::plastic_CurrentYieldRight. |
Definition at line 909 of file UniformSingleLayer2d.h.
|
inlinevirtual |
Integration point stress tensors for LocalTriggerFineLayerFull::u_p.
This function takes the index of the plastic element; the real element number is obtained by LocalTriggerFineLayerFull::m_elem_plas(trigger_plastic). Function reads from memory, all computations are done in the constructor.
trigger_plastic | Index of the plastic element. |
Reimplemented in FrictionQPotFEM::UniformSingleLayer2d::LocalTriggerFineLayer.
Definition at line 647 of file UniformSingleLayer2d.h.
|
inlinevirtual |
Integration point stress tensors for LocalTriggerFineLayerFull::u_s.
This function takes the index of the plastic element; the real element number is obtained by LocalTriggerFineLayerFull::m_elem_plas(trigger_plastic). Function reads from memory, all computations are done in the constructor.
trigger_plastic | Index of the plastic element. |
Reimplemented in FrictionQPotFEM::UniformSingleLayer2d::LocalTriggerFineLayer.
Definition at line 629 of file UniformSingleLayer2d.h.
|
inlinevirtual |
Empty function, used by LocalTriggerFineLayer.
arg | Integration point scalar. |
e | Index of the plastic element. |
arg
. Reimplemented in FrictionQPotFEM::UniformSingleLayer2d::LocalTriggerFineLayer.
Definition at line 664 of file UniformSingleLayer2d.h.
|
inlinevirtual |
Empty function, used by LocalTriggerFineLayer.
arg | Integration point tensor. |
e | Index of the plastic element. |
arg
. Reimplemented in FrictionQPotFEM::UniformSingleLayer2d::LocalTriggerFineLayer.
Definition at line 678 of file UniformSingleLayer2d.h.
|
inline |
Displacement field for the pure shear eigen-stress applied to a specific element.
This function takes the index of the plastic element; the real element number is obtained by LocalTriggerFineLayerFull::m_elem_plas(trigger_plastic). Function reads from memory, all computations are done in the constructor.
trigger_plastic | Index of the plastic element. |
Definition at line 575 of file UniformSingleLayer2d.h.
|
inline |
Displacement field for the simple shear eigen-stress applied to a specific element.
This function takes the index of the plastic element; the real element number is obtained by LocalTriggerFineLayerFull::m_elem_plas(trigger_plastic). Function reads from memory, all computations are done in the constructor.
trigger_plastic | Index of the plastic element. |
Definition at line 557 of file UniformSingleLayer2d.h.
|
protected |
== Eps_p(plastic(e), q, 0, 0) [nip, N]
Definition at line 1097 of file UniformSingleLayer2d.h.
|
protected |
Strain change in the element for each plastic element::
== Eps_s(plastic(e), q, 0, 1) [nip, N]
Definition at line 1096 of file UniformSingleLayer2d.h.
|
protected |
Integration point volume.
Definition at line 1083 of file UniformSingleLayer2d.h.
|
protected |
Plastic elements.
Definition at line 1059 of file UniformSingleLayer2d.h.
|
protected |
Element-map for the roll.
Definition at line 1081 of file UniformSingleLayer2d.h.
|
protected |
Strain field for pure shear perturbation.
Definition at line 1075 of file UniformSingleLayer2d.h.
|
protected |
Strain field for simple shear perturbation.
Definition at line 1073 of file UniformSingleLayer2d.h.
|
protected |
Number of plastic elements.
Definition at line 1058 of file UniformSingleLayer2d.h.
|
protected |
Number of integration points.
Definition at line 1057 of file UniformSingleLayer2d.h.
|
protected |
Node-map for the roll.
Definition at line 1080 of file UniformSingleLayer2d.h.
|
protected |
value of "p" at minimal work "W" [nip, N]
Definition at line 1088 of file UniformSingleLayer2d.h.
|
protected |
Shape of an integration point tensor.
Definition at line 1085 of file UniformSingleLayer2d.h.
|
protected |
Stress field for pure shear perturbation.
Definition at line 1079 of file UniformSingleLayer2d.h.
|
protected |
Stress field for simple shear perturbation.
Definition at line 1077 of file UniformSingleLayer2d.h.
|
protected |
value of "s" at minimal work "W" [nip, N]
Definition at line 1087 of file UniformSingleLayer2d.h.
|
protected |
Displacement field for pure shear perturbation.
Definition at line 1071 of file UniformSingleLayer2d.h.
|
protected |
Perturbation for each plastic element.
The idea is to store/compute the minimal number of perturbations as possible, and use a periodic "roll" to reconstruct the perturbations everywhere. Because of the construction of the "FineLayer"-mesh, one roll of the mesh will not correspond to one roll of the middle layer, therefore a few percolations are needed. Disp. field for simple shear perturbation.
Definition at line 1069 of file UniformSingleLayer2d.h.
|
protected |
Volume of a plastic element: assumed homogeneous!
Definition at line 1084 of file UniformSingleLayer2d.h.
|
protected |
value of minimal work "W" [nip, N]
Definition at line 1089 of file UniformSingleLayer2d.h.