Go to the documentation of this file.
11 #include "RotationMatrix.h"
12 #include "libmesh/utility.h"
22 params.addClassDescription(
"Capped weak inclined plane plasticity stress calculator");
23 params.addRequiredParam<RealVectorValue>(
"normal_vector",
"The normal vector to the weak plane");
28 const InputParameters & parameters)
30 _n_input(getParam<RealVectorValue>(
"normal_vector")),
31 _n(declareProperty<RealVectorValue>(
"weak_plane_normal")),
32 _n_old(getMaterialProperty<RealVectorValue>(
"weak_plane_normal")),
33 _rot_n_to_z(RealTensorValue()),
34 _rot_z_to_n(RealTensorValue()),
39 mooseError(
"CappedWeakInclinedPlaneStressUpdate: normal_vector must not have zero length");
59 for (
unsigned int i = 0; i < LIBMESH_DIM; ++i)
62 for (
unsigned int j = 0; j < LIBMESH_DIM; ++j)
63 _n[_qp](i) += rotation_increment(i, j) *
_n_old[_qp](j);
82 const std::vector<Real> & ,
83 const std::vector<Real> & yf,
109 p = rotated_stress(2, 2);
110 q = std::sqrt(Utility::pow<2>(rotated_stress(0, 2)) + Utility::pow<2>(rotated_stress(1, 2)));
127 const std::vector<Real> & ,
140 stress(2, 0) = stress(2, 1) = stress(0, 2) = stress(1, 2) = 0.0;
161 bool compute_full_tangent_operator,
173 compute_full_tangent_operator,
RealVectorValue _n_input
User-input value of the normal vector to the weak plane.
CappedWeakInclinedPlaneStressUpdate performs the return-map algorithm and associated stress updates f...
const MaterialProperty< RealVectorValue > & _n_old
Old value of the normal.
RankFourTensor _rotated_Eijkl
Elasticity tensor rotated to the frame where _n points along "z".
const bool _perform_finite_strain_rotations
Whether to perform finite-strain rotations.
MaterialProperty< RealVectorValue > & _n
Current value of the normal.
Struct designed to hold info about a single yield function and its derivatives, as well as the flow d...
virtual void setStressAfterReturn(const RankTwoTensor &stress_trial, Real p_ok, Real q_ok, Real gaE, const std::vector< Real > &intnl, const yieldAndFlow &smoothed_q, const RankFourTensor &Eijkl, RankTwoTensor &stress) const override
Sets stress from the admissible parameters.
Real _in_trial02
trial value of stress(0, 2)
RankTwoTensor _rotated_trial
Trial stress rotated to the frame where _n points along "z".
RealTensorValue _rot_n_to_z
Rotation matrix that rotates _n to "z".
virtual RankFourTensor d2qdstress2(const RankTwoTensor &stress) const override
d2(q)/d(stress)/d(stress) Derived classes must override this
CappedWeakInclinedPlaneStressUpdate(const InputParameters ¶meters)
RealTensorValue _rot_z_to_n
Rotation matrix that rotates "z" to _n.
virtual void initQpStatefulProperties() override
registerMooseObject("TensorMechanicsApp", CappedWeakInclinedPlaneStressUpdate)
Real _Epp
elasticity tensor in p direction
static InputParameters validParams()
virtual void preReturnMap(Real p_trial, Real q_trial, const RankTwoTensor &stress_trial, const std::vector< Real > &intnl_old, const std::vector< Real > &yf, const RankFourTensor &Eijkl) override
Derived classes may employ this function to record stuff or do other computations prior to the return...
virtual RankFourTensor d2qdstress2(const RankTwoTensor &stress) const override
d2(q)/d(stress)/d(stress) Derived classes must override this
virtual void consistentTangentOperator(const RankTwoTensor &stress_trial, Real p_trial, Real q_trial, const RankTwoTensor &stress, Real p, Real q, Real gaE, const yieldAndFlow &smoothed_q, const RankFourTensor &Eijkl, bool compute_full_tangent_operator, RankFourTensor &cto) const override
Calculates the consistent tangent operator.
virtual RankTwoTensor dqdstress(const RankTwoTensor &stress) const override
d(q)/d(stress) Derived classes must override this
virtual void initializeReturnProcess() override
Derived classes may use this to perform calculations before any return-map process is performed,...
Real _in_trial12
trial value of stress(1, 2)
Real _in_q_trial
trial value of q
virtual void initQpStatefulProperties() override
virtual void finalizeReturnProcess(const RankTwoTensor &rotation_increment) override
Derived classes may use this to perform calculations after the return-map process has completed succe...
RankTwoTensorTempl< Real > RankTwoTensor
virtual void computePQ(const RankTwoTensor &stress, Real &p, Real &q) const override
Computes p and q, given stress.
static InputParameters validParams()
virtual void finalizeReturnProcess(const RankTwoTensor &rotation_increment) override
Derived classes may use this to perform calculations after the return-map process has completed succe...
virtual RankTwoTensor dqdstress(const RankTwoTensor &stress) const override
d(q)/d(stress) Derived classes must override this
virtual void initializeReturnProcess() override
Derived classes may use this to perform calculations before any return-map process is performed,...
CappedWeakPlaneStressUpdate performs the return-map algorithm and associated stress updates for plast...
enum CappedWeakPlaneStressUpdate::StressReturnType _stress_return_type
virtual void setEppEqq(const RankFourTensor &Eijkl, Real &Epp, Real &Eqq) const override
Set Epp and Eqq based on the elasticity tensor Derived classes must override this.
defineLegacyParams(CappedWeakInclinedPlaneStressUpdate)
virtual RankTwoTensor dpdstress(const RankTwoTensor &stress) const override
d(p)/d(stress) Derived classes must override this
virtual void consistentTangentOperator(const RankTwoTensor &stress_trial, Real p_trial, Real q_trial, const RankTwoTensor &stress, Real p, Real q, Real gaE, const yieldAndFlow &smoothed_q, const RankFourTensor &Eijkl, bool compute_full_tangent_operator, RankFourTensor &cto) const
Calculates the consistent tangent operator.