www.mooseframework.org
MultiPlasticityLinearSystem.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 
13 
120 {
121 public:
122  static InputParameters validParams();
123 
124  MultiPlasticityLinearSystem(const MooseObject * moose_object);
125 
126 protected:
129 
132 
148  virtual void calculateConstraints(const RankTwoTensor & stress,
149  const std::vector<Real> & intnl_old,
150  const std::vector<Real> & intnl,
151  const std::vector<Real> & pm,
152  const RankTwoTensor & delta_dp,
153  std::vector<Real> & f,
154  std::vector<RankTwoTensor> & r,
155  RankTwoTensor & epp,
156  std::vector<Real> & ic,
157  const std::vector<bool> & active);
158 
184  virtual void calculateRHS(const RankTwoTensor & stress,
185  const std::vector<Real> & intnl_old,
186  const std::vector<Real> & intnl,
187  const std::vector<Real> & pm,
188  const RankTwoTensor & delta_dp,
189  std::vector<Real> & rhs,
190  const std::vector<bool> & active,
191  bool eliminate_ld,
192  std::vector<bool> & deactivated_due_to_ld);
193 
197  virtual void calculateJacobian(const RankTwoTensor & stress,
198  const std::vector<Real> & intnl,
199  const std::vector<Real> & pm,
200  const RankFourTensor & E_inv,
201  const std::vector<bool> & active,
202  const std::vector<bool> & deactivated_due_to_ld,
203  std::vector<std::vector<Real>> & jac);
204 
222  virtual void nrStep(const RankTwoTensor & stress,
223  const std::vector<Real> & intnl_old,
224  const std::vector<Real> & intnl,
225  const std::vector<Real> & pm,
226  const RankFourTensor & E_inv,
227  const RankTwoTensor & delta_dp,
228  RankTwoTensor & dstress,
229  std::vector<Real> & dpm,
230  std::vector<Real> & dintnl,
231  const std::vector<bool> & active,
232  std::vector<bool> & deactivated_due_to_ld);
233 
234 private:
249  virtual int singularValuesOfR(const std::vector<RankTwoTensor> & r, std::vector<Real> & s);
250 
265  virtual void eliminateLinearDependence(const RankTwoTensor & stress,
266  const std::vector<Real> & intnl,
267  const std::vector<Real> & f,
268  const std::vector<RankTwoTensor> & r,
269  const std::vector<bool> & active,
270  std::vector<bool> & deactivated_due_to_ld);
271 };
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)
Real f(Real x)
Test function for Brents method.
static InputParameters validParams()
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
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.