- expression(1-d)^p/((1-d)^p+(Gc/psic*xi/c0/l)*d*(1+a2*d+a2*a3*d^2))*(1-eta)+etaFunction to parse
Default:(1-d)^p/((1-d)^p+(Gc/psic*xi/c0/l)*d*(1+a2*d+a2*a3*d^2))*(1-eta)+eta
C++ Type:std::string
Unit:(no unit assumed)
Controllable:No
Description:Function to parse
- phase_fieldThe phase-field variable
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:The phase-field variable
RationalDegradationFunction
Defines the rational degradation function where . is the fracture toughness, is the critical fracture energy, is the derivative of the local fracture energy at , is the normalization constant, and is the regularization length.
Example Input File Syntax
Input Parameters
- additional_derivative_symbolsA list of additional (non-variable) symbols (such as material property or postprocessor names) to take derivatives w.r.t.
C++ Type:std::vector<std::string>
Unit:(no unit assumed)
Controllable:No
Description:A list of additional (non-variable) symbols (such as material property or postprocessor names) to take derivatives w.r.t.
- blockThe list of blocks (ids or names) that this object will be applied
C++ Type:std::vector<SubdomainName>
Unit:(no unit assumed)
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>
Unit:(no unit assumed)
Controllable:No
Description:The list of boundaries (ids or names) from the mesh where this object applies
- computeTrueWhen false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies.
Default:True
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:When false, MOOSE will not call compute methods on this material. The user must call computeProperties() after retrieving the MaterialBase via MaterialBasePropertyInterface::getMaterialBase(). Non-computed MaterialBases are not sorted for dependencies.
- 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
Unit:(no unit assumed)
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.
- epsilon1e-12Fuzzy comparison tolerance
Default:1e-12
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Fuzzy comparison tolerance
- error_on_missing_material_propertiesTrueThrow an error if any explicitly requested material property does not exist. Otherwise assume it to be zero.
Default:True
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Throw an error if any explicitly requested material property does not exist. Otherwise assume it to be zero.
- extra_symbolsSpecial symbols, like point coordinates, time, and timestep size.
C++ Type:MultiMooseEnum
Unit:(no unit assumed)
Options:x, y, z, t, dt
Controllable:No
Description:Special symbols, like point coordinates, time, and timestep size.
- material_property_namesGc psic xi c0 l Vector of material properties used in the degradation function
Default:Gc psic xi c0 l
C++ Type:std::vector<std::string>
Unit:(no unit assumed)
Controllable:No
Description:Vector of material properties used in the degradation function
- parameter_namesp a2 a3 eta Vector of parameters used in the parsed function
Default:p a2 a3 eta
C++ Type:std::vector<std::string>
Unit:(no unit assumed)
Controllable:No
Description:Vector of parameters used in the parsed function
- parameter_valuesVector of values for the parameters
C++ Type:std::vector<std::string>
Unit:(no unit assumed)
Controllable:No
Description:Vector of values for the 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.
- property_namegName of the parsed material property
Default:g
C++ Type:std::string
Unit:(no unit assumed)
Controllable:No
Description:Name of the parsed material property
- upstream_materialsList of upstream material properties that must be evaluated when compute=false
C++ Type:std::vector<MaterialName>
Unit:(no unit assumed)
Controllable:No
Description:List of upstream material properties that must be evaluated when compute=false
- 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
Unit:(no unit assumed)
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.
Optional Parameters
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector<std::string>
Unit:(no unit assumed)
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
Unit:(no unit assumed)
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
Unit:(no unit assumed)
Controllable:No
Description:Determines whether this object is calculated using an implicit or explicit form
- seed0The seed for the master random number generator
Default:0
C++ Type:unsigned int
Unit:(no unit assumed)
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
Unit:(no unit assumed)
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
- disable_fpoptimizerFalseDisable the function parser algebraic optimizer
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Disable the function parser algebraic optimizer
- enable_ad_cacheTrueEnable caching of function derivatives for faster startup time
Default:True
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Enable caching of function derivatives for faster startup time
- enable_auto_optimizeTrueEnable automatic immediate optimization of derivatives
Default:True
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Enable automatic immediate optimization of derivatives
- enable_jitTrueEnable just-in-time compilation of function expressions for faster evaluation
Default:True
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Enable just-in-time compilation of function expressions for faster evaluation
- evalerror_behaviornanWhat to do if evaluation error occurs. Options are to pass a nan, pass a nan with a warning, throw a error, or throw an exception
Default:nan
C++ Type:MooseEnum
Unit:(no unit assumed)
Options:nan, nan_warning, error, exception
Controllable:No
Description:What to do if evaluation error occurs. Options are to pass a nan, pass a nan with a warning, throw a error, or throw an exception
Parsed Expression Advanced 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>
Unit:(no unit assumed)
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>
Unit:(no unit assumed)
Controllable:No
Description:Vector of output names where you would like to restrict the output of variables(s) associated with this object
Outputs Parameters
Input Files
- (tutorials/traction_separation/fracture.i)
- (test/tests/hardening_models/elastoplasticity.i)
- (tutorials/matrix_fiber/fracture.i)
- (tutorials/quenching_bibeam/thermoelasticity.i)
- (tutorials/homogeneous_cube/Hencky_J2_arrheniuslawhardening_creep_thermal/fracture.i)
- (tutorials/homogeneous_cube/Hencky_J2_arrheniuslawhardening_creep_thermal/elastoplasticity.i)
- (tutorials/mode1_cohesive_fracture/fracture.i)
- (tutorials/adaptivity/fracture.i)
- (tutorials/mode1_ductile_fracture/elastoplasticity.i)
- (tutorials/adaptivity/elasticity.i)
- (tutorials/homogeneous_cube/Hencky_J2_JohnsonCook/elastoplasticity.i)
- (tutorials/homogeneous_cube/Hencky_J2_arrheniuslawhardening/elastoplasticity.i)
- (tutorials/soil_desiccation/fracture.i)
- (test/tests/degradation_functions/rational.i)
- (tutorials/homogeneous_cube/Hencky_J2_linearhardening/fracture.i)
- (tutorials/mode1_ductile_fracture/fracture.i)
- (tutorials/homogeneous_cube/Hencky_J2_JohnsonCook/fracture.i)
- (tutorials/homogeneous_cube/Hencky_J2_arrheniuslawhardening_creep/fracture.i)
- (tutorials/traction_separation/elasticity.i)
- (tutorials/quenching_bibeam/fracture.i)
- (tutorials/soil_desiccation/elasticity.i)
- (test/tests/hardening_models/fracture.i)
- (tutorials/matrix_fiber/elasticity.i)
- (tutorials/homogeneous_cube/Hencky_J2_arrheniuslawhardening/fracture.i)
- (tutorials/homogeneous_cube/Hencky_J2_arrheniuslawhardening_creep/elastoplasticity.i)
- (tutorials/homogeneous_cube/CNH_J2_powerlawhardening/elastoplasticity_fracture.i)
- (tutorials/homogeneous_cube/Hencky_J2_powerlawhardening/elastoplasticity_fracture.i)
- (tutorials/homogeneous_cube/Hencky_J2_linearhardening/elastoplasticity.i)
- (tutorials/mode2_cohesive_fracture/elasticity.i)
- (tutorials/mode2_cohesive_fracture/fracture.i)
- (tutorials/mode1_cohesive_fracture/elasticity.i)
(tutorials/traction_separation/fracture.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
xmax = 200
ymax = 1
nx = ${nx}
ny = 1
[]
[]
[Variables]
[d]
[InitialCondition]
type = ConstantIC
boundary = left
value = 1e-3
[]
[]
[]
[AuxVariables]
[bounds_dummy]
[]
[psie_active]
order = CONSTANT
family = MONOMIAL
[]
[disp_x]
[]
[disp_y]
[]
[]
[Bounds]
[irreversibility]
type = VariableOldValueBounds
variable = bounds_dummy
bounded_variable = d
bound_type = lower
[]
[upper]
type = ConstantBounds
variable = bounds_dummy
bounded_variable = d
bound_type = upper
bound_value = 1
[]
[]
[Kernels]
[diff]
type = ADPFFDiffusion
variable = d
fracture_toughness = Gc
regularization_length = l
normalization_constant = c0
[]
[source]
type = ADPFFSource
variable = d
free_energy = psi
[]
[pressure]
type = ADPFFPressure
variable = d
displacements = 'disp_x disp_y'
pressure = p
indicator_function = I
[]
[]
[Materials]
[fracture_properties]
type = ADGenericConstantMaterial
prop_names = 'Gc psic l p'
prop_values = '${Gc} ${psic} ${l} ${p}'
[]
[crack_geometric]
type = CrackGeometricFunction
property_name = alpha
expression = '2*d-d^2'
phase_field = d
[]
[indicator]
type = ADDerivativeParsedMaterial
property_name = I
coupled_variables = 'd'
expression = 'd^2'
derivative_order = 1
[]
[degradation]
type = RationalDegradationFunction
property_name = g
expression = (1-d)^p/((1-d)^p+(Gc/psic*xi/c0/l)*d*(1+a2*d+a2*a3*d^2))*(1-eta)+eta
phase_field = d
material_property_names = 'Gc psic xi c0 l '
parameter_names = 'p a2 a3 eta '
parameter_values = '2 -0.5 0 1e-6'
[]
[psi]
type = ADDerivativeParsedMaterial
property_name = psi
expression = 'alpha*Gc/c0/l+g*psie_active'
coupled_variables = 'd psie_active'
material_property_names = 'alpha(d) g(d) Gc c0 l'
derivative_order = 1
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -snes_type'
petsc_options_value = 'lu superlu_dist vinewtonrsls'
automatic_scaling = true
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
[]
[Outputs]
print_linear_residuals = false
[]
(test/tests/hardening_models/elastoplasticity.i)
a = 250
ratio = 4
psic = 15
Gc = 1.38e5
l = '${fparse ratio * a}'
E = 6.88e4
nu = 0.33
K = '${fparse E/3/(1-2*nu)}'
G = '${fparse E/2/(1+nu)}'
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[MultiApps]
[fracture]
type = TransientMultiApp
input_files = 'fracture.i'
cli_args = 'a=${a};psic=${psic};Gc=${Gc};l=${l};'
execute_on = 'TIMESTEP_END'
[]
[]
[Transfers]
[from_fracture]
type = MultiAppCopyTransfer
from_multi_app = 'fracture'
variable = 'd'
source_variable = 'd'
[]
[to_fracture]
type = MultiAppCopyTransfer
to_multi_app = 'fracture'
variable = 'psie_active psip_active'
source_variable = 'psie_active psip_active'
[]
[]
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 3
xmax = ${a}
ymax = ${a}
zmax = ${a}
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[AuxVariables]
[d]
[]
[stress]
order = CONSTANT
family = MONOMIAL
[]
[F]
order = CONSTANT
family = MONOMIAL
[]
[psip_active]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress]
type = ADRankTwoAux
variable = stress
rank_two_tensor = stress
index_i = 1
index_j = 1
[]
[F]
type = ADRankTwoAux
variable = F
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 1
[]
[psip_active]
type = ADMaterialRealAux
variable = psip_active
property = psip_active
[]
[]
[Kernels]
[solid_x]
type = ADStressDivergenceTensors
variable = disp_x
component = 0
use_displaced_mesh = true
[]
[solid_y]
type = ADStressDivergenceTensors
variable = disp_y
component = 1
use_displaced_mesh = true
[]
[solid_z]
type = ADStressDivergenceTensors
variable = disp_z
component = 2
use_displaced_mesh = true
[]
[]
[Materials]
[bulk_properties]
type = ADGenericConstantMaterial
prop_names = 'K G l Gc psic'
prop_values = '${K} ${G} ${l} ${Gc} ${psic}'
[]
[degradation]
type = RationalDegradationFunction
property_name = g
expression = (1-d)^p/((1-d)^p+(Gc/psic*xi/c0/l)*d*(1+a2*d+a2*a3*d^2))*(1-eta)+eta
phase_field = d
material_property_names = 'Gc psic xi c0 l '
parameter_names = 'p a2 a3 eta '
parameter_values = '2 -0.5 0 1e-6'
[]
[crack_geometric]
type = CrackGeometricFunction
property_name = alpha
expression = 'd'
phase_field = d
[]
[defgrad]
type = ComputeDeformationGradient
[]
[hencky]
type = HenckyIsotropicElasticity
bulk_modulus = K
shear_modulus = G
phase_field = d
degradation_function = g
output_properties = 'psie_active'
outputs = exodus
[]
[J2]
type = LargeDeformationJ2Plasticity
hardening_model = ${hardening_model_name}
[]
[stress]
type = ComputeLargeDeformationStress
elasticity_model = hencky
plasticity_model = J2
[]
[]
[BCs]
[xfix]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[]
[yfix]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0
[]
[zfix]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[]
[ydisp]
type = FunctionDirichletBC
variable = disp_y
boundary = 'top'
function = 't'
preset = false
[]
[]
[Postprocessors]
[F]
type = ElementAverageValue
variable = F
[]
[stress]
type = ElementAverageValue
variable = stress
[]
[d]
type = ElementAverageValue
variable = d
[]
[ep]
type = ADElementAverageMaterialProperty
mat_prop = effective_plastic_strain
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
nl_rel_tol = 1e-08
nl_abs_tol = 1e-10
nl_max_its = 50
dt = '${fparse 0.0005 * a}'
end_time = '${fparse 0.1 * a}'
automatic_scaling = true
fixed_point_max_its = 100
fixed_point_rel_tol = 1e-08
fixed_point_abs_tol = 1e-10
accept_on_max_fixed_point_iteration = true
abort_on_solve_fail = true
[]
[Outputs]
file_base = '${hardening_model_name}'
print_linear_residuals = false
exodus = true
[]
(tutorials/matrix_fiber/fracture.i)
[Mesh]
[fmg]
type = FileMeshGenerator
file = 'gold/matrix.msh'
[]
[]
[Variables]
[d]
[]
[]
[AuxVariables]
[bounds_dummy]
[]
[psie_active]
order = CONSTANT
family = MONOMIAL
[]
[]
[Bounds]
[irreversibility]
type = VariableOldValueBounds
variable = bounds_dummy
bounded_variable = d
bound_type = lower
[]
[upper]
type = ConstantBounds
variable = bounds_dummy
bounded_variable = d
bound_type = upper
bound_value = 1
[]
[]
[BCs]
[no_damage_hole]
type = DirichletBC
variable = d
boundary = hole
value = 0
[]
[]
[Kernels]
[diff]
type = ADPFFDiffusion
variable = d
[]
[source]
type = ADPFFSource
variable = d
free_energy = psi
[]
[]
[Materials]
[fracture_properties]
type = ADGenericConstantMaterial
prop_names = 'Gc l psic'
prop_values = '${Gc} ${l} ${psic}'
[]
[crack_geometric]
type = CrackGeometricFunction
property_name = alpha
expression = d
phase_field = d
[]
[degradation]
type = RationalDegradationFunction
property_name = g
phase_field = d
parameter_names = 'p a2 a3 eta '
parameter_values = '2 1 0 ${k}'
material_property_names = 'Gc psic xi c0 l '
[]
[psi]
type = ADDerivativeParsedMaterial
property_name = psi
expression = 'alpha*Gc/c0/l+g*psie_active'
coupled_variables = 'd psie_active'
material_property_names = 'alpha(d) g(d) Gc c0 l'
derivative_order = 1
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type -snes_type'
petsc_options_value = 'lu vinewtonrsls'
nl_abs_tol = 1e-08
nl_rel_tol = 1e-06
automatic_scaling = true
[]
[Outputs]
print_linear_residuals = false
[]
(tutorials/quenching_bibeam/thermoelasticity.i)
E_glass = 6.4e4
nu_glass = 0.2
K_glass = '${fparse E_glass/3/(1-2*nu_glass)}'
G_glass = '${fparse E_glass/2/(1+nu_glass)}'
alpha_glass = 3.25e-6
E_steel = 1.93e5
nu_steel = 0.29
K_steel = '${fparse E_steel/3/(1-2*nu_steel)}'
G_steel = '${fparse E_steel/2/(1+nu_steel)}'
alpha_steel = 1.73e-5
Gc = 0.4
psic = 0.05
l = 1
[MultiApps]
[fracture]
type = TransientMultiApp
input_files = fracture.i
cli_args = 'Gc=${Gc};psic=${psic};l=${l}'
execute_on = 'TIMESTEP_END'
[]
[]
[Transfers]
[from_d]
type = MultiAppGeneralFieldShapeEvaluationTransfer
from_multi_app = 'fracture'
variable = d
source_variable = d
[]
[to_psie_active]
type = MultiAppGeneralFieldShapeEvaluationTransfer
to_multi_app = 'fracture'
variable = psie_active
source_variable = psie_active
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
[fmg]
type = FileMeshGenerator
file = 'gold/plate.msh'
[]
[]
[Adaptivity]
marker = marker
initial_marker = marker
initial_steps = 2
stop_time = 0
max_h_level = 2
[Markers]
[marker]
type = BoxMarker
bottom_left = '27 7 0'
top_right = '60 28 0'
inside = REFINE
outside = DO_NOTHING
[]
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[]
[AuxVariables]
[d]
[]
[T]
initial_condition = 1000
[]
[psie_active]
order = CONSTANT
family = MONOMIAL
block = glass
[]
[]
[AuxKernels]
[cooling]
type = FunctionAux
variable = T
function = '1000-t'
[]
[psie_active]
type = ADMaterialRealAux
variable = psie_active
property = psie_active
block = glass
[]
[]
[Kernels]
[solid_x]
type = ADStressDivergenceTensors
variable = disp_x
component = 0
[]
[solid_y]
type = ADStressDivergenceTensors
variable = disp_y
component = 1
[]
[]
[BCs]
[xdisp]
type = DirichletBC
variable = 'disp_x'
boundary = 'left'
value = 0
[]
[yfix]
type = DirichletBC
variable = 'disp_y'
boundary = 'left right'
value = 0
[]
[]
[Materials]
# Glass
[bulk_properties_glass]
type = ADGenericConstantMaterial
prop_names = 'K G l Gc psic'
prop_values = '${K_glass} ${G_glass} ${l} ${Gc} ${psic}'
block = glass
[]
[crack_geometric]
type = CrackGeometricFunction
property_name = alpha
expression = 'd'
phase_field = d
block = glass
[]
[degradation]
type = RationalDegradationFunction
property_name = g
expression = (1-d)^p/((1-d)^p+(Gc/psic*xi/c0/l)*d*(1+a2*d+a2*a3*d^2))*(1-eta)+eta
phase_field = d
material_property_names = 'Gc psic xi c0 l '
parameter_names = 'p a2 a3 eta '
parameter_values = '2 -0.5 0 1e-6'
block = glass
[]
[eigenstrain_glass]
type = ADComputeThermalExpansionEigenstrain
eigenstrain_name = thermal_eigenstrain
stress_free_temperature = 1000
thermal_expansion_coeff = ${alpha_glass}
temperature = T
block = glass
[]
[strain_glass]
type = ADComputeSmallStrain
eigenstrain_names = thermal_eigenstrain
block = glass
[]
[elasticity_glass]
type = SmallDeformationIsotropicElasticity
bulk_modulus = K
shear_modulus = G
phase_field = d
degradation_function = g
decomposition = SPECTRAL
block = glass
[]
[stress_glass]
type = ComputeSmallDeformationStress
elasticity_model = elasticity_glass
block = glass
[]
# Steel
[eigenstrain_steel]
type = ADComputeThermalExpansionEigenstrain
eigenstrain_name = thermal_eigenstrain
stress_free_temperature = 1000
thermal_expansion_coeff = ${alpha_steel}
temperature = T
block = steel
[]
[strain_steel]
type = ADComputeSmallStrain
eigenstrain_names = thermal_eigenstrain
block = steel
[]
[elasticity_steel]
type = ADComputeIsotropicElasticityTensor
shear_modulus = ${G_steel}
bulk_modulus = ${K_steel}
[]
[stress_steel]
type = ADComputeLinearElasticStress
block = steel
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist '
automatic_scaling = true
nl_rel_tol = 1e-08
nl_abs_tol = 1e-10
dt = 0.5
end_time = 200
fixed_point_algorithm = picard
fixed_point_max_its = 20
fixed_point_rel_tol = 1e-08
fixed_point_abs_tol = 1e-10
accept_on_max_fixed_point_iteration = true
[]
[Outputs]
exodus = true
print_linear_residuals = false
[]
(tutorials/homogeneous_cube/Hencky_J2_arrheniuslawhardening_creep_thermal/fracture.i)
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 3
xmax = ${a}
ymax = ${a}
zmax = ${a}
[]
[]
[Variables]
[d]
[]
[]
[AuxVariables]
[bounds_dummy]
[]
[psie_active]
order = CONSTANT
family = MONOMIAL
[]
[psip_active]
order = CONSTANT
family = MONOMIAL
[]
[]
[Bounds]
[irreversibility]
type = VariableOldValueBounds
variable = bounds_dummy
bounded_variable = d
bound_type = lower
[]
[upper]
type = ConstantBounds
variable = bounds_dummy
bounded_variable = d
bound_type = upper
bound_value = 1
[]
[]
[Kernels]
[pff_diff]
type = ADPFFDiffusion
variable = d
[]
[pff_source]
type = ADPFFSource
variable = d
free_energy = psi
[]
[]
[Materials]
[bulk_properties]
type = ADGenericConstantMaterial
prop_names = 'l Gc psic'
prop_values = '${l} ${Gc} ${psic}'
[]
[degradation]
type = RationalDegradationFunction
property_name = g
expression = (1-d)^p/((1-d)^p+(Gc/psic*xi/c0/l)*d*(1+a2*d+a2*a3*d^2))*(1-eta)+eta
phase_field = d
material_property_names = 'Gc psic xi c0 l '
parameter_names = 'p a2 a3 eta '
parameter_values = '2 -0.5 0 1e-6'
[]
[crack_geometric]
type = CrackGeometricFunction
property_name = alpha
expression = 'd'
phase_field = d
[]
[psi]
type = ADDerivativeParsedMaterial
property_name = psi
expression = 'alpha*Gc/c0/l+g*(psie_active+psip_active)'
coupled_variables = 'd psie_active psip_active'
material_property_names = 'alpha(d) g(d) Gc c0 l'
derivative_order = 1
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -snes_type'
petsc_options_value = 'lu vinewtonrsls'
nl_rel_tol = 1e-08
nl_abs_tol = 1e-10
nl_max_its = 50
automatic_scaling = true
abort_on_solve_fail = true
[]
[Outputs]
print_linear_residuals = false
[]
(tutorials/homogeneous_cube/Hencky_J2_arrheniuslawhardening_creep_thermal/elastoplasticity.i)
a = 250
ratio = 4
psic = 15
Gc = 1.38e5
l = '${fparse ratio * a}'
E = 6.88e4
nu = 0.33
K = '${fparse E/3/(1-2*nu)}'
G = '${fparse E/2/(1+nu)}'
sigma_0 = 2e-7
Q = '${fparse 1.4054e8}'
R = 8.3143e3
T = 800
eps = '${fparse E/100}'
n = 160
rate = 10000
creep_coef = 1
rho = 1
cv = 1
k = 1
tqf = 1
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[MultiApps]
[fracture]
type = TransientMultiApp
input_files = 'fracture.i'
cli_args = 'a=${a};psic=${psic};Gc=${Gc};l=${l};'
execute_on = 'TIMESTEP_END'
[]
[]
[Transfers]
[from_fracture]
type = MultiAppCopyTransfer
from_multi_app = 'fracture'
variable = d
source_variable = d
[]
[to_fracture]
type = MultiAppCopyTransfer
to_multi_app = 'fracture'
variable = 'psie_active psip_active'
source_variable = 'psie_active psip_active'
[]
[]
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 3
xmax = ${a}
ymax = ${a}
zmax = ${a}
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[T]
initial_condition = ${T}
[]
[]
[AuxVariables]
[d]
[]
[stress]
order = CONSTANT
family = MONOMIAL
[]
[F]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress]
type = ADRankTwoAux
variable = stress
rank_two_tensor = stress
index_i = 1
index_j = 1
execute_on = 'INITIAL TIMESTEP_END'
[]
[F]
type = ADRankTwoAux
variable = F
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 1
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
[Kernels]
[solid_x]
type = ADStressDivergenceTensors
variable = disp_x
component = 0
use_displaced_mesh = true
[]
[solid_y]
type = ADStressDivergenceTensors
variable = disp_y
component = 1
use_displaced_mesh = true
[]
[solid_z]
type = ADStressDivergenceTensors
variable = disp_z
component = 2
use_displaced_mesh = true
[]
[hcond_time]
type = HeatConductionTimeDerivative
variable = T
density_name = density
specific_heat = specific_heat
[]
[hcond]
type = HeatConduction
variable = T
diffusion_coefficient = thermal_conductivity
[]
[heat_source]
type = ADCoefMatSource
variable = T
coefficient = -1
prop_names = 'plastic_heat_generation'
[]
[]
[Materials]
[thermal_properties]
type = GenericConstantMaterial
prop_names = 'density specific_heat thermal_conductivity'
prop_values = '${rho} ${cv} ${k}'
[]
[bulk_properties]
type = ADGenericConstantMaterial
prop_names = 'K G l Gc psic sigma_0 Q'
prop_values = '${K} ${G} ${l} ${Gc} ${psic} ${sigma_0} ${Q}'
[]
[degradation]
type = RationalDegradationFunction
property_name = g
expression = (1-d)^p/((1-d)^p+(Gc/psic*xi/c0/l)*d*(1+a2*d+a2*a3*d^2))*(1-eta)+eta
phase_field = d
material_property_names = 'Gc psic xi c0 l '
parameter_names = 'p a2 a3 eta '
parameter_values = '2 -0.5 0 1e-6'
[]
[crack_geometric]
type = CrackGeometricFunction
property_name = alpha
expression = 'd'
phase_field = d
[]
[arrhenius_law]
type = ArrheniusLaw
arrhenius_coefficient = A
activation_energy = Q
ideal_gas_constant = ${R}
temperature = T
[]
[defgrad]
type = ComputeDeformationGradient
[]
[hencky]
type = HenckyIsotropicElasticity
bulk_modulus = K
shear_modulus = G
phase_field = d
degradation_function = g
output_properties = 'psie_active'
outputs = exodus
[]
[arrhenius_law_hardening]
type = ArrheniusLawHardening
reference_stress = sigma_0
arrhenius_coefficient = A
eps = ${eps}
phase_field = d
degradation_function = g
taylor_quinney_factor = ${tqf}
temperature = T
output_properties = 'psip_active'
outputs = exodus
[]
[J2]
type = LargeDeformationJ2PowerLawCreep
hardening_model = arrhenius_law_hardening
coefficient = ${creep_coef}
exponent = ${n}
[]
[stress]
type = ComputeLargeDeformationStress
elasticity_model = hencky
plasticity_model = J2
[]
[]
[BCs]
[xfix]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[]
[yfix]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0
[]
[zfix]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[]
[ydisp]
type = FunctionDirichletBC
variable = disp_y
boundary = 'top'
function = '${rate}*t'
preset = false
[]
[]
[Postprocessors]
[F]
type = ElementAverageValue
variable = F
execute_on = 'INITIAL TIMESTEP_END'
[]
[stress]
type = ElementAverageValue
variable = stress
execute_on = 'INITIAL TIMESTEP_END'
[]
[d]
type = ElementAverageValue
variable = d
execute_on = 'INITIAL TIMESTEP_END'
[]
[ep]
type = ADElementAverageMaterialProperty
mat_prop = effective_plastic_strain
execute_on = 'INITIAL TIMESTEP_END'
[]
[heat]
type = ADElementAverageMaterialProperty
mat_prop = plastic_heat_generation
execute_on = 'TIMESTEP_END'
[]
[T]
type = ElementAverageValue
variable = T
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
nl_rel_tol = 1e-08
nl_abs_tol = 1e-10
nl_max_its = 50
dt = '${fparse 0.0005 * a / rate}'
end_time = '${fparse 0.1 * a / rate}'
automatic_scaling = true
fixed_point_max_its = 100
fixed_point_rel_tol = 1e-08
fixed_point_abs_tol = 1e-10
accept_on_max_fixed_point_iteration = true
abort_on_solve_fail = true
[]
[Outputs]
file_base = 'stress_deformation_n_${n}_rate_${rate}_tqf_${tqf}'
print_linear_residuals = false
csv = true
exodus = true
[]
(tutorials/mode1_cohesive_fracture/fracture.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
nx = 30
ny = 15
ymax = 0.5
[]
[noncrack]
type = BoundingBoxNodeSetGenerator
input = gen
new_boundary = noncrack
bottom_left = '0.5 0 0'
top_right = '1 0 0'
[]
construct_side_list_from_node_list = true
[]
[Adaptivity]
marker = marker
initial_marker = marker
initial_steps = 2
stop_time = 0
max_h_level = 2
[Markers]
[marker]
type = BoxMarker
bottom_left = '0.4 0 0'
top_right = '1 0.05 0'
outside = DO_NOTHING
inside = REFINE
[]
[]
[]
[Variables]
[d]
[]
[]
[AuxVariables]
[bounds_dummy]
[]
[psie_active]
order = CONSTANT
family = MONOMIAL
[]
[]
[Bounds]
[irreversibility]
type = VariableOldValueBounds
variable = bounds_dummy
bounded_variable = d
bound_type = lower
[]
[upper]
type = ConstantBounds
variable = bounds_dummy
bounded_variable = d
bound_type = upper
bound_value = 1
[]
[]
[Kernels]
[diff]
type = ADPFFDiffusion
variable = d
fracture_toughness = Gc
regularization_length = l
normalization_constant = c0
[]
[source]
type = ADPFFSource
variable = d
free_energy = psi
[]
[]
[Materials]
[fracture_properties]
type = ADGenericConstantMaterial
prop_names = 'Gc psic l'
prop_values = '${Gc} ${psic} ${l}'
[]
[crack_geometric]
type = CrackGeometricFunction
property_name = alpha
expression = 'd'
phase_field = d
[]
[degradation]
type = RationalDegradationFunction
property_name = g
expression = (1-d)^p/((1-d)^p+(Gc/psic*xi/c0/l)*d*(1+a2*d+a2*a3*d^2))*(1-eta)+eta
phase_field = d
material_property_names = 'Gc psic xi c0 l '
parameter_names = 'p a2 a3 eta '
parameter_values = '2 -0.5 0 1e-6'
[]
[psi]
type = ADDerivativeParsedMaterial
property_name = psi
expression = 'alpha*Gc/c0/l+g*psie_active'
coupled_variables = 'd psie_active'
material_property_names = 'alpha(d) g(d) Gc c0 l'
derivative_order = 1
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -snes_type'
petsc_options_value = 'lu superlu_dist vinewtonrsls'
automatic_scaling = true
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
[]
[Outputs]
print_linear_residuals = false
[]
(tutorials/adaptivity/fracture.i)
[Mesh]
[top_half]
type = GeneratedMeshGenerator
dim = 2
nx = 30
ny = 15
ymin = 0
ymax = 0.5
boundary_id_offset = 0
boundary_name_prefix = top_half
[]
[top_stitch]
type = BoundingBoxNodeSetGenerator
input = top_half
new_boundary = top_stitch
bottom_left = '0.5 0 0'
top_right = '1 0 0'
[]
[bottom_half]
type = GeneratedMeshGenerator
dim = 2
nx = 30
ny = 15
ymin = -0.5
ymax = 0
boundary_id_offset = 5
boundary_name_prefix = bottom_half
[]
[bottom_stitch]
type = BoundingBoxNodeSetGenerator
input = bottom_half
new_boundary = bottom_stitch
bottom_left = '0.5 0 0'
top_right = '1 0 0'
[]
[stitch]
type = StitchedMeshGenerator
inputs = 'top_stitch bottom_stitch'
stitch_boundaries_pairs = 'top_stitch bottom_stitch'
[]
construct_side_list_from_node_list = true
[]
[Adaptivity]
marker = combo
max_h_level = 3
[Markers]
[combo]
type = ComboMarker
markers = 'damage_marker strain_energy_marker'
[]
[damage_marker]
type = ValueThresholdMarker
variable = d
refine = 0.5
[]
[strain_energy_marker]
type = ValueThresholdMarker
variable = psie
refine = '${fparse 0.8*psic}'
coarsen = '${fparse 0.8*psic}'
[]
[]
[]
[Variables]
[d]
[]
[]
[AuxVariables]
[bounds_dummy]
[]
[psie_active]
order = CONSTANT
family = MONOMIAL
[]
[psie]
order = CONSTANT
family = MONOMIAL
[]
[]
[Bounds]
[irreversibility]
type = VariableOldValueBounds
variable = bounds_dummy
bounded_variable = d
bound_type = lower
[]
[upper]
type = ConstantBounds
variable = bounds_dummy
bounded_variable = d
bound_type = upper
bound_value = 1
[]
[]
[Kernels]
[diff]
type = ADPFFDiffusion
variable = d
fracture_toughness = Gc
regularization_length = l
normalization_constant = c0
[]
[source]
type = ADPFFSource
variable = d
free_energy = psi
[]
[]
[Materials]
[fracture_properties]
type = ADGenericConstantMaterial
prop_names = 'Gc psic l'
prop_values = '${Gc} ${psic} ${l}'
[]
[crack_geometric]
type = CrackGeometricFunction
property_name = alpha
expression = 'd'
phase_field = d
[]
[degradation]
type = RationalDegradationFunction
property_name = g
expression = (1-d)^p/((1-d)^p+(Gc/psic*xi/c0/l)*d*(1+a2*d+a2*a3*d^2))*(1-eta)+eta
phase_field = d
material_property_names = 'Gc psic xi c0 l '
parameter_names = 'p a2 a3 eta '
parameter_values = '2 -0.5 0 1e-6'
[]
[psi]
type = ADDerivativeParsedMaterial
property_name = psi
expression = 'alpha*Gc/c0/l+g*psie_active'
coupled_variables = 'd psie_active'
material_property_names = 'alpha(d) g(d) Gc c0 l'
derivative_order = 1
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -snes_type'
petsc_options_value = 'lu superlu_dist vinewtonrsls'
automatic_scaling = true
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
[]
[Outputs]
print_linear_residuals = false
[]
(tutorials/mode1_ductile_fracture/elastoplasticity.i)
E = 2.1e5
nu = 0.3
K = '${fparse E/3/(1-2*nu)}'
G = '${fparse E/2/(1+nu)}'
Gc = 2.7
psic = 14.88
l = 0.02
sigma_y = 1000
n = 5
ep0 = 0.005
[MultiApps]
[fracture]
type = TransientMultiApp
input_files = fracture.i
cli_args = 'Gc=${Gc};psic=${psic};l=${l}'
execute_on = 'TIMESTEP_END'
[]
[]
[Transfers]
[from_d]
type = MultiAppGeneralFieldShapeEvaluationTransfer
from_multi_app = 'fracture'
variable = d
source_variable = d
[]
[to_psie_active]
type = MultiAppGeneralFieldShapeEvaluationTransfer
to_multi_app = 'fracture'
variable = psie_active
source_variable = psie_active
[]
[to_psip_active]
type = MultiAppGeneralFieldShapeEvaluationTransfer
to_multi_app = 'fracture'
variable = psip_active
source_variable = psip_active
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
volumetric_locking_correction = true
[]
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
nx = 30
ny = 15
ymax = 0.5
[]
[noncrack]
type = BoundingBoxNodeSetGenerator
input = gen
new_boundary = noncrack
bottom_left = '0.5 0 0'
top_right = '1 0 0'
[]
construct_side_list_from_node_list = true
[]
[Adaptivity]
marker = marker
initial_marker = marker
initial_steps = 2
stop_time = 0
max_h_level = 2
[Markers]
[marker]
type = OrientedBoxMarker
center = '0.75 0.25 0'
length = 0.8
width = 0.1
height = 1
length_direction = '1 1 0'
width_direction = '-1 1 0'
inside = REFINE
outside = DO_NOTHING
[]
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[]
[AuxVariables]
[fy]
[]
[d]
[]
[]
[Kernels]
[solid_x]
type = ADStressDivergenceTensors
variable = disp_x
component = 0
[]
[solid_y]
type = ADStressDivergenceTensors
variable = disp_y
component = 1
save_in = fy
[]
[]
[BCs]
[ydisp]
type = FunctionDirichletBC
variable = disp_y
boundary = top
function = 't'
[]
[yfix]
type = DirichletBC
variable = disp_y
boundary = noncrack
value = 0
[]
[xfix]
type = DirichletBC
variable = disp_x
boundary = top
value = 0
[]
[]
[Materials]
[bulk_properties]
type = ADGenericConstantMaterial
prop_names = 'K G l Gc psic'
prop_values = '${K} ${G} ${l} ${Gc} ${psic}'
[]
[crack_geometric]
type = CrackGeometricFunction
property_name = alpha
expression = 'd'
phase_field = d
[]
[degradation]
type = RationalDegradationFunction
property_name = g
expression = (1-d)^p/((1-d)^p+(Gc/psic*xi/c0/l)*d*(1+a2*d+a2*a3*d^2))*(1-eta)+eta
phase_field = d
material_property_names = 'Gc psic xi c0 l '
parameter_names = 'p a2 a3 eta '
parameter_values = '2 -0.5 0 1e-6'
[]
[strain]
type = ADComputeSmallStrain
[]
[elasticity]
type = SmallDeformationIsotropicElasticity
bulk_modulus = K
shear_modulus = G
phase_field = d
degradation_function = g
decomposition = NONE
output_properties = 'elastic_strain psie_active'
outputs = exodus
[]
[plasticity]
type = SmallDeformationJ2Plasticity
hardening_model = power_law_hardening
output_properties = 'effective_plastic_strain'
outputs = exodus
[]
[power_law_hardening]
type = PowerLawHardening
degradation_function = g
yield_stress = ${sigma_y}
exponent = ${n}
reference_plastic_strain = ${ep0}
phase_field = d
output_properties = 'psip_active'
outputs = exodus
[]
[stress]
type = ComputeSmallDeformationStress
elasticity_model = elasticity
plasticity_model = plasticity
output_properties = 'stress'
outputs = exodus
[]
[]
[Postprocessors]
[Fy]
type = NodalSum
variable = fy
boundary = top
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist '
automatic_scaling = true
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
dt = 2e-5
end_time = 1e-2
fixed_point_max_its = 20
accept_on_max_fixed_point_iteration = true
fixed_point_rel_tol = 1e-8
fixed_point_abs_tol = 1e-10
[]
[Outputs]
exodus = true
print_linear_residuals = false
[]
(tutorials/adaptivity/elasticity.i)
E = 2.1e5
nu = 0.3
K = '${fparse E/3/(1-2*nu)}'
G = '${fparse E/2/(1+nu)}'
Gc = 2.7
psic = 14.88
l = 0.01
[MultiApps]
[fracture]
type = TransientMultiApp
input_files = fracture.i
cli_args = 'Gc=${Gc};psic=${psic};l=${l}'
execute_on = 'TIMESTEP_END'
[]
[]
[Transfers]
[from_d]
type = MultiAppGeneralFieldShapeEvaluationTransfer
from_multi_app = 'fracture'
variable = d
source_variable = d
[]
[to_psie]
type = MultiAppGeneralFieldShapeEvaluationTransfer
to_multi_app = 'fracture'
variable = 'psie_active psie'
source_variable = 'psie_active psie'
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
[top_half]
type = GeneratedMeshGenerator
dim = 2
nx = 30
ny = 15
ymin = 0
ymax = 0.5
boundary_id_offset = 0
boundary_name_prefix = top_half
[]
[top_stitch]
type = BoundingBoxNodeSetGenerator
input = top_half
new_boundary = top_stitch
bottom_left = '0.5 0 0'
top_right = '1 0 0'
[]
[bottom_half]
type = GeneratedMeshGenerator
dim = 2
nx = 30
ny = 15
ymin = -0.5
ymax = 0
boundary_id_offset = 5
boundary_name_prefix = bottom_half
[]
[bottom_stitch]
type = BoundingBoxNodeSetGenerator
input = bottom_half
new_boundary = bottom_stitch
bottom_left = '0.5 0 0'
top_right = '1 0 0'
[]
[stitch]
type = StitchedMeshGenerator
inputs = 'top_stitch bottom_stitch'
stitch_boundaries_pairs = 'top_stitch bottom_stitch'
[]
construct_side_list_from_node_list = true
[]
[Adaptivity]
marker = combo
max_h_level = 3
[Markers]
[combo]
type = ComboMarker
markers = 'damage_marker strain_energy_marker'
[]
[damage_marker]
type = ValueThresholdMarker
variable = d
refine = 0.5
[]
[strain_energy_marker]
type = ValueThresholdMarker
variable = psie
refine = '${fparse 0.8*psic}'
coarsen = '${fparse 0.8*psic}'
[]
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[]
[AuxVariables]
[fx]
[]
[d]
[]
[psie_active]
order = CONSTANT
family = MONOMIAL
[]
[psie]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[psie_active]
type = ADMaterialRealAux
variable = psie_active
property = psie_active
[]
[psie]
type = ADMaterialRealAux
variable = psie
property = psie
[]
[]
[Kernels]
[solid_x]
type = ADStressDivergenceTensors
variable = disp_x
component = 0
save_in = fx
[]
[solid_y]
type = ADStressDivergenceTensors
variable = disp_y
component = 1
[]
[]
[BCs]
[xdisp]
type = FunctionDirichletBC
variable = 'disp_x'
boundary = 'top_half_top'
function = 't'
preset = false
[]
[yfix]
type = DirichletBC
variable = 'disp_y'
boundary = 'top_half_top bottom_half_bottom top_half_left top_half_right bottom_half_left bottom_half_right'
value = 0
[]
[xfix]
type = DirichletBC
variable = 'disp_x'
boundary = 'bottom_half_bottom'
value = 0
[]
[]
[Materials]
[bulk_properties]
type = ADGenericConstantMaterial
prop_names = 'K G l Gc psic'
prop_values = '${K} ${G} ${l} ${Gc} ${psic}'
[]
[crack_geometric]
type = CrackGeometricFunction
property_name = alpha
expression = 'd'
phase_field = d
[]
[degradation]
type = RationalDegradationFunction
property_name = g
expression = (1-d)^p/((1-d)^p+(Gc/psic*xi/c0/l)*d*(1+a2*d+a2*a3*d^2))*(1-eta)+eta
phase_field = d
material_property_names = 'Gc psic xi c0 l '
parameter_names = 'p a2 a3 eta '
parameter_values = '2 -0.5 0 1e-6'
[]
[strain]
type = ADComputeSmallStrain
[]
[elasticity]
type = SmallDeformationIsotropicElasticity
bulk_modulus = K
shear_modulus = G
phase_field = d
degradation_function = g
decomposition = SPECTRAL
[]
[stress]
type = ComputeSmallDeformationStress
elasticity_model = elasticity
[]
[]
[Postprocessors]
[Fx]
type = NodalSum
variable = fx
boundary = top_half_top
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist '
automatic_scaling = true
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
dt = 2e-5
end_time = 2e-2
fixed_point_max_its = 20
accept_on_max_fixed_point_iteration = true
fixed_point_rel_tol = 1e-8
fixed_point_abs_tol = 1e-10
[]
[Outputs]
exodus = true
print_linear_residuals = false
[]
(tutorials/homogeneous_cube/Hencky_J2_JohnsonCook/elastoplasticity.i)
a = 1
ratio = 4
beta = 0.5
ep0 = 0.5
psic = 0.9
Gc = 23.6
l = '${fparse ratio * a}'
E = 201.8e3
nu = 0.3
K = '${fparse E/3/(1-2*nu)}'
G = '${fparse E/2/(1+nu)}'
rate = 1000
T_init = 300
rho = 7.9e-9
cv = 4.47e7
k = 44
tqf = 0.9
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[MultiApps]
[fracture]
type = TransientMultiApp
input_files = 'fracture.i'
cli_args = 'a=${a};psic=${psic};Gc=${Gc};l=${l};'
execute_on = 'TIMESTEP_END'
[]
[]
[Transfers]
[from_fracture]
type = MultiAppCopyTransfer
from_multi_app = fracture
variable = d
source_variable = d
[]
[to_fracture]
type = MultiAppCopyTransfer
to_multi_app = fracture
variable = 'psie_active psip_active'
source_variable = 'psie_active psip_active'
[]
[to_sub_coalescence]
type = MultiAppCopyTransfer
to_multi_app = fracture
source_variable = coalescence
variable = coalescence
[]
[]
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 3
xmax = ${a}
ymax = ${a}
zmax = ${a}
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[T]
initial_condition = ${T_init}
[]
[]
[AuxVariables]
[d]
[]
[stress]
order = CONSTANT
family = MONOMIAL
[]
[F]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress]
type = ADRankTwoAux
variable = stress
rank_two_tensor = stress
index_i = 1
index_j = 1
execute_on = 'INITIAL TIMESTEP_END'
[]
[F]
type = ADRankTwoAux
variable = F
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 1
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
[Kernels]
[solid_x]
type = ADStressDivergenceTensors
variable = disp_x
component = 0
use_displaced_mesh = true
[]
[solid_y]
type = ADStressDivergenceTensors
variable = disp_y
component = 1
use_displaced_mesh = true
[]
[solid_z]
type = ADStressDivergenceTensors
variable = disp_z
component = 2
use_displaced_mesh = true
[]
[hcond_time]
type = HeatConductionTimeDerivative
variable = T
density_name = density
specific_heat = specific_heat
[]
[hcond]
type = HeatConduction
variable = T
diffusion_coefficient = thermal_conductivity
[]
[heat_source]
type = ADCoefMatSource
variable = T
coefficient = -1
prop_names = 'plastic_heat_generation'
[]
[]
[Materials]
[thermal_properties]
type = GenericConstantMaterial
prop_names = 'density specific_heat thermal_conductivity'
prop_values = '${rho} ${cv} ${k}'
[]
[bulk_properties]
type = ADGenericConstantMaterial
prop_names = 'K G l Gc psic'
prop_values = '${K} ${G} ${l} ${Gc} ${psic}'
[]
[degradation]
type = RationalDegradationFunction
property_name = g
expression = (1-d)^p/((1-d)^p+(Gc/psic*xi/c0/l)*d*(1+a2*d+a2*a3*d^2))*(1-eta)+eta
phase_field = d
material_property_names = 'Gc psic xi c0 l '
parameter_names = 'p a2 a3 eta '
parameter_values = '2 -0.5 0 1e-6'
[]
[nodeg]
type = NoDegradation
phase_field = d
property_name = nodeg
[]
[coalescence]
type = ADParsedMaterial
property_name = coalescence
material_property_names = 'effective_plastic_strain'
constant_names = 'beta ep0'
constant_expressions = '${beta} ${ep0}'
expression = 1-(1-beta)*(1-exp(-(effective_plastic_strain/ep0)))
outputs = exodus
output_properties = 'coalescence'
[]
[crack_geometric]
type = CrackGeometricFunction
property_name = alpha
expression = 'd'
phase_field = d
[]
[defgrad]
type = ComputeDeformationGradient
[]
[hencky]
type = HenckyIsotropicElasticity
bulk_modulus = K
shear_modulus = G
phase_field = d
degradation_function = g
output_properties = 'psie_active'
outputs = exodus
[]
[JohnsonCookHardening]
type = JohnsonCookHardening
T = T
taylor_quinney_factor = 0.9
sigma_0 = 1
T0 = 293
reference_plastic_strain = 1
reference_plastic_strain_rate = 1.6e-4
phase_field = d
degradation_function = nodeg
A = 517
B = 405
C = 0.0075
n = 0.41
m = 1.1
Tm = 750
output_properties = 'psip_active'
outputs = exodus
[]
[J2]
type = LargeDeformationJ2Plasticity
hardening_model = JohnsonCookHardening
relative_tolerance = 1e-08
output_properties = 'effective_plastic_strain trial'
outputs = exodus
[]
[stress]
type = ComputeLargeDeformationStress
elasticity_model = hencky
plasticity_model = J2
[]
[]
[BCs]
[xfix]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[]
[yfix]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0
[]
[zfix]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[]
[ydisp]
type = FunctionDirichletBC
variable = disp_y
boundary = 'top'
function = '${rate}*t'
preset = false
[]
[]
[Postprocessors]
[F]
type = ElementAverageValue
variable = F
execute_on = 'INITIAL TIMESTEP_END'
[]
[stress]
type = ElementAverageValue
variable = stress
execute_on = 'INITIAL TIMESTEP_END'
[]
[d]
type = ElementAverageValue
variable = d
execute_on = 'INITIAL TIMESTEP_END'
[]
[ep]
type = ADElementAverageMaterialProperty
mat_prop = effective_plastic_strain
execute_on = 'INITIAL TIMESTEP_END'
[]
[heat]
type = ADElementAverageMaterialProperty
mat_prop = plastic_heat_generation
execute_on = 'TIMESTEP_END'
[]
[T]
type = ElementAverageValue
variable = T
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
nl_rel_tol = 1e-08
nl_abs_tol = 1e-10
nl_max_its = 50
dt = '${fparse 0.00005 * a / rate}'
end_time = 4.8e-6
automatic_scaling = true
fixed_point_max_its = 100
fixed_point_rel_tol = 1e-08
fixed_point_abs_tol = 1e-10
accept_on_max_fixed_point_iteration = true
abort_on_solve_fail = true
[]
[Outputs]
file_base = 'stress_deformation_rate_${rate}_tqf_${tqf}'
print_linear_residuals = false
csv = true
exodus = true
[]
(tutorials/homogeneous_cube/Hencky_J2_arrheniuslawhardening/elastoplasticity.i)
a = 250
ratio = 4
psic = 15
Gc = 1.38e5
l = '${fparse ratio * a}'
E = 6.88e4
nu = 0.33
K = '${fparse E/3/(1-2*nu)}'
G = '${fparse E/2/(1+nu)}'
sigma_0 = 2e-7
Q = '${fparse 1.4054e8}'
R = 8.3143e3
T = 800
eps = '${fparse E/100}'
tqf = 0
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[MultiApps]
[fracture]
type = TransientMultiApp
input_files = 'fracture.i'
cli_args = 'a=${a};psic=${psic};Gc=${Gc};l=${l};'
execute_on = 'TIMESTEP_END'
[]
[]
[Transfers]
[from_fracture]
type = MultiAppCopyTransfer
from_multi_app = 'fracture'
variable = d
source_variable = d
[]
[to_fracture]
type = MultiAppCopyTransfer
to_multi_app = 'fracture'
variable = 'psie_active psip_active'
source_variable = 'psie_active psip_active'
[]
[]
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 3
xmax = ${a}
ymax = ${a}
zmax = ${a}
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[AuxVariables]
[d]
[]
[T]
initial_condition = ${T}
[]
[stress]
order = CONSTANT
family = MONOMIAL
[]
[F]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress]
type = ADRankTwoAux
variable = stress
rank_two_tensor = stress
index_i = 1
index_j = 1
[]
[F]
type = ADRankTwoAux
variable = F
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 1
[]
[]
[Kernels]
[solid_x]
type = ADStressDivergenceTensors
variable = disp_x
component = 0
use_displaced_mesh = true
[]
[solid_y]
type = ADStressDivergenceTensors
variable = disp_y
component = 1
use_displaced_mesh = true
[]
[solid_z]
type = ADStressDivergenceTensors
variable = disp_z
component = 2
use_displaced_mesh = true
[]
[]
[Materials]
[bulk_properties]
type = ADGenericConstantMaterial
prop_names = 'K G l Gc psic sigma_0 Q'
prop_values = '${K} ${G} ${l} ${Gc} ${psic} ${sigma_0} ${Q}'
[]
[degradation]
type = RationalDegradationFunction
property_name = g
expression = (1-d)^p/((1-d)^p+(Gc/psic*xi/c0/l)*d*(1+a2*d+a2*a3*d^2))*(1-eta)+eta
phase_field = d
material_property_names = 'Gc psic xi c0 l '
parameter_names = 'p a2 a3 eta '
parameter_values = '2 -0.5 0 1e-6'
[]
[crack_geometric]
type = CrackGeometricFunction
property_name = alpha
expression = 'd'
phase_field = d
[]
[arrhenius_law]
type = ArrheniusLaw
arrhenius_coefficient = A
activation_energy = Q
ideal_gas_constant = ${R}
temperature = T
[]
[defgrad]
type = ComputeDeformationGradient
[]
[hencky]
type = HenckyIsotropicElasticity
bulk_modulus = K
shear_modulus = G
phase_field = d
degradation_function = g
output_properties = 'psie_active'
outputs = exodus
[]
[arrhenius_law_hardening]
type = ArrheniusLawHardening
reference_stress = sigma_0
arrhenius_coefficient = A
eps = ${eps}
phase_field = d
degradation_function = g
taylor_quinney_factor = ${tqf}
temperature = T
output_properties = 'psip_active'
outputs = exodus
[]
[J2]
type = LargeDeformationJ2Plasticity
hardening_model = arrhenius_law_hardening
[]
[stress]
type = ComputeLargeDeformationStress
elasticity_model = hencky
plasticity_model = J2
[]
[]
[BCs]
[xfix]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[]
[yfix]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0
[]
[zfix]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[]
[ydisp]
type = FunctionDirichletBC
variable = disp_y
boundary = 'top'
function = 't'
preset = false
[]
[]
[Postprocessors]
[F]
type = ElementAverageValue
variable = F
[]
[stress]
type = ElementAverageValue
variable = stress
[]
[d]
type = ElementAverageValue
variable = d
[]
[ep]
type = ADElementAverageMaterialProperty
mat_prop = effective_plastic_strain
[]
# [heat]
# type = ADElementAverageMaterialProperty
# mat_prop = plastic_heat_generation
# []
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
nl_rel_tol = 1e-08
nl_abs_tol = 1e-10
nl_max_its = 50
dt = '${fparse 0.0005 * a}'
end_time = '${fparse 0.1 * a}'
automatic_scaling = true
fixed_point_max_its = 100
fixed_point_rel_tol = 1e-08
fixed_point_abs_tol = 1e-10
accept_on_max_fixed_point_iteration = true
abort_on_solve_fail = true
[]
[Outputs]
file_base = 'stress_deformation'
print_linear_residuals = false
csv = true
exodus = true
[]
(tutorials/soil_desiccation/fracture.i)
[Mesh]
[fmg]
type = FileMeshGenerator
file = 'gold/fields_refined.e'
use_for_exodus_restart = true
[]
[]
[Variables]
[d]
[]
[]
[AuxVariables]
[psie_active]
order = CONSTANT
family = MONOMIAL
[]
[psii_active]
order = CONSTANT
family = MONOMIAL
[]
[bounds_dummy]
[]
[Gc]
initial_from_file_var = 'Gc'
[]
[psic]
initial_from_file_var = 'psic'
[]
[]
[Bounds]
[irreversibility]
type = VariableOldValueBounds
variable = bounds_dummy
bounded_variable = d
bound_type = lower
[]
[upper]
type = ConstantBounds
variable = bounds_dummy
bounded_variable = d
bound_type = upper
bound_value = 1
[]
[]
[Kernels]
[pff_diff]
type = ADPFFDiffusion
variable = d
[]
[pff_react]
type = ADPFFSource
variable = d
free_energy = psi
[]
[]
[Materials]
[fracture_toughness]
type = ADParsedMaterial
property_name = Gc
coupled_variables = Gc
expression = 'Gc'
[]
[critial_fracture_energy]
type = ADParsedMaterial
property_name = psic
coupled_variables = psic
expression = 'psic'
[]
[length_scale]
type = ADGenericConstantMaterial
prop_names = 'l'
prop_values = '${l}'
[]
[crack_geometric]
type = CrackGeometricFunction
property_name = alpha
expression = 'd'
phase_field = d
[]
[degradation]
type = RationalDegradationFunction
property_name = g
expression = (1-d)^p/((1-d)^p+(Gc/psic*xi/c0/l)*d*(1+a2*d+a2*a3*d^2))*(1-eta)+eta
phase_field = d
parameter_names = 'p a2 a3 eta '
parameter_values = '2 1 0 1e-6'
material_property_names = 'Gc psic xi c0 l '
[]
[psi]
type = ADDerivativeParsedMaterial
property_name = psi
expression = 'alpha*Gc/c0/l+g*(psie_active+psii_active)'
coupled_variables = 'd psie_active psii_active'
material_property_names = 'alpha(d) g(d) Gc c0 l'
derivative_order = 1
[]
[]
[BCs]
[Periodic]
[all]
variable = d
auto_direction = 'x y'
[]
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -snes_type'
petsc_options_value = 'lu superlu_dist vinewtonrsls'
nl_abs_tol = 1e-08
nl_rel_tol = 1e-06
[]
[Outputs]
print_linear_residuals = false
[]
(test/tests/degradation_functions/rational.i)
[Problem]
solve = false
[]
[Mesh]
[one]
type = GeneratedMeshGenerator
dim = 1
[]
[]
[AuxVariables]
[d]
[]
[]
[AuxKernels]
[d]
type = FunctionAux
variable = d
function = 't'
[]
[]
[Materials]
[props]
type = ADGenericConstantMaterial
prop_names = 'Gc psic xi c0 l'
prop_values = '1 1 2 3.14159 1'
[]
[degradation]
type = RationalDegradationFunction
property_name = g
phase_field = d
parameter_names = 'p a2 a3 eta '
parameter_values = '2 -0.5 0 1e-6'
material_property_names = 'Gc psic xi c0 l '
[]
[]
[Postprocessors]
[d]
type = ElementAverageValue
variable = d
execute_on = 'INITIAL TIMESTEP_END'
[]
[g]
type = ADElementAverageMaterialProperty
mat_prop = g
execute_on = 'INITIAL TIMESTEP_END'
[]
[dg_dd]
type = ADElementAverageMaterialProperty
mat_prop = dg/dd
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
[Executioner]
type = Transient
dt = 0.1
end_time = 1
[]
[Outputs]
exodus = true
[]
(tutorials/homogeneous_cube/Hencky_J2_linearhardening/fracture.i)
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 3
xmax = ${a}
ymax = ${a}
zmax = ${a}
[]
[]
[Variables]
[d]
[]
[]
[AuxVariables]
[bounds_dummy]
[]
[psie_active]
order = CONSTANT
family = MONOMIAL
[]
[psip_active]
order = CONSTANT
family = MONOMIAL
[]
[]
[Bounds]
[irreversibility]
type = VariableOldValueBounds
variable = bounds_dummy
bounded_variable = d
bound_type = lower
[]
[upper]
type = ConstantBounds
variable = bounds_dummy
bounded_variable = d
bound_type = upper
bound_value = 1
[]
[]
[Kernels]
[pff_diff]
type = ADPFFDiffusion
variable = d
[]
[pff_source]
type = ADPFFSource
variable = d
free_energy = psi
[]
[]
[Materials]
[bulk_properties]
type = ADGenericConstantMaterial
prop_names = 'l Gc psic'
prop_values = '${l} ${Gc} ${psic}'
[]
[degradation]
type = RationalDegradationFunction
property_name = g
expression = (1-d)^p/((1-d)^p+(Gc/psic*xi/c0/l)*d*(1+a2*d+a2*a3*d^2))*(1-eta)+eta
phase_field = d
material_property_names = 'Gc psic xi c0 l '
parameter_names = 'p a2 a3 eta '
parameter_values = '2 -0.5 0 1e-6'
[]
[crack_geometric]
type = CrackGeometricFunction
property_name = alpha
expression = 'd'
phase_field = d
[]
[psi]
type = ADDerivativeParsedMaterial
property_name = psi
expression = 'alpha*Gc/c0/l+g*(psie_active+psip_active)'
coupled_variables = 'd psie_active psip_active'
material_property_names = 'alpha(d) g(d) Gc c0 l'
derivative_order = 1
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -snes_type'
petsc_options_value = 'lu vinewtonrsls'
nl_rel_tol = 1e-08
nl_abs_tol = 1e-10
nl_max_its = 50
automatic_scaling = true
abort_on_solve_fail = true
[]
[Outputs]
print_linear_residuals = false
[]
(tutorials/mode1_ductile_fracture/fracture.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
nx = 30
ny = 15
ymax = 0.5
[]
[noncrack]
type = BoundingBoxNodeSetGenerator
input = gen
new_boundary = noncrack
bottom_left = '0.5 0 0'
top_right = '1 0 0'
[]
construct_side_list_from_node_list = true
[]
[Adaptivity]
marker = marker
initial_marker = marker
initial_steps = 2
stop_time = 0
max_h_level = 2
[Markers]
[marker]
type = OrientedBoxMarker
center = '0.75 0.25 0'
length = 0.8
width = 0.1
height = 1
length_direction = '1 1 0'
width_direction = '-1 1 0'
inside = REFINE
outside = DO_NOTHING
[]
[]
[]
[Variables]
[d]
[]
[]
[AuxVariables]
[bounds_dummy]
[]
[psie_active]
order = CONSTANT
family = MONOMIAL
[]
[psip_active]
order = CONSTANT
family = MONOMIAL
[]
[]
[Bounds]
[irreversibility]
type = VariableOldValueBounds
variable = bounds_dummy
bounded_variable = d
bound_type = lower
[]
[upper]
type = ConstantBounds
variable = bounds_dummy
bounded_variable = d
bound_type = upper
bound_value = 1
[]
[]
[Kernels]
[diff]
type = ADPFFDiffusion
variable = d
fracture_toughness = Gc
regularization_length = l
normalization_constant = c0
[]
[source]
type = ADPFFSource
variable = d
free_energy = psi
[]
[]
[Materials]
[fracture_properties]
type = ADGenericConstantMaterial
prop_names = 'Gc psic l'
prop_values = '${Gc} ${psic} ${l}'
[]
[crack_geometric]
type = CrackGeometricFunction
property_name = alpha
expression = 'd'
phase_field = d
[]
[degradation]
type = RationalDegradationFunction
property_name = g
expression = (1-d)^p/((1-d)^p+(Gc/psic*xi/c0/l)*d*(1+a2*d+a2*a3*d^2))*(1-eta)+eta
phase_field = d
material_property_names = 'Gc psic xi c0 l '
parameter_names = 'p a2 a3 eta '
parameter_values = '2 -0.5 0 1e-6'
[]
[psi]
type = ADDerivativeParsedMaterial
property_name = psi
expression = 'alpha*Gc/c0/l+g*(psie_active+psip_active)'
coupled_variables = 'd psie_active psip_active'
material_property_names = 'alpha(d) g(d) Gc c0 l'
derivative_order = 1
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -snes_type'
petsc_options_value = 'lu superlu_dist vinewtonrsls'
automatic_scaling = true
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
[]
[Outputs]
print_linear_residuals = false
[]
(tutorials/homogeneous_cube/Hencky_J2_JohnsonCook/fracture.i)
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 3
xmax = ${a}
ymax = ${a}
zmax = ${a}
[]
[]
[Variables]
[d]
[]
[]
[AuxVariables]
[bounds_dummy]
[]
[psie_active]
order = CONSTANT
family = MONOMIAL
[]
[psip_active]
order = CONSTANT
family = MONOMIAL
[]
[coalescence]
order = CONSTANT
family = MONOMIAL
[]
[]
[Bounds]
[irreversibility]
type = VariableOldValueBounds
variable = bounds_dummy
bounded_variable = d
bound_type = lower
[]
[upper]
type = ConstantBounds
variable = bounds_dummy
bounded_variable = d
bound_type = upper
bound_value = 1
[]
[]
[Kernels]
[pff_diff]
type = ADPFFDiffusion
variable = d
[]
[pff_source]
type = ADPFFSource
variable = d
free_energy = psi
[]
[]
[Materials]
[bulk_properties]
type = ADGenericConstantMaterial
prop_names = 'l Gc psic'
prop_values = '${l} ${Gc} ${psic}'
[]
[degradation]
type = RationalDegradationFunction
property_name = g
expression = (1-d)^p/((1-d)^p+(Gc/psic*xi/c0/l)*d*(1+a2*d+a2*a3*d^2))*(1-eta)+eta
phase_field = d
material_property_names = 'Gc psic xi c0 l '
parameter_names = 'p a2 a3 eta '
parameter_values = '2 -0.5 0 1e-6'
[]
[crack_geometric]
type = CrackGeometricFunction
property_name = alpha
expression = 'd'
phase_field = d
[]
[psi]
type = ADDerivativeParsedMaterial
property_name = psi
expression = 'alpha*(Gc*coalescence)/c0/l+g*(psie_active)'
coupled_variables = 'd psie_active coalescence'
material_property_names = 'alpha(d) g(d) Gc c0 l'
derivative_order = 1
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -snes_type'
petsc_options_value = 'lu vinewtonrsls'
nl_rel_tol = 1e-08
nl_abs_tol = 1e-10
nl_max_its = 50
automatic_scaling = true
abort_on_solve_fail = true
[]
[Outputs]
print_linear_residuals = false
[]
(tutorials/homogeneous_cube/Hencky_J2_arrheniuslawhardening_creep/fracture.i)
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 3
xmax = ${a}
ymax = ${a}
zmax = ${a}
[]
[]
[Variables]
[d]
[]
[]
[AuxVariables]
[bounds_dummy]
[]
[psie_active]
order = CONSTANT
family = MONOMIAL
[]
[psip_active]
order = CONSTANT
family = MONOMIAL
[]
[]
[Bounds]
[irreversibility]
type = VariableOldValueBounds
variable = bounds_dummy
bounded_variable = d
bound_type = lower
[]
[upper]
type = ConstantBounds
variable = bounds_dummy
bounded_variable = d
bound_type = upper
bound_value = 1
[]
[]
[Kernels]
[pff_diff]
type = ADPFFDiffusion
variable = d
[]
[pff_source]
type = ADPFFSource
variable = d
free_energy = psi
[]
[]
[Materials]
[bulk_properties]
type = ADGenericConstantMaterial
prop_names = 'l Gc psic'
prop_values = '${l} ${Gc} ${psic}'
[]
[degradation]
type = RationalDegradationFunction
property_name = g
expression = (1-d)^p/((1-d)^p+(Gc/psic*xi/c0/l)*d*(1+a2*d+a2*a3*d^2))*(1-eta)+eta
phase_field = d
material_property_names = 'Gc psic xi c0 l '
parameter_names = 'p a2 a3 eta '
parameter_values = '2 -0.5 0 1e-6'
[]
[crack_geometric]
type = CrackGeometricFunction
property_name = alpha
expression = 'd'
phase_field = d
[]
[psi]
type = ADDerivativeParsedMaterial
property_name = psi
expression = 'alpha*Gc/c0/l+g*(psie_active+psip_active)'
coupled_variables = 'd psie_active psip_active'
material_property_names = 'alpha(d) g(d) Gc c0 l'
derivative_order = 1
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -snes_type'
petsc_options_value = 'lu vinewtonrsls'
nl_rel_tol = 1e-08
nl_abs_tol = 1e-10
nl_max_its = 50
automatic_scaling = true
abort_on_solve_fail = true
[]
[Outputs]
print_linear_residuals = false
[]
(tutorials/traction_separation/elasticity.i)
E = 3e4
nu = 0.2
K = '${fparse E/3/(1-2*nu)}'
G = '${fparse E/2/(1+nu)}'
p = 0.5
Gc = 0.12
sigmac = 3
psic = '${fparse sigmac^2/2/E}'
l = 20
R = 10
h = '${fparse l/R}'
nx = '${fparse ceil(200/h)}'
[MultiApps]
[fracture]
type = TransientMultiApp
input_files = fracture.i
cli_args = 'p=${p};Gc=${Gc};psic=${psic};l=${l};nx=${nx}'
execute_on = 'TIMESTEP_END'
[]
[]
[Transfers]
[from_fracture]
type = MultiAppCopyTransfer
from_multi_app = 'fracture'
variable = d
source_variable = d
[]
[to_fracture]
type = MultiAppCopyTransfer
to_multi_app = 'fracture'
variable = 'psie_active disp_x disp_y'
source_variable = 'psie_active disp_x disp_y'
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
xmax = 200
ymax = 1
nx = ${nx}
ny = 1
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[]
[AuxVariables]
[fx]
[]
[d]
[]
[]
[Kernels]
[solid_x]
type = ADStressDivergenceTensors
variable = disp_x
component = 0
save_in = fx
[]
[solid_y]
type = ADStressDivergenceTensors
variable = disp_y
component = 1
[]
[pressure_x]
type = ADPressurizedCrack
variable = disp_x
pressure = p
phase_field = d
indicator_function = I
component = 0
[]
[pressure_y]
type = ADPressurizedCrack
variable = disp_y
pressure = p
phase_field = d
indicator_function = I
component = 1
[]
[]
[BCs]
[xdisp]
type = FunctionDirichletBC
variable = disp_x
boundary = right
function = 't'
[]
[yfix]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[]
[xfix]
type = DirichletBC
variable = disp_x
boundary = left
value = 0
[]
[]
[Materials]
[bulk_properties]
type = ADGenericConstantMaterial
prop_names = 'K G l Gc psic p'
prop_values = '${K} ${G} ${l} ${Gc} ${psic} ${p}'
[]
[crack_geometric]
type = CrackGeometricFunction
property_name = alpha
expression = '2*d-d^2'
phase_field = d
[]
[indicator]
type = ADDerivativeParsedMaterial
property_name = I
coupled_variables = 'd'
expression = 'd^2'
derivative_order = 1
[]
[degradation]
type = RationalDegradationFunction
property_name = g
expression = (1-d)^p/((1-d)^p+(Gc/psic*xi/c0/l)*d*(1+a2*d+a2*a3*d^2))*(1-eta)+eta
phase_field = d
material_property_names = 'Gc psic xi c0 l '
parameter_names = 'p a2 a3 eta '
parameter_values = '2 -0.5 0 1e-6'
[]
[strain]
type = ADComputeSmallStrain
[]
[elasticity]
type = SmallDeformationIsotropicElasticity
bulk_modulus = K
shear_modulus = G
phase_field = d
degradation_function = g
decomposition = NONE
output_properties = 'psie_active'
outputs = exodus
[]
[stress]
type = ComputeSmallDeformationStress
elasticity_model = elasticity
[]
[pressure_density]
type = PressureDensity
effective_pressure_density = p_density
phase_field = d
pressure = p
indicator_function = I
[]
[]
[Postprocessors]
[Fx_left]
type = NodalSum
variable = fx
boundary = left
[]
[Fx_right]
type = NodalSum
variable = fx
boundary = right
[]
[effective_pressure]
type = ADElementIntegralMaterialProperty
mat_prop = p_density
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist '
automatic_scaling = true
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
dt = 5e-4
end_time = 5e-2
fixed_point_max_its = 200
accept_on_max_fixed_point_iteration = false
fixed_point_rel_tol = 1e-8
fixed_point_abs_tol = 1e-10
[]
[Outputs]
file_base = 'p_${p}_l_${l}'
exodus = true
csv = true
print_linear_residuals = false
[]
(tutorials/quenching_bibeam/fracture.i)
[Problem]
kernel_coverage_check = false
material_coverage_check = false
[]
[Mesh]
[fmg]
type = FileMeshGenerator
file = 'gold/plate.msh'
[]
[]
[Adaptivity]
marker = marker
initial_marker = marker
initial_steps = 2
stop_time = 0
max_h_level = 2
[Markers]
[marker]
type = BoxMarker
bottom_left = '27 7 0'
top_right = '60 28 0'
inside = REFINE
outside = DO_NOTHING
[]
[]
[]
[Variables]
[d]
block = glass
[]
[]
[AuxVariables]
[bounds_dummy]
block = glass
[]
[psie_active]
order = CONSTANT
family = MONOMIAL
block = glass
[]
[]
[Bounds]
[irreversibility]
type = VariableOldValueBounds
variable = bounds_dummy
bounded_variable = d
bound_type = lower
block = glass
[]
[upper]
type = ConstantBounds
variable = bounds_dummy
bounded_variable = d
bound_type = upper
bound_value = 1
block = glass
[]
[]
[Kernels]
[diff]
type = ADPFFDiffusion
variable = d
fracture_toughness = Gc
regularization_length = l
normalization_constant = c0
block = glass
[]
[source]
type = ADPFFSource
variable = d
free_energy = psi
block = glass
[]
[]
[Materials]
[fracture_properties]
type = ADGenericConstantMaterial
prop_names = 'Gc psic l'
prop_values = '${Gc} ${psic} ${l}'
block = glass
[]
[crack_geometric]
type = CrackGeometricFunction
property_name = alpha
expression = 'd'
phase_field = d
block = glass
[]
[degradation]
type = RationalDegradationFunction
property_name = g
expression = (1-d)^p/((1-d)^p+(Gc/psic*xi/c0/l)*d*(1+a2*d+a2*a3*d^2))*(1-eta)+eta
phase_field = d
material_property_names = 'Gc psic xi c0 l '
parameter_names = 'p a2 a3 eta '
parameter_values = '2 -0.5 0 1e-6'
block = glass
[]
[psi]
type = ADDerivativeParsedMaterial
property_name = psi
expression = 'alpha*Gc/c0/l+g*psie_active'
coupled_variables = 'd psie_active'
material_property_names = 'alpha(d) g(d) Gc c0 l'
derivative_order = 1
block = glass
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -snes_type'
petsc_options_value = 'lu superlu_dist vinewtonrsls'
automatic_scaling = true
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
[]
[Outputs]
print_linear_residuals = false
[]
(tutorials/soil_desiccation/elasticity.i)
E = 4
nu = 0.2
K = '${fparse E/3/(1-2*nu)}'
G = '${fparse E/2/(1+nu)}'
l = 0.5
c = 0.1
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[MultiApps]
[fracture]
type = TransientMultiApp
input_files = 'fracture.i'
cli_args = 'l=${l}'
[]
[]
[Transfers]
[send_psie_active]
type = MultiAppGeneralFieldShapeEvaluationTransfer
to_multi_app = fracture
source_variable = psie_active
variable = psie_active
[]
[send_psii_active]
type = MultiAppGeneralFieldShapeEvaluationTransfer
to_multi_app = fracture
source_variable = psii_active
variable = psii_active
[]
[get_d]
type = MultiAppGeneralFieldShapeEvaluationTransfer
from_multi_app = fracture
source_variable = d
variable = d
[]
[]
[Mesh]
[fmg]
type = FileMeshGenerator
file = 'gold/fields_refined.e'
use_for_exodus_restart = true
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[strain_zz]
[]
[]
[AuxVariables]
[d]
[]
[Gc]
initial_from_file_var = Gc
[]
[psic]
initial_from_file_var = psic
[]
[]
[Kernels]
[solid_x]
type = ADStressDivergenceTensors
variable = disp_x
component = 0
[]
[solid_y]
type = ADStressDivergenceTensors
variable = disp_y
component = 1
[]
[plane_stress]
type = ADWeakPlaneStress
variable = strain_zz
[]
[react_x]
type = ADCoefMatReaction
variable = disp_x
coefficient = ${c}
prop_names = 'g'
[]
[react_y]
type = ADCoefMatReaction
variable = disp_y
coefficient = ${c}
prop_names = 'g'
[]
[]
[BCs]
[Periodic]
[x]
variable = disp_x
auto_direction = 'x y'
[]
[y]
variable = disp_y
auto_direction = 'x y'
[]
[]
[]
[Materials]
# fracture
[fracture_toughness]
type = ADParsedMaterial
property_name = Gc
coupled_variables = Gc
expression = 'Gc'
[]
[critial_fracture_energy]
type = ADParsedMaterial
property_name = psic
coupled_variables = psic
expression = 'psic'
[]
[bulk_properties]
type = ADGenericConstantMaterial
prop_names = 'K G l'
prop_values = '${K} ${G} ${l}'
[]
[crack_geometric]
type = CrackGeometricFunction
property_name = alpha
expression = 'd'
phase_field = d
[]
[degradation]
type = RationalDegradationFunction
property_name = g
expression = (1-d)^p/((1-d)^p+(Gc/psic*xi/c0/l)*d*(1+a2*d+a2*a3*d^2))*(1-eta)+eta
phase_field = d
parameter_names = 'p a2 a3 eta '
parameter_values = '2 1 0 1e-6'
material_property_names = 'Gc psic xi c0 l '
[]
# elasticity
[eigen_strain]
type = ComputeEigenstrainFromFunctionInitialStress
initial_stress = 't t 0'
eigenstrain_name = 'es'
bulk_modulus = K
shear_modulus = G
[]
[strain]
type = ADComputePlaneSmallStrain
out_of_plane_strain = strain_zz
eigenstrain_names = 'es'
[]
[elasticity]
type = SmallDeformationIsotropicElasticity
bulk_modulus = K
shear_modulus = G
phase_field = d
degradation_function = g
decomposition = NONE
output_properties = 'psie_active'
outputs = exodus
[]
[stress]
type = ComputeSmallDeformationStress
elasticity_model = elasticity
[]
[interfacial_energy]
type = ThinFilmInterfaceEnergyDensity
phase_field = d
shear_lag_coef = ${c}
output_properties = 'psii_active'
outputs = exodus
[]
[]
[Postprocessors]
[delta_d]
type = SolutionChangeNorm
variable = d
outputs = none
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-ksp_converged_reason'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -ksp_type'
petsc_options_value = 'lu superlu_dist gmres'
dt = 0.0005
end_time = 0.22
nl_rel_tol = 1e-06
nl_abs_tol = 1e-08
automatic_scaling = true
fixed_point_max_its = 10
custom_pp = delta_d
custom_abs_tol = 1e-03
custom_rel_tol = 1e-03
disable_fixed_point_residual_norm_check = true
accept_on_max_fixed_point_iteration = true
reuse_preconditioner = true
reuse_preconditioner_max_linear_its = 50
[]
[Outputs]
print_linear_residuals = false
exodus = true
[]
(test/tests/hardening_models/fracture.i)
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 3
xmax = ${a}
ymax = ${a}
zmax = ${a}
[]
[]
[Variables]
[d]
[]
[]
[AuxVariables]
[bounds_dummy]
[]
[psie_active]
order = CONSTANT
family = MONOMIAL
[]
[psip_active]
order = CONSTANT
family = MONOMIAL
[]
[]
[Bounds]
[irreversibility]
type = VariableOldValueBounds
variable = bounds_dummy
bounded_variable = d
bound_type = lower
[]
[upper]
type = ConstantBounds
variable = bounds_dummy
bounded_variable = d
bound_type = upper
bound_value = 1
[]
[]
[Kernels]
[pff_diff]
type = ADPFFDiffusion
variable = d
[]
[pff_source]
type = ADPFFSource
variable = d
free_energy = psi
[]
[]
[Materials]
[bulk_properties]
type = ADGenericConstantMaterial
prop_names = 'l Gc psic'
prop_values = '${l} ${Gc} ${psic}'
[]
[degradation]
type = RationalDegradationFunction
property_name = g
expression = (1-d)^p/((1-d)^p+(Gc/psic*xi/c0/l)*d*(1+a2*d+a2*a3*d^2))*(1-eta)+eta
phase_field = d
material_property_names = 'Gc psic xi c0 l '
parameter_names = 'p a2 a3 eta '
parameter_values = '2 -0.5 0 1e-6'
[]
[crack_geometric]
type = CrackGeometricFunction
property_name = alpha
expression = 'd'
phase_field = d
[]
[psi]
type = ADDerivativeParsedMaterial
property_name = psi
expression = 'alpha*Gc/c0/l+g*(psie_active+psip_active)'
coupled_variables = 'd psie_active psip_active'
material_property_names = 'alpha(d) g(d) Gc c0 l'
derivative_order = 1
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -snes_type'
petsc_options_value = 'lu vinewtonrsls'
nl_rel_tol = 1e-08
nl_abs_tol = 1e-10
nl_max_its = 50
automatic_scaling = true
abort_on_solve_fail = true
[]
[Outputs]
print_linear_residuals = false
[]
(tutorials/matrix_fiber/elasticity.i)
E = 4000
nu = 0.2
K = '${fparse E/3/(1-2*nu)}'
G = '${fparse E/2/(1+nu)}'
lambda = '${fparse K-2*G/3}'
Gc = 1
psic = 2.64
l = 0.02
k = 1e-6
v = '${fparse sqrt(Gc*3/lambda)}'
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[MultiApps]
[fracture]
type = TransientMultiApp
input_files = 'fracture.i'
cli_args = 'Gc=${Gc};l=${l};psic=${psic};k=${k}'
execute_on = 'TIMESTEP_END'
[]
[]
[Transfers]
[from_d]
type = MultiAppCopyTransfer
from_multi_app = 'fracture'
source_variable = d
variable = d
[]
[to_psie_active]
type = MultiAppCopyTransfer
to_multi_app = 'fracture'
variable = psie_active
source_variable = psie_active
[]
[]
[Mesh]
[fmg]
type = FileMeshGenerator
file = 'gold/matrix.msh'
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[]
[AuxVariables]
[d]
[]
[]
[Kernels]
[solid_x]
type = ADStressDivergenceTensors
variable = disp_x
component = 0
[]
[solid_y]
type = ADStressDivergenceTensors
variable = disp_y
component = 1
[]
[]
[BCs]
[forcing]
type = FunctionDirichletBC
variable = disp_y
boundary = 'top'
function = '${v}*t'
preset = false
[]
[fixed_hole_x]
type = DirichletBC
variable = disp_x
boundary = 'hole'
value = 0
[]
[fixed_hole_y]
type = DirichletBC
variable = disp_y
boundary = 'hole'
value = 0
[]
[]
[Materials]
[bulk_properties]
type = ADGenericConstantMaterial
prop_names = 'K G l Gc psic'
prop_values = '${K} ${G} ${l} ${Gc} ${psic}'
[]
[crack_geometric]
type = CrackGeometricFunction
property_name = alpha
expression = d
phase_field = d
[]
[degradation]
type = RationalDegradationFunction
property_name = g
phase_field = d
parameter_names = 'p a2 a3 eta '
parameter_values = '2 1 0 ${k}'
material_property_names = 'Gc psic xi c0 l '
[]
[elasticity]
type = SmallDeformationIsotropicElasticity
bulk_modulus = K
shear_modulus = G
phase_field = d
degradation_function = g
decomposition = VOLDEV
output_properties = 'psie_active'
outputs = exodus
[]
[strain]
type = ADComputeSmallStrain
[]
[stress]
type = ComputeSmallDeformationStress
elasticity_model = elasticity
output_properties = 'stress'
outputs = exodus
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
dt = 0.01
end_time = 3
nl_abs_tol = 1e-08
nl_rel_tol = 1e-06
automatic_scaling = true
[]
[Outputs]
exodus = true
print_linear_residuals = false
[]
(tutorials/homogeneous_cube/Hencky_J2_arrheniuslawhardening/fracture.i)
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 3
xmax = ${a}
ymax = ${a}
zmax = ${a}
[]
[]
[Variables]
[d]
[]
[]
[AuxVariables]
[bounds_dummy]
[]
[psie_active]
order = CONSTANT
family = MONOMIAL
[]
[psip_active]
order = CONSTANT
family = MONOMIAL
[]
[]
[Bounds]
[irreversibility]
type = VariableOldValueBounds
variable = bounds_dummy
bounded_variable = d
bound_type = lower
[]
[upper]
type = ConstantBounds
variable = bounds_dummy
bounded_variable = d
bound_type = upper
bound_value = 1
[]
[]
[Kernels]
[pff_diff]
type = ADPFFDiffusion
variable = d
[]
[pff_source]
type = ADPFFSource
variable = d
free_energy = psi
[]
[]
[Materials]
[bulk_properties]
type = ADGenericConstantMaterial
prop_names = 'l Gc psic'
prop_values = '${l} ${Gc} ${psic}'
[]
[degradation]
type = RationalDegradationFunction
property_name = g
expression = (1-d)^p/((1-d)^p+(Gc/psic*xi/c0/l)*d*(1+a2*d+a2*a3*d^2))*(1-eta)+eta
phase_field = d
material_property_names = 'Gc psic xi c0 l '
parameter_names = 'p a2 a3 eta '
parameter_values = '2 -0.5 0 1e-6'
[]
[crack_geometric]
type = CrackGeometricFunction
property_name = alpha
expression = 'd'
phase_field = d
[]
[psi]
type = ADDerivativeParsedMaterial
property_name = psi
expression = 'alpha*Gc/c0/l+g*(psie_active+psip_active)'
coupled_variables = 'd psie_active psip_active'
material_property_names = 'alpha(d) g(d) Gc c0 l'
derivative_order = 1
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -snes_type'
petsc_options_value = 'lu vinewtonrsls'
nl_rel_tol = 1e-08
nl_abs_tol = 1e-10
nl_max_its = 50
automatic_scaling = true
abort_on_solve_fail = true
[]
[Outputs]
print_linear_residuals = false
[]
(tutorials/homogeneous_cube/Hencky_J2_arrheniuslawhardening_creep/elastoplasticity.i)
a = 250
ratio = 4
psic = 15
Gc = 1.38e5
l = '${fparse ratio * a}'
E = 6.88e4
nu = 0.33
K = '${fparse E/3/(1-2*nu)}'
G = '${fparse E/2/(1+nu)}'
sigma_0 = 2e-7
Q = '${fparse 1.4054e8}'
R = 8.3143e3
T = 800
eps = '${fparse E/100}'
n = 160
rate = 10000
creep_coef = 1
tqf = 0
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[MultiApps]
[fracture]
type = TransientMultiApp
input_files = 'fracture.i'
cli_args = 'a=${a};psic=${psic};Gc=${Gc};l=${l};'
execute_on = 'TIMESTEP_END'
[]
[]
[Transfers]
[from_fracture]
type = MultiAppCopyTransfer
from_multi_app = 'fracture'
variable = d
source_variable = d
[]
[to_fracture]
type = MultiAppCopyTransfer
to_multi_app = 'fracture'
variable = 'psie_active psip_active'
source_variable = 'psie_active psip_active'
[]
[]
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 3
xmax = ${a}
ymax = ${a}
zmax = ${a}
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[AuxVariables]
[T]
initial_condition = ${T}
[]
[d]
[]
[stress]
order = CONSTANT
family = MONOMIAL
[]
[F]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress]
type = ADRankTwoAux
variable = stress
rank_two_tensor = stress
index_i = 1
index_j = 1
execute_on = 'INITIAL TIMESTEP_END'
[]
[F]
type = ADRankTwoAux
variable = F
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 1
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
[Kernels]
[solid_x]
type = ADStressDivergenceTensors
variable = disp_x
component = 0
use_displaced_mesh = true
[]
[solid_y]
type = ADStressDivergenceTensors
variable = disp_y
component = 1
use_displaced_mesh = true
[]
[solid_z]
type = ADStressDivergenceTensors
variable = disp_z
component = 2
use_displaced_mesh = true
[]
[]
[Materials]
[bulk_properties]
type = ADGenericConstantMaterial
prop_names = 'K G l Gc psic sigma_0 Q'
prop_values = '${K} ${G} ${l} ${Gc} ${psic} ${sigma_0} ${Q}'
[]
[degradation]
type = RationalDegradationFunction
property_name = g
expression = (1-d)^p/((1-d)^p+(Gc/psic*xi/c0/l)*d*(1+a2*d+a2*a3*d^2))*(1-eta)+eta
phase_field = d
material_property_names = 'Gc psic xi c0 l '
parameter_names = 'p a2 a3 eta '
parameter_values = '2 -0.5 0 1e-6'
[]
[crack_geometric]
type = CrackGeometricFunction
property_name = alpha
expression = 'd'
phase_field = d
[]
[arrhenius_law]
type = ArrheniusLaw
arrhenius_coefficient = A
activation_energy = Q
ideal_gas_constant = ${R}
temperature = T
[]
[defgrad]
type = ComputeDeformationGradient
[]
[hencky]
type = HenckyIsotropicElasticity
bulk_modulus = K
shear_modulus = G
phase_field = d
degradation_function = g
output_properties = 'psie_active'
outputs = exodus
[]
[arrhenius_law_hardening]
type = ArrheniusLawHardening
reference_stress = sigma_0
arrhenius_coefficient = A
eps = ${eps}
phase_field = d
degradation_function = g
taylor_quinney_factor = ${tqf}
temperature = T
output_properties = 'psip_active'
outputs = exodus
[]
[J2]
type = LargeDeformationJ2PowerLawCreep
hardening_model = arrhenius_law_hardening
coefficient = ${creep_coef}
exponent = ${n}
[]
[stress]
type = ComputeLargeDeformationStress
elasticity_model = hencky
plasticity_model = J2
[]
[]
[BCs]
[xfix]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[]
[yfix]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0
[]
[zfix]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[]
[ydisp]
type = FunctionDirichletBC
variable = disp_y
boundary = 'top'
function = '${rate}*t'
preset = false
[]
[]
[Postprocessors]
[F]
type = ElementAverageValue
variable = F
execute_on = 'INITIAL TIMESTEP_END'
[]
[stress]
type = ElementAverageValue
variable = stress
execute_on = 'INITIAL TIMESTEP_END'
[]
[d]
type = ElementAverageValue
variable = d
execute_on = 'INITIAL TIMESTEP_END'
[]
[ep]
type = ADElementAverageMaterialProperty
mat_prop = effective_plastic_strain
execute_on = 'INITIAL TIMESTEP_END'
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
nl_rel_tol = 1e-08
nl_abs_tol = 1e-10
nl_max_its = 50
dt = '${fparse 0.0005 * a / rate}'
end_time = '${fparse 0.1 * a / rate}'
automatic_scaling = true
fixed_point_max_its = 100
fixed_point_rel_tol = 1e-08
fixed_point_abs_tol = 1e-10
accept_on_max_fixed_point_iteration = true
abort_on_solve_fail = true
[]
[Outputs]
file_base = 'stress_deformation_n_${n}_rate_${rate}'
print_linear_residuals = false
csv = true
exodus = true
[]
(tutorials/homogeneous_cube/CNH_J2_powerlawhardening/elastoplasticity_fracture.i)
a = 250
R = 4
psic = 15
Gc = 1.38e5
l = '${fparse R * a}'
E = 6.88e4
nu = 0.33
K = '${fparse E/3/(1-2*nu)}'
G = '${fparse E/2/(1+nu)}'
sigma_y = 320
n = 5
ep0 = 0.01
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 3
xmax = ${a}
ymax = ${a}
zmax = ${a}
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[d]
[]
[]
[AuxVariables]
[bounds_dummy]
[]
[stress]
order = CONSTANT
family = MONOMIAL
[]
[F]
order = CONSTANT
family = MONOMIAL
[]
[]
[Bounds]
[irreversibility]
type = VariableOldValueBounds
variable = bounds_dummy
bounded_variable = d
bound_type = lower
[]
[upper]
type = ConstantBounds
variable = bounds_dummy
bounded_variable = d
bound_type = upper
bound_value = 1
[]
[]
[AuxKernels]
[stress]
type = ADRankTwoAux
variable = stress
rank_two_tensor = stress
index_i = 1
index_j = 1
[]
[F]
type = ADRankTwoAux
variable = F
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 1
[]
[]
[Kernels]
[solid_x]
type = ADStressDivergenceTensors
variable = disp_x
component = 0
use_displaced_mesh = true
[]
[solid_y]
type = ADStressDivergenceTensors
variable = disp_y
component = 1
use_displaced_mesh = true
[]
[solid_z]
type = ADStressDivergenceTensors
variable = disp_z
component = 2
use_displaced_mesh = true
[]
[pff_diff]
type = ADPFFDiffusion
variable = d
[]
[pff_source]
type = ADPFFSource
variable = d
free_energy = psi
[]
[]
[Materials]
[bulk_properties]
type = ADGenericConstantMaterial
prop_names = 'K G l Gc psic'
prop_values = '${K} ${G} ${l} ${Gc} ${psic}'
[]
[degradation]
type = RationalDegradationFunction
property_name = g
expression = (1-d)^p/((1-d)^p+(Gc/psic*xi/c0/l)*d*(1+a2*d+a2*a3*d^2))*(1-eta)+eta
phase_field = d
material_property_names = 'Gc psic xi c0 l '
parameter_names = 'p a2 a3 eta '
parameter_values = '2 -0.5 0 1e-6'
[]
[crack_geometric]
type = CrackGeometricFunction
property_name = alpha
expression = 'd'
phase_field = d
[]
[defgrad]
type = ComputeDeformationGradient
[]
[cnh]
type = CNHIsotropicElasticity
bulk_modulus = K
shear_modulus = G
phase_field = d
degradation_function = g
[]
[power_law_hardening]
type = PowerLawHardening
yield_stress = ${sigma_y}
exponent = ${n}
reference_plastic_strain = ${ep0}
phase_field = d
degradation_function = g
[]
[J2]
type = LargeDeformationJ2Plasticity
hardening_model = power_law_hardening
[]
[stress]
type = ComputeLargeDeformationStress
elasticity_model = cnh
plasticity_model = J2
[]
[psi]
type = ADDerivativeParsedMaterial
property_name = psi
expression = 'alpha*Gc/c0/l+psie+psip'
coupled_variables = d
material_property_names = 'alpha(d) g(d) Gc c0 l psie(d) psip(d)'
derivative_order = 1
[]
[]
[BCs]
[xfix]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[]
[yfix]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0
[]
[zfix]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[]
[ydisp]
type = FunctionDirichletBC
variable = disp_y
boundary = 'top'
function = 't'
preset = false
[]
[]
[Postprocessors]
[F]
type = ElementAverageValue
variable = F
[]
[stress]
type = ElementAverageValue
variable = stress
[]
[d]
type = ElementAverageValue
variable = d
[]
[ep]
type = ADElementAverageMaterialProperty
mat_prop = effective_plastic_strain
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -snes_type -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu vinewtonrsls NONZERO 1e-10'
line_search = none
nl_rel_tol = 1e-08
nl_abs_tol = 1e-10
nl_max_its = 50
dt = '${fparse 0.0001 * a}'
end_time = '${fparse 0.1 * a}'
automatic_scaling = true
abort_on_solve_fail = true
[]
[Outputs]
file_base = stress_deformation
print_linear_residuals = false
csv = true
exodus = true
[]
(tutorials/homogeneous_cube/Hencky_J2_powerlawhardening/elastoplasticity_fracture.i)
a = 250
R = 4
psic = 15
Gc = 1.38e5
l = '${fparse R * a}'
E = 6.88e4
nu = 0.33
K = '${fparse E/3/(1-2*nu)}'
G = '${fparse E/2/(1+nu)}'
sigma_y = 320
n = 5
ep0 = 0.01
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 3
xmax = ${a}
ymax = ${a}
zmax = ${a}
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[d]
[]
[]
[AuxVariables]
[bounds_dummy]
[]
[stress]
order = CONSTANT
family = MONOMIAL
[]
[F]
order = CONSTANT
family = MONOMIAL
[]
[]
[Bounds]
[irreversibility]
type = VariableOldValueBounds
variable = bounds_dummy
bounded_variable = d
bound_type = lower
[]
[upper]
type = ConstantBounds
variable = bounds_dummy
bounded_variable = d
bound_type = upper
bound_value = 1
[]
[]
[AuxKernels]
[stress]
type = ADRankTwoAux
variable = stress
rank_two_tensor = stress
index_i = 1
index_j = 1
[]
[F]
type = ADRankTwoAux
variable = F
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 1
[]
[]
[Kernels]
[solid_x]
type = ADStressDivergenceTensors
variable = disp_x
component = 0
use_displaced_mesh = true
[]
[solid_y]
type = ADStressDivergenceTensors
variable = disp_y
component = 1
use_displaced_mesh = true
[]
[solid_z]
type = ADStressDivergenceTensors
variable = disp_z
component = 2
use_displaced_mesh = true
[]
[pff_diff]
type = ADPFFDiffusion
variable = d
[]
[pff_source]
type = ADPFFSource
variable = d
free_energy = psi
[]
[]
[Materials]
[bulk_properties]
type = ADGenericConstantMaterial
prop_names = 'K G l Gc psic'
prop_values = '${K} ${G} ${l} ${Gc} ${psic}'
[]
[degradation]
type = RationalDegradationFunction
property_name = g
expression = (1-d)^p/((1-d)^p+(Gc/psic*xi/c0/l)*d*(1+a2*d+a2*a3*d^2))*(1-eta)+eta
phase_field = d
material_property_names = 'Gc psic xi c0 l '
parameter_names = 'p a2 a3 eta '
parameter_values = '2 -0.5 0 1e-6'
[]
[crack_geometric]
type = CrackGeometricFunction
property_name = alpha
expression = 'd'
phase_field = d
[]
[defgrad]
type = ComputeDeformationGradient
[]
[hencky]
type = HenckyIsotropicElasticity
bulk_modulus = K
shear_modulus = G
phase_field = d
degradation_function = g
[]
[power_law_hardening]
type = PowerLawHardening
yield_stress = ${sigma_y}
exponent = ${n}
reference_plastic_strain = ${ep0}
phase_field = d
degradation_function = g
[]
[J2]
type = LargeDeformationJ2Plasticity
hardening_model = power_law_hardening
[]
[stress]
type = ComputeLargeDeformationStress
elasticity_model = hencky
plasticity_model = J2
[]
[psi]
type = ADDerivativeParsedMaterial
property_name = psi
expression = 'alpha*Gc/c0/l+psie+psip'
coupled_variables = d
material_property_names = 'alpha(d) g(d) Gc c0 l psie(d) psip(d)'
derivative_order = 1
[]
[]
[BCs]
[xfix]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[]
[yfix]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0
[]
[zfix]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[]
[ydisp]
type = FunctionDirichletBC
variable = disp_y
boundary = 'top'
function = 't'
preset = false
[]
[]
[Postprocessors]
[F]
type = ElementAverageValue
variable = F
[]
[stress]
type = ElementAverageValue
variable = stress
[]
[d]
type = ElementAverageValue
variable = d
[]
[ep]
type = ADElementAverageMaterialProperty
mat_prop = effective_plastic_strain
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -snes_type -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = 'lu vinewtonrsls NONZERO 1e-10'
line_search = none
nl_rel_tol = 1e-08
nl_abs_tol = 1e-10
nl_max_its = 50
dt = '${fparse 0.0001 * a}'
end_time = '${fparse 0.1 * a}'
automatic_scaling = true
abort_on_solve_fail = true
[]
[Outputs]
file_base = stress_deformation
print_linear_residuals = false
csv = true
exodus = true
[]
(tutorials/homogeneous_cube/Hencky_J2_linearhardening/elastoplasticity.i)
a = 250
R = 4
psic = 15
Gc = 1.38e5
l = '${fparse R * a}'
E = 6.88e4
nu = 0.33
K = '${fparse E/3/(1-2*nu)}'
G = '${fparse E/2/(1+nu)}'
sigma_y = 320
H = 3.44e3
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[MultiApps]
[fracture]
type = TransientMultiApp
input_files = 'fracture.i'
cli_args = 'a=${a};psic=${psic};Gc=${Gc};l=${l};'
execute_on = 'TIMESTEP_END'
[]
[]
[Transfers]
[from_d]
type = MultiAppCopyTransfer
from_multi_app = 'fracture'
variable = d
source_variable = d
[]
[to_psie_active]
type = MultiAppCopyTransfer
to_multi_app = 'fracture'
variable = psie_active
source_variable = psie_active
[]
[to_psip_active]
type = MultiAppCopyTransfer
to_multi_app = 'fracture'
variable = psip_active
source_variable = psip_active
[]
[]
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 3
xmax = ${a}
ymax = ${a}
zmax = ${a}
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[AuxVariables]
[d]
[]
[stress]
order = CONSTANT
family = MONOMIAL
[]
[F]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[stress]
type = ADRankTwoAux
variable = stress
rank_two_tensor = stress
index_i = 1
index_j = 1
[]
[F]
type = ADRankTwoAux
variable = F
rank_two_tensor = deformation_gradient
index_i = 1
index_j = 1
[]
[]
[Kernels]
[solid_x]
type = ADStressDivergenceTensors
variable = disp_x
component = 0
use_displaced_mesh = true
[]
[solid_y]
type = ADStressDivergenceTensors
variable = disp_y
component = 1
use_displaced_mesh = true
[]
[solid_z]
type = ADStressDivergenceTensors
variable = disp_z
component = 2
use_displaced_mesh = true
[]
[]
[Materials]
[bulk_properties]
type = ADGenericConstantMaterial
prop_names = 'K G l Gc psic sigma_y H'
prop_values = '${K} ${G} ${l} ${Gc} ${psic} ${sigma_y} ${H}'
[]
[degradation]
type = RationalDegradationFunction
property_name = g
expression = (1-d)^p/((1-d)^p+(Gc/psic*xi/c0/l)*d*(1+a2*d+a2*a3*d^2))*(1-eta)+eta
phase_field = d
material_property_names = 'Gc psic xi c0 l '
parameter_names = 'p a2 a3 eta '
parameter_values = '2 -0.5 0 1e-6'
[]
[crack_geometric]
type = CrackGeometricFunction
property_name = alpha
expression = 'd'
phase_field = d
[]
[defgrad]
type = ComputeDeformationGradient
[]
[hencky]
type = HenckyIsotropicElasticity
bulk_modulus = K
shear_modulus = G
phase_field = d
degradation_function = g
output_properties = 'psie_active'
outputs = exodus
[]
[linear_hardening]
type = LinearHardening
phase_field = d
yield_stress = sigma_y
hardening_modulus = H
degradation_function = g
output_properties = 'psip_active'
outputs = exodus
[]
[J2]
type = LargeDeformationJ2Plasticity
hardening_model = linear_hardening
[]
[stress]
type = ComputeLargeDeformationStress
elasticity_model = hencky
plasticity_model = J2
[]
[]
[BCs]
[xfix]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0
[]
[yfix]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0
[]
[zfix]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0
[]
[ydisp]
type = FunctionDirichletBC
variable = disp_y
boundary = 'top'
function = 't'
preset = false
[]
[]
[Postprocessors]
[F]
type = ElementAverageValue
variable = F
[]
[stress]
type = ElementAverageValue
variable = stress
[]
[d]
type = ElementAverageValue
variable = d
[]
[ep]
type = ADElementAverageMaterialProperty
mat_prop = effective_plastic_strain
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
nl_rel_tol = 1e-08
nl_abs_tol = 1e-10
nl_max_its = 50
dt = '${fparse 0.0005 * a}'
end_time = '${fparse 0.1 * a}'
automatic_scaling = true
fixed_point_max_its = 100
fixed_point_rel_tol = 1e-08
fixed_point_abs_tol = 1e-10
accept_on_max_fixed_point_iteration = true
abort_on_solve_fail = true
[]
[Outputs]
file_base = 'stress_deformation'
print_linear_residuals = false
csv = true
exodus = true
[]
(tutorials/mode2_cohesive_fracture/elasticity.i)
E = 2.1e5
nu = 0.3
K = '${fparse E/3/(1-2*nu)}'
G = '${fparse E/2/(1+nu)}'
Gc = 2.7
psic = 14.88
l = 0.02
[MultiApps]
[fracture]
type = TransientMultiApp
input_files = fracture.i
cli_args = 'Gc=${Gc};psic=${psic};l=${l}'
execute_on = 'TIMESTEP_END'
[]
[]
[Transfers]
[from_d]
type = MultiAppCopyTransfer
from_multi_app = 'fracture'
variable = d
source_variable = d
[]
[to_psie_active]
type = MultiAppCopyTransfer
to_multi_app = 'fracture'
variable = psie_active
source_variable = psie_active
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
[top_half]
type = GeneratedMeshGenerator
dim = 2
nx = 30
ny = 15
ymin = 0
ymax = 0.5
boundary_id_offset = 0
boundary_name_prefix = top_half
[]
[top_stitch]
type = BoundingBoxNodeSetGenerator
input = top_half
new_boundary = top_stitch
bottom_left = '0.5 0 0'
top_right = '1 0 0'
[]
[bottom_half]
type = GeneratedMeshGenerator
dim = 2
nx = 30
ny = 15
ymin = -0.5
ymax = 0
boundary_id_offset = 5
boundary_name_prefix = bottom_half
[]
[bottom_stitch]
type = BoundingBoxNodeSetGenerator
input = bottom_half
new_boundary = bottom_stitch
bottom_left = '0.5 0 0'
top_right = '1 0 0'
[]
[stitch]
type = StitchedMeshGenerator
inputs = 'top_stitch bottom_stitch'
stitch_boundaries_pairs = 'top_stitch bottom_stitch'
[]
construct_side_list_from_node_list = true
[]
[Adaptivity]
marker = marker
initial_marker = marker
initial_steps = 2
stop_time = 0
max_h_level = 2
[Markers]
[marker]
type = OrientedBoxMarker
center = '0.65 -0.25 0'
length = 0.8
width = 0.2
height = 1
length_direction = '1 -1.5 0'
width_direction = '1.5 1 0'
inside = REFINE
outside = DO_NOTHING
[]
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[]
[AuxVariables]
[fx]
[]
[d]
[]
[]
[Kernels]
[solid_x]
type = ADStressDivergenceTensors
variable = disp_x
component = 0
save_in = fx
[]
[solid_y]
type = ADStressDivergenceTensors
variable = disp_y
component = 1
[]
[]
[BCs]
[xdisp]
type = FunctionDirichletBC
variable = 'disp_x'
boundary = 'top_half_top'
function = 't'
preset = false
[]
[yfix]
type = DirichletBC
variable = 'disp_y'
boundary = 'top_half_top bottom_half_bottom top_half_left top_half_right bottom_half_left bottom_half_right'
value = 0
[]
[xfix]
type = DirichletBC
variable = 'disp_x'
boundary = 'bottom_half_bottom'
value = 0
[]
[]
[Materials]
[bulk_properties]
type = ADGenericConstantMaterial
prop_names = 'K G l Gc psic'
prop_values = '${K} ${G} ${l} ${Gc} ${psic}'
[]
[crack_geometric]
type = CrackGeometricFunction
property_name = alpha
expression = 'd'
phase_field = d
[]
[degradation]
type = RationalDegradationFunction
property_name = g
expression = (1-d)^p/((1-d)^p+(Gc/psic*xi/c0/l)*d*(1+a2*d+a2*a3*d^2))*(1-eta)+eta
phase_field = d
material_property_names = 'Gc psic xi c0 l '
parameter_names = 'p a2 a3 eta '
parameter_values = '2 -0.5 0 1e-6'
[]
[strain]
type = ADComputeSmallStrain
[]
[elasticity]
type = SmallDeformationIsotropicElasticity
bulk_modulus = K
shear_modulus = G
phase_field = d
degradation_function = g
decomposition = SPECTRAL
output_properties = 'elastic_strain psie_active'
outputs = exodus
[]
[stress]
type = ComputeSmallDeformationStress
elasticity_model = elasticity
output_properties = 'stress'
outputs = exodus
[]
[]
[Postprocessors]
[Fx]
type = NodalSum
variable = fx
boundary = top_half_top
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist '
automatic_scaling = true
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
dt = 2e-5
end_time = 2e-2
fixed_point_max_its = 20
accept_on_max_fixed_point_iteration = true
fixed_point_rel_tol = 1e-8
fixed_point_abs_tol = 1e-10
[]
[Outputs]
exodus = true
print_linear_residuals = false
[]
(tutorials/mode2_cohesive_fracture/fracture.i)
[Mesh]
[top_half]
type = GeneratedMeshGenerator
dim = 2
nx = 30
ny = 15
ymin = 0
ymax = 0.5
boundary_id_offset = 0
boundary_name_prefix = top_half
[]
[top_stitch]
type = BoundingBoxNodeSetGenerator
input = top_half
new_boundary = top_stitch
bottom_left = '0.5 0 0'
top_right = '1 0 0'
[]
[bottom_half]
type = GeneratedMeshGenerator
dim = 2
nx = 30
ny = 15
ymin = -0.5
ymax = 0
boundary_id_offset = 5
boundary_name_prefix = bottom_half
[]
[bottom_stitch]
type = BoundingBoxNodeSetGenerator
input = bottom_half
new_boundary = bottom_stitch
bottom_left = '0.5 0 0'
top_right = '1 0 0'
[]
[stitch]
type = StitchedMeshGenerator
inputs = 'top_stitch bottom_stitch'
stitch_boundaries_pairs = 'top_stitch bottom_stitch'
[]
construct_side_list_from_node_list = true
[]
[Adaptivity]
marker = marker
initial_marker = marker
initial_steps = 2
stop_time = 0
max_h_level = 2
[Markers]
[marker]
type = OrientedBoxMarker
center = '0.65 -0.25 0'
length = 0.8
width = 0.2
height = 1
length_direction = '1 -1.5 0'
width_direction = '1.5 1 0'
inside = REFINE
outside = DO_NOTHING
[]
[]
[]
[Variables]
[d]
[]
[]
[AuxVariables]
[bounds_dummy]
[]
[psie_active]
order = CONSTANT
family = MONOMIAL
[]
[]
[Bounds]
[irreversibility]
type = VariableOldValueBounds
variable = bounds_dummy
bounded_variable = d
bound_type = lower
[]
[upper]
type = ConstantBounds
variable = bounds_dummy
bounded_variable = d
bound_type = upper
bound_value = 1
[]
[]
[Kernels]
[diff]
type = ADPFFDiffusion
variable = d
fracture_toughness = Gc
regularization_length = l
normalization_constant = c0
[]
[source]
type = ADPFFSource
variable = d
free_energy = psi
[]
[]
[Materials]
[fracture_properties]
type = ADGenericConstantMaterial
prop_names = 'Gc psic l'
prop_values = '${Gc} ${psic} ${l}'
[]
[crack_geometric]
type = CrackGeometricFunction
property_name = alpha
expression = 'd'
phase_field = d
[]
[degradation]
type = RationalDegradationFunction
property_name = g
expression = (1-d)^p/((1-d)^p+(Gc/psic*xi/c0/l)*d*(1+a2*d+a2*a3*d^2))*(1-eta)+eta
phase_field = d
material_property_names = 'Gc psic xi c0 l '
parameter_names = 'p a2 a3 eta '
parameter_values = '2 -0.5 0 1e-6'
[]
[psi]
type = ADDerivativeParsedMaterial
property_name = psi
expression = 'alpha*Gc/c0/l+g*psie_active'
coupled_variables = 'd psie_active'
material_property_names = 'alpha(d) g(d) Gc c0 l'
derivative_order = 1
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -snes_type'
petsc_options_value = 'lu superlu_dist vinewtonrsls'
automatic_scaling = true
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
[]
[Outputs]
print_linear_residuals = false
[]
(tutorials/mode1_cohesive_fracture/elasticity.i)
E = 2.1e5
nu = 0.3
K = '${fparse E/3/(1-2*nu)}'
G = '${fparse E/2/(1+nu)}'
Gc = 2.7
psic = 14.88
l = 0.02
[MultiApps]
[fracture]
type = TransientMultiApp
input_files = fracture.i
cli_args = 'Gc=${Gc};psic=${psic};l=${l}'
execute_on = 'TIMESTEP_END'
[]
[]
[Transfers]
[from_d]
type = MultiAppCopyTransfer
from_multi_app = 'fracture'
variable = d
source_variable = d
[]
[to_psie_active]
type = MultiAppCopyTransfer
to_multi_app = 'fracture'
variable = psie_active
source_variable = psie_active
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
nx = 30
ny = 15
ymax = 0.5
[]
[noncrack]
type = BoundingBoxNodeSetGenerator
input = gen
new_boundary = noncrack
bottom_left = '0.5 0 0'
top_right = '1 0 0'
[]
construct_side_list_from_node_list = true
[]
[Adaptivity]
marker = marker
initial_marker = marker
initial_steps = 2
stop_time = 0
max_h_level = 2
[Markers]
[marker]
type = BoxMarker
bottom_left = '0.4 0 0'
top_right = '1 0.05 0'
outside = DO_NOTHING
inside = REFINE
[]
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[]
[AuxVariables]
[fy]
[]
[d]
[]
[]
[Kernels]
[solid_x]
type = ADStressDivergenceTensors
variable = disp_x
component = 0
[]
[solid_y]
type = ADStressDivergenceTensors
variable = disp_y
component = 1
save_in = fy
[]
[]
[BCs]
[ydisp]
type = FunctionDirichletBC
variable = disp_y
boundary = top
function = 't'
[]
[yfix]
type = DirichletBC
variable = disp_y
boundary = noncrack
value = 0
[]
[xfix]
type = DirichletBC
variable = disp_x
boundary = top
value = 0
[]
[]
[Materials]
[bulk_properties]
type = ADGenericConstantMaterial
prop_names = 'K G l Gc psic'
prop_values = '${K} ${G} ${l} ${Gc} ${psic}'
[]
[crack_geometric]
type = CrackGeometricFunction
property_name = alpha
expression = 'd'
phase_field = d
[]
[degradation]
type = RationalDegradationFunction
property_name = g
expression = (1-d)^p/((1-d)^p+(Gc/psic*xi/c0/l)*d*(1+a2*d+a2*a3*d^2))*(1-eta)+eta
phase_field = d
material_property_names = 'Gc psic xi c0 l '
parameter_names = 'p a2 a3 eta '
parameter_values = '2 -0.5 0 1e-6'
[]
[strain]
type = ADComputeSmallStrain
[]
[elasticity]
type = SmallDeformationIsotropicElasticity
bulk_modulus = K
shear_modulus = G
phase_field = d
degradation_function = g
decomposition = NONE
output_properties = 'elastic_strain psie_active'
outputs = exodus
[]
[stress]
type = ComputeSmallDeformationStress
elasticity_model = elasticity
output_properties = 'stress'
outputs = exodus
[]
[]
[Postprocessors]
[Fy]
type = NodalSum
variable = fy
boundary = top
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist '
automatic_scaling = true
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
dt = 2e-5
end_time = 3.5e-3
fixed_point_max_its = 20
accept_on_max_fixed_point_iteration = true
fixed_point_rel_tol = 1e-8
fixed_point_abs_tol = 1e-10
[]
[Outputs]
exodus = true
print_linear_residuals = false
[]