https://mooseframework.inl.gov
Loading...
Searching...
No Matches
SolidMechanicsPlasticDruckerPragerHyperbolic.h
Go to the documentation of this file.
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
14
22{
23public:
25
27
28 virtual std::string modelName() const override;
29
30 virtual bool useCustomReturnMap() const override;
31
32 virtual bool useCustomCTO() const override;
33
34protected:
35 Real yieldFunction(const RankTwoTensor & stress, Real intnl) const override;
36
37 RankFourTensor dflowPotential_dstress(const RankTwoTensor & stress, Real intnl) const override;
38
40 virtual RankTwoTensor df_dsig(const RankTwoTensor & stress, Real bbb) const override;
41
42 virtual bool returnMap(const RankTwoTensor & trial_stress,
43 Real intnl_old,
44 const RankFourTensor & E_ijkl,
45 Real ep_plastic_tolerance,
46 RankTwoTensor & returned_stress,
47 Real & returned_intnl,
48 std::vector<Real> & dpm,
49 RankTwoTensor & delta_dp,
50 std::vector<Real> & yf,
51 bool & trial_stress_inadmissible) const override;
52
53 virtual RankFourTensor
54 consistentTangentOperator(const RankTwoTensor & trial_stress,
55 Real intnl_old,
56 const RankTwoTensor & stress,
57 Real intnl,
58 const RankFourTensor & E_ijkl,
59 const std::vector<Real> & cumulative_pm) const override;
60
61private:
63 const Real _smoother2;
64
67
69 const bool _use_custom_cto;
70
72 const unsigned _max_iters;
73};
const InputParameters & parameters() const
Rate-independent non-associative Drucker Prager with hardening/softening.
const bool _use_custom_cto
Whether to use the custom consistent tangent operator calculation.
virtual RankTwoTensor df_dsig(const RankTwoTensor &stress, Real bbb) const override
Function that's used in dyieldFunction_dstress and flowPotential.
virtual bool useCustomReturnMap() const override
Returns false. You will want to override this in your derived class if you write a custom returnMap f...
RankFourTensor dflowPotential_dstress(const RankTwoTensor &stress, Real intnl) const override
The derivative of the flow potential with respect to stress.
virtual bool returnMap(const RankTwoTensor &trial_stress, Real intnl_old, const RankFourTensor &E_ijkl, Real ep_plastic_tolerance, RankTwoTensor &returned_stress, Real &returned_intnl, std::vector< Real > &dpm, RankTwoTensor &delta_dp, std::vector< Real > &yf, bool &trial_stress_inadmissible) const override
Performs a custom return-map.
const unsigned _max_iters
max iters for custom return map loop
const Real _smoother2
smoothing parameter for the cone's tip
virtual bool useCustomCTO() const override
Returns false. You will want to override this in your derived class if you write a custom consistent ...
virtual RankFourTensor consistentTangentOperator(const RankTwoTensor &trial_stress, Real intnl_old, const RankTwoTensor &stress, Real intnl, const RankFourTensor &E_ijkl, const std::vector< Real > &cumulative_pm) const override
Calculates a custom consistent tangent operator.
Real yieldFunction(const RankTwoTensor &stress, Real intnl) const override
The following functions are what you should override when building single-plasticity models.
const bool _use_custom_returnMap
whether to use the custom returnMap function
Rate-independent non-associative Drucker Prager with hardening/softening.