www.mooseframework.org
FiniteStrainUObasedCP.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 
12 #include "ComputeStressBase.h"
13 
18 
20 
21 template <>
22 InputParameters validParams<FiniteStrainUObasedCP>();
23 
39 {
40 public:
41  static InputParameters validParams();
42 
43  FiniteStrainUObasedCP(const InputParameters & parameters);
44 
45 protected:
49  virtual void computeQpStress();
50 
55  virtual void initQpStatefulProperties();
56 
61  virtual void calcResidJacob();
62 
68 
72  virtual void preSolveQp();
73 
77  virtual void solveQp();
78 
82  virtual void postSolveQp();
83 
87  virtual void preSolveStatevar();
88 
92  virtual void solveStatevar();
93 
97  virtual void postSolveStatevar();
98 
102  virtual void preSolveStress();
103 
107  virtual void solveStress();
108 
112  virtual void postSolveStress();
113 
117  virtual void calcResidual();
118 
122  virtual void calcJacobian();
123 
127  virtual void getSlipRates();
128 
135  virtual void calcTangentModuli();
136 
140  virtual void elasticTangentModuli();
141 
145  virtual void elastoPlasticTangentModuli();
146 
150  bool lineSearchUpdate(const Real rnorm_prev, const RankTwoTensor);
151 
155  virtual bool isStateVariablesConverged();
156 
158  std::vector<const CrystalPlasticitySlipRate *> _uo_slip_rates;
159 
161  std::vector<const CrystalPlasticitySlipResistance *> _uo_slip_resistances;
162 
164  std::vector<const CrystalPlasticityStateVariable *> _uo_state_vars;
165 
167  std::vector<const CrystalPlasticityStateVarRateComponent *> _uo_state_var_evol_rate_comps;
168 
170  std::vector<MaterialProperty<std::vector<Real>> *> _mat_prop_slip_rates;
171 
173  std::vector<MaterialProperty<std::vector<Real>> *> _mat_prop_slip_resistances;
174 
176  std::vector<MaterialProperty<std::vector<Real>> *> _mat_prop_state_vars;
177 
179  std::vector<const MaterialProperty<std::vector<Real>> *> _mat_prop_state_vars_old;
180 
182  std::vector<MaterialProperty<std::vector<Real>> *> _mat_prop_state_var_evol_rate_comps;
183 
185  unsigned int _num_uo_slip_rates;
186 
189 
191  unsigned int _num_uo_state_vars;
192 
195 
197  std::vector<std::vector<Real>> _state_vars_old;
198 
200  std::vector<std::vector<Real>> _state_vars_old_stored;
201 
203  std::vector<std::vector<Real>> _state_vars_prev;
204 
206  Real _rtol;
208  Real _abs_tol;
210  Real _stol;
212  Real _zero_tol;
213 
216 
219 
221  unsigned int _maxiter;
223  unsigned int _maxiterg;
224 
226  MooseEnum _tan_mod_type;
227 
229  unsigned int _max_substep_iter;
230 
233 
236 
239 
241  unsigned int _lsrch_max_iter;
242 
244  MooseEnum _lsrch_method;
245 
246  MaterialProperty<RankTwoTensor> & _fp;
247  const MaterialProperty<RankTwoTensor> & _fp_old;
248  MaterialProperty<RankTwoTensor> & _pk2;
249  const MaterialProperty<RankTwoTensor> & _pk2_old;
250  MaterialProperty<RankTwoTensor> & _lag_e;
251  MaterialProperty<RankTwoTensor> & _update_rot;
252  const MaterialProperty<RankTwoTensor> & _update_rot_old;
253 
255  const std::string _elasticity_tensor_name;
257  const MaterialProperty<RankFourTensor> & _elasticity_tensor;
258  const MaterialProperty<RankTwoTensor> & _deformation_gradient;
259  const MaterialProperty<RankTwoTensor> & _deformation_gradient_old;
260 
262  const MaterialProperty<RankTwoTensor> & _crysrot;
263 
266  DenseVector<Real> _tau;
267  std::vector<MaterialProperty<std::vector<RankTwoTensor>> *> _flow_direction;
268 
270  bool _err_tol;
271 
276 };
FiniteStrainUObasedCP::_uo_slip_rates
std::vector< const CrystalPlasticitySlipRate * > _uo_slip_rates
User objects that define the slip rate.
Definition: FiniteStrainUObasedCP.h:158
FiniteStrainUObasedCP::_uo_slip_resistances
std::vector< const CrystalPlasticitySlipResistance * > _uo_slip_resistances
User objects that define the slip resistance.
Definition: FiniteStrainUObasedCP.h:161
FiniteStrainUObasedCP::_dfgrd_tmp
RankTwoTensor _dfgrd_tmp
Definition: FiniteStrainUObasedCP.h:264
FiniteStrainUObasedCP::_tan_mod_type
MooseEnum _tan_mod_type
Type of tangent moduli calculation.
Definition: FiniteStrainUObasedCP.h:226
FiniteStrainUObasedCP::_fp_old
const MaterialProperty< RankTwoTensor > & _fp_old
Definition: FiniteStrainUObasedCP.h:247
FiniteStrainUObasedCP::_update_rot
MaterialProperty< RankTwoTensor > & _update_rot
Definition: FiniteStrainUObasedCP.h:251
FiniteStrainUObasedCP::_num_uo_slip_resistances
unsigned int _num_uo_slip_resistances
Number of slip resistance user objects.
Definition: FiniteStrainUObasedCP.h:188
FiniteStrainUObasedCP::_abs_tol
Real _abs_tol
Stress residual equation absolute tolerance.
Definition: FiniteStrainUObasedCP.h:208
CrystalPlasticityStateVarRateComponent.h
FiniteStrainUObasedCP::_fp
MaterialProperty< RankTwoTensor > & _fp
Definition: FiniteStrainUObasedCP.h:246
FiniteStrainUObasedCP::_lsrch_tol
Real _lsrch_tol
Line search bisection method tolerance.
Definition: FiniteStrainUObasedCP.h:238
FiniteStrainUObasedCP::_mat_prop_slip_rates
std::vector< MaterialProperty< std::vector< Real > > * > _mat_prop_slip_rates
Slip rates material property.
Definition: FiniteStrainUObasedCP.h:170
FiniteStrainUObasedCP::_stol
Real _stol
Internal variable update equation tolerance.
Definition: FiniteStrainUObasedCP.h:210
FiniteStrainUObasedCP::elastoPlasticTangentModuli
virtual void elastoPlasticTangentModuli()
calculate the exact tangent moduli for preconditioner.
Definition: FiniteStrainUObasedCP.C:582
FiniteStrainUObasedCP::_crysrot
const MaterialProperty< RankTwoTensor > & _crysrot
Crystal rotation.
Definition: FiniteStrainUObasedCP.h:262
FiniteStrainUObasedCP::elasticTangentModuli
virtual void elasticTangentModuli()
calculate the elastic tangent moduli for preconditioner.
Definition: FiniteStrainUObasedCP.C:625
FiniteStrainUObasedCP::validParams
static InputParameters validParams()
Definition: FiniteStrainUObasedCP.C:23
FiniteStrainUObasedCP::_mat_prop_state_vars_old
std::vector< const MaterialProperty< std::vector< Real > > * > _mat_prop_state_vars_old
Old state variable material property.
Definition: FiniteStrainUObasedCP.h:179
FiniteStrainUObasedCP::_flow_direction
std::vector< MaterialProperty< std::vector< RankTwoTensor > > * > _flow_direction
Definition: FiniteStrainUObasedCP.h:267
FiniteStrainUObasedCP::_state_vars_prev
std::vector< std::vector< Real > > _state_vars_prev
Local old state variable.
Definition: FiniteStrainUObasedCP.h:203
FiniteStrainUObasedCP::_uo_state_vars
std::vector< const CrystalPlasticityStateVariable * > _uo_state_vars
User objects that define the state variable.
Definition: FiniteStrainUObasedCP.h:164
FiniteStrainUObasedCP::_update_rot_old
const MaterialProperty< RankTwoTensor > & _update_rot_old
Definition: FiniteStrainUObasedCP.h:252
FiniteStrainUObasedCP::_num_uo_slip_rates
unsigned int _num_uo_slip_rates
Number of slip rate user objects.
Definition: FiniteStrainUObasedCP.h:185
FiniteStrainUObasedCP::_mat_prop_slip_resistances
std::vector< MaterialProperty< std::vector< Real > > * > _mat_prop_slip_resistances
Slip resistance material property.
Definition: FiniteStrainUObasedCP.h:173
FiniteStrainUObasedCP::_deformation_gradient
const MaterialProperty< RankTwoTensor > & _deformation_gradient
Definition: FiniteStrainUObasedCP.h:258
FiniteStrainUObasedCP::solveQp
virtual void solveQp()
solve stress and internal variables.
Definition: FiniteStrainUObasedCP.C:274
FiniteStrainUObasedCP::_resid
RankTwoTensor _resid
Residual tensor.
Definition: FiniteStrainUObasedCP.h:215
CrystalPlasticitySlipResistance.h
FiniteStrainUObasedCP::_lag_e
MaterialProperty< RankTwoTensor > & _lag_e
Definition: FiniteStrainUObasedCP.h:250
FiniteStrainUObasedCP::_num_uo_state_var_evol_rate_comps
unsigned int _num_uo_state_var_evol_rate_comps
Number of state variable evolution rate component user objects.
Definition: FiniteStrainUObasedCP.h:194
ComputeStressBase
ComputeStressBase is the base class for stress tensors.
Definition: ComputeStressBase.h:26
FiniteStrainUObasedCP::postSolveQp
virtual void postSolveQp()
update stress and internal variable after solve.
Definition: FiniteStrainUObasedCP.C:284
FiniteStrainUObasedCP::getSlipRates
virtual void getSlipRates()
updates the slip rates.
Definition: FiniteStrainUObasedCP.C:492
FiniteStrainUObasedCP::_dfgrd_scale_factor
Real _dfgrd_scale_factor
Scales the substepping increment to obtain deformation gradient at a substep iteration.
Definition: FiniteStrainUObasedCP.h:275
FiniteStrainUObasedCP::_min_lsrch_step
Real _min_lsrch_step
Minimum line search step size.
Definition: FiniteStrainUObasedCP.h:235
FiniteStrainUObasedCP::_tau
DenseVector< Real > _tau
Definition: FiniteStrainUObasedCP.h:266
FiniteStrainUObasedCP::_uo_state_var_evol_rate_comps
std::vector< const CrystalPlasticityStateVarRateComponent * > _uo_state_var_evol_rate_comps
User objects that define the state variable evolution rate component.
Definition: FiniteStrainUObasedCP.h:167
FiniteStrainUObasedCP::_elasticity_tensor_name
const std::string _elasticity_tensor_name
Name of the elasticity tensor material property.
Definition: FiniteStrainUObasedCP.h:255
FiniteStrainUObasedCP
FiniteStrainUObasedCP uses the multiplicative decomposition of deformation gradient and solves the PK...
Definition: FiniteStrainUObasedCP.h:38
FiniteStrainUObasedCP::_pk2
MaterialProperty< RankTwoTensor > & _pk2
Definition: FiniteStrainUObasedCP.h:248
FiniteStrainUObasedCP::isStateVariablesConverged
virtual bool isStateVariablesConverged()
evaluates convergence of state variables.
Definition: FiniteStrainUObasedCP.C:350
FiniteStrainUObasedCP::_pk2_old
const MaterialProperty< RankTwoTensor > & _pk2_old
Definition: FiniteStrainUObasedCP.h:249
FiniteStrainUObasedCP::_delta_dfgrd
RankTwoTensor _delta_dfgrd
Used for substepping; Uniformly divides the increment in deformation gradient.
Definition: FiniteStrainUObasedCP.h:273
FiniteStrainUObasedCP::_deformation_gradient_old
const MaterialProperty< RankTwoTensor > & _deformation_gradient_old
Definition: FiniteStrainUObasedCP.h:259
FiniteStrainUObasedCP::_err_tol
bool _err_tol
Flag to check whether convergence is achieved.
Definition: FiniteStrainUObasedCP.h:270
validParams< FiniteStrainUObasedCP >
InputParameters validParams< FiniteStrainUObasedCP >()
FiniteStrainUObasedCP::_mat_prop_state_vars
std::vector< MaterialProperty< std::vector< Real > > * > _mat_prop_state_vars
State variable material property.
Definition: FiniteStrainUObasedCP.h:176
FiniteStrainUObasedCP::preSolveStatevar
virtual void preSolveStatevar()
set variables for internal variable solve.
Definition: FiniteStrainUObasedCP.C:303
CrystalPlasticitySlipRate.h
FiniteStrainUObasedCP::_zero_tol
Real _zero_tol
Residual tolerance when variable value is zero. Default 1e-12.
Definition: FiniteStrainUObasedCP.h:212
FiniteStrainUObasedCP::_dfgrd_tmp_old
RankTwoTensor _dfgrd_tmp_old
Definition: FiniteStrainUObasedCP.h:273
FiniteStrainUObasedCP::_fp_inv
RankTwoTensor _fp_inv
Definition: FiniteStrainUObasedCP.h:265
FiniteStrainUObasedCP::initQpStatefulProperties
virtual void initQpStatefulProperties()
initializes the stateful properties such as stress, plastic deformation gradient, slip system resista...
Definition: FiniteStrainUObasedCP.C:167
FiniteStrainUObasedCP::_use_line_search
bool _use_line_search
Flag to activate line serach.
Definition: FiniteStrainUObasedCP.h:232
FiniteStrainUObasedCP::_max_substep_iter
unsigned int _max_substep_iter
Maximum number of substep iterations.
Definition: FiniteStrainUObasedCP.h:229
RankFourTensorTempl
Definition: ACGrGrElasticDrivingForce.h:20
FiniteStrainUObasedCP::solveStatevar
virtual void solveStatevar()
solve internal variables.
Definition: FiniteStrainUObasedCP.C:315
ComputeStressBase.h
FiniteStrainUObasedCP::_fp_old_inv
RankTwoTensor _fp_old_inv
Definition: FiniteStrainUObasedCP.h:265
FiniteStrainUObasedCP::preSolveStress
virtual void preSolveStress()
set variables for stress solve.
Definition: FiniteStrainUObasedCP.C:381
FiniteStrainUObasedCP::postSolveStress
virtual void postSolveStress()
update stress and plastic deformation gradient after solve.
Definition: FiniteStrainUObasedCP.C:455
FiniteStrainUObasedCP::_state_vars_old
std::vector< std::vector< Real > > _state_vars_old
Local state variable.
Definition: FiniteStrainUObasedCP.h:197
FiniteStrainUObasedCP::_fe
RankTwoTensor _fe
Definition: FiniteStrainUObasedCP.h:265
FiniteStrainUObasedCP::_maxiter
unsigned int _maxiter
Maximum number of iterations for stress update.
Definition: FiniteStrainUObasedCP.h:221
CrystalPlasticityStateVariable.h
FiniteStrainUObasedCP::calcTangentModuli
virtual void calcTangentModuli()
calculate the tangent moduli for preconditioner.
Definition: FiniteStrainUObasedCP.C:569
FiniteStrainUObasedCP::_maxiterg
unsigned int _maxiterg
Maximum number of iterations for internal variable update.
Definition: FiniteStrainUObasedCP.h:223
FiniteStrainUObasedCP::_mat_prop_state_var_evol_rate_comps
std::vector< MaterialProperty< std::vector< Real > > * > _mat_prop_state_var_evol_rate_comps
State variable evolution rate component material property.
Definition: FiniteStrainUObasedCP.h:182
FiniteStrainUObasedCP::_lsrch_method
MooseEnum _lsrch_method
Line search method.
Definition: FiniteStrainUObasedCP.h:244
FiniteStrainUObasedCP::_jac
RankFourTensor _jac
Jacobian tensor.
Definition: FiniteStrainUObasedCP.h:218
FiniteStrainUObasedCP::calcResidJacob
virtual void calcResidJacob()
calls the residual and jacobian functions used in the stress update algorithm.
Definition: FiniteStrainUObasedCP.C:483
RankTwoTensorTempl< Real >
FiniteStrainUObasedCP::_num_uo_state_vars
unsigned int _num_uo_state_vars
Number of state variable user objects.
Definition: FiniteStrainUObasedCP.h:191
FiniteStrainUObasedCP::FiniteStrainUObasedCP
FiniteStrainUObasedCP(const InputParameters &parameters)
Definition: FiniteStrainUObasedCP.C:66
FiniteStrainUObasedCP::_rtol
Real _rtol
Stress residual equation relative tolerance.
Definition: FiniteStrainUObasedCP.h:206
FiniteStrainUObasedCP::updateSlipSystemResistanceAndStateVariable
virtual void updateSlipSystemResistanceAndStateVariable()
updates the slip system resistances and state variables.
Definition: FiniteStrainUObasedCP.C:461
FiniteStrainUObasedCP::_lsrch_max_iter
unsigned int _lsrch_max_iter
Line search bisection method maximum iteration number.
Definition: FiniteStrainUObasedCP.h:241
FiniteStrainUObasedCP::calcResidual
virtual void calcResidual()
calculate stress residual.
Definition: FiniteStrainUObasedCP.C:505
FiniteStrainUObasedCP::computeQpStress
virtual void computeQpStress()
updates the stress at a quadrature point.
Definition: FiniteStrainUObasedCP.C:207
FiniteStrainUObasedCP::calcJacobian
virtual void calcJacobian()
calculate jacobian.
Definition: FiniteStrainUObasedCP.C:531
FiniteStrainUObasedCP::_state_vars_old_stored
std::vector< std::vector< Real > > _state_vars_old_stored
Local stored state variable (for sub-stepping)
Definition: FiniteStrainUObasedCP.h:200
FiniteStrainUObasedCP::lineSearchUpdate
bool lineSearchUpdate(const Real rnorm_prev, const RankTwoTensor)
performs the line search update
Definition: FiniteStrainUObasedCP.C:632
FiniteStrainUObasedCP::_elasticity_tensor
const MaterialProperty< RankFourTensor > & _elasticity_tensor
Elasticity tensor material property.
Definition: FiniteStrainUObasedCP.h:257
FiniteStrainUObasedCP::preSolveQp
virtual void preSolveQp()
set variables for stress and internal variable solve.
Definition: FiniteStrainUObasedCP.C:264
FiniteStrainUObasedCP::solveStress
virtual void solveStress()
solves for stress, updates plastic deformation gradient.
Definition: FiniteStrainUObasedCP.C:386
FiniteStrainUObasedCP::postSolveStatevar
virtual void postSolveStatevar()
update internal variable after solve.
Definition: FiniteStrainUObasedCP.C:372