Line data Source code
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 : 12 : #include "CappedWeakPlaneStressUpdate.h" 13 : 14 : /** 15 : * CappedWeakPlaneCosseratStressUpdate performs the return-map 16 : * algorithm and associated stress updates for plastic 17 : * models that describe capped weak-plane Cosserat plasticity 18 : * 19 : * It assumes various things about the elasticity tensor, viz 20 : * E(i,i,j,k) = 0 except if k=j 21 : * E(0,0,i,j) = E(1,1,i,j) 22 : */ 23 : class CappedWeakPlaneCosseratStressUpdate : public CappedWeakPlaneStressUpdate 24 : { 25 : public: 26 : static InputParameters validParams(); 27 : 28 : CappedWeakPlaneCosseratStressUpdate(const InputParameters & parameters); 29 : 30 : /** 31 : * Does the model require the elasticity tensor to be isotropic? 32 : */ 33 144 : bool requiresIsotropicTensor() override { return false; } 34 : 35 : protected: 36 : virtual void consistentTangentOperator(const RankTwoTensor & stress_trial, 37 : Real p_trial, 38 : Real q_trial, 39 : const RankTwoTensor & stress, 40 : Real p, 41 : Real q, 42 : Real gaE, 43 : const yieldAndFlow & smoothed_q, 44 : const RankFourTensor & Eijkl, 45 : bool compute_full_tangent_operator, 46 : RankFourTensor & cto) const override; 47 : 48 : virtual void setStressAfterReturn(const RankTwoTensor & stress_trial, 49 : Real p_ok, 50 : Real q_ok, 51 : Real gaE, 52 : const std::vector<Real> & intnl, 53 : const yieldAndFlow & smoothed_q, 54 : const RankFourTensor & Eijkl, 55 : RankTwoTensor & stress) const override; 56 : 57 : virtual RankTwoTensor dqdstress(const RankTwoTensor & stress) const override; 58 : 59 : virtual RankFourTensor d2qdstress2(const RankTwoTensor & stress) const override; 60 : };