Go to the documentation of this file.
21 params.addRequiredParam<Real>(
"ref_damage_rate",
"Reference damage rate");
22 params.addRequiredParam<
unsigned int>(
"nstate",
"Number of state variables");
23 params.addParam<Real>(
"exponent", 1.0,
"Power law exponent");
24 params.addParam<
unsigned int>(
"maxiter", 20,
"Constitutive update iteration");
25 params.addParam<Real>(
"tol", 1e-5,
"Constitutive update tolerance");
26 params.addParam<Real>(
"zero_tol", 1e-8,
"Tolerance for zero");
27 params.addParam<Real>(
28 "intvar_incr_tol", 0.1,
"Allowable relative increment size for state variables");
29 params.addParam<
bool>(
"input_random_scaling_var",
31 "Flag to specify scaling parameter to generate random stress");
32 params.addParam<Real>(
"random_scaling_var",
34 "Scaling value: Too large a value can cause "
35 "non-positive definiteness - use 0.1 of young's "
43 _ref_damage_rate(getParam<Real>(
"ref_damage_rate")),
44 _nstate(getParam<unsigned int>(
"nstate")),
45 _exponent(getParam<Real>(
"exponent")),
46 _maxiter(getParam<unsigned int>(
"maxiter")),
47 _tol(getParam<Real>(
"tol")),
48 _zero_tol(getParam<Real>(
"zero_tol")),
49 _intvar_incr_tol(getParam<Real>(
"intvar_incr_tol")),
50 _input_rndm_scale_var(getParam<bool>(
"input_random_scaling_var")),
51 _rndm_scale_var(getParam<Real>(
"random_scaling_var")),
52 _intvar(declareProperty<std::vector<Real>>(
"intvar")),
53 _intvar_old(getMaterialPropertyOld<std::vector<Real>>(
"intvar")),
54 _stress_undamaged(declareProperty<
SymmTensor>(
"stress_undamaged")),
55 _stress_undamaged_old(getMaterialPropertyOld<
SymmTensor>(
"stress_undamaged"))
72 const_cast<MaterialProperty<std::vector<Real>
> &>(
_intvar_old)[_qp].resize(
_nstate, 0.0);
94 mooseWarning(
"RateDepSmearCrackModel: Constitutive cutback");
114 for (
unsigned int i = 0; i <
_nstate; ++i)
125 unsigned int iter = 0;
149 mooseError(
"Error in Matrix Inversion in RankFourTensor");
151 for (
unsigned int i = 0; i <
_nstate; i++)
154 for (
unsigned int j = 0; j <
_nstate; j++)
158 for (
unsigned int i = 0; i <
_nstate; i++)
167 for (
unsigned int i = 0; i <
_nstate; i++)
189 for (
unsigned int i = 0; i <
_nstate; ++i)
206 for (
unsigned int i = 0; i <
_nstate; ++i)
223 int return_value, buffer_size = n * 64;
224 std::vector<PetscBLASInt> ipiv(n);
225 std::vector<PetscScalar> buffer(buffer_size);
230 LAPACKgetrf_(&n, &n, &A[0], &n, &ipiv[0], &return_value);
232 if (return_value != 0)
237 #if PETSC_VERSION_LESS_THAN(3, 5, 0)
238 FORTRAN_CALL(
dgetri)(&n, &A[0], &n, &ipiv[0], &buffer[0], &buffer_size, &return_value);
240 LAPACKgetri_(&n, &A[0], &n, &ipiv[0], &buffer[0], &buffer_size, &return_value);
void FORTRAN_CALL() dgetri(...)
virtual void postSolveStress()
This function updates the stress after solve.
Real valueAtIndex(int i) const
SymmElasticityTensor _elasticity
virtual void initVariables()
RateDepSmearCrackModel is the base class for rate dependent continuum damage model.
std::vector< Real > _intvar_tmp
static SymmTensor genRandomSymmTensor(Real scalefactor)
virtual void postSolveVariables()
This function updates the internal variables after solve.
Real _zero_tol
Relative tolerance factor for convergence of the Newton Raphson solve.
const MaterialProperty< SymmTensor > & _stress_undamaged_old
bool _err_tol
Convergence flag.
std::vector< Real > _intvar_incr
RateDepSmearCrackModel(const InputParameters ¶meters)
registerMooseObject("SolidMechanicsApp", RateDepSmearCrackModel)
virtual void updateVariables()
This function updates variables during solve a(i+1) = a(i) + da(i+1)
This class defines a basic set of capabilities any elasticity tensor should have.
MaterialProperty< SymmTensor > & _stress_undamaged
virtual void computeStress(const Elem ¤t_elem, const SymmElasticityTensor &elasticity_tensor, const SymmTensor &stress_old, SymmTensor &strain_increment, SymmTensor &stress_new)
Real _rndm_scale_var
Flag to specify scaling parameter to generate random stress.
virtual ~RateDepSmearCrackModel()
unsigned int _nstate
reference damage rate
virtual void solve()
This function solves the state variables.
std::vector< Real > _dvar
std::vector< Real > _resid
virtual void initQpStatefulProperties()
virtual void calcJacobian()
This function calculates the Jacobian.
std::vector< Real > _intvar_old_tmp
MaterialProperty< std::vector< Real > > & _intvar
Variable value.
virtual void calcResidual()
This function calculates the residual as r = v - v_old - dv.
int matrixInversion(std::vector< Real > &A, int n) const
bool _input_rndm_scale_var
Allowable relative increment size of state variables (dv)
InputParameters validParams< RateDepSmearCrackModel >()
bool getConvergeVar()
This function returns true if convergence is not achieved.
Real _tol
Maximum number of Newton Raphson iteration.
const MaterialProperty< std::vector< Real > > & _intvar_old
virtual void calcStateIncr()
This function calculated thw increment of the state variables (dv) used to form the residual.
InputParameters validParams< ConstitutiveModel >()