FiniteStrainTensileMulti implements rate-independent associative tensile failure with hardening/softening in the finite-strain framework, using planar (non-smoothed) surfaces. More...
#include <TensorMechanicsPlasticTensileMulti.h>
Public Member Functions | |
TensorMechanicsPlasticTensileMulti (const InputParameters ¶meters) | |
virtual unsigned int | numberSurfaces () const override |
The number of yield surfaces for this plasticity model. More... | |
virtual void | yieldFunctionV (const RankTwoTensor &stress, Real intnl, std::vector< Real > &f) const override |
Calculates the yield functions. More... | |
virtual void | dyieldFunction_dstressV (const RankTwoTensor &stress, Real intnl, std::vector< RankTwoTensor > &df_dstress) const override |
The derivative of yield functions with respect to stress. More... | |
virtual void | dyieldFunction_dintnlV (const RankTwoTensor &stress, Real intnl, std::vector< Real > &df_dintnl) const override |
The derivative of yield functions with respect to the internal parameter. More... | |
virtual void | flowPotentialV (const RankTwoTensor &stress, Real intnl, std::vector< RankTwoTensor > &r) const override |
The flow potentials. More... | |
virtual void | dflowPotential_dstressV (const RankTwoTensor &stress, Real intnl, std::vector< RankFourTensor > &dr_dstress) const override |
The derivative of the flow potential with respect to stress. More... | |
virtual void | dflowPotential_dintnlV (const RankTwoTensor &stress, Real intnl, std::vector< RankTwoTensor > &dr_dintnl) const override |
The derivative of the flow potential with respect to the internal parameter. More... | |
virtual void | activeConstraints (const std::vector< Real > &f, const RankTwoTensor &stress, Real intnl, const RankFourTensor &Eijkl, std::vector< bool > &act, RankTwoTensor &returned_stress) const override |
The active yield surfaces, given a vector of yield functions. More... | |
virtual std::string | modelName () const override |
virtual bool | useCustomReturnMap () const override |
Returns false. You will want to override this in your derived class if you write a custom returnMap function. More... | |
virtual bool | useCustomCTO () const override |
Returns false. You will want to override this in your derived class if you write a custom consistent tangent operator function. More... | |
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. More... | |
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. More... | |
void | initialize () |
void | execute () |
void | finalize () |
virtual void | hardPotentialV (const RankTwoTensor &stress, Real intnl, std::vector< Real > &h) const |
The hardening potential. More... | |
virtual void | dhardPotential_dstressV (const RankTwoTensor &stress, Real intnl, std::vector< RankTwoTensor > &dh_dstress) const |
The derivative of the hardening potential with respect to stress. More... | |
virtual void | dhardPotential_dintnlV (const RankTwoTensor &stress, Real intnl, std::vector< Real > &dh_dintnl) const |
The derivative of the hardening potential with respect to the internal parameter. More... | |
bool | KuhnTuckerSingleSurface (Real yf, Real dpm, Real dpm_tol) const |
Returns true if the Kuhn-Tucker conditions for the single surface are satisfied. More... | |
Static Public Member Functions | |
static InputParameters | validParams () |
Public Attributes | |
const Real | _f_tol |
Tolerance on yield function. More... | |
const Real | _ic_tol |
Tolerance on internal constraint. More... | |
Protected Member Functions | |
virtual Real | tensile_strength (const Real internal_param) const |
tensile strength as a function of residual value, rate, and internal_param More... | |
virtual Real | dtensile_strength (const Real internal_param) const |
d(tensile strength)/d(internal_param) as a function of residual value, rate, and internal_param More... | |
virtual Real | yieldFunction (const RankTwoTensor &stress, Real intnl) const |
The following functions are what you should override when building single-plasticity models. More... | |
virtual RankTwoTensor | dyieldFunction_dstress (const RankTwoTensor &stress, Real intnl) const |
The derivative of yield function with respect to stress. More... | |
virtual Real | dyieldFunction_dintnl (const RankTwoTensor &stress, Real intnl) const |
The derivative of yield function with respect to the internal parameter. More... | |
virtual RankTwoTensor | flowPotential (const RankTwoTensor &stress, Real intnl) const |
The flow potential. More... | |
virtual RankFourTensor | dflowPotential_dstress (const RankTwoTensor &stress, Real intnl) const |
The derivative of the flow potential with respect to stress. More... | |
virtual RankTwoTensor | dflowPotential_dintnl (const RankTwoTensor &stress, Real intnl) const |
The derivative of the flow potential with respect to the internal parameter. More... | |
virtual Real | hardPotential (const RankTwoTensor &stress, Real intnl) const |
The hardening potential. More... | |
virtual RankTwoTensor | dhardPotential_dstress (const RankTwoTensor &stress, Real intnl) const |
The derivative of the hardening potential with respect to stress. More... | |
virtual Real | dhardPotential_dintnl (const RankTwoTensor &stress, Real intnl) const |
The derivative of the hardening potential with respect to the internal parameter. More... | |
Private Types | |
enum | return_type { tip = 0, edge = 1, plane = 2 } |
Private Member Functions | |
Real | dot (const std::vector< Real > &a, const std::vector< Real > &b) const |
dot product of two 3-dimensional vectors More... | |
Real | triple (const std::vector< Real > &a, const std::vector< Real > &b, const std::vector< Real > &c) const |
triple product of three 3-dimensional vectors More... | |
bool | returnTip (const std::vector< Real > &eigvals, const std::vector< RealVectorValue > &n, std::vector< Real > &dpm, RankTwoTensor &returned_stress, Real intnl_old, Real initial_guess) const |
Tries to return-map to the Tensile tip. More... | |
bool | returnEdge (const std::vector< Real > &eigvals, const std::vector< RealVectorValue > &n, std::vector< Real > &dpm, RankTwoTensor &returned_stress, Real intnl_old, Real initial_guess) const |
Tries to return-map to the Tensile edge. More... | |
bool | returnPlane (const std::vector< Real > &eigvals, const std::vector< RealVectorValue > &n, std::vector< Real > &dpm, RankTwoTensor &returned_stress, Real intnl_old, Real initial_guess) const |
Tries to return-map to the Tensile plane The return value is true if the internal Newton-Raphson process has converged, otherwise it is false. More... | |
bool | KuhnTuckerOK (const RankTwoTensor &returned_diagonal_stress, const std::vector< Real > &dpm, Real str, Real ep_plastic_tolerance) const |
Returns true if the Kuhn-Tucker conditions are satisfied. More... | |
virtual bool | doReturnMap (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 |
Just like returnMap, but a protected interface that definitely uses the algorithm, since returnMap itself does not use the algorithm if _use_returnMap=false. More... | |
Private Attributes | |
const TensorMechanicsHardeningModel & | _strength |
const unsigned int | _max_iters |
maximum iterations allowed in the custom return-map algorithm More... | |
const Real | _shift |
yield function is shifted by this amount to avoid problems with stress-derivatives at equal eigenvalues More... | |
const bool | _use_custom_returnMap |
Whether to use the custom return-map algorithm. More... | |
const bool | _use_custom_cto |
Whether to use the custom consistent tangent operator calculation. More... | |
FiniteStrainTensileMulti implements rate-independent associative tensile failure with hardening/softening in the finite-strain framework, using planar (non-smoothed) surfaces.
Definition at line 24 of file TensorMechanicsPlasticTensileMulti.h.
|
private |
Enumerator | |
---|---|
tip | |
edge | |
plane |
Definition at line 219 of file TensorMechanicsPlasticTensileMulti.h.
TensorMechanicsPlasticTensileMulti::TensorMechanicsPlasticTensileMulti | ( | const InputParameters & | parameters | ) |
Definition at line 51 of file TensorMechanicsPlasticTensileMulti.C.
|
overridevirtual |
The active yield surfaces, given a vector of yield functions.
This is used by FiniteStrainMultiPlasticity to determine the initial set of active constraints at the trial (stress, intnl) configuration. It is up to you (the coder) to determine how accurate you want the returned_stress to be. Currently it is only used by FiniteStrainMultiPlasticity to estimate a good starting value for the Newton-Rahson procedure, so currently it may not need to be super perfect.
f | values of the yield functions | |
stress | stress tensor | |
intnl | internal parameter | |
Eijkl | elasticity tensor (stress = Eijkl*strain) | |
[out] | act | act[i] = true if the i_th yield function is active |
[out] | returned_stress | Approximate value of the returned stress |
Reimplemented from TensorMechanicsPlasticModel.
Definition at line 160 of file TensorMechanicsPlasticTensileMulti.C.
|
overridevirtual |
Calculates a custom consistent tangent operator.
You may choose to over-ride this in your derived TensorMechanicsPlasticXXXX class.
(Note, if you over-ride returnMap, you will probably want to override consistentTangentOpertor too, otherwise it will default to E_ijkl.)
stress_old | trial stress before returning |
intnl_old | internal parameter before returning |
stress | current returned stress state |
intnl | internal parameter |
E_ijkl | elasticity tensor |
cumulative_pm | the cumulative plastic multipliers |
Reimplemented from TensorMechanicsPlasticModel.
Definition at line 615 of file TensorMechanicsPlasticTensileMulti.C.
|
protectedvirtualinherited |
The derivative of the flow potential with respect to the internal parameter.
stress | the stress at which to calculate the flow potential |
intnl | internal parameter |
Reimplemented in TensorMechanicsPlasticMeanCapTC, TensorMechanicsPlasticDruckerPrager, TensorMechanicsPlasticJ2, TensorMechanicsPlasticWeakPlaneShear, TensorMechanicsPlasticWeakPlaneTensile, TensorMechanicsPlasticMohrCoulomb, TensorMechanicsPlasticTensile, TensorMechanicsPlasticMeanCap, TensorMechanicsPlasticSimpleTester, and TensorMechanicsPlasticWeakPlaneTensileN.
Definition at line 133 of file TensorMechanicsPlasticModel.C.
Referenced by TensorMechanicsPlasticModel::dflowPotential_dintnlV().
|
overridevirtual |
The derivative of the flow potential with respect to the internal parameter.
stress | the stress at which to calculate the flow potential | |
intnl | internal parameter | |
[out] | dr_dintnl | dr_dintnl[alpha](i, j) = dr[alpha](i, j)/dintnl |
Reimplemented from TensorMechanicsPlasticModel.
Definition at line 141 of file TensorMechanicsPlasticTensileMulti.C.
|
protectedvirtualinherited |
The derivative of the flow potential with respect to stress.
stress | the stress at which to calculate the flow potential |
intnl | internal parameter |
Reimplemented in TensorMechanicsPlasticMeanCapTC, TensorMechanicsPlasticDruckerPrager, TensorMechanicsPlasticIsotropicSD, TensorMechanicsPlasticJ2, TensorMechanicsPlasticWeakPlaneShear, TensorMechanicsPlasticOrthotropic, TensorMechanicsPlasticWeakPlaneTensile, TensorMechanicsPlasticMohrCoulomb, TensorMechanicsPlasticTensile, TensorMechanicsPlasticMeanCap, TensorMechanicsPlasticSimpleTester, TensorMechanicsPlasticDruckerPragerHyperbolic, and TensorMechanicsPlasticWeakPlaneTensileN.
Definition at line 119 of file TensorMechanicsPlasticModel.C.
Referenced by TensorMechanicsPlasticModel::dflowPotential_dstressV().
|
overridevirtual |
The derivative of the flow potential with respect to stress.
stress | the stress at which to calculate the flow potential | |
intnl | internal parameter | |
[out] | dr_dstress | dr_dstress[alpha](i, j, k, l) = dr[alpha](i, j)/dstress(k, l) |
Reimplemented from TensorMechanicsPlasticModel.
Definition at line 134 of file TensorMechanicsPlasticTensileMulti.C.
|
protectedvirtualinherited |
The derivative of the hardening potential with respect to the internal parameter.
stress | the stress at which to calculate the hardening potentials |
intnl | internal parameter |
Reimplemented in TensorMechanicsPlasticMeanCapTC.
Definition at line 174 of file TensorMechanicsPlasticModel.C.
Referenced by TensorMechanicsPlasticModel::dhardPotential_dintnlV().
|
virtualinherited |
The derivative of the hardening potential with respect to the internal parameter.
stress | the stress at which to calculate the hardening potentials | |
intnl | internal parameter | |
[out] | dh_dintnl | dh_dintnl[alpha] = dh[alpha]/dintnl |
Definition at line 180 of file TensorMechanicsPlasticModel.C.
|
protectedvirtualinherited |
The derivative of the hardening potential with respect to stress.
stress | the stress at which to calculate the hardening potentials |
intnl | internal parameter |
Reimplemented in TensorMechanicsPlasticMeanCapTC.
Definition at line 160 of file TensorMechanicsPlasticModel.C.
Referenced by TensorMechanicsPlasticModel::dhardPotential_dstressV().
|
virtualinherited |
The derivative of the hardening potential with respect to stress.
stress | the stress at which to calculate the hardening potentials | |
intnl | internal parameter | |
[out] | dh_dstress | dh_dstress[alpha](i, j) = dh[alpha]/dstress(i, j) |
Definition at line 166 of file TensorMechanicsPlasticModel.C.
|
privatevirtual |
Just like returnMap, but a protected interface that definitely uses the algorithm, since returnMap itself does not use the algorithm if _use_returnMap=false.
Definition at line 254 of file TensorMechanicsPlasticTensileMulti.C.
Referenced by activeConstraints(), and returnMap().
|
private |
dot product of two 3-dimensional vectors
Definition at line 196 of file TensorMechanicsPlasticTensileMulti.C.
|
protectedvirtual |
d(tensile strength)/d(internal_param) as a function of residual value, rate, and internal_param
Definition at line 154 of file TensorMechanicsPlasticTensileMulti.C.
Referenced by consistentTangentOperator(), dyieldFunction_dintnlV(), returnEdge(), returnPlane(), and returnTip().
|
protectedvirtualinherited |
The derivative of yield function with respect to the internal parameter.
stress | the stress at which to calculate the yield function |
intnl | internal parameter |
Reimplemented in TensorMechanicsPlasticMeanCapTC, TensorMechanicsPlasticDruckerPrager, TensorMechanicsPlasticJ2, TensorMechanicsPlasticWeakPlaneShear, TensorMechanicsPlasticWeakPlaneTensile, TensorMechanicsPlasticMohrCoulomb, TensorMechanicsPlasticTensile, TensorMechanicsPlasticMeanCap, TensorMechanicsPlasticSimpleTester, and TensorMechanicsPlasticWeakPlaneTensileN.
Definition at line 92 of file TensorMechanicsPlasticModel.C.
Referenced by TensorMechanicsPlasticModel::dyieldFunction_dintnlV().
|
overridevirtual |
The derivative of yield functions with respect to the internal parameter.
stress | the stress at which to calculate the yield function | |
intnl | internal parameter | |
[out] | df_dintnl | df_dintnl[alpha] = df[alpha]/dintnl |
Reimplemented from TensorMechanicsPlasticModel.
Definition at line 117 of file TensorMechanicsPlasticTensileMulti.C.
|
protectedvirtualinherited |
The derivative of yield function with respect to stress.
stress | the stress at which to calculate the yield function |
intnl | internal parameter |
Reimplemented in TensorMechanicsPlasticMeanCapTC, TensorMechanicsPlasticIsotropicSD, TensorMechanicsPlasticDruckerPrager, TensorMechanicsPlasticJ2, TensorMechanicsPlasticOrthotropic, TensorMechanicsPlasticWeakPlaneShear, TensorMechanicsPlasticWeakPlaneTensile, TensorMechanicsPlasticMohrCoulomb, TensorMechanicsPlasticTensile, TensorMechanicsPlasticMeanCap, TensorMechanicsPlasticSimpleTester, and TensorMechanicsPlasticWeakPlaneTensileN.
Definition at line 77 of file TensorMechanicsPlasticModel.C.
Referenced by TensorMechanicsPlasticModel::dyieldFunction_dstressV().
|
overridevirtual |
The derivative of yield functions with respect to stress.
stress | the stress at which to calculate the yield function | |
intnl | internal parameter | |
[out] | df_dstress | df_dstress[alpha](i, j) = dyieldFunction[alpha]/dstress(i, j) |
Reimplemented from TensorMechanicsPlasticModel.
Definition at line 92 of file TensorMechanicsPlasticTensileMulti.C.
Referenced by flowPotentialV().
|
inherited |
Definition at line 47 of file TensorMechanicsPlasticModel.C.
|
inherited |
Definition at line 52 of file TensorMechanicsPlasticModel.C.
|
protectedvirtualinherited |
The flow potential.
stress | the stress at which to calculate the flow potential |
intnl | internal parameter |
Reimplemented in TensorMechanicsPlasticMeanCapTC, TensorMechanicsPlasticIsotropicSD, TensorMechanicsPlasticDruckerPrager, TensorMechanicsPlasticJ2, TensorMechanicsPlasticOrthotropic, TensorMechanicsPlasticWeakPlaneShear, TensorMechanicsPlasticWeakPlaneTensile, TensorMechanicsPlasticMohrCoulomb, TensorMechanicsPlasticTensile, TensorMechanicsPlasticMeanCap, TensorMechanicsPlasticSimpleTester, and TensorMechanicsPlasticWeakPlaneTensileN.
Definition at line 106 of file TensorMechanicsPlasticModel.C.
Referenced by TensorMechanicsPlasticModel::flowPotentialV().
|
overridevirtual |
The flow potentials.
stress | the stress at which to calculate the flow potential | |
intnl | internal parameter | |
[out] | r | r[alpha] is the flow potential for the "alpha" yield function |
Reimplemented from TensorMechanicsPlasticModel.
Definition at line 125 of file TensorMechanicsPlasticTensileMulti.C.
|
protectedvirtualinherited |
The hardening potential.
stress | the stress at which to calculate the hardening potential |
intnl | internal parameter |
Reimplemented in TensorMechanicsPlasticMeanCapTC.
Definition at line 147 of file TensorMechanicsPlasticModel.C.
Referenced by TensorMechanicsPlasticModel::hardPotentialV().
|
virtualinherited |
The hardening potential.
stress | the stress at which to calculate the hardening potential | |
intnl | internal parameter | |
[out] | h | h[alpha] is the hardening potential for the "alpha" yield function |
Definition at line 152 of file TensorMechanicsPlasticModel.C.
|
inherited |
Definition at line 42 of file TensorMechanicsPlasticModel.C.
|
private |
Returns true if the Kuhn-Tucker conditions are satisfied.
returned_diagonal_stress | The eigenvalues (sorted in ascending order as is standard in this Class) are stored in the diagonal components |
dpm | The three plastic multipliers |
str | The yield strength |
ep_plastic_tolerance | The tolerance on the plastic strain (if dpm>-ep_plastic_tolerance then it is grouped as "non-negative" in the Kuhn-Tucker conditions). |
Definition at line 602 of file TensorMechanicsPlasticTensileMulti.C.
Referenced by doReturnMap().
|
inherited |
Returns true if the Kuhn-Tucker conditions for the single surface are satisfied.
yf | Yield function value |
dpm | plastic multiplier |
dpm_tol | tolerance on plastic multiplier: viz dpm>-dpm_tol means "dpm is non-negative" |
Definition at line 248 of file TensorMechanicsPlasticModel.C.
Referenced by TensorMechanicsPlasticMohrCoulombMulti::KuhnTuckerOK(), KuhnTuckerOK(), and TensorMechanicsPlasticModel::returnMap().
|
overridevirtual |
Implements TensorMechanicsPlasticModel.
Definition at line 212 of file TensorMechanicsPlasticTensileMulti.C.
|
overridevirtual |
The number of yield surfaces for this plasticity model.
Reimplemented from TensorMechanicsPlasticModel.
Definition at line 71 of file TensorMechanicsPlasticTensileMulti.C.
|
private |
Tries to return-map to the Tensile edge.
The return value is true if the internal Newton-Raphson process has converged, otherwise it is false
eigvals | The three stress eigenvalues, sorted in ascending order |
n | The three return directions, n=E_ijkl*r. Note this algorithm assumes isotropic elasticity, so these are 3 vectors in principal stress space |
dpm | The three plastic multipliers resulting from the return-map to the edge. This algorithm doesn't do Kuhn-Tucker checking, so these could be positive or negative or zero (dpm[0]=0 always for Edge return). |
returned_stress | The returned stress. This will be diagonal, with the return-mapped eigenvalues in the diagonal positions, sorted in ascending order |
intnl_old | The internal parameter at stress=eigvals. This algorithm doesn't form the plastic strain, so you will have to use intnl=intnl_old+sum(dpm) if you need the new internal-parameter value at the returned point. |
initial_guess | A guess of dpm[1]+dpm[2] |
Definition at line 487 of file TensorMechanicsPlasticTensileMulti.C.
Referenced by doReturnMap().
|
overridevirtual |
Performs a custom return-map.
You may choose to over-ride this in your derived TensorMechanicsPlasticXXXX class, and you may implement the return-map algorithm in any way that suits you. Eg, using a Newton-Raphson approach, or a radial-return, etc. This may also be used as a quick way of ascertaining whether (trial_stress, intnl_old) is in fact admissible.
For over-riding this function, please note the following.
(1) Denoting the return value of the function by "successful_return", the only possible output values should be: (A) trial_stress_inadmissible=false, successful_return=true. That is, (trial_stress, intnl_old) is in fact admissible (in the elastic domain). (B) trial_stress_inadmissible=true, successful_return=false. That is (trial_stress, intnl_old) is inadmissible (outside the yield surface), and you didn't return to the yield surface. (C) trial_stress_inadmissible=true, successful_return=true. That is (trial_stress, intnl_old) is inadmissible (outside the yield surface), but you did return to the yield surface. The default implementation only handles case (A) and (B): it does not attempt to do a return-map algorithm.
(2) you must correctly signal "successful_return" using the return value of this function. Don't assume the calling function will do Kuhn-Tucker checking and so forth!
(3) In cases (A) and (B) you needn't set returned_stress, returned_intnl, delta_dp, or dpm. This is for computational efficiency.
(4) In cases (A) and (B), you MUST place the yield function values at (trial_stress, intnl_old) into yf so the calling function can use this information optimally. You will have already calculated these yield function values, which can be quite expensive, and it's not very optimal for the calling function to have to re-calculate them.
(5) In case (C), you need to set: returned_stress (the returned value of stress) returned_intnl (the returned value of the internal variable) delta_dp (the change in plastic strain) dpm (the plastic multipliers needed to bring about the return) yf (yield function values at the returned configuration)
(Note, if you over-ride returnMap, you will probably want to override consistentTangentOpertor too, otherwise it will default to E_ijkl.)
trial_stress | The trial stress | |
intnl_old | Value of the internal parameter | |
E_ijkl | Elasticity tensor | |
ep_plastic_tolerance | Tolerance defined by the user for the plastic strain | |
[out] | returned_stress | In case (C): lies on the yield surface after returning and produces the correct plastic strain (normality condition). Otherwise: not defined |
[out] | returned_intnl | In case (C): the value of the internal parameter after returning. Otherwise: not defined |
[out] | dpm | In case (C): the plastic multipliers needed to bring about the return. Otherwise: not defined |
[out] | delta_dp | In case (C): The change in plastic strain induced by the return process. Otherwise: not defined |
[out] | yf | In case (C): the yield function at (returned_stress, returned_intnl). Otherwise: the yield function at (trial_stress, intnl_old) |
[out] | trial_stress_inadmissible | Should be set to false if the trial_stress is admissible, and true if the trial_stress is inadmissible. This can be used by the calling prorgram |
Reimplemented from TensorMechanicsPlasticModel.
Definition at line 218 of file TensorMechanicsPlasticTensileMulti.C.
|
private |
Tries to return-map to the Tensile plane The return value is true if the internal Newton-Raphson process has converged, otherwise it is false.
eigvals | The three stress eigenvalues, sorted in ascending order |
n | The three return directions, n=E_ijkl*r. Note this algorithm assumes isotropic elasticity, so these are 3 vectors in principal stress space |
dpm | The three plastic multipliers resulting from the return-map to the plane. This algorithm doesn't do Kuhn-Tucker checking, so dpm[2] could be positive or negative or zero (dpm[0]=dpm[1]=0 always for Plane return). |
returned_stress | The returned stress. This will be diagonal, with the return-mapped eigenvalues in the diagonal positions, sorted in ascending order |
intnl_old | The internal parameter at stress=eigvals. This algorithm doesn't form the plastic strain, so you will have to use intnl=intnl_old+sum(dpm) if you need the new internal-parameter value at the returned point. |
initial_guess | A guess of dpm[2] |
Definition at line 556 of file TensorMechanicsPlasticTensileMulti.C.
Referenced by doReturnMap().
|
private |
Tries to return-map to the Tensile tip.
The return value is true if the internal Newton-Raphson process has converged, otherwise it is false
eigvals | The three stress eigenvalues, sorted in ascending order |
n | The three return directions, n=E_ijkl*r. Note this algorithm assumes isotropic elasticity, so these are 3 vectors in principal stress space |
dpm | The three plastic multipliers resulting from the return-map to the tip. This algorithm doesn't do Kuhn-Tucker checking, so these could be positive or negative or zero |
returned_stress | The returned stress. This will be diagonal, with the return-mapped eigenvalues in the diagonal positions, sorted in ascending order |
intnl_old | The internal parameter at stress=eigvals. This algorithm doesn't form the plastic strain, so you will have to use intnl=intnl_old+sum(dpm) if you need the new internal-parameter value at the returned point. |
initial_guess | A guess of dpm[0]+dpm[1]+dpm[2] |
Definition at line 410 of file TensorMechanicsPlasticTensileMulti.C.
Referenced by doReturnMap().
|
protectedvirtual |
tensile strength as a function of residual value, rate, and internal_param
Definition at line 148 of file TensorMechanicsPlasticTensileMulti.C.
Referenced by doReturnMap(), returnEdge(), returnPlane(), returnTip(), and yieldFunctionV().
|
private |
triple product of three 3-dimensional vectors
Definition at line 203 of file TensorMechanicsPlasticTensileMulti.C.
|
overridevirtual |
Returns false. You will want to override this in your derived class if you write a custom consistent tangent operator function.
Reimplemented from TensorMechanicsPlasticModel.
Definition at line 786 of file TensorMechanicsPlasticTensileMulti.C.
|
overridevirtual |
Returns false. You will want to override this in your derived class if you write a custom returnMap function.
Reimplemented from TensorMechanicsPlasticModel.
Definition at line 780 of file TensorMechanicsPlasticTensileMulti.C.
|
static |
Definition at line 21 of file TensorMechanicsPlasticTensileMulti.C.
|
protectedvirtualinherited |
The following functions are what you should override when building single-plasticity models.
The yield function
stress | the stress at which to calculate the yield function |
intnl | internal parameter |
Reimplemented in TensorMechanicsPlasticMeanCapTC, TensorMechanicsPlasticIsotropicSD, TensorMechanicsPlasticDruckerPrager, TensorMechanicsPlasticJ2, TensorMechanicsPlasticOrthotropic, TensorMechanicsPlasticWeakPlaneShear, TensorMechanicsPlasticWeakPlaneTensile, TensorMechanicsPlasticMohrCoulomb, TensorMechanicsPlasticTensile, TensorMechanicsPlasticDruckerPragerHyperbolic, TensorMechanicsPlasticMeanCap, TensorMechanicsPlasticSimpleTester, and TensorMechanicsPlasticWeakPlaneTensileN.
Definition at line 63 of file TensorMechanicsPlasticModel.C.
Referenced by TensorMechanicsPlasticModel::yieldFunctionV().
|
overridevirtual |
Calculates the yield functions.
Note that for single-surface plasticity you don't want to override this - override the private yieldFunction below
stress | the stress at which to calculate the yield function | |
intnl | internal parameter | |
[out] | f | the yield functions |
Reimplemented from TensorMechanicsPlasticModel.
Definition at line 77 of file TensorMechanicsPlasticTensileMulti.C.
|
inherited |
Tolerance on yield function.
Definition at line 175 of file TensorMechanicsPlasticModel.h.
Referenced by TensorMechanicsPlasticWeakPlaneShear::activeConstraints(), TensorMechanicsPlasticWeakPlaneTensile::activeConstraints(), TensorMechanicsPlasticMeanCapTC::activeConstraints(), activeConstraints(), TensorMechanicsPlasticMohrCoulombMulti::activeConstraints(), TensorMechanicsPlasticModel::activeConstraints(), TensorMechanicsPlasticMohrCoulombMulti::doReturnMap(), doReturnMap(), TensorMechanicsPlasticModel::KuhnTuckerSingleSurface(), returnEdge(), TensorMechanicsPlasticMohrCoulombMulti::returnEdge000101(), TensorMechanicsPlasticMohrCoulombMulti::returnEdge010100(), TensorMechanicsPlasticJ2::returnMap(), TensorMechanicsPlasticMeanCapTC::returnMap(), TensorMechanicsPlasticDruckerPragerHyperbolic::returnMap(), TensorMechanicsPlasticModel::returnMap(), returnPlane(), TensorMechanicsPlasticMohrCoulombMulti::returnPlane(), returnTip(), TensorMechanicsPlasticMohrCoulombMulti::returnTip(), TensorMechanicsPlasticMohrCoulombMulti::TensorMechanicsPlasticMohrCoulombMulti(), and TensorMechanicsPlasticTensileMulti().
|
inherited |
Tolerance on internal constraint.
Definition at line 178 of file TensorMechanicsPlasticModel.h.
|
private |
maximum iterations allowed in the custom return-map algorithm
Definition at line 99 of file TensorMechanicsPlasticTensileMulti.h.
Referenced by returnEdge(), returnPlane(), and returnTip().
|
private |
yield function is shifted by this amount to avoid problems with stress-derivatives at equal eigenvalues
Definition at line 102 of file TensorMechanicsPlasticTensileMulti.h.
Referenced by doReturnMap(), dyieldFunction_dstressV(), TensorMechanicsPlasticTensileMulti(), and yieldFunctionV().
|
private |
Definition at line 96 of file TensorMechanicsPlasticTensileMulti.h.
Referenced by dtensile_strength(), returnEdge(), returnTip(), and tensile_strength().
|
private |
Whether to use the custom consistent tangent operator calculation.
Definition at line 108 of file TensorMechanicsPlasticTensileMulti.h.
Referenced by consistentTangentOperator(), and useCustomCTO().
|
private |
Whether to use the custom return-map algorithm.
Definition at line 105 of file TensorMechanicsPlasticTensileMulti.h.
Referenced by returnMap(), and useCustomReturnMap().