LargeDeformationJ2PlasticityBeBar

Large deformation plasticity using the bebar (modified left Cauchy-Green) update. Elastic parameters are sourced from the associated CNHIsotropicElasticity model.

Overview

This class implements large deformation plasticity using the corrected modified left Cauchy-Green tensor () return-mapping algorithm of Borden et al. (2016). It requires the CNHIsotropicElasticity model.

Kinematics

The elastic left Cauchy-Green tensor admits the multiplicative split . The isochoric part is tracked via

and its incremental update uses the volume-preserving part of the relative deformation gradient,

so that the trial state is .

Return mapping

The yield function takes the form

where is the trial deviatoric Kirchhoff stress, is the elastic degradation function, and is the shear modulus. If , a radial-return solve determines the plastic strain increment .

Determinant correction

After the stress update, the deviatoric part of is known but its trace (i.e. ) must be found to enforce . Following Borden et al. (2016), this is done by solving,

and then updating ,

This correction step distinguishes LargeDeformationJ2PlasticityBeBar from LargeDeformationJ2Plasticity.

Strain energy density

The compressible neo-Hookean strain energy density is split into volumetric and deviatoric parts,

When apply_strain_energy_split = true (default), the active energy driving fracture is for and only for (compression excluded). The full energy is degraded by .

Input Parameters

  • hardening_modelName of the plastic hardening model

    C++ Type:MaterialName

    Controllable:No

    Description:Name of the plastic hardening model

  • phase_fieldName of the phase-field (damage) variable

    C++ Type:std::vector<VariableName>

    Unit:(no unit assumed)

    Controllable:No

    Description:Name of the phase-field (damage) variable

Required Parameters

  • absolute_tolerance1e-11Absolute convergence tolerance for Newton iteration

    Default:1e-11

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Absolute convergence tolerance for Newton iteration

  • acceptable_multiplier10Factor applied to relative and absolute tolerance for acceptable convergence if iterations are no longer making progress

    Default:10

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Factor applied to relative and absolute tolerance for acceptable convergence if iterations are no longer making progress

  • apply_strain_energy_splitTrueWhether to apply volumetric/deviatoric split to the active strain energy (psie_active). If true (default), only the positive part of the energy is assigned to psie_active. If false, the full unsplit energy U + W is used for psie_active.

    Default:True

    C++ Type:bool

    Controllable:No

    Description:Whether to apply volumetric/deviatoric split to the active strain energy (psie_active). If true (default), only the positive part of the energy is assigned to psie_active. If false, the full unsplit energy U + W is used for psie_active.

  • automatic_differentiation_return_mappingFalseWhether to use automatic differentiation to compute the derivative.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether to use automatic differentiation to compute the derivative.

  • base_nameOptional parameter that allows the user to define multiple mechanics material systems on the same block, i.e. for multiple phases

    C++ Type:std::string

    Controllable:No

    Description:Optional parameter that allows the user to define multiple mechanics material systems on the same block, i.e. for multiple phases

  • blockThe list of blocks (ids or names) that this object will be applied

    C++ Type:std::vector<SubdomainName>

    Controllable:No

    Description:The list of blocks (ids or names) that this object will be applied

  • boundaryThe list of boundaries (ids or names) from the mesh where this object applies

    C++ Type:std::vector<BoundaryName>

    Controllable:No

    Description:The list of boundaries (ids or names) from the mesh where this object applies

  • constant_onNONEWhen ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped

    Default:NONE

    C++ Type:MooseEnum

    Options:NONE, ELEMENT, SUBDOMAIN

    Controllable:No

    Description:When ELEMENT, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps.When SUBDOMAIN, MOOSE will only call computeQpProperties() for the 0th quadrature point, and then copy that value to the other qps. Evaluations on element qps will be skipped

  • declare_suffixAn optional suffix parameter that can be appended to any declared properties. The suffix will be prepended with a '_' character.

    C++ Type:MaterialPropertyName

    Unit:(no unit assumed)

    Controllable:No

    Description:An optional suffix parameter that can be appended to any declared properties. The suffix will be prepended with a '_' character.

  • relative_tolerance1e-08Relative convergence tolerance for Newton iteration

    Default:1e-08

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Relative convergence tolerance for Newton iteration

  • strain_energy_density_corrpsie_corrName of the strain energy density computed by this material model

    Default:psie_corr

    C++ Type:MaterialPropertyName

    Unit:(no unit assumed)

    Controllable:No

    Description:Name of the strain energy density computed by this material model

