https://mooseframework.inl.gov
Loading...
Searching...
No Matches
CappedMohrCoulombCosseratStressUpdate.h
Go to the documentation of this file.
1//* This file is part of the MOOSE framework
2//* https://mooseframework.inl.gov
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
13
24{
25public:
27
29
36 bool requiresIsotropicTensor() override { return false; }
37
38protected:
40 const Real _host_young;
41
43 const Real _host_poisson;
44
46 const Real _host_E0011;
47
49 const Real _host_E0000;
50
51 virtual void setStressAfterReturnV(const RankTwoTensor & stress_trial,
52 const std::vector<Real> & stress_params,
53 Real gaE,
54 const std::vector<Real> & intnl,
55 const yieldAndFlow & smoothed_q,
56 const RankFourTensor & Eijkl,
57 RankTwoTensor & stress) const override;
58
59 virtual void preReturnMapV(const std::vector<Real> & trial_stress_params,
60 const RankTwoTensor & stress_trial,
61 const std::vector<Real> & intnl_old,
62 const std::vector<Real> & yf,
63 const RankFourTensor & Eijkl) override;
64
65 void setEffectiveElasticity(const RankFourTensor & Eijkl) override;
66
67 virtual void consistentTangentOperatorV(const RankTwoTensor & stress_trial,
68 const std::vector<Real> & trial_stress_params,
69 const RankTwoTensor & stress,
70 const std::vector<Real> & stress_params,
71 Real gaE,
72 const yieldAndFlow & smoothed_q,
73 const RankFourTensor & Eijkl,
74 bool compute_full_tangent_operator,
75 const std::vector<std::vector<Real>> & dvar_dtrial,
76 RankFourTensor & cto) override;
77
78private:
79 std::vector<Real> _eigvals_scratch; // used as temporary storage to avoid heap allocation
80};
CappedMohrCoulombCosseratStressUpdate implements rate-independent nonassociative Mohr-Coulomb plus te...
bool requiresIsotropicTensor() override
The full elasticity tensor may be anisotropic, and usually is in the case of layered Cosserat.
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.
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.
const Real _host_young
Young's modulus of the host material.
const Real _host_E0000
E0000 = Lame lambda + 2 * shear modulus of the host material.
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...
const Real _host_poisson
Poisson's of the host material.
const Real _host_E0011
E0011 = Lame lambda modulus of the host material.
void setEffectiveElasticity(const RankFourTensor &Eijkl) override
Sets _Eij and _En and _Cij.
CappedMohrCoulombStressUpdate implements rate-independent nonassociative Mohr-Coulomb plus tensile pl...
const InputParameters & parameters() const
Struct designed to hold info about a single yield function and its derivatives, as well as the flow d...