188 virtual unsigned int numberActive(
const std::vector<bool> & active);
202 const std::vector<Real> &
f,
204 const std::vector<Real> & ic,
205 const std::vector<bool> & active,
206 const std::vector<bool> & deactivated_due_to_ld);
246 const std::vector<Real> & intnl_old,
247 std::vector<Real> & intnl,
252 std::vector<Real> &
f,
254 bool can_revert_to_dumb,
255 bool & linesearch_needed,
256 bool & ld_encountered,
257 bool & constraints_added,
260 std::vector<Real> & cumulative_pm);
296 const std::vector<Real> & intnl_old,
297 std::vector<Real> & intnl,
298 std::vector<Real> & pm,
302 const std::vector<Real> & dpm,
303 const std::vector<Real> & dintnl,
304 std::vector<Real> &
f,
306 std::vector<Real> & ic,
307 const std::vector<bool> & active,
308 const std::vector<bool> & deactivated_due_to_ld,
309 bool & linesearch_needed);
339 const std::vector<Real> & intnl_old,
340 std::vector<Real> & intnl,
341 std::vector<Real> & pm,
344 std::vector<Real> &
f,
346 std::vector<Real> & ic,
347 std::vector<bool> & active,
349 bool & linesearch_needed,
350 bool & ld_encountered);
360 const std::vector<Real> & intnl,
361 std::vector<Real> & all_f);
373 const std::vector<Real> & intnl,
374 std::vector<unsigned int> & dumb_order);
388 const std::vector<unsigned int> & dumb_order,
389 std::vector<bool> & act);
409 const std::vector<Real> & pm,
410 const std::vector<bool> & active);
430 const std::vector<Real> & pm,
431 std::vector<bool> & active);
486 const std::vector<Real> & intnl_old,
487 std::vector<Real> & intnl,
488 std::vector<Real> & pm,
489 std::vector<Real> & cumulative_pm,
494 std::vector<Real> & yf,
495 unsigned int & iterations,
528 const std::vector<Real> & intnl_old,
529 std::vector<Real> & intnl,
534 std::vector<Real> & yf,
535 unsigned int & iterations,
536 bool & linesearch_needed,
537 bool & ld_encountered,
538 bool & constraints_added,
552 void changeScheme(
const std::vector<bool> & initial_act,
553 bool can_revert_to_dumb,
555 const std::vector<Real> & intnl_old,
557 std::vector<bool> & act,
558 int & dumb_iteration,
559 std::vector<unsigned int> & dumb_order);
561 bool canAddConstraints(
const std::vector<bool> & act,
const std::vector<Real> & all_f);
583 const std::vector<Real> & intnl,
585 const std::vector<Real> & pm_this_step,
586 const std::vector<Real> & cumulative_pm);
bool _perform_finite_strain_rotations
whether to perform the rotations necessary in finite-strain simulations
virtual bool reinstateLinearDependentConstraints(std::vector< bool > &deactivated_due_to_ld)
makes all deactivated_due_to_ld false, and if >0 of them were initially true, returns true ...
ComputeStressBase is the base class for stress tensors computed from MOOSE's strain calculators...
bool canAddConstraints(const std::vector< bool > &act, const std::vector< Real > &all_f)
quickStep_called_from_t
The functions from which quickStep can be called.
virtual bool singleStep(Real &nr_res2, RankTwoTensor &stress, const std::vector< Real > &intnl_old, std::vector< Real > &intnl, std::vector< Real > &pm, RankTwoTensor &delta_dp, const RankFourTensor &E_inv, std::vector< Real > &f, RankTwoTensor &epp, std::vector< Real > &ic, std::vector< bool > &active, DeactivationSchemeEnum deactivation_scheme, bool &linesearch_needed, bool &ld_encountered)
Performs a single Newton-Raphson + linesearch step Constraints are deactivated and the step is re-don...
const MaterialProperty< RankTwoTensor > & _rotation_increment
Rotation increment (coming from ComputeIncrementalSmallStrain, for example)
virtual void preReturnMap()
const MaterialProperty< RealVectorValue > & _n_old
old value of transverse direction
MaterialProperty< Real > & _constraints_added
Whether constraints were added in during the latest Newton-Raphson process (1 if true, 0 otherwise)
MaterialProperty< std::vector< Real > > & _intnl
internal parameters
bool canChangeScheme(DeactivationSchemeEnum current_deactivation_scheme, bool can_revert_to_dumb)
RankFourTensor _my_flexural_rigidity_tensor
Flexual rigidity tensor that can be rotated by this class (ie, its not const)
ComputeMultiPlasticityStress performs the return-map algorithm and associated stress updates for plas...
const MaterialProperty< RankTwoTensor > & _strain_increment
strain increment (coming from ComputeIncrementalSmallStrain, for example)
TangentOperatorEnum
The type of tangent operator to return. tangent operator = d(stress_rate)/d(strain_rate).
virtual void initQpStatefulProperties()
const MaterialProperty< RankTwoTensor > & _stress_old
Old value of stress.
unsigned int _max_iter
Maximum number of Newton-Raphson iterations allowed.
RankTwoTensor _my_strain_increment
Strain increment that can be rotated by this class, and split into multiple increments (ie...
unsigned int activeCombinationNumber(const std::vector< bool > &act)
virtual void applyKuhnTucker(const std::vector< Real > &f, const std::vector< Real > &pm, std::vector< bool > &active)
Checks Kuhn-Tucker conditions, and alters "active" if appropriate.
const MaterialProperty< RankTwoTensor > *const _curvature
The Cosserat curvature strain.
virtual void postReturnMap()
bool _ignore_failures
Even if the returnMap fails, return the best values found for stress and internal parameters...
const MaterialProperty< RankFourTensor > *const _elastic_flexural_rigidity_tensor
The Cosserat elastic flexural rigidity tensor.
RankFourTensor _my_elasticity_tensor
Elasticity tensor that can be rotated by this class (ie, its not const)
const std::string _elasticity_tensor_name
Name of the elasticity tensor material property.
MaterialProperty< Real > & _iter
Number of Newton-Raphson iterations used in the return-map.
const MaterialProperty< RankTwoTensor > & _elastic_strain_old
Old value of elastic strain.
TensorValue< Real > RealTensorValue
MaterialProperty< RankFourTensor > *const _Jacobian_mult_couple
derivative of couple-stress w.r.t. curvature
Real f(Real x)
Test function for Brents method.
bool _n_supplied
User supplied the transverse direction vector.
MaterialProperty< Real > & _ld_encountered
Whether linear-dependence was encountered in the latest Newton-Raphson process (1 if true...
void changeScheme(const std::vector< bool > &initial_act, bool can_revert_to_dumb, const RankTwoTensor &initial_stress, const std::vector< Real > &intnl_old, DeactivationSchemeEnum ¤t_deactivation_scheme, std::vector< bool > &act, int &dumb_iteration, std::vector< unsigned int > &dumb_order)
virtual bool checkKuhnTucker(const std::vector< Real > &f, const std::vector< Real > &pm, const std::vector< bool > &active)
Checks Kuhn-Tucker conditions, and alters "active" if appropriate.
virtual bool lineSearch(Real &nr_res2, RankTwoTensor &stress, const std::vector< Real > &intnl_old, std::vector< Real > &intnl, std::vector< Real > &pm, const RankFourTensor &E_inv, RankTwoTensor &delta_dp, const RankTwoTensor &dstress, const std::vector< Real > &dpm, const std::vector< Real > &dintnl, std::vector< Real > &f, RankTwoTensor &epp, std::vector< Real > &ic, const std::vector< bool > &active, const std::vector< bool > &deactivated_due_to_ld, bool &linesearch_needed)
Performs a line search.
RankTwoTensor rot(const RankTwoTensor &tens)
MaterialProperty< std::vector< Real > > & _yf
yield functions
MaterialProperty< RealVectorValue > & _n
current value of transverse direction
std::vector< Real > _dummy_pm
dummy "consistency parameters" (plastic multipliers) used in quickStep when called from computeQpStre...
virtual void incrementDumb(int &dumb_iteration, const std::vector< unsigned int > &dumb_order, std::vector< bool > &act)
Increments "dumb_iteration" by 1, and sets "act" appropriately (act[alpha] = true iff alpha_th bit of...
MaterialProperty< RankTwoTensor > *const _couple_stress
the Cosserat couple-stress
MaterialProperty< Real > & _linesearch_needed
Whether a line-search was needed in the latest Newton-Raphson process (1 if true, 0 otherwise) ...
bool canIncrementDumb(int dumb_iteration)
RealVectorValue _n_input
the supplied transverse direction vector
Real _max_stepsize_for_dumb
"dumb" deactivation will only be used if the stepsize falls below this quantity
const MaterialProperty< std::vector< Real > > & _intnl_old
old values of internal parameters
enum ComputeMultiPlasticityStress::TangentOperatorEnum _tangent_operator_type
virtual bool checkAdmissible(const RankTwoTensor &stress, const std::vector< Real > &intnl, std::vector< Real > &all_f)
Checks whether the yield functions are in the admissible region.
virtual bool returnMap(const RankTwoTensor &stress_old, RankTwoTensor &stress, const std::vector< Real > &intnl_old, std::vector< Real > &intnl, const RankTwoTensor &plastic_strain_old, RankTwoTensor &plastic_strain, const RankFourTensor &E_ijkl, const RankTwoTensor &strain_increment, std::vector< Real > &f, unsigned int &iter, bool can_revert_to_dumb, bool &linesearch_needed, bool &ld_encountered, bool &constraints_added, bool final_step, RankFourTensor &consistent_tangent_operator, std::vector< Real > &cumulative_pm)
Implements the return map.
virtual Real residual2(const std::vector< Real > &pm, const std::vector< Real > &f, const RankTwoTensor &epp, const std::vector< Real > &ic, const std::vector< bool > &active, const std::vector< bool > &deactivated_due_to_ld)
The residual-squared.
ComputeMultiPlasticityStress(const InputParameters ¶meters)
MaterialProperty< RankTwoTensor > & _plastic_strain
plastic strain
DIE A HORRIBLE DEATH HERE typedef LIBMESH_DEFAULT_SCALAR_TYPE Real
virtual void computeQpStress()
Compute the stress and store it in the _stress material property for the current quadrature point...
Real _epp_tol
Tolerance on the plastic strain increment ("direction") constraint.
RankFourTensor consistentTangentOperator(const RankTwoTensor &stress, const std::vector< Real > &intnl, const RankFourTensor &E_ijkl, const std::vector< Real > &pm_this_step, const std::vector< Real > &cumulative_pm)
Computes the consistent tangent operator (another name for the jacobian = d(stress_rate)/d(strain_rat...
Real _min_stepsize
Minimum fraction of applied strain that may be applied during adaptive stepsizing.
MultiPlasticityDebugger computes various finite-difference things to help developers remove bugs in t...
const InputParameters & parameters() const
RankTwoTensor _my_curvature
Curvature that can be rotated by this class, and split into multiple increments (ie, its not const)
std::vector< Real > _cumulative_pm
the sum of the plastic multipliers over all the sub-steps.
const MaterialProperty< RankTwoTensor > & _plastic_strain_old
Old value of plastic strain.
virtual unsigned int numberActive(const std::vector< bool > &active)
counts the number of active constraints
RealTensorValue _rot
rotation matrix that takes _n to (0, 0, 1)
virtual bool quickStep(const RankTwoTensor &stress_old, RankTwoTensor &stress, const std::vector< Real > &intnl_old, std::vector< Real > &intnl, std::vector< Real > &pm, std::vector< Real > &cumulative_pm, const RankTwoTensor &plastic_strain_old, RankTwoTensor &plastic_strain, const RankFourTensor &E_ijkl, const RankTwoTensor &strain_increment, std::vector< Real > &yf, unsigned int &iterations, RankFourTensor &consistent_tangent_operator, const quickStep_called_from_t called_from, bool final_step)
Attempts to find an admissible (stress, intnl) by using the customized return-map algorithms defined ...
bool _cosserat
whether Cosserat mechanics should be used
void buildDumbOrder(const RankTwoTensor &stress, const std::vector< Real > &intnl, std::vector< unsigned int > &dumb_order)
Builds the order which "dumb" activation will take.
enum ComputeMultiPlasticityStress::DeactivationSchemeEnum _deactivation_scheme
virtual bool plasticStep(const RankTwoTensor &stress_old, RankTwoTensor &stress, const std::vector< Real > &intnl_old, std::vector< Real > &intnl, const RankTwoTensor &plastic_strain_old, RankTwoTensor &plastic_strain, const RankFourTensor &E_ijkl, const RankTwoTensor &strain_increment, std::vector< Real > &yf, unsigned int &iterations, bool &linesearch_needed, bool &ld_encountered, bool &constraints_added, RankFourTensor &consistent_tangent_operator)
performs a plastic step
const MaterialProperty< RankFourTensor > & _elasticity_tensor
Elasticity tensor material property.
const MaterialProperty< RankTwoTensor > *const _couple_stress_old
the old value of Cosserat couple-stress
static InputParameters validParams()
const MaterialProperty< RankTwoTensor > & _total_strain_old
Old value of total strain (coming from ComputeIncrementalSmallStrain, for example) ...