Optional Parameters

  • control_tagsAdds user-defined labels for accessing object parameters via control logic.

    C++ Type:std::vector<std::string>

    Controllable:No

    Description:Adds user-defined labels for accessing object parameters via control logic.

  • enableTrueSet the enabled status of the MooseObject.

    Default:True

    C++ Type:bool

    Controllable:Yes

    Description:Set the enabled status of the MooseObject.

  • implicitTrueDetermines whether this object is calculated using an implicit or explicit form

    Default:True

    C++ Type:bool

    Controllable:No

    Description:Determines whether this object is calculated using an implicit or explicit form

  • search_methodnearest_node_connected_sidesChoice of search algorithm. All options begin by finding the nearest node in the primary boundary to a query point in the secondary boundary. In the default nearest_node_connected_sides algorithm, primary boundary elements are searched iff that nearest node is one of their nodes. This is fast to determine via a pregenerated node-to-elem map and is robust on conforming meshes. In the optional all_proximate_sides algorithm, primary boundary elements are searched iff they touch that nearest node, even if they are not topologically connected to it. This is more CPU-intensive but is necessary for robustness on any boundary surfaces which has disconnections (such as Flex IGA meshes) or non-conformity (such as hanging nodes in adaptively h-refined meshes).

    Default:nearest_node_connected_sides

    C++ Type:MooseEnum

    Options:nearest_node_connected_sides, all_proximate_sides

    Controllable:No

    Description:Choice of search algorithm. All options begin by finding the nearest node in the primary boundary to a query point in the secondary boundary. In the default nearest_node_connected_sides algorithm, primary boundary elements are searched iff that nearest node is one of their nodes. This is fast to determine via a pregenerated node-to-elem map and is robust on conforming meshes. In the optional all_proximate_sides algorithm, primary boundary elements are searched iff they touch that nearest node, even if they are not topologically connected to it. This is more CPU-intensive but is necessary for robustness on any boundary surfaces which has disconnections (such as Flex IGA meshes) or non-conformity (such as hanging nodes in adaptively h-refined meshes).

  • seed0The seed for the master random number generator

    Default:0

    C++ Type:unsigned int

    Controllable:No

    Description:The seed for the master random number generator

  • use_displaced_meshFalseWhether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.

Advanced Parameters

  • internal_solve_full_iteration_historyFalseSet true to output full internal Newton iteration history at times determined by `internal_solve_output_on`. If false, only a summary is output.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Set true to output full internal Newton iteration history at times determined by `internal_solve_output_on`. If false, only a summary is output.

  • internal_solve_output_onon_errorWhen to output internal Newton solve information

    Default:on_error

    C++ Type:MooseEnum

    Options:never, on_error, always

    Controllable:No

    Description:When to output internal Newton solve information

Debug Parameters

  • output_propertiesList of material properties, from this material, to output (outputs must also be defined to an output type)

    C++ Type:std::vector<std::string>

    Controllable:No

    Description:List of material properties, from this material, to output (outputs must also be defined to an output type)

  • outputsnone Vector of output names where you would like to restrict the output of variables(s) associated with this object

    Default:none

    C++ Type:std::vector<OutputName>

    Controllable:No

    Description:Vector of output names where you would like to restrict the output of variables(s) associated with this object

Outputs Parameters

  • prop_getter_suffixAn optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.

    C++ Type:MaterialPropertyName

    Unit:(no unit assumed)

    Controllable:No

    Description:An optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.

  • use_interpolated_stateFalseFor the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:For the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.

Material Property Retrieval Parameters

Input Files

References

References

  1. Michael J Borden, Thomas JR Hughes, Chad M Landis, Amin Anvari, and Isaac J Lee. A phase-field formulation for fracture in ductile materials: finite deformation balance law derivation, plastic degradation, and stress triaxiality effects. Computer Methods in Applied Mechanics and Engineering, 312:130–166, 2016.[BibTeX]
  2. Michael J. Borden, Thomas J.R. Hughes, Chad M. Landis, Amin Anvari, and Isaac J. Lee. A phase-field formulation for fracture in ductile materials: Finite deformation balance law derivation, plastic degradation, and stress triaxiality effects. Computer Methods in Applied Mechanics and Engineering, 312:130–166, December 2016. doi:10.1016/j.cma.2016.09.005.[BibTeX]