- crack_front_definitionThe CrackFrontDefinition user object name
C++ Type:UserObjectName
Description:The CrackFrontDefinition user object name
- variableThe name of a variable whose value at the crack front is to be reported
C++ Type:VariableName
Description:The name of a variable whose value at the crack front is to be reported
Crack Front Data
Determines which nodes are along the crack front
Description
This object is a utility function used to output values of nodal variables at nodes along a crack front used in a fracture domain integral calculation. This is useful for tying information about solution variables to the computed fracture integrals at specific points. The definition of the crack points must be provided using a CrackFrontDefinition object, which is typically set up automatically using a DomainIntegralAction.
Example Input File Syntax
[./disp_x_centercrack]
type = CrackFrontData
crack_front_definition = crackFrontDefinition
variable = disp_x
crack_front_point_index = 1
[../]
(modules/tensor_mechanics/test/tests/j_integral/j_integral_3d.i)/opt/civet/build_0/moose/modules/tensor_mechanics/test/tests/j_integral/j_integral_3d.i
#This tests the J-Integral evaluation capability.
#This is a 3d extrusion of a 2d plane strain model with 2 elements
#through the thickness, and calculates the J-Integrals using options
#to treat it as 3d.
#The analytic solution for J1 is 2.434. This model
#converges to that solution with a refined mesh.
#Reference: National Agency for Finite Element Methods and Standards (U.K.):
#Test 1.1 from NAFEMS publication "Test Cases in Linear Elastic Fracture
#Mechanics" R0020.
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[Mesh]
file = crack3d.e
[]
[AuxVariables]
[./SED]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Functions]
[./rampConstant]
type = PiecewiseLinear
x = '0. 1.'
y = '0. 1.'
scale_factor = -1e2
[../]
[]
[DomainIntegral]
integrals = JIntegral
boundary = 800
crack_direction_method = CrackDirectionVector
crack_direction_vector = '1 0 0'
radius_inner = '4.0 5.5'
radius_outer = '5.5 7.0'
output_variable = 'disp_x'
output_q = false
incremental = true
[]
[Modules/TensorMechanics/Master]
[./master]
strain = FINITE
add_variables = true
incremental = true
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
[../]
[]
[AuxKernels]
[./SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
[../]
[]
[BCs]
[./crack_y]
type = DirichletBC
variable = disp_y
boundary = 100
value = 0.0
[../]
[./no_z]
type = DirichletBC
variable = disp_z
boundary = 500
value = 0.0
[../]
[./no_z2]
type = DirichletBC
variable = disp_z
boundary = 510
value = 0.0
[../]
[./no_x]
type = DirichletBC
variable = disp_x
boundary = 700
value = 0.0
[../]
[./Pressure]
[./Side1]
boundary = 400
function = rampConstant
[../]
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 207000
poissons_ratio = 0.3
[../]
[./elastic_stress]
type = ComputeFiniteStrainElasticStress
[../]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 50
nl_max_its = 20
nl_abs_tol = 1e-5
l_tol = 1e-2
start_time = 0.0
dt = 1
end_time = 1
num_steps = 1
[]
[Postprocessors]
[./disp_x_centercrack]
type = CrackFrontData
crack_front_definition = crackFrontDefinition
variable = disp_x
crack_front_point_index = 1
[../]
[]
[Outputs]
file_base = j_integral_3d_out
exodus = true
csv = true
[]
Input Parameters
- crack_front_point_indexThe index of the point on the crack front where data is to be reported
C++ Type:unsigned int
Options:
Description:The index of the point on the crack front where data is to be reported
- execute_onTIMESTEP_ENDThe list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM.
Default:TIMESTEP_END
C++ Type:ExecFlagEnum
Options:NONE INITIAL LINEAR NONLINEAR TIMESTEP_END TIMESTEP_BEGIN FINAL CUSTOM TRANSFER
Description:The list of flag(s) indicating when this object should be executed, the available options include NONE, INITIAL, LINEAR, NONLINEAR, TIMESTEP_END, TIMESTEP_BEGIN, FINAL, CUSTOM.
- scale_factor1A scale factor to be applied to the reported quantity
Default:1
C++ Type:double
Options:
Description:A scale factor to be applied to the reported quantity
Optional Parameters
- allow_duplicate_execution_on_initialFalseIn the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable).
Default:False
C++ Type:bool
Options:
Description:In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable).
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector
Options:
Description:Adds user-defined labels for accessing object parameters via control logic.
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Options:
Description:Set the enabled status of the MooseObject.
- force_preauxFalseForces the GeneralUserObject to be executed in PREAUX
Default:False
C++ Type:bool
Options:
Description:Forces the GeneralUserObject to be executed in PREAUX
- outputsVector of output names were you would like to restrict the output of variables(s) associated with this object
C++ Type:std::vector
Options:
Description:Vector of output names were you would like to restrict the output of variables(s) associated with this object
- 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
Options:
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
Input Files
- modules/tensor_mechanics/test/tests/j_integral/j_integral_3d_mouth_dir_end_dir_vec.i
- modules/solid_mechanics/test/tests/j_integral/j_integral_3d_mouth_dir.i
- modules/solid_mechanics/test/tests/j_integral/j_integral_3d.i
- modules/tensor_mechanics/test/tests/j_integral/j_integral_3d_mouth_dir.i
- modules/tensor_mechanics/test/tests/j_integral/j_integral_3d.i
- modules/solid_mechanics/test/tests/j_integral/j_integral_3d_mouth_dir_end_dir_vec.i
modules/tensor_mechanics/test/tests/j_integral/j_integral_3d_mouth_dir_end_dir_vec.i
#This tests the J-Integral evaluation capability.
#This is a 3d extrusion of a 2d plane strain model with 2 elements
#through the thickness, and calculates the J-Integrals using options
#to treat it as 3d.
#Crack direction is defined using the crack mouth coordinates.
#The analytic solution for J1 is 2.434. This model
#converges to that solution with a refined mesh.
#Reference: National Agency for Finite Element Methods and Standards (U.K.):
#Test 1.1 from NAFEMS publication "Test Cases in Linear Elastic Fracture
#Mechanics" R0020.
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[Mesh]
file = crack3d.e
[]
[AuxVariables]
[./SED]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Functions]
[./rampConstant]
type = PiecewiseLinear
x = '0. 1.'
y = '0. 1.'
scale_factor = -1e2
[../]
[]
[DomainIntegral]
integrals = JIntegral
boundary = 800
crack_direction_method = CrackMouth
crack_mouth_boundary = 900
crack_end_direction_method = CrackDirectionVector
crack_direction_vector_end_1 = '1.0 0.0 0.0'
crack_direction_vector_end_2 = '1.0 0.0 0.0'
radius_inner = '4.0 5.5'
radius_outer = '5.5 7.0'
output_variable = 'disp_x'
output_q = false
incremental = true
[]
[Modules/TensorMechanics/Master]
[./master]
strain = FINITE
add_variables = true
incremental = true
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
[../]
[]
[AuxKernels]
[./SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
[../]
[]
[BCs]
[./crack_y]
type = DirichletBC
variable = disp_y
boundary = 100
value = 0.0
[../]
[./no_z]
type = DirichletBC
variable = disp_z
boundary = 500
value = 0.0
[../]
[./no_z2]
type = DirichletBC
variable = disp_z
boundary = 510
value = 0.0
[../]
[./no_x]
type = DirichletBC
variable = disp_x
boundary = 700
value = 0.0
[../]
[./Pressure]
[./Side1]
boundary = 400
function = rampConstant
[../]
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 207000
poissons_ratio = 0.3
[../]
[./elastic_stress]
type = ComputeFiniteStrainElasticStress
[../]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 50
nl_max_its = 20
nl_abs_tol = 1e-5
l_tol = 1e-2
start_time = 0.0
dt = 1
end_time = 1
num_steps = 1
[]
[Postprocessors]
[./disp_x_centercrack]
type = CrackFrontData
crack_front_definition = crackFrontDefinition
variable = disp_x
crack_front_point_index = 1
[../]
[]
[Outputs]
file_base = j_integral_3d_mouth_dir_end_dir_vec_out
exodus = true
csv = true
[]
modules/solid_mechanics/test/tests/j_integral/j_integral_3d_mouth_dir.i
#This tests the J-Integral evaluation capability.
#This is a 3d extrusion of a 2d plane strain model with 2 elements
#through the thickness, and calculates the J-Integrals using options
#to treat it as 3d.
#Crack direction is defined using the crack mouth coordinates.
#The analytic solution for J1 is 2.434. This model
#converges to that solution with a refined mesh.
#Reference: National Agency for Finite Element Methods and Standards (U.K.):
#Test 1.1 from NAFEMS publication "Test Cases in Linear Elastic Fracture
#Mechanics" R0020.
[GlobalParams]
order = FIRST
# order = SECOND
family = LAGRANGE
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
[]
[Mesh]
file = crack3d.e
displacements = 'disp_x disp_y disp_z'
# partitioner = centroid
# centroid_partitioner_direction = z
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[AuxVariables]
[./stress_xx] # stress aux variables are defined for output; this is a way to get integration point variables to the output file
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./vonmises]
order = CONSTANT
family = MONOMIAL
[../]
[./SED]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Functions]
[./rampConstant]
type = PiecewiseLinear
x = '0. 1.'
y = '0. 1.'
scale_factor = -1e2
[../]
[]
[DomainIntegral]
integrals = JIntegral
boundary = 800
crack_direction_method = CrackMouth
crack_mouth_boundary = 900
radius_inner = '4.0 5.5'
radius_outer = '5.5 7.0'
output_variable = 'disp_x'
incremental = true
solid_mechanics = true
[]
[SolidMechanics]
[./solid]
[../]
[]
[AuxKernels]
[./stress_xx] # computes stress components for output
type = MaterialTensorAux
tensor = stress
variable = stress_xx
index = 0
execute_on = timestep_end # for efficiency, only compute at the end of a timestep
[../]
[./stress_yy]
type = MaterialTensorAux
tensor = stress
variable = stress_yy
index = 1
execute_on = timestep_end
[../]
[./stress_zz]
type = MaterialTensorAux
tensor = stress
variable = stress_zz
index = 2
execute_on = timestep_end
[../]
[./vonmises]
type = MaterialTensorAux
tensor = stress
variable = vonmises
quantity = vonmises
execute_on = timestep_end
[../]
[./SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
[../]
[]
[BCs]
# [./pin_x]
# type = DirichletBC
# variable = disp_x
# boundary = 200
# value = 0.0
# [../]
#
# [./pin_y]
# type = DirichletBC
# variable = disp_y
# boundary = 200
# value = 0.0
# [../]
[./crack_y]
type = DirichletBC
variable = disp_y
boundary = 100
value = 0.0
[../]
# [./nocrack_y]
# type = DirichletBC
# variable = disp_y
# boundary = 600
# value = 0.0
# [../]
# [./no_x]
# type = DirichletBC
# variable = disp_x
# boundary = 500
# value = 0.0
# [../]
# [./no_y]
# type = DirichletBC
# variable = disp_y
# boundary = 500
# value = 0.0
# [../]
[./no_z]
type = DirichletBC
variable = disp_z
boundary = 500
value = 0.0
[../]
[./no_z2]
type = DirichletBC
variable = disp_z
boundary = 510
value = 0.0
[../]
[./no_x]
type = DirichletBC
variable = disp_x
boundary = 700
value = 0.0
[../]
[./Pressure]
[./Side1]
boundary = 400
function = rampConstant
[../]
[../]
[] # BCs
[Materials]
[./stiffStuff]
type = Elastic
block = 1
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
youngs_modulus = 207000
poissons_ratio = 0.3
thermal_expansion = 1e-5
compute_JIntegral = true
[../]
[]
[Executioner]
type = Transient
# Two sets of linesearch options are for petsc 3.1 and 3.3 respectively
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 50
nl_max_its = 20
nl_abs_tol = 1e-5
l_tol = 1e-2
start_time = 0.0
dt = 1
end_time = 1
num_steps = 1
[]
[Postprocessors]
[./disp_x_centercrack]
type = CrackFrontData
crack_front_definition = crackFrontDefinition
variable = disp_x
crack_front_point_index = 1
[../]
[]
[Outputs]
file_base = j_integral_3d_mouth_dir_out
exodus = true
csv = true
[]
modules/solid_mechanics/test/tests/j_integral/j_integral_3d.i
#This tests the J-Integral evaluation capability.
#This is a 3d extrusion of a 2d plane strain model with 2 elements
#through the thickness, and calculates the J-Integrals using options
#to treat it as 3d.
#The analytic solution for J1 is 2.434. This model
#converges to that solution with a refined mesh.
#Reference: National Agency for Finite Element Methods and Standards (U.K.):
#Test 1.1 from NAFEMS publication "Test Cases in Linear Elastic Fracture
#Mechanics" R0020.
[GlobalParams]
order = FIRST
# order = SECOND
family = LAGRANGE
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
[]
[Mesh]
file = crack3d.e
displacements = 'disp_x disp_y disp_z'
# partitioner = centroid
# centroid_partitioner_direction = z
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[AuxVariables]
[./stress_xx] # stress aux variables are defined for output; this is a way to get integration point variables to the output file
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./vonmises_stress]
order = CONSTANT
family = MONOMIAL
[../]
[./SED]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Functions]
[./rampConstant]
type = PiecewiseLinear
x = '0. 1.'
y = '0. 1.'
scale_factor = -1e2
[../]
[]
[DomainIntegral]
integrals = JIntegral
boundary = 800
crack_direction_method = CrackDirectionVector
crack_direction_vector = '1 0 0'
radius_inner = '4.0 5.5'
radius_outer = '5.5 7.0'
output_variable = 'disp_x'
incremental = true
solid_mechanics = true
[]
[SolidMechanics]
[./solid]
[../]
[]
[AuxKernels]
[./stress_xx] # computes stress components for output
type = MaterialTensorAux
tensor = stress
variable = stress_xx
index = 0
execute_on = timestep_end # for efficiency, only compute at the end of a timestep
[../]
[./stress_yy]
type = MaterialTensorAux
tensor = stress
variable = stress_yy
index = 1
execute_on = timestep_end
[../]
[./stress_zz]
type = MaterialTensorAux
tensor = stress
variable = stress_zz
index = 2
execute_on = timestep_end
[../]
[./vonmises]
type = MaterialTensorAux
tensor = stress
variable = vonmises_stress
quantity = vonmises
execute_on = timestep_end
[../]
[./SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
[../]
[]
[BCs]
# [./pin_x]
# type = DirichletBC
# variable = disp_x
# boundary = 200
# value = 0.0
# [../]
#
# [./pin_y]
# type = DirichletBC
# variable = disp_y
# boundary = 200
# value = 0.0
# [../]
[./crack_y]
type = DirichletBC
variable = disp_y
boundary = 100
value = 0.0
[../]
# [./nocrack_y]
# type = DirichletBC
# variable = disp_y
# boundary = 600
# value = 0.0
# [../]
# [./no_x]
# type = DirichletBC
# variable = disp_x
# boundary = 500
# value = 0.0
# [../]
# [./no_y]
# type = DirichletBC
# variable = disp_y
# boundary = 500
# value = 0.0
# [../]
[./no_z]
type = DirichletBC
variable = disp_z
boundary = 500
value = 0.0
[../]
[./no_z2]
type = DirichletBC
variable = disp_z
boundary = 510
value = 0.0
[../]
[./no_x]
type = DirichletBC
variable = disp_x
boundary = 700
value = 0.0
[../]
[./Pressure]
[./Side1]
boundary = 400
function = rampConstant
[../]
[../]
[] # BCs
[Materials]
[./stiffStuff]
type = Elastic
block = 1
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
youngs_modulus = 207000
poissons_ratio = 0.3
thermal_expansion = 1e-5
compute_JIntegral = true
[../]
[]
[Executioner]
type = Transient
# Two sets of linesearch options are for petsc 3.1 and 3.3 respectively
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 50
nl_max_its = 20
nl_abs_tol = 1e-5
l_tol = 1e-2
start_time = 0.0
dt = 1
end_time = 1
num_steps = 1
[]
[Postprocessors]
[./disp_x_centercrack]
type = CrackFrontData
crack_front_definition = crackFrontDefinition
variable = disp_x
crack_front_point_index = 1
[../]
[]
[Outputs]
file_base = j_integral_3d_out
exodus = true
csv = true
[]
modules/tensor_mechanics/test/tests/j_integral/j_integral_3d_mouth_dir.i
#This tests the J-Integral evaluation capability.
#This is a 3d extrusion of a 2d plane strain model with 2 elements
#through the thickness, and calculates the J-Integrals using options
#to treat it as 3d.
#Crack direction is defined using the crack mouth coordinates.
#The analytic solution for J1 is 2.434. This model
#converges to that solution with a refined mesh.
#Reference: National Agency for Finite Element Methods and Standards (U.K.):
#Test 1.1 from NAFEMS publication "Test Cases in Linear Elastic Fracture
#Mechanics" R0020.
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[Mesh]
file = crack3d.e
[]
[AuxVariables]
[./SED]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Functions]
[./rampConstant]
type = PiecewiseLinear
x = '0. 1.'
y = '0. 1.'
scale_factor = -1e2
[../]
[]
[DomainIntegral]
integrals = JIntegral
boundary = 800
crack_direction_method = CrackMouth
crack_mouth_boundary = 900
radius_inner = '4.0 5.5'
radius_outer = '5.5 7.0'
output_variable = 'disp_x'
output_q = false
incremental = true
[]
[Modules/TensorMechanics/Master]
[./master]
strain = FINITE
add_variables = true
incremental = true
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
[../]
[]
[AuxKernels]
[./SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
[../]
[]
[BCs]
[./crack_y]
type = DirichletBC
variable = disp_y
boundary = 100
value = 0.0
[../]
[./no_z]
type = DirichletBC
variable = disp_z
boundary = 500
value = 0.0
[../]
[./no_z2]
type = DirichletBC
variable = disp_z
boundary = 510
value = 0.0
[../]
[./no_x]
type = DirichletBC
variable = disp_x
boundary = 700
value = 0.0
[../]
[./Pressure]
[./Side1]
boundary = 400
function = rampConstant
[../]
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 207000
poissons_ratio = 0.3
[../]
[./elastic_stress]
type = ComputeFiniteStrainElasticStress
[../]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 50
nl_max_its = 20
nl_abs_tol = 1e-5
l_tol = 1e-2
start_time = 0.0
dt = 1
end_time = 1
num_steps = 1
[]
[Postprocessors]
[./disp_x_centercrack]
type = CrackFrontData
crack_front_definition = crackFrontDefinition
variable = disp_x
crack_front_point_index = 1
[../]
[]
[Outputs]
file_base = j_integral_3d_mouth_dir_out
exodus = true
csv = true
[]
modules/tensor_mechanics/test/tests/j_integral/j_integral_3d.i
#This tests the J-Integral evaluation capability.
#This is a 3d extrusion of a 2d plane strain model with 2 elements
#through the thickness, and calculates the J-Integrals using options
#to treat it as 3d.
#The analytic solution for J1 is 2.434. This model
#converges to that solution with a refined mesh.
#Reference: National Agency for Finite Element Methods and Standards (U.K.):
#Test 1.1 from NAFEMS publication "Test Cases in Linear Elastic Fracture
#Mechanics" R0020.
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[Mesh]
file = crack3d.e
[]
[AuxVariables]
[./SED]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Functions]
[./rampConstant]
type = PiecewiseLinear
x = '0. 1.'
y = '0. 1.'
scale_factor = -1e2
[../]
[]
[DomainIntegral]
integrals = JIntegral
boundary = 800
crack_direction_method = CrackDirectionVector
crack_direction_vector = '1 0 0'
radius_inner = '4.0 5.5'
radius_outer = '5.5 7.0'
output_variable = 'disp_x'
output_q = false
incremental = true
[]
[Modules/TensorMechanics/Master]
[./master]
strain = FINITE
add_variables = true
incremental = true
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress'
[../]
[]
[AuxKernels]
[./SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
[../]
[]
[BCs]
[./crack_y]
type = DirichletBC
variable = disp_y
boundary = 100
value = 0.0
[../]
[./no_z]
type = DirichletBC
variable = disp_z
boundary = 500
value = 0.0
[../]
[./no_z2]
type = DirichletBC
variable = disp_z
boundary = 510
value = 0.0
[../]
[./no_x]
type = DirichletBC
variable = disp_x
boundary = 700
value = 0.0
[../]
[./Pressure]
[./Side1]
boundary = 400
function = rampConstant
[../]
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 207000
poissons_ratio = 0.3
[../]
[./elastic_stress]
type = ComputeFiniteStrainElasticStress
[../]
[]
[Executioner]
type = Transient
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 50
nl_max_its = 20
nl_abs_tol = 1e-5
l_tol = 1e-2
start_time = 0.0
dt = 1
end_time = 1
num_steps = 1
[]
[Postprocessors]
[./disp_x_centercrack]
type = CrackFrontData
crack_front_definition = crackFrontDefinition
variable = disp_x
crack_front_point_index = 1
[../]
[]
[Outputs]
file_base = j_integral_3d_out
exodus = true
csv = true
[]
modules/solid_mechanics/test/tests/j_integral/j_integral_3d_mouth_dir_end_dir_vec.i
#This tests the J-Integral evaluation capability.
#This is a 3d extrusion of a 2d plane strain model with 2 elements
#through the thickness, and calculates the J-Integrals using options
#to treat it as 3d.
#Crack direction is defined using the crack mouth coordinates.
#The analytic solution for J1 is 2.434. This model
#converges to that solution with a refined mesh.
#Reference: National Agency for Finite Element Methods and Standards (U.K.):
#Test 1.1 from NAFEMS publication "Test Cases in Linear Elastic Fracture
#Mechanics" R0020.
[GlobalParams]
order = FIRST
# order = SECOND
family = LAGRANGE
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
[]
[Mesh]
file = crack3d.e
displacements = 'disp_x disp_y disp_z'
# partitioner = centroid
# centroid_partitioner_direction = z
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[]
[AuxVariables]
[./stress_xx] # stress aux variables are defined for output; this is a way to get integration point variables to the output file
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./vonmises]
order = CONSTANT
family = MONOMIAL
[../]
[./SED]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Functions]
[./rampConstant]
type = PiecewiseLinear
x = '0. 1.'
y = '0. 1.'
scale_factor = -1e2
[../]
[]
[DomainIntegral]
integrals = JIntegral
boundary = 800
crack_direction_method = CrackMouth
crack_mouth_boundary = 900
crack_end_direction_method = CrackDirectionVector
crack_direction_vector_end_1 = '1.0 0.0 0.0'
crack_direction_vector_end_2 = '1.0 0.0 0.0'
radius_inner = '4.0 5.5'
radius_outer = '5.5 7.0'
output_variable = 'disp_x'
incremental = true
solid_mechanics = true
[]
[SolidMechanics]
[./solid]
[../]
[]
[AuxKernels]
[./stress_xx] # computes stress components for output
type = MaterialTensorAux
tensor = stress
variable = stress_xx
index = 0
execute_on = timestep_end # for efficiency, only compute at the end of a timestep
[../]
[./stress_yy]
type = MaterialTensorAux
tensor = stress
variable = stress_yy
index = 1
execute_on = timestep_end
[../]
[./stress_zz]
type = MaterialTensorAux
tensor = stress
variable = stress_zz
index = 2
execute_on = timestep_end
[../]
[./vonmises]
type = MaterialTensorAux
tensor = stress
variable = vonmises
quantity = vonmises
execute_on = timestep_end
[../]
[./SED]
type = MaterialRealAux
variable = SED
property = strain_energy_density
execute_on = timestep_end
[../]
[]
[BCs]
# [./pin_x]
# type = DirichletBC
# variable = disp_x
# boundary = 200
# value = 0.0
# [../]
#
# [./pin_y]
# type = DirichletBC
# variable = disp_y
# boundary = 200
# value = 0.0
# [../]
[./crack_y]
type = DirichletBC
variable = disp_y
boundary = 100
value = 0.0
[../]
# [./nocrack_y]
# type = DirichletBC
# variable = disp_y
# boundary = 600
# value = 0.0
# [../]
# [./no_x]
# type = DirichletBC
# variable = disp_x
# boundary = 500
# value = 0.0
# [../]
# [./no_y]
# type = DirichletBC
# variable = disp_y
# boundary = 500
# value = 0.0
# [../]
[./no_z]
type = DirichletBC
variable = disp_z
boundary = 500
value = 0.0
[../]
[./no_z2]
type = DirichletBC
variable = disp_z
boundary = 510
value = 0.0
[../]
[./no_x]
type = DirichletBC
variable = disp_x
boundary = 700
value = 0.0
[../]
[./Pressure]
[./Side1]
boundary = 400
function = rampConstant
[../]
[../]
[] # BCs
[Materials]
[./stiffStuff]
type = Elastic
block = 1
disp_x = disp_x
disp_y = disp_y
disp_z = disp_z
youngs_modulus = 207000
poissons_ratio = 0.3
thermal_expansion = 1e-5
compute_JIntegral = true
[../]
[]
[Executioner]
type = Transient
# Two sets of linesearch options are for petsc 3.1 and 3.3 respectively
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart'
petsc_options_value = '101'
line_search = 'none'
l_max_its = 50
nl_max_its = 20
nl_abs_tol = 1e-5
l_tol = 1e-2
start_time = 0.0
dt = 1
end_time = 1
num_steps = 1
[]
[Postprocessors]
[./disp_x_centercrack]
type = CrackFrontData
crack_front_definition = crackFrontDefinition
variable = disp_x
crack_front_point_index = 1
[../]
[]
[Outputs]
file_base = j_integral_3d_mouth_dir_end_dir_vec_out
exodus = true
csv = true
[]