www.mooseframework.org
CappedMohrCoulombStressUpdate.h
Go to the documentation of this file.
1 //* This file is part of the MOOSE framework
2 //* https://www.mooseframework.org
3 //*
4 //* All rights reserved, see COPYRIGHT for full restrictions
5 //* https://github.com/idaholab/moose/blob/master/COPYRIGHT
6 //*
7 //* Licensed under LGPL 2.1, please see LICENSE for details
8 //* https://www.gnu.org/licenses/lgpl-2.1.html
9 
10 #pragma once
11 
14 
16 
17 template <>
19 
25 {
26 public:
27  static InputParameters validParams();
28 
29  CappedMohrCoulombStressUpdate(const InputParameters & parameters);
30 
34  bool requiresIsotropicTensor() override { return true; }
35 
36  bool isIsotropic() override { return true; };
37 
38 protected:
41 
44 
47 
50 
53 
55  const bool _perfect_guess;
56 
59 
65  const Real _shifter;
66 
69 
70  void computeStressParams(const RankTwoTensor & stress,
71  std::vector<Real> & stress_params) const override;
72 
73  std::vector<RankTwoTensor> dstress_param_dstress(const RankTwoTensor & stress) const override;
74 
75  std::vector<RankFourTensor> d2stress_param_dstress(const RankTwoTensor & stress) const override;
76 
77  virtual void setStressAfterReturnV(const RankTwoTensor & stress_trial,
78  const std::vector<Real> & stress_params,
79  Real gaE,
80  const std::vector<Real> & intnl,
81  const yieldAndFlow & smoothed_q,
82  const RankFourTensor & Eijkl,
83  RankTwoTensor & stress) const override;
84 
85  virtual void preReturnMapV(const std::vector<Real> & trial_stress_params,
86  const RankTwoTensor & stress_trial,
87  const std::vector<Real> & intnl_old,
88  const std::vector<Real> & yf,
89  const RankFourTensor & Eijkl) override;
90 
91  void setEffectiveElasticity(const RankFourTensor & Eijkl) override;
92 
93  void yieldFunctionValuesV(const std::vector<Real> & stress_params,
94  const std::vector<Real> & intnl,
95  std::vector<Real> & yf) const override;
96 
97  void computeAllQV(const std::vector<Real> & stress_params,
98  const std::vector<Real> & intnl,
99  std::vector<yieldAndFlow> & all_q) const override;
100 
101  void initializeVarsV(const std::vector<Real> & trial_stress_params,
102  const std::vector<Real> & intnl_old,
103  std::vector<Real> & stress_params,
104  Real & gaE,
105  std::vector<Real> & intnl) const override;
106 
107  void setIntnlValuesV(const std::vector<Real> & trial_stress_params,
108  const std::vector<Real> & current_stress_params,
109  const std::vector<Real> & intnl_old,
110  std::vector<Real> & intnl) const override;
111 
112  void setIntnlDerivativesV(const std::vector<Real> & trial_stress_params,
113  const std::vector<Real> & current_stress_params,
114  const std::vector<Real> & intnl,
115  std::vector<std::vector<Real>> & dintnl) const override;
116 
117  virtual void consistentTangentOperatorV(const RankTwoTensor & stress_trial,
118  const std::vector<Real> & trial_stress_params,
119  const RankTwoTensor & stress,
120  const std::vector<Real> & stress_params,
121  Real gaE,
122  const yieldAndFlow & smoothed_q,
123  const RankFourTensor & Eijkl,
124  bool compute_full_tangent_operator,
125  const std::vector<std::vector<Real>> & dvar_dtrial,
126  RankFourTensor & cto) override;
127 };
CappedMohrCoulombStressUpdate::validParams
static InputParameters validParams()
Definition: CappedMohrCoulombStressUpdate.C:19
CappedMohrCoulombStressUpdate::_eigvecs
RankTwoTensor _eigvecs
Eigenvectors of the trial stress as a RankTwoTensor, in order to rotate the returned stress back to s...
Definition: CappedMohrCoulombStressUpdate.h:68
CappedMohrCoulombStressUpdate::consistentTangentOperatorV
virtual void consistentTangentOperatorV(const RankTwoTensor &stress_trial, const std::vector< Real > &trial_stress_params, const RankTwoTensor &stress, const std::vector< Real > &stress_params, Real gaE, const yieldAndFlow &smoothed_q, const RankFourTensor &Eijkl, bool compute_full_tangent_operator, const std::vector< std::vector< Real >> &dvar_dtrial, RankFourTensor &cto) override
Calculates the consistent tangent operator.
Definition: CappedMohrCoulombStressUpdate.C:793
validParams< CappedMohrCoulombStressUpdate >
InputParameters validParams< CappedMohrCoulombStressUpdate >()
MultiParameterPlasticityStressUpdate::yieldAndFlow
Struct designed to hold info about a single yield function and its derivatives, as well as the flow d...
Definition: MultiParameterPlasticityStressUpdate.h:214
CappedMohrCoulombStressUpdate::initializeVarsV
void initializeVarsV(const std::vector< Real > &trial_stress_params, const std::vector< Real > &intnl_old, std::vector< Real > &stress_params, Real &gaE, std::vector< Real > &intnl) const override
Sets (stress_params, intnl) at "good guesses" of the solution to the Return-Map algorithm.
Definition: CappedMohrCoulombStressUpdate.C:267
CappedMohrCoulombStressUpdate::_tensile_strength
const TensorMechanicsHardeningModel & _tensile_strength
Hardening model for tensile strength.
Definition: CappedMohrCoulombStressUpdate.h:36
CappedMohrCoulombStressUpdate::setStressAfterReturnV
virtual void setStressAfterReturnV(const RankTwoTensor &stress_trial, const std::vector< Real > &stress_params, Real gaE, const std::vector< Real > &intnl, const yieldAndFlow &smoothed_q, const RankFourTensor &Eijkl, RankTwoTensor &stress) const override
Sets stress from the admissible parameters.
Definition: CappedMohrCoulombStressUpdate.C:108
CappedMohrCoulombStressUpdate::requiresIsotropicTensor
bool requiresIsotropicTensor() override
Does the model require the elasticity tensor to be isotropic?
Definition: CappedMohrCoulombStressUpdate.h:34
CappedMohrCoulombStressUpdate::_poissons_ratio
Real _poissons_ratio
Poisson's ratio.
Definition: CappedMohrCoulombStressUpdate.h:58
CappedMohrCoulombStressUpdate::_compressive_strength
const TensorMechanicsHardeningModel & _compressive_strength
Hardening model for compressive strength.
Definition: CappedMohrCoulombStressUpdate.h:43
CappedMohrCoulombStressUpdate
CappedMohrCoulombStressUpdate implements rate-independent nonassociative Mohr-Coulomb plus tensile pl...
Definition: CappedMohrCoulombStressUpdate.h:24
CappedMohrCoulombStressUpdate::isIsotropic
bool isIsotropic() override
Is the implmented model isotropic? The safe default is 'false'.
Definition: CappedMohrCoulombStressUpdate.h:36
CappedMohrCoulombStressUpdate::setEffectiveElasticity
void setEffectiveElasticity(const RankFourTensor &Eijkl) override
Sets _Eij and _En and _Cij.
Definition: CappedMohrCoulombStressUpdate.C:249
CappedMohrCoulombStressUpdate::setIntnlValuesV
void setIntnlValuesV(const std::vector< Real > &trial_stress_params, const std::vector< Real > &current_stress_params, const std::vector< Real > &intnl_old, std::vector< Real > &intnl) const override
Sets the internal parameters based on the trial values of stress_params, their current values,...
Definition: CappedMohrCoulombStressUpdate.C:734
CappedMohrCoulombStressUpdate::d2stress_param_dstress
std::vector< RankFourTensor > d2stress_param_dstress(const RankTwoTensor &stress) const override
d2(stress_param[i])/d(stress)/d(stress) at given stress
Definition: CappedMohrCoulombStressUpdate.C:88
CappedMohrCoulombStressUpdate::yieldFunctionValuesV
void yieldFunctionValuesV(const std::vector< Real > &stress_params, const std::vector< Real > &intnl, std::vector< Real > &yf) const override
Computes the values of the yield functions, given stress_params and intnl parameters.
Definition: CappedMohrCoulombStressUpdate.C:123
CappedMohrCoulombStressUpdate::preReturnMapV
virtual void preReturnMapV(const std::vector< Real > &trial_stress_params, 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...
Definition: CappedMohrCoulombStressUpdate.C:96
CappedMohrCoulombStressUpdate::_phi
const TensorMechanicsHardeningModel & _phi
Hardening model for friction angle.
Definition: CappedMohrCoulombStressUpdate.h:49
RankFourTensorTempl< Real >
CappedMohrCoulombStressUpdate::setIntnlDerivativesV
void setIntnlDerivativesV(const std::vector< Real > &trial_stress_params, const std::vector< Real > &current_stress_params, const std::vector< Real > &intnl, std::vector< std::vector< Real >> &dintnl) const override
Sets the derivatives of internal parameters, based on the trial values of stress_params,...
Definition: CappedMohrCoulombStressUpdate.C:756
MultiParameterPlasticityStressUpdate.h
RankTwoTensorTempl< Real >
CappedMohrCoulombStressUpdate::computeStressParams
void computeStressParams(const RankTwoTensor &stress, std::vector< Real > &stress_params) const override
Computes stress_params, given stress.
Definition: CappedMohrCoulombStressUpdate.C:71
CappedMohrCoulombStressUpdate::computeAllQV
void computeAllQV(const std::vector< Real > &stress_params, const std::vector< Real > &intnl, std::vector< yieldAndFlow > &all_q) const override
Completely fills all_q with correct values.
Definition: CappedMohrCoulombStressUpdate.C:150
MultiParameterPlasticityStressUpdate
MultiParameterPlasticityStressUpdate performs the return-map algorithm and associated stress updates ...
Definition: MultiParameterPlasticityStressUpdate.h:99
CappedMohrCoulombStressUpdate::_perfect_guess
const bool _perfect_guess
Whether to provide an estimate of the returned stress, based on perfect plasticity.
Definition: CappedMohrCoulombStressUpdate.h:55
CappedMohrCoulombStressUpdate::dstress_param_dstress
std::vector< RankTwoTensor > dstress_param_dstress(const RankTwoTensor &stress) const override
d(stress_param[i])/d(stress) at given stress
Definition: CappedMohrCoulombStressUpdate.C:79
CappedMohrCoulombStressUpdate::CappedMohrCoulombStressUpdate
CappedMohrCoulombStressUpdate(const InputParameters &parameters)
Definition: CappedMohrCoulombStressUpdate.C:53
CappedMohrCoulombStressUpdate::_shifter
const Real _shifter
When equal-eigenvalues are predicted from the stress initialization routine, shift them by this amoun...
Definition: CappedMohrCoulombStressUpdate.h:65
CappedMohrCoulombStressUpdate::_psi
const TensorMechanicsHardeningModel & _psi
Hardening model for dilation angle.
Definition: CappedMohrCoulombStressUpdate.h:52
CappedMohrCoulombStressUpdate::_cohesion
const TensorMechanicsHardeningModel & _cohesion
Hardening model for cohesion.
Definition: CappedMohrCoulombStressUpdate.h:46
TensorMechanicsHardeningModel.h
TensorMechanicsHardeningModel
Hardening Model base class.
Definition: TensorMechanicsHardeningModel.h:27