www.mooseframework.org
MultiPlasticityLinearSystem.h
Go to the documentation of this file.
1 /****************************************************************/
2 /* MOOSE - Multiphysics Object Oriented Simulation Environment */
3 /* */
4 /* All contents are licensed under LGPL V2.1 */
5 /* See LICENSE for full restrictions */
6 /****************************************************************/
7 #ifndef MULTIPLASTICITYLINEARSYSTEM_H
8 #define MULTIPLASTICITYLINEARSYSTEM_H
9 
11 
13 
14 template <>
16 
123 {
124 public:
125  MultiPlasticityLinearSystem(const MooseObject * moose_object);
126 
127 protected:
129  Real _svd_tol;
130 
133 
149  virtual void calculateConstraints(const RankTwoTensor & stress,
150  const std::vector<Real> & intnl_old,
151  const std::vector<Real> & intnl,
152  const std::vector<Real> & pm,
153  const RankTwoTensor & delta_dp,
154  std::vector<Real> & f,
155  std::vector<RankTwoTensor> & r,
156  RankTwoTensor & epp,
157  std::vector<Real> & ic,
158  const std::vector<bool> & active);
159 
185  virtual void calculateRHS(const RankTwoTensor & stress,
186  const std::vector<Real> & intnl_old,
187  const std::vector<Real> & intnl,
188  const std::vector<Real> & pm,
189  const RankTwoTensor & delta_dp,
190  std::vector<Real> & rhs,
191  const std::vector<bool> & active,
192  bool eliminate_ld,
193  std::vector<bool> & deactivated_due_to_ld);
194 
198  virtual void calculateJacobian(const RankTwoTensor & stress,
199  const std::vector<Real> & intnl,
200  const std::vector<Real> & pm,
201  const RankFourTensor & E_inv,
202  const std::vector<bool> & active,
203  const std::vector<bool> & deactivated_due_to_ld,
204  std::vector<std::vector<Real>> & jac);
205 
223  virtual void nrStep(const RankTwoTensor & stress,
224  const std::vector<Real> & intnl_old,
225  const std::vector<Real> & intnl,
226  const std::vector<Real> & pm,
227  const RankFourTensor & E_inv,
228  const RankTwoTensor & delta_dp,
229  RankTwoTensor & dstress,
230  std::vector<Real> & dpm,
231  std::vector<Real> & dintnl,
232  const std::vector<bool> & active,
233  std::vector<bool> & deactivated_due_to_ld);
234 
235 private:
250  virtual int singularValuesOfR(const std::vector<RankTwoTensor> & r, std::vector<Real> & s);
251 
266  virtual void eliminateLinearDependence(const RankTwoTensor & stress,
267  const std::vector<Real> & intnl,
268  const std::vector<Real> & f,
269  const std::vector<RankTwoTensor> & r,
270  const std::vector<bool> & active,
271  std::vector<bool> & deactivated_due_to_ld);
272 };
273 
274 #endif // MULTIPLASTICITYLINEARSYSTEM_H
virtual void calculateRHS(const RankTwoTensor &stress, const std::vector< Real > &intnl_old, const std::vector< Real > &intnl, const std::vector< Real > &pm, const RankTwoTensor &delta_dp, std::vector< Real > &rhs, const std::vector< bool > &active, bool eliminate_ld, std::vector< bool > &deactivated_due_to_ld)
Calculate the RHS which is rhs = -(epp(0,0), epp(1,0), epp(1,1), epp(2,0), epp(2,1), epp(2,2), f[0], f[1], ..., f[num_f], ic[0], ic[1], ..., ic[num_ic])
virtual int singularValuesOfR(const std::vector< RankTwoTensor > &r, std::vector< Real > &s)
Performs a singular-value decomposition of r and returns the singular values.
Real _svd_tol
Tolerance on the minimum ratio of singular values before flow-directions are deemed linearly dependen...
virtual void calculateJacobian(const RankTwoTensor &stress, const std::vector< Real > &intnl, const std::vector< Real > &pm, const RankFourTensor &E_inv, const std::vector< bool > &active, const std::vector< bool > &deactivated_due_to_ld, std::vector< std::vector< Real >> &jac)
d(rhs)/d(dof)
virtual void eliminateLinearDependence(const RankTwoTensor &stress, const std::vector< Real > &intnl, const std::vector< Real > &f, const std::vector< RankTwoTensor > &r, const std::vector< bool > &active, std::vector< bool > &deactivated_due_to_ld)
Performs a number of singular-value decompositions to check for linear-dependence of the active direc...
MultiPlasticityLinearSystem computes the linear system and handles linear-dependence removal for use ...
MultiPlasticityRawComponentAssembler holds and computes yield functions, flow directions, etc, for use in FiniteStrainMultiPlasticity.
MultiPlasticityLinearSystem(const MooseObject *moose_object)
InputParameters validParams< MultiPlasticityLinearSystem >()
virtual void nrStep(const RankTwoTensor &stress, const std::vector< Real > &intnl_old, const std::vector< Real > &intnl, const std::vector< Real > &pm, const RankFourTensor &E_inv, const RankTwoTensor &delta_dp, RankTwoTensor &dstress, std::vector< Real > &dpm, std::vector< Real > &dintnl, const std::vector< bool > &active, std::vector< bool > &deactivated_due_to_ld)
Performs one Newton-Raphson step.
virtual void calculateConstraints(const RankTwoTensor &stress, const std::vector< Real > &intnl_old, const std::vector< Real > &intnl, const std::vector< Real > &pm, const RankTwoTensor &delta_dp, std::vector< Real > &f, std::vector< RankTwoTensor > &r, RankTwoTensor &epp, std::vector< Real > &ic, const std::vector< bool > &active)
The constraints.
Real _min_f_tol
Minimum value of the _f_tol parameters for the Yield Function User Objects.