FiniteStrainMohrCoulombMulti implements rate-independent non-associative mohr-coulomb with hardening/softening in the finite-strain framework, using planar (non-smoothed) surfaces. More...
#include <SolidMechanicsPlasticMohrCoulombMulti.h>
Public Types | |
typedef DataFileName | DataFileParameterType |
Public Member Functions | |
SolidMechanicsPlasticMohrCoulombMulti (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 | 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... | |
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... | |
virtual bool | useCustomCTO () const |
Returns false. You will want to override this in your derived class if you write a custom consistent tangent operator function. 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 |
Calculates a custom consistent tangent operator. 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... | |
SubProblem & | getSubProblem () const |
bool | shouldDuplicateInitialExecution () const |
virtual Real | spatialValue (const Point &) const |
virtual const std::vector< Point > | spatialPoints () const |
void | gatherSum (T &value) |
void | gatherMax (T &value) |
void | gatherMin (T &value) |
void | gatherProxyValueMax (T1 &proxy, T2 &value) |
void | gatherProxyValueMin (T1 &proxy, T2 &value) |
void | setPrimaryThreadCopy (UserObject *primary) |
UserObject * | primaryThreadCopy () |
std::set< UserObjectName > | getDependObjects () const |
virtual bool | needThreadedCopy () const |
const std::set< std::string > & | getRequestedItems () override |
const std::set< std::string > & | getSuppliedItems () override |
unsigned int | systemNumber () const |
virtual bool | enabled () const |
std::shared_ptr< MooseObject > | getSharedPtr () |
std::shared_ptr< const MooseObject > | getSharedPtr () const |
MooseApp & | getMooseApp () const |
const std::string & | type () const |
virtual const std::string & | name () const |
std::string | typeAndName () const |
std::string | errorPrefix (const std::string &error_type) const |
void | callMooseError (std::string msg, const bool with_prefix) const |
MooseObjectParameterName | uniqueParameterName (const std::string ¶meter_name) const |
const InputParameters & | parameters () const |
MooseObjectName | uniqueName () const |
const T & | getParam (const std::string &name) const |
std::vector< std::pair< T1, T2 > > | getParam (const std::string ¶m1, const std::string ¶m2) const |
const T & | getRenamedParam (const std::string &old_name, const std::string &new_name) const |
T | getCheckedPointerParam (const std::string &name, const std::string &error_string="") const |
bool | isParamValid (const std::string &name) const |
bool | isParamSetByUser (const std::string &nm) const |
void | paramError (const std::string ¶m, Args... args) const |
void | paramWarning (const std::string ¶m, Args... args) const |
void | paramInfo (const std::string ¶m, Args... args) const |
void | connectControllableParams (const std::string ¶meter, const std::string &object_type, const std::string &object_name, const std::string &object_parameter) const |
void | mooseError (Args &&... args) const |
void | mooseErrorNonPrefixed (Args &&... args) const |
void | mooseDocumentedError (const std::string &repo_name, const unsigned int issue_num, Args &&... args) const |
void | mooseWarning (Args &&... args) const |
void | mooseWarningNonPrefixed (Args &&... args) const |
void | mooseDeprecated (Args &&... args) const |
void | mooseInfo (Args &&... args) const |
std::string | getDataFileName (const std::string ¶m) const |
std::string | getDataFileNameByName (const std::string &relative_path) const |
std::string | getDataFilePath (const std::string &relative_path) const |
virtual void | initialSetup () |
virtual void | timestepSetup () |
virtual void | jacobianSetup () |
virtual void | residualSetup () |
virtual void | customSetup (const ExecFlagType &) |
const ExecFlagEnum & | getExecuteOnEnum () const |
UserObjectName | getUserObjectName (const std::string ¶m_name) const |
const T & | getUserObject (const std::string ¶m_name, bool is_dependency=true) const |
const T & | getUserObjectByName (const UserObjectName &object_name, bool is_dependency=true) const |
const UserObject & | getUserObjectBase (const std::string ¶m_name, bool is_dependency=true) const |
const UserObject & | getUserObjectBaseByName (const UserObjectName &object_name, bool is_dependency=true) const |
const std::vector< MooseVariableScalar *> & | getCoupledMooseScalarVars () |
const std::set< TagID > & | getScalarVariableCoupleableVectorTags () const |
const std::set< TagID > & | getScalarVariableCoupleableMatrixTags () const |
const GenericMaterialProperty< T, is_ad > & | getGenericMaterialProperty (const std::string &name, MaterialData &material_data, const unsigned int state=0) |
const GenericMaterialProperty< T, is_ad > & | getGenericMaterialProperty (const std::string &name, const unsigned int state=0) |
const GenericMaterialProperty< T, is_ad > & | getGenericMaterialProperty (const std::string &name, const unsigned int state=0) |
const MaterialProperty< T > & | getMaterialProperty (const std::string &name, MaterialData &material_data, const unsigned int state=0) |
const MaterialProperty< T > & | getMaterialProperty (const std::string &name, const unsigned int state=0) |
const MaterialProperty< T > & | getMaterialProperty (const std::string &name, const unsigned int state=0) |
const ADMaterialProperty< T > & | getADMaterialProperty (const std::string &name, MaterialData &material_data) |
const ADMaterialProperty< T > & | getADMaterialProperty (const std::string &name) |
const ADMaterialProperty< T > & | getADMaterialProperty (const std::string &name) |
const MaterialProperty< T > & | getMaterialPropertyOld (const std::string &name, MaterialData &material_data) |
const MaterialProperty< T > & | getMaterialPropertyOld (const std::string &name) |
const MaterialProperty< T > & | getMaterialPropertyOld (const std::string &name) |
const MaterialProperty< T > & | getMaterialPropertyOlder (const std::string &name, MaterialData &material_data) |
const MaterialProperty< T > & | getMaterialPropertyOlder (const std::string &name) |
const MaterialProperty< T > & | getMaterialPropertyOlder (const std::string &name) |
const GenericMaterialProperty< T, is_ad > & | getGenericMaterialPropertyByName (const MaterialPropertyName &name, MaterialData &material_data, const unsigned int state) |
const GenericMaterialProperty< T, is_ad > & | getGenericMaterialPropertyByName (const MaterialPropertyName &name, const unsigned int state=0) |
const GenericMaterialProperty< T, is_ad > & | getGenericMaterialPropertyByName (const MaterialPropertyName &name, const unsigned int state=0) |
const MaterialProperty< T > & | getMaterialPropertyByName (const MaterialPropertyName &name, MaterialData &material_data, const unsigned int state=0) |
const MaterialProperty< T > & | getMaterialPropertyByName (const MaterialPropertyName &name, const unsigned int state=0) |
const MaterialProperty< T > & | getMaterialPropertyByName (const MaterialPropertyName &name, const unsigned int state=0) |
const ADMaterialProperty< T > & | getADMaterialPropertyByName (const MaterialPropertyName &name, MaterialData &material_data) |
const ADMaterialProperty< T > & | getADMaterialPropertyByName (const MaterialPropertyName &name) |
const ADMaterialProperty< T > & | getADMaterialPropertyByName (const MaterialPropertyName &name) |
const MaterialProperty< T > & | getMaterialPropertyOldByName (const MaterialPropertyName &name, MaterialData &material_data) |
const MaterialProperty< T > & | getMaterialPropertyOldByName (const MaterialPropertyName &name) |
const MaterialProperty< T > & | getMaterialPropertyOldByName (const MaterialPropertyName &name) |
const MaterialProperty< T > & | getMaterialPropertyOlderByName (const MaterialPropertyName &name, MaterialData &material_data) |
const MaterialProperty< T > & | getMaterialPropertyOlderByName (const MaterialPropertyName &name) |
const MaterialProperty< T > & | getMaterialPropertyOlderByName (const MaterialPropertyName &name) |
std::pair< const MaterialProperty< T > *, std::set< SubdomainID > > | getBlockMaterialProperty (const MaterialPropertyName &name) |
const GenericMaterialProperty< T, is_ad > & | getGenericZeroMaterialProperty (const std::string &name) |
const GenericMaterialProperty< T, is_ad > & | getGenericZeroMaterialProperty () |
const GenericMaterialProperty< T, is_ad > & | getGenericZeroMaterialPropertyByName (const std::string &prop_name) |
const MaterialProperty< T > & | getZeroMaterialProperty (Ts... args) |
std::set< SubdomainID > | getMaterialPropertyBlocks (const std::string &name) |
std::vector< SubdomainName > | getMaterialPropertyBlockNames (const std::string &name) |
std::set< BoundaryID > | getMaterialPropertyBoundaryIDs (const std::string &name) |
std::vector< BoundaryName > | getMaterialPropertyBoundaryNames (const std::string &name) |
void | checkBlockAndBoundaryCompatibility (std::shared_ptr< MaterialBase > discrete) |
std::unordered_map< SubdomainID, std::vector< MaterialBase *> > | buildRequiredMaterials (bool allow_stateful=true) |
void | statefulPropertiesAllowed (bool) |
bool | getMaterialPropertyCalled () const |
const std::unordered_set< unsigned int > & | getMatPropDependencies () const |
virtual void | resolveOptionalProperties () |
const GenericMaterialProperty< T, is_ad > & | getPossiblyConstantGenericMaterialPropertyByName (const MaterialPropertyName &prop_name, MaterialData &material_data, const unsigned int state) |
bool | isImplicit () |
Moose::StateArg | determineState () const |
virtual void | threadJoin (const UserObject &) override |
virtual void | threadJoin (const UserObject &) override |
virtual void | subdomainSetup () override |
virtual void | subdomainSetup () override |
bool | hasUserObject (const std::string ¶m_name) const |
bool | hasUserObject (const std::string ¶m_name) const |
bool | hasUserObject (const std::string ¶m_name) const |
bool | hasUserObject (const std::string ¶m_name) const |
bool | hasUserObjectByName (const UserObjectName &object_name) const |
bool | hasUserObjectByName (const UserObjectName &object_name) const |
bool | hasUserObjectByName (const UserObjectName &object_name) const |
bool | hasUserObjectByName (const UserObjectName &object_name) const |
const GenericOptionalMaterialProperty< T, is_ad > & | getGenericOptionalMaterialProperty (const std::string &name, const unsigned int state=0) |
const GenericOptionalMaterialProperty< T, is_ad > & | getGenericOptionalMaterialProperty (const std::string &name, const unsigned int state=0) |
const OptionalMaterialProperty< T > & | getOptionalMaterialProperty (const std::string &name, const unsigned int state=0) |
const OptionalMaterialProperty< T > & | getOptionalMaterialProperty (const std::string &name, const unsigned int state=0) |
const OptionalADMaterialProperty< T > & | getOptionalADMaterialProperty (const std::string &name) |
const OptionalADMaterialProperty< T > & | getOptionalADMaterialProperty (const std::string &name) |
const OptionalMaterialProperty< T > & | getOptionalMaterialPropertyOld (const std::string &name) |
const OptionalMaterialProperty< T > & | getOptionalMaterialPropertyOld (const std::string &name) |
const OptionalMaterialProperty< T > & | getOptionalMaterialPropertyOlder (const std::string &name) |
const OptionalMaterialProperty< T > & | getOptionalMaterialPropertyOlder (const std::string &name) |
MaterialBase & | getMaterial (const std::string &name) |
MaterialBase & | getMaterial (const std::string &name) |
MaterialBase & | getMaterialByName (const std::string &name, bool no_warn=false) |
MaterialBase & | getMaterialByName (const std::string &name, bool no_warn=false) |
bool | hasMaterialProperty (const std::string &name) |
bool | hasMaterialProperty (const std::string &name) |
bool | hasMaterialPropertyByName (const std::string &name) |
bool | hasMaterialPropertyByName (const std::string &name) |
bool | hasADMaterialProperty (const std::string &name) |
bool | hasADMaterialProperty (const std::string &name) |
bool | hasADMaterialPropertyByName (const std::string &name) |
bool | hasADMaterialPropertyByName (const std::string &name) |
bool | hasGenericMaterialProperty (const std::string &name) |
bool | hasGenericMaterialProperty (const std::string &name) |
bool | hasGenericMaterialPropertyByName (const std::string &name) |
bool | hasGenericMaterialPropertyByName (const std::string &name) |
const Function & | getFunction (const std::string &name) const |
const Function & | getFunctionByName (const FunctionName &name) const |
bool | hasFunction (const std::string ¶m_name) const |
bool | hasFunctionByName (const FunctionName &name) const |
bool | isDefaultPostprocessorValue (const std::string ¶m_name, const unsigned int index=0) const |
bool | hasPostprocessor (const std::string ¶m_name, const unsigned int index=0) const |
bool | hasPostprocessorByName (const PostprocessorName &name) const |
std::size_t | coupledPostprocessors (const std::string ¶m_name) const |
const PostprocessorName & | getPostprocessorName (const std::string ¶m_name, const unsigned int index=0) const |
const VectorPostprocessorValue & | getVectorPostprocessorValue (const std::string ¶m_name, const std::string &vector_name) const |
const VectorPostprocessorValue & | getVectorPostprocessorValue (const std::string ¶m_name, const std::string &vector_name, bool needs_broadcast) const |
const VectorPostprocessorValue & | getVectorPostprocessorValueByName (const VectorPostprocessorName &name, const std::string &vector_name) const |
const VectorPostprocessorValue & | getVectorPostprocessorValueByName (const VectorPostprocessorName &name, const std::string &vector_name, bool needs_broadcast) const |
const VectorPostprocessorValue & | getVectorPostprocessorValueOld (const std::string ¶m_name, const std::string &vector_name) const |
const VectorPostprocessorValue & | getVectorPostprocessorValueOld (const std::string ¶m_name, const std::string &vector_name, bool needs_broadcast) const |
const VectorPostprocessorValue & | getVectorPostprocessorValueOldByName (const VectorPostprocessorName &name, const std::string &vector_name) const |
const VectorPostprocessorValue & | getVectorPostprocessorValueOldByName (const VectorPostprocessorName &name, const std::string &vector_name, bool needs_broadcast) const |
const ScatterVectorPostprocessorValue & | getScatterVectorPostprocessorValue (const std::string ¶m_name, const std::string &vector_name) const |
const ScatterVectorPostprocessorValue & | getScatterVectorPostprocessorValueByName (const VectorPostprocessorName &name, const std::string &vector_name) const |
const ScatterVectorPostprocessorValue & | getScatterVectorPostprocessorValueOld (const std::string ¶m_name, const std::string &vector_name) const |
const ScatterVectorPostprocessorValue & | getScatterVectorPostprocessorValueOldByName (const VectorPostprocessorName &name, const std::string &vector_name) const |
bool | hasVectorPostprocessor (const std::string ¶m_name, const std::string &vector_name) const |
bool | hasVectorPostprocessor (const std::string ¶m_name) const |
bool | hasVectorPostprocessorByName (const VectorPostprocessorName &name, const std::string &vector_name) const |
bool | hasVectorPostprocessorByName (const VectorPostprocessorName &name) const |
const VectorPostprocessorName & | getVectorPostprocessorName (const std::string ¶m_name) const |
T & | getSampler (const std::string &name) |
Sampler & | getSampler (const std::string &name) |
T & | getSamplerByName (const SamplerName &name) |
Sampler & | getSamplerByName (const SamplerName &name) |
virtual void | meshChanged () |
PerfGraph & | perfGraph () |
const PostprocessorValue & | getPostprocessorValue (const std::string ¶m_name, const unsigned int index=0) const |
const PostprocessorValue & | getPostprocessorValue (const std::string ¶m_name, const unsigned int index=0) const |
const PostprocessorValue & | getPostprocessorValueOld (const std::string ¶m_name, const unsigned int index=0) const |
const PostprocessorValue & | getPostprocessorValueOld (const std::string ¶m_name, const unsigned int index=0) const |
const PostprocessorValue & | getPostprocessorValueOlder (const std::string ¶m_name, const unsigned int index=0) const |
const PostprocessorValue & | getPostprocessorValueOlder (const std::string ¶m_name, const unsigned int index=0) const |
virtual const PostprocessorValue & | getPostprocessorValueByName (const PostprocessorName &name) const |
virtual const PostprocessorValue & | getPostprocessorValueByName (const PostprocessorName &name) const |
const PostprocessorValue & | getPostprocessorValueOldByName (const PostprocessorName &name) const |
const PostprocessorValue & | getPostprocessorValueOldByName (const PostprocessorName &name) const |
const PostprocessorValue & | getPostprocessorValueOlderByName (const PostprocessorName &name) const |
const PostprocessorValue & | getPostprocessorValueOlderByName (const PostprocessorName &name) const |
bool | isVectorPostprocessorDistributed (const std::string ¶m_name) const |
bool | isVectorPostprocessorDistributed (const std::string ¶m_name) const |
bool | isVectorPostprocessorDistributedByName (const VectorPostprocessorName &name) const |
bool | isVectorPostprocessorDistributedByName (const VectorPostprocessorName &name) const |
const Distribution & | getDistribution (const std::string &name) const |
const T & | getDistribution (const std::string &name) const |
const Distribution & | getDistribution (const std::string &name) const |
const T & | getDistribution (const std::string &name) const |
const Distribution & | getDistributionByName (const DistributionName &name) const |
const T & | getDistributionByName (const std::string &name) const |
const Distribution & | getDistributionByName (const DistributionName &name) const |
const T & | getDistributionByName (const std::string &name) const |
const Parallel::Communicator & | comm () const |
processor_id_type | n_processors () const |
processor_id_type | processor_id () const |
Static Public Member Functions | |
static InputParameters | validParams () |
static void | sort (typename std::vector< T > &vector) |
static void | sortDFS (typename std::vector< T > &vector) |
static void | cyclicDependencyError (CyclicDependencyException< T2 > &e, const std::string &header) |
Public Attributes | |
const Real | _f_tol |
Tolerance on yield function. More... | |
const Real | _ic_tol |
Tolerance on internal constraint. More... | |
const ConsoleStream | _console |
Static Public Attributes | |
static constexpr PropertyValue::id_type | default_property_id |
static constexpr PropertyValue::id_type | zero_property_id |
static constexpr auto | SYSTEM |
static constexpr auto | NAME |
Protected Member Functions | |
virtual Real | cohesion (const Real internal_param) const |
cohesion as a function of residual value, rate, and internal_param More... | |
virtual Real | dcohesion (const Real internal_param) const |
d(cohesion)/d(internal_param) as a function of residual value, rate, and internal_param More... | |
virtual Real | phi (const Real internal_param) const |
phi as a function of residual value, rate, and internal_param More... | |
virtual Real | dphi (const Real internal_param) const |
d(phi)/d(internal_param) as a function of residual value, rate, and internal_param More... | |
virtual Real | psi (const Real internal_param) const |
psi as a function of residual value, rate, and internal_param More... | |
virtual Real | dpsi (const Real internal_param) const |
d(psi)/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... | |
virtual void | addPostprocessorDependencyHelper (const PostprocessorName &name) const override |
virtual void | addVectorPostprocessorDependencyHelper (const VectorPostprocessorName &name) const override |
virtual void | addUserObjectDependencyHelper (const UserObject &uo) const override |
void | addReporterDependencyHelper (const ReporterName &reporter_name) override |
const ReporterName & | getReporterName (const std::string ¶m_name) const |
T & | declareRestartableData (const std::string &data_name, Args &&... args) |
ManagedValue< T > | declareManagedRestartableDataWithContext (const std::string &data_name, void *context, Args &&... args) |
const T & | getRestartableData (const std::string &data_name) const |
T & | declareRestartableDataWithContext (const std::string &data_name, void *context, Args &&... args) |
T & | declareRecoverableData (const std::string &data_name, Args &&... args) |
T & | declareRestartableDataWithObjectName (const std::string &data_name, const std::string &object_name, Args &&... args) |
T & | declareRestartableDataWithObjectNameWithContext (const std::string &data_name, const std::string &object_name, void *context, Args &&... args) |
std::string | restartableName (const std::string &data_name) const |
const T & | getMeshProperty (const std::string &data_name, const std::string &prefix) |
const T & | getMeshProperty (const std::string &data_name) |
bool | hasMeshProperty (const std::string &data_name, const std::string &prefix) const |
bool | hasMeshProperty (const std::string &data_name, const std::string &prefix) const |
bool | hasMeshProperty (const std::string &data_name) const |
bool | hasMeshProperty (const std::string &data_name) const |
std::string | meshPropertyName (const std::string &data_name) const |
PerfID | registerTimedSection (const std::string §ion_name, const unsigned int level) const |
PerfID | registerTimedSection (const std::string §ion_name, const unsigned int level, const std::string &live_message, const bool print_dots=true) const |
std::string | timedSectionName (const std::string §ion_name) const |
bool | isCoupledScalar (const std::string &var_name, unsigned int i=0) const |
unsigned int | coupledScalarComponents (const std::string &var_name) const |
unsigned int | coupledScalar (const std::string &var_name, unsigned int comp=0) const |
libMesh::Order | coupledScalarOrder (const std::string &var_name, unsigned int comp=0) const |
const VariableValue & | coupledScalarValue (const std::string &var_name, unsigned int comp=0) const |
const ADVariableValue & | adCoupledScalarValue (const std::string &var_name, unsigned int comp=0) const |
const GenericVariableValue< is_ad > & | coupledGenericScalarValue (const std::string &var_name, unsigned int comp=0) const |
const GenericVariableValue< false > & | coupledGenericScalarValue (const std::string &var_name, const unsigned int comp) const |
const GenericVariableValue< true > & | coupledGenericScalarValue (const std::string &var_name, const unsigned int comp) const |
const VariableValue & | coupledVectorTagScalarValue (const std::string &var_name, TagID tag, unsigned int comp=0) const |
const VariableValue & | coupledMatrixTagScalarValue (const std::string &var_name, TagID tag, unsigned int comp=0) const |
const VariableValue & | coupledScalarValueOld (const std::string &var_name, unsigned int comp=0) const |
const VariableValue & | coupledScalarValueOlder (const std::string &var_name, unsigned int comp=0) const |
const VariableValue & | coupledScalarDot (const std::string &var_name, unsigned int comp=0) const |
const ADVariableValue & | adCoupledScalarDot (const std::string &var_name, unsigned int comp=0) const |
const VariableValue & | coupledScalarDotDot (const std::string &var_name, unsigned int comp=0) const |
const VariableValue & | coupledScalarDotOld (const std::string &var_name, unsigned int comp=0) const |
const VariableValue & | coupledScalarDotDotOld (const std::string &var_name, unsigned int comp=0) const |
const VariableValue & | coupledScalarDotDu (const std::string &var_name, unsigned int comp=0) const |
const VariableValue & | coupledScalarDotDotDu (const std::string &var_name, unsigned int comp=0) const |
const MooseVariableScalar * | getScalarVar (const std::string &var_name, unsigned int comp) const |
virtual void | checkMaterialProperty (const std::string &name, const unsigned int state) |
void | markMatPropRequested (const std::string &) |
MaterialPropertyName | getMaterialPropertyName (const std::string &name) const |
void | checkExecutionStage () |
const T & | getReporterValue (const std::string ¶m_name, const std::size_t time_index=0) |
const T & | getReporterValue (const std::string ¶m_name, ReporterMode mode, const std::size_t time_index=0) |
const T & | getReporterValue (const std::string ¶m_name, const std::size_t time_index=0) |
const T & | getReporterValue (const std::string ¶m_name, ReporterMode mode, const std::size_t time_index=0) |
const T & | getReporterValueByName (const ReporterName &reporter_name, const std::size_t time_index=0) |
const T & | getReporterValueByName (const ReporterName &reporter_name, ReporterMode mode, const std::size_t time_index=0) |
const T & | getReporterValueByName (const ReporterName &reporter_name, const std::size_t time_index=0) |
const T & | getReporterValueByName (const ReporterName &reporter_name, ReporterMode mode, const std::size_t time_index=0) |
bool | hasReporterValue (const std::string ¶m_name) const |
bool | hasReporterValue (const std::string ¶m_name) const |
bool | hasReporterValue (const std::string ¶m_name) const |
bool | hasReporterValue (const std::string ¶m_name) const |
bool | hasReporterValueByName (const ReporterName &reporter_name) const |
bool | hasReporterValueByName (const ReporterName &reporter_name) const |
bool | hasReporterValueByName (const ReporterName &reporter_name) const |
bool | hasReporterValueByName (const ReporterName &reporter_name) const |
const GenericMaterialProperty< T, is_ad > * | defaultGenericMaterialProperty (const std::string &name) |
const GenericMaterialProperty< T, is_ad > * | defaultGenericMaterialProperty (const std::string &name) |
const MaterialProperty< T > * | defaultMaterialProperty (const std::string &name) |
const MaterialProperty< T > * | defaultMaterialProperty (const std::string &name) |
const ADMaterialProperty< T > * | defaultADMaterialProperty (const std::string &name) |
const ADMaterialProperty< T > * | defaultADMaterialProperty (const std::string &name) |
Static Protected Member Functions | |
static std::string | meshPropertyName (const std::string &data_name, const std::string &prefix) |
Static Protected Attributes | |
static const std::string | _interpolated_old |
static const std::string | _interpolated_older |
Private Types | |
enum | return_type { tip110100 = 0, tip010101 = 1, edge010100 = 2, edge000101 = 3, plane000100 = 4 } |
Private Member Functions | |
void | yieldFunctionEigvals (Real e0, Real e1, Real e2, Real sinphi, Real cohcos, std::vector< Real > &f) const |
Calculates the yield functions given the eigenvalues of stress. More... | |
void | df_dsig (const RankTwoTensor &stress, Real sin_angle, std::vector< RankTwoTensor > &df) const |
this is exactly dyieldFunction_dstress, or flowPotential, depending on whether sin_angle = sin(phi), or sin_angle = sin(psi), respectively More... | |
void | perturbStress (const RankTwoTensor &stress, std::vector< Real > &eigvals, std::vector< RankTwoTensor > &deigvals) const |
perturbs the stress tensor in the case of almost-equal eigenvalues. More... | |
bool | KuhnTuckerOK (const std::vector< Real > &yf, const std::vector< Real > &dpm, Real ep_plastic_tolerance) const |
Returns true if the Kuhn-Tucker conditions are satisfied. More... | |
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 |
See doco for returnMap function. More... | |
bool | returnTip (const std::vector< Real > &eigvals, const std::vector< RealVectorValue > &n, std::vector< Real > &dpm, RankTwoTensor &returned_stress, Real intnl_old, Real &sinphi, Real &cohcos, Real initial_guess, bool &nr_converged, Real ep_plastic_tolerance, std::vector< Real > &yf) const |
Tries to return-map to the MC tip using the THREE directions given in n, and THREE dpm values are returned. More... | |
bool | returnPlane (const std::vector< Real > &eigvals, const std::vector< RealVectorValue > &n, std::vector< Real > &dpm, RankTwoTensor &returned_stress, Real intnl_old, Real &sinphi, Real &cohcos, Real initial_guess, bool &nr_converged, Real ep_plastic_tolerance, std::vector< Real > &yf) const |
Tries to return-map to the MC plane using the n[3] direction The return value is true if the internal Newton-Raphson process has converged and Kuhn-Tucker is satisfied, otherwise it is false If the return value is false and/or nr_converged=false then the "out" parameters (sinphi, cohcos, yf, returned_stress) will be junk. More... | |
bool | returnEdge000101 (const std::vector< Real > &eigvals, const std::vector< RealVectorValue > &n, std::vector< Real > &dpm, RankTwoTensor &returned_stress, Real intnl_old, Real &sinphi, Real &cohcos, Real initial_guess, Real mag_E, bool &nr_converged, Real ep_plastic_tolerance, std::vector< Real > &yf) const |
Tries to return-map to the MC edge using the n[4] and n[6] directions The return value is true if the internal Newton-Raphson process has converged and Kuhn-Tucker is satisfied, otherwise it is false If the return value is false and/or nr_converged=false then the "out" parameters (sinphi, cohcos, yf, returned_stress) will be junk. More... | |
bool | returnEdge010100 (const std::vector< Real > &eigvals, const std::vector< RealVectorValue > &n, std::vector< Real > &dpm, RankTwoTensor &returned_stress, Real intnl_old, Real &sinphi, Real &cohcos, Real initial_guess, Real mag_E, bool &nr_converged, Real ep_plastic_tolerance, std::vector< Real > &yf) const |
Tries to return-map to the MC edge using the n[1] and n[3] directions The return value is true if the internal Newton-Raphson process has converged and Kuhn-Tucker is satisfied, otherwise it is false If the return value is false and/or nr_converged=false then the "out" parameters (sinphi, cohcos, yf, returned_stress) will be junk. More... | |
Private Attributes | |
const SolidMechanicsHardeningModel & | _cohesion |
Hardening model for cohesion. More... | |
const SolidMechanicsHardeningModel & | _phi |
Hardening model for phi. More... | |
const SolidMechanicsHardeningModel & | _psi |
Hardening model for psi. More... | |
const unsigned int | _max_iters |
Maximum Newton-Raphison iterations in the custom returnMap 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... | |
FiniteStrainMohrCoulombMulti implements rate-independent non-associative mohr-coulomb with hardening/softening in the finite-strain framework, using planar (non-smoothed) surfaces.
Definition at line 19 of file SolidMechanicsPlasticMohrCoulombMulti.h.
|
private |
Enumerator | |
---|---|
tip110100 | |
tip010101 | |
edge010100 | |
edge000101 | |
plane000100 |
Definition at line 315 of file SolidMechanicsPlasticMohrCoulombMulti.h.
SolidMechanicsPlasticMohrCoulombMulti::SolidMechanicsPlasticMohrCoulombMulti | ( | const InputParameters & | parameters | ) |
Definition at line 61 of file SolidMechanicsPlasticMohrCoulombMulti.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 SolidMechanicsPlasticModel.
Definition at line 248 of file SolidMechanicsPlasticMohrCoulombMulti.C.
|
protectedvirtual |
cohesion as a function of residual value, rate, and internal_param
Definition at line 285 of file SolidMechanicsPlasticMohrCoulombMulti.C.
Referenced by doReturnMap(), dyieldFunction_dintnlV(), returnEdge000101(), returnEdge010100(), returnPlane(), returnTip(), and yieldFunctionV().
|
virtualinherited |
Calculates a custom consistent tangent operator.
You may choose to over-ride this in your derived SolidMechanicsPlasticXXXX 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 in SolidMechanicsPlasticTensileMulti, SolidMechanicsPlasticDruckerPragerHyperbolic, SolidMechanicsPlasticMeanCapTC, and SolidMechanicsPlasticJ2.
Definition at line 252 of file SolidMechanicsPlasticModel.C.
Referenced by SolidMechanicsPlasticJ2::consistentTangentOperator(), SolidMechanicsPlasticDruckerPragerHyperbolic::consistentTangentOperator(), SolidMechanicsPlasticMeanCapTC::consistentTangentOperator(), and SolidMechanicsPlasticTensileMulti::consistentTangentOperator().
|
protectedvirtual |
d(cohesion)/d(internal_param) as a function of residual value, rate, and internal_param
Definition at line 291 of file SolidMechanicsPlasticMohrCoulombMulti.C.
Referenced by dyieldFunction_dintnlV(), returnEdge000101(), returnEdge010100(), returnPlane(), and returnTip().
|
private |
this is exactly dyieldFunction_dstress, or flowPotential, depending on whether sin_angle = sin(phi), or sin_angle = sin(psi), respectively
Definition at line 144 of file SolidMechanicsPlasticMohrCoulombMulti.C.
Referenced by dyieldFunction_dstressV(), and flowPotentialV().
|
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 SolidMechanicsPlasticMeanCapTC, SolidMechanicsPlasticDruckerPrager, SolidMechanicsPlasticJ2, SolidMechanicsPlasticWeakPlaneShear, SolidMechanicsPlasticWeakPlaneTensile, SolidMechanicsPlasticMohrCoulomb, SolidMechanicsPlasticTensile, SolidMechanicsPlasticMeanCap, SolidMechanicsPlasticSimpleTester, and SolidMechanicsPlasticWeakPlaneTensileN.
Definition at line 131 of file SolidMechanicsPlasticModel.C.
Referenced by SolidMechanicsPlasticModel::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 SolidMechanicsPlasticModel.
Definition at line 228 of file SolidMechanicsPlasticMohrCoulombMulti.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 SolidMechanicsPlasticMeanCapTC, SolidMechanicsPlasticDruckerPrager, SolidMechanicsPlasticIsotropicSD, SolidMechanicsPlasticJ2, SolidMechanicsPlasticWeakPlaneShear, SolidMechanicsPlasticOrthotropic, SolidMechanicsPlasticWeakPlaneTensile, SolidMechanicsPlasticMohrCoulomb, SolidMechanicsPlasticTensile, SolidMechanicsPlasticMeanCap, SolidMechanicsPlasticSimpleTester, SolidMechanicsPlasticDruckerPragerHyperbolic, and SolidMechanicsPlasticWeakPlaneTensileN.
Definition at line 117 of file SolidMechanicsPlasticModel.C.
Referenced by SolidMechanicsPlasticModel::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 SolidMechanicsPlasticModel.
Definition at line 204 of file SolidMechanicsPlasticMohrCoulombMulti.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 SolidMechanicsPlasticMeanCapTC.
Definition at line 172 of file SolidMechanicsPlasticModel.C.
Referenced by SolidMechanicsPlasticModel::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 178 of file SolidMechanicsPlasticModel.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 SolidMechanicsPlasticMeanCapTC.
Definition at line 158 of file SolidMechanicsPlasticModel.C.
Referenced by SolidMechanicsPlasticModel::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 164 of file SolidMechanicsPlasticModel.C.
|
private |
See doco for returnMap function.
The interface is identical to this one. This one can be called internally regardless of the value of _use_custom_returnMap
Definition at line 363 of file SolidMechanicsPlasticMohrCoulombMulti.C.
Referenced by activeConstraints(), and returnMap().
|
protectedvirtual |
d(phi)/d(internal_param) as a function of residual value, rate, and internal_param
Definition at line 303 of file SolidMechanicsPlasticMohrCoulombMulti.C.
Referenced by dyieldFunction_dintnlV(), returnEdge000101(), returnEdge010100(), returnPlane(), and returnTip().
|
protectedvirtual |
d(psi)/d(internal_param) as a function of residual value, rate, and internal_param
Definition at line 315 of file SolidMechanicsPlasticMohrCoulombMulti.C.
Referenced by dflowPotential_dintnlV().
|
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 SolidMechanicsPlasticMeanCapTC, SolidMechanicsPlasticDruckerPrager, SolidMechanicsPlasticJ2, SolidMechanicsPlasticWeakPlaneShear, SolidMechanicsPlasticWeakPlaneTensile, SolidMechanicsPlasticMohrCoulomb, SolidMechanicsPlasticTensile, SolidMechanicsPlasticMeanCap, SolidMechanicsPlasticSimpleTester, and SolidMechanicsPlasticWeakPlaneTensileN.
Definition at line 90 of file SolidMechanicsPlasticModel.C.
Referenced by SolidMechanicsPlasticModel::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 SolidMechanicsPlasticModel.
Definition at line 173 of file SolidMechanicsPlasticMohrCoulombMulti.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 SolidMechanicsPlasticMeanCapTC, SolidMechanicsPlasticIsotropicSD, SolidMechanicsPlasticDruckerPrager, SolidMechanicsPlasticJ2, SolidMechanicsPlasticOrthotropic, SolidMechanicsPlasticWeakPlaneShear, SolidMechanicsPlasticWeakPlaneTensile, SolidMechanicsPlasticMohrCoulomb, SolidMechanicsPlasticTensile, SolidMechanicsPlasticMeanCap, SolidMechanicsPlasticSimpleTester, and SolidMechanicsPlasticWeakPlaneTensileN.
Definition at line 75 of file SolidMechanicsPlasticModel.C.
Referenced by SolidMechanicsPlasticModel::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 SolidMechanicsPlasticModel.
Definition at line 165 of file SolidMechanicsPlasticMohrCoulombMulti.C.
|
virtualinherited |
|
virtualinherited |
|
protectedvirtualinherited |
The flow potential.
stress | the stress at which to calculate the flow potential |
intnl | internal parameter |
Reimplemented in SolidMechanicsPlasticMeanCapTC, SolidMechanicsPlasticIsotropicSD, SolidMechanicsPlasticDruckerPrager, SolidMechanicsPlasticJ2, SolidMechanicsPlasticOrthotropic, SolidMechanicsPlasticWeakPlaneShear, SolidMechanicsPlasticWeakPlaneTensile, SolidMechanicsPlasticMohrCoulomb, SolidMechanicsPlasticTensile, SolidMechanicsPlasticMeanCap, SolidMechanicsPlasticSimpleTester, and SolidMechanicsPlasticWeakPlaneTensileN.
Definition at line 104 of file SolidMechanicsPlasticModel.C.
Referenced by SolidMechanicsPlasticModel::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 SolidMechanicsPlasticModel.
Definition at line 195 of file SolidMechanicsPlasticMohrCoulombMulti.C.
|
protectedvirtualinherited |
The hardening potential.
stress | the stress at which to calculate the hardening potential |
intnl | internal parameter |
Reimplemented in SolidMechanicsPlasticMeanCapTC.
Definition at line 145 of file SolidMechanicsPlasticModel.C.
Referenced by SolidMechanicsPlasticModel::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 150 of file SolidMechanicsPlasticModel.C.
|
virtualinherited |
|
private |
Returns true if the Kuhn-Tucker conditions are satisfied.
yf | The six yield function values |
dpm | The six plastic multipliers |
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 1145 of file SolidMechanicsPlasticMohrCoulombMulti.C.
|
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 246 of file SolidMechanicsPlasticModel.C.
Referenced by KuhnTuckerOK(), SolidMechanicsPlasticTensileMulti::KuhnTuckerOK(), and SolidMechanicsPlasticModel::returnMap().
|
overridevirtual |
Implements SolidMechanicsPlasticModel.
Definition at line 321 of file SolidMechanicsPlasticMohrCoulombMulti.C.
|
overridevirtual |
The number of yield surfaces for this plasticity model.
Reimplemented from SolidMechanicsPlasticModel.
Definition at line 83 of file SolidMechanicsPlasticMohrCoulombMulti.C.
|
private |
perturbs the stress tensor in the case of almost-equal eigenvalues.
Note that, upon entry, this algorithm assumes that eigvals are the eigvenvalues of stress
stress | input stress | |
[in,out] | eigvals | eigenvalues after perturbing. |
[in,out] | deigvals | d(eigenvalues)/dstress_ij after perturbing. |
Definition at line 124 of file SolidMechanicsPlasticMohrCoulombMulti.C.
Referenced by df_dsig(), and dflowPotential_dintnlV().
phi as a function of residual value, rate, and internal_param
Definition at line 297 of file SolidMechanicsPlasticMohrCoulombMulti.C.
Referenced by doReturnMap(), dyieldFunction_dintnlV(), dyieldFunction_dstressV(), returnEdge000101(), returnEdge010100(), returnPlane(), returnTip(), and yieldFunctionV().
psi as a function of residual value, rate, and internal_param
Definition at line 309 of file SolidMechanicsPlasticMohrCoulombMulti.C.
Referenced by dflowPotential_dintnlV(), dflowPotential_dstressV(), doReturnMap(), and flowPotentialV().
|
private |
Tries to return-map to the MC edge using the n[4] and n[6] directions The return value is true if the internal Newton-Raphson process has converged and Kuhn-Tucker is satisfied, otherwise it is false If the return value is false and/or nr_converged=false then the "out" parameters (sinphi, cohcos, yf, returned_stress) will be junk.
eigvals | The three stress eigenvalues, sorted in ascending order |
n | The six return directions, n=E_ijkl*r. Note this algorithm assumes isotropic elasticity, so these are vectors in principal stress space |
dpm[out] | The six plastic multipliers resulting from the return-map to the edge |
returned_stress[out] | 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. |
sinphi[out] | The new value of sin(friction angle) after returning. |
cohcos[out] | The new value of cohesion*cos(friction angle) after returning. |
mag_E | An approximate value for the magnitude of the Young's modulus. This is used to set appropriate tolerances in the Newton-Raphson procedure |
initial_guess | A guess for sum(dpm) |
nr_converged[out] | Whether the internal Newton-Raphson process converged |
ep_plastic_tolerance | The user-set tolerance on the plastic strain. |
yf[out] | The yield functions after return |
Definition at line 911 of file SolidMechanicsPlasticMohrCoulombMulti.C.
Referenced by doReturnMap().
|
private |
Tries to return-map to the MC edge using the n[1] and n[3] directions The return value is true if the internal Newton-Raphson process has converged and Kuhn-Tucker is satisfied, otherwise it is false If the return value is false and/or nr_converged=false then the "out" parameters (sinphi, cohcos, yf, returned_stress) will be junk.
eigvals | The three stress eigenvalues, sorted in ascending order |
n | The six return directions, n=E_ijkl*r. Note this algorithm assumes isotropic elasticity, so these are vectors in principal stress space |
dpm[out] | The six plastic multipliers resulting from the return-map to the edge |
returned_stress[out] | 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. |
sinphi[out] | The new value of sin(friction angle) after returning. |
cohcos[out] | The new value of cohesion*cos(friction angle) after returning. |
mag_E | An approximate value for the magnitude of the Young's modulus. This is used to set appropriate tolerances in the Newton-Raphson procedure |
initial_guess | A guess for sum(dpm) |
nr_converged[out] | Whether the internal Newton-Raphson process converged |
ep_plastic_tolerance | The user-set tolerance on the plastic strain. |
yf[out] | The yield functions after return |
Definition at line 1028 of file SolidMechanicsPlasticMohrCoulombMulti.C.
Referenced by doReturnMap().
|
overridevirtual |
Performs a custom return-map.
You may choose to over-ride this in your derived SolidMechanicsPlasticXXXX 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 SolidMechanicsPlasticModel.
Definition at line 327 of file SolidMechanicsPlasticMohrCoulombMulti.C.
|
private |
Tries to return-map to the MC plane using the n[3] direction The return value is true if the internal Newton-Raphson process has converged and Kuhn-Tucker is satisfied, otherwise it is false If the return value is false and/or nr_converged=false then the "out" parameters (sinphi, cohcos, yf, returned_stress) will be junk.
eigvals | The three stress eigenvalues, sorted in ascending order |
n | The six return directions, n=E_ijkl*r. Note this algorithm assumes isotropic elasticity, so these are vectors in principal stress space |
dpm[out] | The six plastic multipliers resulting from the return-map to the plane |
returned_stress[out] | 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. |
sinphi[out] | The new value of sin(friction angle) after returning. |
cohcos[out] | The new value of cohesion*cos(friction angle) after returning. |
initial_guess | A guess for sum(dpm) |
nr_converged[out] | Whether the internal Newton-Raphson process converged |
ep_plastic_tolerance | The user-set tolerance on the plastic strain. |
yf[out] | The yield functions after return |
Definition at line 806 of file SolidMechanicsPlasticMohrCoulombMulti.C.
Referenced by doReturnMap().
|
private |
Tries to return-map to the MC tip using the THREE directions given in n, and THREE dpm values are returned.
Note that you must supply THREE suitale n vectors out of the total of SIX flow directions, and then interpret the THREE dpm values appropriately. The return value is true if the internal Newton-Raphson process has converged and Kuhn-Tucker is satisfied, otherwise it is false If the return value is false and/or nr_converged=false then the "out" parameters (sinphi, cohcos, yf, returned_stress, dpm) will be junk.
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[out] | The three plastic multipliers resulting from the return-map to the tip. |
returned_stress[out] | 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. |
sinphi[out] | The new value of sin(friction angle) after returning. |
cohcos[out] | The new value of cohesion*cos(friction angle) after returning. |
initial_guess | A guess for sum(dpm) |
nr_converged[out] | Whether the internal Newton-Raphson process converged |
ep_plastic_tolerance | The user-set tolerance on the plastic strain. |
yf[out] | The yield functions after return |
Definition at line 638 of file SolidMechanicsPlasticMohrCoulombMulti.C.
Referenced by doReturnMap().
|
virtualinherited |
Returns false. You will want to override this in your derived class if you write a custom consistent tangent operator function.
Reimplemented in SolidMechanicsPlasticTensileMulti, SolidMechanicsPlasticMeanCapTC, SolidMechanicsPlasticDruckerPragerHyperbolic, and SolidMechanicsPlasticJ2.
Definition at line 213 of file SolidMechanicsPlasticModel.C.
|
overridevirtual |
Returns false. You will want to override this in your derived class if you write a custom returnMap function.
Reimplemented from SolidMechanicsPlasticModel.
Definition at line 1164 of file SolidMechanicsPlasticMohrCoulombMulti.C.
|
static |
Definition at line 24 of file SolidMechanicsPlasticMohrCoulombMulti.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 SolidMechanicsPlasticMeanCapTC, SolidMechanicsPlasticIsotropicSD, SolidMechanicsPlasticDruckerPrager, SolidMechanicsPlasticJ2, SolidMechanicsPlasticOrthotropic, SolidMechanicsPlasticWeakPlaneShear, SolidMechanicsPlasticWeakPlaneTensile, SolidMechanicsPlasticMohrCoulomb, SolidMechanicsPlasticTensile, SolidMechanicsPlasticDruckerPragerHyperbolic, SolidMechanicsPlasticMeanCap, SolidMechanicsPlasticSimpleTester, and SolidMechanicsPlasticWeakPlaneTensileN.
Definition at line 61 of file SolidMechanicsPlasticModel.C.
Referenced by SolidMechanicsPlasticModel::yieldFunctionV().
|
private |
Calculates the yield functions given the eigenvalues of stress.
e0 | Smallest eigenvalue | |
e1 | Middle eigenvalue | |
e2 | Largest eigenvalue | |
sinphi | sin(friction angle) | |
cohcos | cohesion*cos(friction angle) | |
[out] | f | the yield functions |
Definition at line 106 of file SolidMechanicsPlasticMohrCoulombMulti.C.
Referenced by doReturnMap(), returnEdge000101(), returnEdge010100(), returnPlane(), and 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 SolidMechanicsPlasticModel.
Definition at line 89 of file SolidMechanicsPlasticMohrCoulombMulti.C.
|
private |
Hardening model for cohesion.
Definition at line 95 of file SolidMechanicsPlasticMohrCoulombMulti.h.
Referenced by cohesion(), dcohesion(), and returnTip().
|
inherited |
Tolerance on yield function.
Definition at line 170 of file SolidMechanicsPlasticModel.h.
Referenced by SolidMechanicsPlasticWeakPlaneShear::activeConstraints(), SolidMechanicsPlasticWeakPlaneTensile::activeConstraints(), SolidMechanicsPlasticMeanCapTC::activeConstraints(), SolidMechanicsPlasticTensileMulti::activeConstraints(), activeConstraints(), SolidMechanicsPlasticModel::activeConstraints(), doReturnMap(), SolidMechanicsPlasticTensileMulti::doReturnMap(), SolidMechanicsPlasticModel::KuhnTuckerSingleSurface(), SolidMechanicsPlasticTensileMulti::returnEdge(), returnEdge000101(), returnEdge010100(), SolidMechanicsPlasticJ2::returnMap(), SolidMechanicsPlasticMeanCapTC::returnMap(), SolidMechanicsPlasticDruckerPragerHyperbolic::returnMap(), SolidMechanicsPlasticModel::returnMap(), SolidMechanicsPlasticTensileMulti::returnPlane(), returnPlane(), SolidMechanicsPlasticTensileMulti::returnTip(), returnTip(), SolidMechanicsPlasticMohrCoulombMulti(), and SolidMechanicsPlasticTensileMulti::SolidMechanicsPlasticTensileMulti().
|
inherited |
Tolerance on internal constraint.
Definition at line 173 of file SolidMechanicsPlasticModel.h.
|
private |
Maximum Newton-Raphison iterations in the custom returnMap algorithm.
Definition at line 104 of file SolidMechanicsPlasticMohrCoulombMulti.h.
Referenced by returnEdge000101(), returnEdge010100(), returnPlane(), and returnTip().
|
private |
Hardening model for phi.
Definition at line 98 of file SolidMechanicsPlasticMohrCoulombMulti.h.
Referenced by dphi(), phi(), and returnTip().
|
private |
Hardening model for psi.
Definition at line 101 of file SolidMechanicsPlasticMohrCoulombMulti.h.
|
private |
yield function is shifted by this amount to avoid problems with stress-derivatives at equal eigenvalues
Definition at line 107 of file SolidMechanicsPlasticMohrCoulombMulti.h.
Referenced by df_dsig(), dflowPotential_dintnlV(), doReturnMap(), dyieldFunction_dintnlV(), perturbStress(), SolidMechanicsPlasticMohrCoulombMulti(), and yieldFunctionV().
|
private |
Whether to use the custom return-map algorithm.
Definition at line 110 of file SolidMechanicsPlasticMohrCoulombMulti.h.
Referenced by returnMap(), and useCustomReturnMap().