diff --git a/modules/solid_mechanics/doc/content/source/vectorpostprocessors/CrackFrontNonlocalScalar.md b/modules/solid_mechanics/doc/content/source/vectorpostprocessors/CrackFrontNonlocalScalar.md new file mode 100644 index 000000000000..c309193409ab --- /dev/null +++ b/modules/solid_mechanics/doc/content/source/vectorpostprocessors/CrackFrontNonlocalScalar.md @@ -0,0 +1,19 @@ +# CrackFrontNonlocalScalar + +!syntax description /VectorPostprocessors/CrackFrontNonlocalScalar + +## Description + +This object computes the average scalar material property at the crack front points defined by [CrackFrontDefinition.md]. The main use case for this `VectorPostprocessor` is to compute an average fracture toughness or $k_crit$ at the crack front for use with the `MeshCut2DFractureUserObject` to grow cracks. This allows for spatially varying $k_crit$ values defined by a `Material`. + +`CrackFrontNonlocalScalar` computes an average of the material property over a box-shaped domain at each crack tip point that is centered on the crack tip and extends [!param](/VectorPostprocessors/CrackFrontNonlocalScalar/box_length) in front of the crack tip. The [!param](/VectorPostprocessors/CrackFrontNonlocalScalar/box_height) is the dimension normal to the crack face, and [!param](/VectorPostprocessors/CrackFrontNonlocalScalar/box_width) is the dimension tangential to the crack face. [!param](/VectorPostprocessors/CrackFrontNonlocalScalar/box_width) is not used in 2D problems. + +In the following input file example, the mesh consists of a 3D plate with a hole in the middle. The CrackFrontDefinition defines crack points around the center line of the hole, `boundary=1001`. This `CrackFrontNonlocalScalar` averages a material property named `scalar_kcrit` over each 3D box at each crack front point. + +!listing crack_front_nonlocal_materials.i block=UserObjects VectorPostprocessors/CrackFrontNonlocalKcrit + +!syntax parameters /VectorPostprocessors/CrackFrontNonlocalScalar + +!syntax inputs /VectorPostprocessors/CrackFrontNonlocalScalar + +!syntax children /VectorPostprocessors/CrackFrontNonlocalScalar diff --git a/modules/solid_mechanics/doc/content/source/vectorpostprocessors/CrackFrontNonlocalStress.md b/modules/solid_mechanics/doc/content/source/vectorpostprocessors/CrackFrontNonlocalStress.md index 2d8277c38138..67519780f161 100644 --- a/modules/solid_mechanics/doc/content/source/vectorpostprocessors/CrackFrontNonlocalStress.md +++ b/modules/solid_mechanics/doc/content/source/vectorpostprocessors/CrackFrontNonlocalStress.md @@ -13,9 +13,9 @@ where $\boldsymbol{n}$ is the normal direction vector and $\boldsymbol{\sigma}$ Data produced by this VectorPostprocessor is used in conjunction with the [InteractionIntegral.md] in the XFEM module by the `MeshCut2DFractureUserObject` to grow cracks. The `CrackFrontNonlocalStress` is useful for extending cracks that are approaching free surfaces because the interaction integrals computing `KI` and `KII` are affected when the integration domain intersects the free surface. `CrackFrontNonlocalStress` computes an average of the stress over a box-shaped domain at each crack tip point that is centered on the crack tip and extends [!param](/VectorPostprocessors/CrackFrontNonlocalStress/box_length) in front of the crack tip. The [!param](/VectorPostprocessors/CrackFrontNonlocalStress/box_height) is the dimension normal to the crack face, and [!param](/VectorPostprocessors/CrackFrontNonlocalStress/box_width) is the dimension tangential to the crack face. [!param](/VectorPostprocessors/CrackFrontNonlocalStress/box_width) is not used in 2D problems. Unlike the other stress integrals, like the [InteractionIntegral.md], that use the [CrackFrontDefinition.md], `CrackFrontNonlocalStress` is not set-up by the [/DomainIntegralAction.md]. -In the following input file example, the mesh consists of a 3D plate with a hole in the middle. The CrackFrontDefinition defines crack points around the center line of the hole, `boundary=1001`. This `CrackFrontNonlocalStress` integrates a generic stress field set-up in the input file over the box dimensions shown. +In the following input file example, the mesh consists of a 3D plate with a hole in the middle. The CrackFrontDefinition defines crack points around the center line of the hole, `boundary=1001`. The `CrackFrontNonlocalStress` integrates a generic stress field set-up in the input file over the box dimensions at each crack front point. -!listing crack_front_nonlocal_stress.i block=UserObjects VectorPostprocessors +!listing crack_front_nonlocal_materials.i block=UserObjects VectorPostprocessors/CrackFrontNonlocalStress !syntax parameters /VectorPostprocessors/CrackFrontNonlocalStress diff --git a/modules/xfem/doc/content/source/userobjects/MeshCut2DFractureUserObject.md b/modules/xfem/doc/content/source/userobjects/MeshCut2DFractureUserObject.md index 3343f303df2e..74e10dc2e11e 100644 --- a/modules/xfem/doc/content/source/userobjects/MeshCut2DFractureUserObject.md +++ b/modules/xfem/doc/content/source/userobjects/MeshCut2DFractureUserObject.md @@ -12,7 +12,7 @@ The crack propagates if the failure criterion is met, given by: K_c \le \sqrt{K^2_I+K^2_{II}} \end{equation} -where $K_I$ and $K_{II}$ are the mode I and II stress intensity factors provided by the fracture integral and the material property $K_c$ is given defined in the input file by [!param](/UserObjects/MeshCut2DFractureUserObject/k_critical). The crack growth direction is given by the direction the maximized the crack-tip hoop stress, given by Equation 5 in [!cite](jiang2020). The growth increment is a user provided input given in the defined by [!param](/UserObjects/MeshCut2DFractureUserObject/growth_increment). The fracture integrals $K_I$ and $K_{II}$ are obtained from the [InteractionIntegral.md] vectorpostprocessor specified in the input file by [!param](/UserObjects/MeshCut2DFractureUserObject/ki_vectorpostprocessor) and [!param](/UserObjects/MeshCut2DFractureUserObject/kii_vectorpostprocessor). Defaults for [!param](/UserObjects/MeshCut2DFractureUserObject/ki_vectorpostprocessor) and [!param](/UserObjects/MeshCut2DFractureUserObject/kii_vectorpostprocessor) use the names produced by the [/DomainIntegralAction.md] which is the standard way to set-up the [InteractionIntegral.md]. +where $K_I$ and $K_{II}$ are the mode I and II stress intensity factors provided by the fracture integral and the material property $K_c$ is defined in the input file with a constant value for the entire domain using [!param](/UserObjects/MeshCut2DFractureUserObject/k_critical) or from a [CrackFrontNonlocalScalar.md] VectorPostprocessor that samples a material property at each crack front point and is specified by [!param](/UserObjects/MeshCut2DFractureUserObject/k_critical_vectorpostprocessor) and [!param](/UserObjects/MeshCut2DFractureUserObject/k_critical_vector_name). If both `k_critical` and `k_critical_vectorpostprocessor` are defined, the lower $K_c$ is used. The crack growth direction is given by the direction that maximizes the crack-tip hoop stress, given by Equation 5 in [!cite](jiang2020). The growth increment is a user provided input given by [!param](/UserObjects/MeshCut2DFractureUserObject/growth_increment). The fracture integrals $K_I$ and $K_{II}$ are obtained from the [InteractionIntegral.md] vectorpostprocessor specified in the input file by [!param](/UserObjects/MeshCut2DFractureUserObject/ki_vectorpostprocessor) and [!param](/UserObjects/MeshCut2DFractureUserObject/kii_vectorpostprocessor). Defaults for [!param](/UserObjects/MeshCut2DFractureUserObject/ki_vectorpostprocessor) and [!param](/UserObjects/MeshCut2DFractureUserObject/kii_vectorpostprocessor) use the names produced by the [/DomainIntegralAction.md] which is the standard way to set-up the [InteractionIntegral.md]. Near a free surface, the integration volumes of the rings used to compute the `InteractionIntegral` will intersect the surface, leading to a reduction in the fracture integral values. This can lead to cracks becoming unable to farther propagate as they approach free surfaces. For these cases, a maximum stress criterion computed using [CrackFrontNonlocalStress.md] vectorpostprocessor can be used for crack growth using an additional failure criterion given by: