- blockThe list of blocks (ids or names) that this object will be applied
C++ Type:std::vector<SubdomainName>
Controllable:No
Description:The list of blocks (ids or names) that this object will be applied
- boundaryThe list of boundaries (ids or names) from the mesh where this object applies
C++ Type:std::vector<BoundaryName>
Controllable:No
Description:The list of boundaries (ids or names) from the mesh where this object applies
- 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
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
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
Controllable:No
Description:An optional suffix parameter that can be appended to any declared properties. The suffix will be prepended with a '_' character.
- min_TMinimum allowable value for temperature for evaluating properties when provided by functions
C++ Type:double
Controllable:No
Description:Minimum allowable value for temperature for evaluating properties when provided by functions
- 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
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.
- specific_heatThe specific heat value
C++ Type:double
Controllable:No
Description:The specific heat value
- specific_heat_temperature_functionSpecific heat as a function of temperature.
C++ Type:FunctionName
Controllable:No
Description:Specific heat as a function of temperature.
- tempCoupled Temperature
C++ Type:std::vector<VariableName>
Controllable:No
Description:Coupled Temperature
- thermal_conductivityThe thermal conductivity value
C++ Type:double
Controllable:No
Description:The thermal conductivity value
- thermal_conductivity_temperature_functionThermal conductivity as a function of temperature.
C++ Type:FunctionName
Controllable:No
Description:Thermal conductivity as a function of temperature.
- use_interpolated_stateFalseFor the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Default:False
C++ Type:bool
Controllable:No
Description:For the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
HeatConductionMaterial
General-purpose material model for heat conduction
Description
HeatConductionMaterial
is a general-purpose material model for heat conduction. It sets the thermal conductivity and specific heat at integration points.
Input Parameters
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector<std::string>
Controllable:No
Description:Adds user-defined labels for accessing object parameters via control logic.
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Controllable:Yes
Description:Set the enabled status of the MooseObject.
- implicitTrueDetermines whether this object is calculated using an implicit or explicit form
Default:True
C++ Type:bool
Controllable:No
Description:Determines whether this object is calculated using an implicit or explicit form
- seed0The seed for the master random number generator
Default:0
C++ Type:unsigned int
Controllable:No
Description:The seed for the master random number generator
- use_displaced_meshFalseWhether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Default:False
C++ Type:bool
Controllable:No
Description:Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Advanced Parameters
- output_propertiesList of material properties, from this material, to output (outputs must also be defined to an output type)
C++ Type:std::vector<std::string>
Controllable:No
Description:List of material properties, from this material, to output (outputs must also be defined to an output type)
- outputsnone Vector of output names where you would like to restrict the output of variables(s) associated with this object
Default:none
C++ Type:std::vector<OutputName>
Controllable:No
Description:Vector of output names where you would like to restrict the output of variables(s) associated with this object
Outputs Parameters
Input Files
- (modules/heat_transfer/test/tests/heat_conduction/min_gap/min_gap.i)
- (modules/heat_transfer/test/tests/heat_conduction/3d_quadrature_gap_heat_transfer/moving.i)
- (modules/combined/test/tests/gap_heat_transfer_mortar/small-2d/small.i)
- (modules/heat_transfer/test/tests/heat_conduction_patch/heat_conduction_patch_rz_quad8.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_mortar/ref-displaced.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_mortar/bc_gap_heat_transfer_displaced_conduction.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_htonly/planar_yz.i)
- (modules/heat_transfer/tutorials/introduction/therm_step03a.i)
- (modules/combined/test/tests/generalized_plane_strain_tm_contact/generalized_plane_strain_tm_contact.i)
- (modules/heat_transfer/test/tests/meshed_gap_thermal_contact/meshed_annulus_thermal_contact.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_mortar/modular_gap_heat_transfer_mortar.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_mortar/large_gap_heat_transfer_test_cylinder_mortar.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_htonly/corner_wrap.i)
- (modules/heat_transfer/test/tests/meshed_gap_thermal_contact/meshed_gap_thermal_contact.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_balance/large_gap_heat_transfer_test_rz_cylinder.i)
- (modules/heat_transfer/test/tests/transient_heat/transient_heat_derivatives.i)
- (modules/heat_transfer/test/tests/heat_conduction/3d_quadrature_gap_heat_transfer/second.i)
- (modules/combined/test/tests/thermo_mech/thermo_mech_smp.i)
- (modules/heat_transfer/test/tests/meshed_gap_thermal_contact/meshed_gap_thermal_contact_constant_conductance.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_mortar_action/modular_gap_heat_transfer_mortar_displaced_radiation_conduction_action.i)
- (modules/combined/test/tests/thermal_strain/thermal_strain.i)
- (modules/heat_transfer/test/tests/heat_conduction_patch/heat_conduction_patch.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_htonly/gap_heat_transfer_htonly_rz_test.i)
- (modules/combined/test/tests/thermo_mech/ad-thermo_mech.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_mortar/large_gap_heat_transfer_test_cylinder.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_radiation/cylinder.i)
- (modules/heat_transfer/test/tests/heat_conduction/2d_quadrature_gap_heat_transfer/perfectQ9.i)
- (modules/heat_transfer/test/tests/multiple_contact_pairs/multiple_contact_pairs.i)
- (modules/combined/tutorials/introduction/thermal_mechanical_contact/thermomech_cont_step01.i)
- (modules/heat_transfer/test/tests/heat_conduction/2d_quadrature_gap_heat_transfer/moving.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_htonly/1D.i)
- (modules/heat_transfer/tutorials/introduction/therm_step01.i)
- (modules/heat_transfer/test/tests/conjugate_heat_transfer/conjugate_heat_transfer.i)
- (modules/combined/test/tests/elastic_thermal_patch/elastic_thermal_weak_plane_stress_jacobian.i)
- (modules/heat_transfer/test/tests/postprocessors/ad_convective_ht_side_integral.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_mortar/modular_gap_heat_transfer_mortar_displaced_conduction.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_htonly/gap_heat_transfer_htonly_syntax.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_mortar/large_gap_heat_transfer_test_rz_cylinder_mortar.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_mortar/large_gap_heat_transfer_test_sphere.i)
- (modules/combined/test/tests/reference_residual/reference_residual.i)
- (python/peacock/tests/common/transient_heat_test.i)
- (modules/combined/test/tests/stateful_mortar_constraints/stateful_mortar_npr.i)
- (modules/combined/test/tests/adaptive_timestepping/adapt_tstep_function_change.i)
- (modules/combined/test/tests/gap_heat_transfer_mortar/finite-2d/finite.i)
- (modules/combined/test/tests/gap_heat_transfer_mortar/finite-2d/finite_rr.i)
- (modules/combined/test/tests/nodal_patch_recovery/npr_with_lower_domains.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_mortar/modular_gap_heat_transfer_mortar_displaced.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_mortar/gap_heat_transfer_mortar.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_mortar/modular_gap_heat_transfer_mortar_displaced_conduction_function.i)
- (modules/heat_transfer/test/tests/heat_conduction/2d_quadrature_gap_heat_transfer/nonmatching.i)
- (modules/heat_transfer/test/tests/heat_conduction/3d_quadrature_gap_heat_transfer/nonmatching.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_balance/large_gap_heat_transfer_test_sphere.i)
- (modules/combined/test/tests/adaptive_timestepping/adapt_tstep_function_change_restart1.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_mortar/large_gap_heat_transfer_test_cylinder_mortar_error.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_radiation/sphere.i)
- (modules/combined/tutorials/introduction/thermal_mechanical/thermomech_step01.i)
- (modules/heat_transfer/tutorials/introduction/therm_step02.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_mortar/large_gap_heat_transfer_test_sphere_mortar_error.i)
- (modules/heat_transfer/test/tests/recover/recover.i)
- (modules/heat_transfer/test/tests/heat_conduction_patch/heat_conduction_patch_hex20.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_htonly/cyl2D_yz.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_radiation/gap_heat_transfer_radiation_test.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_htonly/gap_heat_transfer_htonly_it_plot_test.i)
- (modules/heat_transfer/test/tests/heat_conduction_patch/heat_conduction_patch_rz.i)
- (modules/combined/test/tests/combined_plasticity_temperature/ad_plasticity_temperature_dep_yield.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_mortar/modular_gap_heat_transfer_mortar_displaced_radiation.i)
- (modules/combined/test/tests/fdp_geometric_coupling/fdp_geometric_coupling.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_mortar/bc_gap_heat_transfer_displaced_radiation.i)
- (modules/combined/test/tests/adaptive_timestepping/adapt_tstep_function_change_restart2.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_mortar/gap_heat_transfer_mortar_displaced.i)
- (modules/combined/test/tests/axisymmetric_2d3d_solution_function/2d.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_mortar/gap_heat_transfer_3D.i)
- (modules/combined/test/tests/gap_heat_transfer_jac/two_blocks.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_htonly/gap_heat_transfer_htonly_test.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_htonly/sphere2DRZ.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_htonly/cyl2D.i)
- (modules/heat_transfer/test/tests/radiation_transfer_action/cavity_with_pillar_vf.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_mortar_action/modular_gap_heat_transfer_mortar_displaced_conduction_UOs_function.i)
- (modules/combined/test/tests/thermal_conductivity_temperature_function_test/thermal_conductivity_temperature_function_test.i)
- (modules/combined/test/tests/heat_convection/heat_convection_function.i)
- (modules/combined/test/tests/elastic_thermal_patch/elastic_thermal_jacobian_rz_smp.i)
- (modules/combined/test/tests/elastic_thermal_patch/elastic_thermal_patch_rz_smp.i)
- (modules/combined/tutorials/introduction/thermal_mechanical_contact/thermomech_cont_step02.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_mortar/gap_heat_transfer_3D_mortar.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_htonly/planar_xy.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_htonly/cyl2D_xz.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_mortar/gap_heat_transfer_sphere3D.i)
- (modules/combined/test/tests/gap_heat_transfer_mortar/small-2d-rz/small.i)
- (modules/heat_transfer/test/tests/heat_conduction/2d_quadrature_gap_heat_transfer/gap_conductivity_property.i)
- (modules/combined/test/tests/heat_convection/heat_convection_rz_test.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_mortar_action/modular_gap_heat_transfer_mortar_displaced_radiation_conduction_action_existing_UOs.i)
- (modules/combined/test/tests/restart-transient-from-ss-with-stateful/parent_ss.i)
- (modules/heat_transfer/test/tests/heat_conduction/2d_quadrature_gap_heat_transfer/perfectQ8.i)
- (modules/combined/test/tests/elastic_thermal_patch/elastic_thermal_patch_rz.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_mortar/gap_heat_transfer_radiation_test.i)
- (modules/combined/test/tests/heat_convection/heat_convection_3d_test.i)
- (modules/combined/test/tests/inelastic_strain/creep/creep_nl1.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_mortar/modular_gap_heat_transfer_mortar_displaced_radiation_conduction.i)
- (modules/heat_transfer/tutorials/introduction/therm_step03.i)
- (modules/combined/test/tests/gap_heat_transfer_mortar/finite-2d-rz/finite_action.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_htonly/gap_heat_transfer_htonly_rspherical.i)
- (modules/combined/test/tests/restart-transient-from-ss-with-stateful/parent_tr.i)
- (modules/heat_transfer/test/tests/function_ellipsoid_heat_source/function_heat_source.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_htonly/sphere3D.i)
- (modules/combined/test/tests/heat_convection/heat_convection_rz_tf_test.i)
- (modules/combined/test/tests/gap_heat_transfer_mortar/finite-2d/finite_action.i)
- (modules/combined/test/tests/gap_heat_transfer_convex/gap_heat_transfer_convex.i)
- (modules/combined/test/tests/umat/gap_heat_transfer_umat.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_mortar/large_gap_heat_transfer_test_sphere_mortar.i)
- (modules/combined/test/tests/elastic_thermal_patch/elastic_thermal_patch.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_mortar/ref.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_mortar/large_gap_heat_transfer_test_rz_cylinder.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_htonly/cyl3D.i)
- (modules/combined/test/tests/thermo_mech/thermo_mech.i)
- (modules/combined/test/tests/adaptive_timestepping/adapt_tstep_function_force_step.i)
- (modules/combined/test/tests/gap_heat_transfer_mortar/finite-2d/finite_action_rr.i)
- (modules/combined/test/tests/elastic_thermal_patch/ad_elastic_thermal_weak_plane_stress_jacobian.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_htonly/planar_xz.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_mortar/modular_gap_heat_transfer_mortar_displaced_radiation_conduction_separate.i)
- (modules/combined/test/tests/heat_conduction_xfem/heat.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_mortar/gap_heat_transfer_sphere3D_mortar.i)
- (modules/heat_transfer/test/tests/heat_conduction/2d_quadrature_gap_heat_transfer/perfect.i)
- (modules/heat_transfer/test/tests/homogenization/heatConduction2D.i)
- (modules/combined/test/tests/combined_plasticity_temperature/plasticity_temperature_dep_yield.i)
- (modules/combined/test/tests/additive_manufacturing/check_stateful_properties.i)
- (modules/combined/test/tests/heat_convection/heat_convection_3d_tf_test.i)
- (modules/heat_transfer/test/tests/heat_conduction/2d_quadrature_gap_heat_transfer/second_order.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_balance/large_gap_heat_transfer_test_cylinder.i)
- (modules/combined/test/tests/reference_residual/reference_residual_perfgraph.i)
- (modules/heat_transfer/test/tests/transient_heat/transient_heat.i)
- (modules/heat_transfer/test/tests/convective_flux_function/convective_flux_function.i)
- (modules/heat_transfer/test/tests/recover/ad_recover.i)
- (modules/combined/test/tests/gap_heat_transfer_mortar/finite-2d-rz/finite.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_mortar_action/modular_gap_heat_transfer_mortar_displaced_radiation_conduction_verbose.i)
- (modules/combined/test/tests/gap_heat_transfer_mortar/finite-2d-rz/finite_action_al.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_mortar_action/modular_gap_heat_transfer_mortar_displaced_radiation_conduction_action_lowerd_exists.i)
- (modules/heat_transfer/tutorials/introduction/therm_step02a.i)
- (modules/combined/test/tests/gap_heat_transfer_convex/gap_heat_transfer_convex_gap_offsets.i)
(modules/heat_transfer/test/tests/heat_conduction/min_gap/min_gap.i)
[Mesh]
type = MeshGeneratorMesh
displacements = 'disp_x disp_y'
[./left_gen]
type = GeneratedMeshGenerator
dim = 2
nx = 2
ny = 3
xmin = -3
xmax = 0
ymin = -5
ymax = 5
[../]
[./right_gen]
type = GeneratedMeshGenerator
dim = 2
nx = 2
ny = 3
xmin = 3
xmax = 6
ymin = -5
ymax = 5
[../]
[./left_and_right]
type = MeshCollectionGenerator
inputs = 'left_gen right_gen'
[../]
[./leftleft]
type = SideSetsAroundSubdomainGenerator
block = 0
new_boundary = leftleft
normal = '-1 0 0'
input = left_and_right
[../]
[./leftright]
type = SideSetsAroundSubdomainGenerator
block = 0
new_boundary = leftright
normal = '1 0 0'
input = leftleft
[../]
[./right]
type = SubdomainBoundingBoxGenerator
top_right = '6 5 0'
bottom_left = '3 -5 0'
block_id = 1
input = leftright
[../]
[./rightleft]
type = SideSetsAroundSubdomainGenerator
block = 1
new_boundary = rightleft
normal = '-1 0 0'
input = right
[../]
[./rightright]
type = SideSetsAroundSubdomainGenerator
block = 1
new_boundary = rightright
normal = '1 0 0'
input = rightleft
[../]
[]
[Variables]
[./temp]
[../]
[]
[AuxVariables]
[./disp_x]
[../]
[./disp_y]
[../]
[./gap_conductance]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Functions]
[./disp_x]
type = ParsedFunction
expression = -3+t
[../]
[./left_temp]
type = ParsedFunction
expression = 1000+t
[../]
[]
[Kernels]
[./hc]
type = HeatConduction
variable = temp
[../]
[]
[AuxKernels]
[./disp_x]
type = FunctionAux
block = 1
variable = disp_x
function = disp_x
execute_on = 'INITIAL TIMESTEP_END'
[../]
[./gap_conductivity]
type = MaterialRealAux
boundary = leftright
property = gap_conductance
variable = gap_conductance
execute_on = 'INITIAL TIMESTEP_END'
[../]
[]
[BCs]
[./left]
type = FunctionDirichletBC
variable = temp
boundary = leftleft
function = left_temp
[../]
[./right]
type = DirichletBC
variable = temp
boundary = rightright
value = 400
[../]
[]
[ThermalContact]
[./left_to_right]
secondary = leftright
quadrature = true
primary = rightleft
variable = temp
min_gap = 1
min_gap_order = 1
emissivity_primary = 0
emissivity_secondary = 0
type = GapHeatTransfer
[../]
[]
[Materials]
[./hcm]
type = HeatConductionMaterial
block = '0 1'
specific_heat = 1
thermal_conductivity = 1
use_displaced_mesh = true
[../]
[]
[Postprocessors]
[./gap_conductance]
type = PointValue
point = '0 0 0'
variable = gap_conductance
[../]
[]
[Executioner]
type = Transient
dt = 0.25
end_time = 3.0
solve_type = 'PJFNK'
[]
[Outputs]
csv = true
execute_on = 'TIMESTEP_END'
[]
(modules/heat_transfer/test/tests/heat_conduction/3d_quadrature_gap_heat_transfer/moving.i)
[Mesh]
file = nonmatching.e
displacements = 'disp_x disp_y disp_z'
[]
[Variables]
[temp]
[]
[]
[AuxVariables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[Functions]
[disp_y]
type = ParsedFunction
expression = 0.1*t
[]
[left_temp]
type = ParsedFunction
expression = 1000+t
[]
[]
[Kernels]
[hc]
type = HeatConduction
variable = temp
[]
[]
[AuxKernels]
[disp_y]
type = FunctionAux
variable = disp_y
function = disp_y
block = left
execute_on = 'INITIAL TIMESTEP_BEGIN'
[]
[]
[BCs]
[left]
type = FunctionDirichletBC
variable = temp
boundary = leftleft
function = left_temp
[]
[right]
type = DirichletBC
variable = temp
boundary = rightright
value = 400
[]
[]
[ThermalContact]
[left_to_right]
type = GapHeatTransfer
variable = temp
primary = rightleft
secondary = leftright
emissivity_primary = 0
emissivity_secondary = 0
quadrature = true
[]
[]
[Materials]
[hcm]
type = HeatConductionMaterial
block = 'left right'
specific_heat = 1
thermal_conductivity = 1
use_displaced_mesh = true
[]
[]
[Postprocessors]
[left]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = leftright
diffusivity = thermal_conductivity
[]
[right]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = rightleft
diffusivity = thermal_conductivity
[]
[]
[Executioner]
type = Transient
num_steps = 9
dt = 1
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
exodus = true
[]
(modules/combined/test/tests/gap_heat_transfer_mortar/small-2d/small.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD4
order = FIRST
name = 'small'
[Mesh]
patch_size = 80
patch_update_strategy = auto
[plank]
type = GeneratedMeshGenerator
dim = 2
xmin = -0.3
xmax = 0.3
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[]
[plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[]
[block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.31
xmax = 0.91
ymin = 7.7
ymax = 8.5
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[]
[block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[]
[combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[]
[block_rename]
type = RenameBlockGenerator
input = combined
old_block = '1 2'
new_block = 'plank block'
[]
[secondary]
input = block_rename
type = LowerDBlockFromSidesetGenerator
sidesets = 'block_left'
new_block_id = '30'
new_block_name = 'frictionless_secondary_subdomain'
[]
[primary]
input = secondary
type = LowerDBlockFromSidesetGenerator
sidesets = 'plank_right'
new_block_id = '20'
new_block_name = 'frictionless_primary_subdomain'
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[disp_x]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[]
[disp_y]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[]
[temp]
order = ${order}
block = 'plank block'
scaling = 1e-1
[]
[thermal_lm]
order = ${order}
block = 'frictionless_secondary_subdomain'
scaling = 1e-7
[]
[frictionless_normal_lm]
order = ${order}
block = 'frictionless_secondary_subdomain'
use_dual = true
[]
[]
[Modules/TensorMechanics/Master]
[action]
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank block'
use_automatic_differentiation = true
[]
[]
[Kernels]
[hc]
type = ADHeatConduction
variable = temp
use_displaced_mesh = true
block = 'plank block'
[]
[]
[UserObjects]
[weighted_gap_uo]
type = LMWeightedGapUserObject
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
lm_variable = frictionless_normal_lm
disp_x = disp_x
disp_y = disp_y
[]
[]
[Constraints]
[weighted_gap_lm]
type = ComputeWeightedGapLMMechanicalContact
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
variable = frictionless_normal_lm
disp_x = disp_x
disp_y = disp_y
use_displaced_mesh = true
weighted_gap_uo = weighted_gap_uo
[]
[normal_x]
type = NormalMortarMechanicalContact
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
variable = frictionless_normal_lm
secondary_variable = disp_x
component = x
use_displaced_mesh = true
compute_lm_residuals = false
weighted_gap_uo = weighted_gap_uo
[]
[normal_y]
type = NormalMortarMechanicalContact
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
variable = frictionless_normal_lm
secondary_variable = disp_y
component = y
use_displaced_mesh = true
compute_lm_residuals = false
weighted_gap_uo = weighted_gap_uo
[]
[thermal_contact]
type = GapConductanceConstraint
variable = thermal_lm
secondary_variable = temp
k = 1
use_displaced_mesh = true
primary_boundary = plank_right
primary_subdomain = frictionless_primary_subdomain
secondary_boundary = block_left
secondary_subdomain = frictionless_secondary_subdomain
displacements = 'disp_x disp_y'
[]
[]
[BCs]
[left_temp]
type = DirichletBC
variable = temp
boundary = 'plank_left'
value = 400
[]
[right_temp]
type = DirichletBC
variable = temp
boundary = 'block_right'
value = 300
[]
[left_x]
type = DirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
[]
[left_y]
type = DirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
[]
[right_x]
type = ADFunctionDirichletBC
variable = disp_x
boundary = block_right
function = '-0.04*sin(4*(t+1.5))+0.02'
[]
[right_y]
type = ADFunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
[]
[]
[Materials]
[plank]
type = ADComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[]
[block]
type = ADComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[]
[stress]
type = ADComputeLinearElasticStress
block = 'plank block'
[]
[heat_plank]
type = ADHeatConductionMaterial
block = plank
thermal_conductivity = 2
specific_heat = 1
[]
[heat_block]
type = ADHeatConductionMaterial
block = block
thermal_conductivity = 1
specific_heat = 1
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -snes_max_it'
petsc_options_value = 'lu NONZERO 1e-15 20'
end_time = 13.5
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'none'
[]
[Postprocessors]
[nl_its]
type = NumNonlinearIterations
[]
[total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[]
[l_its]
type = NumLinearIterations
[]
[total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[]
[contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[]
[avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[]
[avg_temp]
type = ElementAverageValue
variable = temp
block = 'block'
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[]
[avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[]
[max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[]
[min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[]
[]
[Outputs]
file_base = ${name}
[comp]
type = CSV
show = 'contact avg_temp'
[]
[out]
type = CSV
file_base = '${name}_out'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/heat_transfer/test/tests/heat_conduction_patch/heat_conduction_patch_rz_quad8.i)
#
# This problem is taken from the Abaqus verification manual:
# "1.5.8 Patch test for heat transfer elements"
#
# The temperature on the exterior nodes is -2e5+200x+100y.
#
# This gives a constant flux at all Gauss points.
#
# In addition, the temperature at all nodes follows the same formula.
#
# Node x y Temperature
# 1 1e3 0 0
# 2 1.00024e3 0 48
# 3 1.00018e3 3e-2 39
# 4 1.00004e3 2e-2 10
# 9 1.00008e3 8e-2 24
# 10 1e3 1.2e-1 12
# 14 1.00016e3 8e-2 40
# 17 1.00024e3 1.2e-1 60
[Problem]
coord_type = RZ
[]
[Mesh]#Comment
file = heat_conduction_patch_rz_quad8.e
[] # Mesh
[Functions]
[./temps]
type = ParsedFunction
expression ='-2e5+200*x+100*y'
[../]
[] # Functions
[Variables]
[./temp]
order = SECOND
family = LAGRANGE
[../]
[] # Variables
[Kernels]
[./heat_r]
type = HeatConduction
variable = temp
[../]
[] # Kernels
[BCs]
[./temps]
type = FunctionDirichletBC
variable = temp
boundary = 10
function = temps
[../]
[] # BCs
[Materials]
[./heat]
type = HeatConductionMaterial
block = 1
specific_heat = 0.116
thermal_conductivity = 4.85e-4
[../]
[] # Materials
[Executioner]
type = Steady
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -ksp_gmres_restart'
petsc_options_value = 'lu 101'
line_search = 'none'
nl_abs_tol = 1e-11
nl_rel_tol = 1e-10
l_max_its = 20
[./Quadrature]
order = THIRD
[../]
[] # Executioner
[Outputs]
exodus = true
[] # Outputs
(modules/heat_transfer/test/tests/gap_heat_transfer_mortar/ref-displaced.i)
[Mesh]
file = 3blk.e
displacements = 'disp_x disp_y'
[]
[AuxVariables]
[./disp_x]
block = 1
[../]
[./disp_y]
block = 1
[../]
[]
[AuxKernels]
[./disp_x_kernel]
type = ConstantAux
variable = disp_x
value = 0.1
[../]
[./disp_y_kernel]
type = ConstantAux
variable = disp_y
value = 0
[../]
[]
[Variables]
[./temp]
order = FIRST
family = LAGRANGE
block = '1 2 3'
[../]
[]
[Materials]
[./left]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 1000
specific_heat = 1
[../]
[./right]
type = HeatConductionMaterial
block = 2
thermal_conductivity = 500
specific_heat = 1
[../]
[./middle]
type = HeatConductionMaterial
block = 3
thermal_conductivity = 100
specific_heat = 1
[../]
[]
[Kernels]
[./hc]
type = HeatConduction
variable = temp
use_displaced_mesh = true
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = temp
boundary = 'left'
value = 1
[../]
[./right]
type = DirichletBC
variable = temp
boundary = 'right'
value = 0
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
nl_rel_tol = 1e-11
l_tol = 1e-11
[]
[Outputs]
exodus = true
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_mortar/bc_gap_heat_transfer_displaced_conduction.i)
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 2blk-gap.e
[]
allow_renumbering = false
[]
[Problem]
kernel_coverage_check = false
material_coverage_check = false
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
block = '1 2'
[]
[disp_x]
order = FIRST
family = LAGRANGE
block = '1 2'
[]
[disp_y]
order = FIRST
family = LAGRANGE
block = '1 2'
[]
[]
[Materials]
[left]
type = ADHeatConductionMaterial
block = 1
thermal_conductivity = 0.01
specific_heat = 1
[]
[right]
type = ADHeatConductionMaterial
block = 2
thermal_conductivity = 0.005
specific_heat = 1
[]
[]
[Kernels]
[hc_displaced_block]
type = ADHeatConduction
variable = temp
use_displaced_mesh = true
block = '1'
[]
[hc_undisplaced_block]
type = ADHeatConduction
variable = temp
use_displaced_mesh = false
block = '2'
[]
[disp_x]
type = Diffusion
variable = disp_x
block = '1 2'
[]
[disp_y]
type = Diffusion
variable = disp_y
block = '1 2'
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 100
secondary = 101
emissivity_primary = 0.0
emissivity_secondary = 0.0
gap_conductivity = 100.0
quadrature = true
[]
[]
[BCs]
[left]
type = DirichletBC
variable = temp
boundary = 'left'
value = 100
[]
[right]
type = DirichletBC
variable = temp
boundary = 'right'
value = 0
[]
[left_disp_x]
type = DirichletBC
preset = false
variable = disp_x
boundary = 'left'
value = .1
[]
[right_disp_x]
type = DirichletBC
preset = false
variable = disp_x
boundary = 'right'
value = 0
[]
[bottom_disp_y]
type = DirichletBC
preset = false
variable = disp_y
boundary = 'bottom'
value = 0
[]
[]
[Preconditioning]
[fmp]
type = SMP
full = true
solve_type = 'NEWTON'
[]
[]
[Executioner]
type = Steady
nl_rel_tol = 1e-11
nl_abs_tol = 1.0e-10
[]
[VectorPostprocessors]
[NodalTemperature]
type = NodalValueSampler
sort_by = id
boundary = '100 101'
variable = 'temp'
[]
[]
[Outputs]
exodus = false
csv = true
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_htonly/planar_yz.i)
# 1-D Gap Heat Transfer Test without mechanics
#
# This test exercises 1-D gap heat transfer for a constant conductivity gap.
#
# The mesh consists of two element blocks in the y-z plane. Each element block
# is a square. They sit next to one another with a unit between them.
#
# The conductivity of both blocks is set very large to achieve a uniform temperature
# across each block. The temperature of the far bottom boundary
# is ramped from 100 to 200 over one time unit. The temperature of the far top
# boundary is held fixed at 100.
#
# A simple analytical solution is possible for the heat flux between the blocks:
#
# Flux = (T_left - T_right) * (gapK/gap_width)
#
# The gap conductivity is specified as 1, thus
#
# gapK(Tavg) = 1.0*Tavg
#
# The heat flux across the gap at time = 1 is then:
#
# Flux = 100 * (1.0/1.0) = 100
#
# For comparison, see results from the flux post processors. These results
# are the same as for the unit 1-D gap heat transfer between two unit cubes.
[Mesh]
[file]
type = FileMeshGenerator
file = simple_2D.e
[]
[./rotate]
type = TransformGenerator
transform = ROTATE
vector_value = '0 90 90'
input = file
[../]
[]
[Functions]
[./temp]
type = PiecewiseLinear
x = '0 1 2'
y = '100 200 200'
[../]
[]
[ThermalContact]
[./thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 3
secondary = 2
emissivity_primary = 0
emissivity_secondary = 0
[../]
[]
[Variables]
[./temp]
order = FIRST
family = LAGRANGE
initial_condition = 100
[../]
[]
[AuxVariables]
[./gap_cond]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./heat]
type = HeatConduction
variable = temp
[../]
[]
[BCs]
[./temp_far_bottom]
type = FunctionDirichletBC
boundary = 1
variable = temp
function = temp
[../]
[./temp_far_top]
type = DirichletBC
boundary = 4
variable = temp
value = 100
[../]
[]
[AuxKernels]
[./conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 2
[../]
[]
[Materials]
[./heat1]
type = HeatConductionMaterial
block = '1 2'
specific_heat = 1.0
thermal_conductivity = 100000000.0
[../]
[./density]
type = GenericConstantMaterial
block = '1 2'
prop_names = 'density'
prop_values = '1.0'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
nl_rel_tol = 1e-12
l_tol = 1e-3
l_max_its = 100
dt = 1e-1
end_time = 1.0
[]
[Postprocessors]
[./temp_bottom]
type = SideAverageValue
boundary = 2
variable = temp
execute_on = 'initial timestep_end'
[../]
[./temp_top]
type = SideAverageValue
boundary = 3
variable = temp
execute_on = 'initial timestep_end'
[../]
[./flux_bottom]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 2
diffusivity = thermal_conductivity
execute_on = 'initial timestep_end'
[../]
[./flux_top]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 3
diffusivity = thermal_conductivity
execute_on = 'initial timestep_end'
[../]
[]
[Outputs]
exodus = true
[]
(modules/heat_transfer/tutorials/introduction/therm_step03a.i)
#
# Single block thermal input with time derivative and volumetric heat source terms
# https://mooseframework.inl.gov/modules/heat_transfer/tutorials/introduction/therm_step03.html
#
[Mesh]
[generated]
type = GeneratedMeshGenerator
dim = 2
nx = 10
ny = 10
xmax = 2
ymax = 1
[]
[]
[Variables]
[T]
initial_condition = 300.0
[]
[]
[Kernels]
[heat_conduction]
type = HeatConduction
variable = T
[]
[time_derivative]
type = HeatConductionTimeDerivative
variable = T
[]
[heat_source]
type = HeatSource
variable = T
value = 1e4
[]
[]
[Materials]
[thermal]
type = HeatConductionMaterial
thermal_conductivity = 45.0
specific_heat = 0.5
[]
[density]
type = GenericConstantMaterial
prop_names = 'density'
prop_values = 8000.0
[]
[]
[BCs]
[t_left]
type = DirichletBC
variable = T
value = 300
boundary = 'left'
[]
[t_right]
type = FunctionDirichletBC
variable = T
function = '300+5*t'
boundary = 'right'
[]
[]
[Executioner]
type = Transient
end_time = 5
dt = 1
[]
[VectorPostprocessors]
[t_sampler]
type = LineValueSampler
variable = T
start_point = '0 0.5 0'
end_point = '2 0.5 0'
num_points = 20
sort_by = x
[]
[]
[Outputs]
exodus = true
[csv]
type = CSV
file_base = therm_step03a_out
execute_on = final
[]
[]
(modules/combined/test/tests/generalized_plane_strain_tm_contact/generalized_plane_strain_tm_contact.i)
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y'
scalar_out_of_plane_strain = scalar_strain_zz
temperature = temp
[]
[Mesh]
file = 2squares.e
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./temp]
[../]
[./scalar_strain_zz]
order = FIRST
family = SCALAR
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Postprocessors]
[./react_z]
type = MaterialTensorIntegral
rank_two_tensor = stress
index_i = 2
index_j = 2
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
[../]
[./heat]
type = HeatConduction
variable = temp
[../]
[]
[Modules]
[./TensorMechanics]
[./GeneralizedPlaneStrain]
[./gps]
use_displaced_mesh = true
[../]
[../]
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
[../]
[./strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xx
index_i = 0
index_j = 0
[../]
[./strain_xy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_xy
index_i = 0
index_j = 1
[../]
[./strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_yy
index_i = 1
index_j = 1
[../]
[./strain_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = strain_zz
index_i = 2
index_j = 2
[../]
[]
[Functions]
[./tempramp]
type = ParsedFunction
expression = 't'
[../]
[]
[BCs]
[./x]
type = DirichletBC
boundary = '4 6'
variable = disp_x
value = 0.0
[../]
[./y]
type = DirichletBC
boundary = '4 6'
variable = disp_y
value = 0.0
[../]
[./t]
type = DirichletBC
boundary = '4'
variable = temp
value = 0.0
[../]
[./tramp]
type = FunctionDirichletBC
variable = temp
boundary = '6'
function = tempramp
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
off_diag_row = 'disp_x disp_y'
off_diag_column = 'disp_y disp_x'
[../]
[]
[Contact]
[./mech]
primary = 8
secondary = 2
penalty = 1e+10
normalize_penalty = true
tangential_tolerance = .1
normal_smoothing_distance = .1
model = frictionless
formulation = kinematic
[../]
[]
[ThermalContact]
[./thermal]
type = GapHeatTransfer
primary = 8
secondary = 2
emissivity_primary = 0
emissivity_secondary = 0
variable = temp
tangential_tolerance = .1
normal_smoothing_distance = .1
gap_conductivity = 0.01
min_gap = 0.001
quadrature = true
[../]
[]
[Materials]
[./elastic_tensor]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.3
youngs_modulus = 1e6
block = '1 2'
[../]
[./strain]
type = ComputePlaneSmallStrain
eigenstrain_names = eigenstrain
block = '1 2'
[../]
[./thermal_strain]
type = ComputeThermalExpansionEigenstrain
temperature = temp
thermal_expansion_coeff = 0.02
stress_free_temperature = 0.0
eigenstrain_name = eigenstrain
block = '1 2'
[../]
[./stress]
type = ComputeLinearElasticStress
block = '1 2'
[../]
[./heatcond]
type = HeatConductionMaterial
thermal_conductivity = 3.0
specific_heat = 300.0
block = '1 2'
[../]
[./density]
type = GenericConstantMaterial
prop_names = 'density'
prop_values = '1'
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
line_search = none
petsc_options_iname = '-pc_type -ps_sub_type -pc_factor_mat_solver_package'
petsc_options_value = 'asm lu superlu_dist'
# controls for linear iterations
l_max_its = 100
l_tol = 1e-4
# controls for nonlinear iterations
nl_max_its = 20
nl_rel_tol = 1e-9
nl_abs_tol = 1e-10
# time control
start_time = 0.0
dt = 0.2
dtmin = 0.2
end_time = 2.0
[]
[Outputs]
exodus = true
[]
(modules/heat_transfer/test/tests/meshed_gap_thermal_contact/meshed_annulus_thermal_contact.i)
[Mesh]
[fmesh]
type = FileMeshGenerator
file = meshed_annulus.e
[]
[rename]
type = RenameBlockGenerator
input = fmesh
old_block = '1 2 3'
new_block = '1 4 3'
[]
[]
[Variables]
[./temp]
block = '1 3'
initial_condition = 1.0
[../]
[]
[Kernels]
[./hc]
type = HeatConduction
variable = temp
block = '1 3'
[../]
[./source]
type = HeatSource
variable = temp
block = 3
value = 10.0
[../]
[]
[BCs]
[./outside]
type = DirichletBC
variable = temp
boundary = 1
value = 1.0
[../]
[]
[ThermalContact]
[./gap_conductivity]
type = GapHeatTransfer
variable = temp
primary = 2
secondary = 3
emissivity_primary = 0
emissivity_secondary = 0
gap_conductivity = 0.5
[../]
[]
[Materials]
[./hcm]
type = HeatConductionMaterial
block = '1 3'
temp = temp
thermal_conductivity = 1
[../]
[]
[Problem]
type = FEProblem
kernel_coverage_check = false
material_coverage_check = false
[]
[Executioner]
type = Steady
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
[./out]
type = Exodus
[../]
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_mortar/modular_gap_heat_transfer_mortar.i)
[Mesh]
[file]
type = FileMeshGenerator
file = 2blk-gap.e
[]
[secondary]
type = LowerDBlockFromSidesetGenerator
sidesets = '101'
new_block_id = '10001'
new_block_name = 'secondary_lower'
input = file
[]
[primary]
type = LowerDBlockFromSidesetGenerator
sidesets = '100'
new_block_id = '10000'
new_block_name = 'primary_lower'
input = secondary
[]
[]
[Problem]
kernel_coverage_check = false
material_coverage_check = false
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
block = '1 2'
[]
[lm]
order = FIRST
family = LAGRANGE
block = 'secondary_lower'
[]
[]
[Materials]
[left]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 1000
specific_heat = 1
[]
[right]
type = HeatConductionMaterial
block = 2
thermal_conductivity = 500
specific_heat = 1
[]
[]
[Kernels]
[hc]
type = HeatConduction
variable = temp
use_displaced_mesh = false
block = '1 2'
[]
[]
[UserObjects]
[simple]
type = GapFluxModelSimple
k = 100
temperature = temp
boundary = 100
[]
[]
[Constraints]
[ced]
type = ModularGapConductanceConstraint
variable = lm
secondary_variable = temp
primary_boundary = 100
primary_subdomain = 10000
secondary_boundary = 101
secondary_subdomain = 10001
gap_flux_models = simple
[]
[]
[BCs]
[left]
type = DirichletBC
variable = temp
boundary = 'left'
value = 1
[]
[right]
type = DirichletBC
variable = temp
boundary = 'right'
value = 0
[]
[]
[Preconditioning]
[fmp]
type = SMP
full = true
[]
[]
[Executioner]
type = Steady
solve_type = 'PJFNK'
nl_rel_tol = 1e-11
[]
[Outputs]
exodus = true
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_mortar/large_gap_heat_transfer_test_cylinder_mortar.i)
rpv_core_gap_size = 0.15
core_outer_radius = 2
rpv_inner_radius = '${fparse 2 + rpv_core_gap_size}'
rpv_outer_radius = '${fparse 2.5 + rpv_core_gap_size}'
rpv_outer_htc = 10 # W/m^2/K
rpv_outer_Tinf = 300 # K
core_blocks = '1'
rpv_blocks = '3'
[Mesh]
[core_gap_rpv]
type = ConcentricCircleMeshGenerator
num_sectors = 10
radii = '${core_outer_radius} ${rpv_inner_radius} ${rpv_outer_radius}'
rings = '2 1 2'
has_outer_square = false
preserve_volumes = true
portion = full
[]
[rename_core_bdy]
type = SideSetsBetweenSubdomainsGenerator
input = core_gap_rpv
primary_block = 1
paired_block = 2
new_boundary = 'core_outer'
[]
[rename_inner_rpv_bdy]
type = SideSetsBetweenSubdomainsGenerator
input = rename_core_bdy
primary_block = 3
paired_block = 2
new_boundary = 'rpv_inner'
[]
[2d_mesh]
type = BlockDeletionGenerator
input = rename_inner_rpv_bdy
block = 2
[]
[secondary]
type = LowerDBlockFromSidesetGenerator
sidesets = 'rpv_inner'
new_block_id = 10001
new_block_name = 'secondary_lower'
input = 2d_mesh
[]
[primary]
type = LowerDBlockFromSidesetGenerator
sidesets = 'core_outer'
new_block_id = 10000
new_block_name = 'primary_lower'
input = secondary
[]
allow_renumbering = false
[]
[Variables]
[Tsolid]
initial_condition = 500
[]
[lm]
order = FIRST
family = LAGRANGE
block = 'secondary_lower'
[]
[]
[Kernels]
[heat_source]
type = CoupledForce
variable = Tsolid
block = '${core_blocks}'
v = power_density
[]
[heat_conduction]
type = HeatConduction
variable = Tsolid
[]
[]
[BCs]
[RPV_out_BC] # k \nabla T = h (T- T_inf) at RPV outer boundary
type = ConvectiveFluxFunction # (Robin BC)
variable = Tsolid
boundary = 'outer' # outer RPV
coefficient = ${rpv_outer_htc}
T_infinity = ${rpv_outer_Tinf}
[]
[]
[UserObjects]
[radiation]
type = GapFluxModelRadiation
temperature = Tsolid
boundary = 'rpv_inner'
primary_emissivity = 0.8
secondary_emissivity = 0.8
[]
[conduction]
type = GapFluxModelConduction
temperature = Tsolid
boundary = 'rpv_inner'
gap_conductivity = 0.1
[]
[]
[Constraints]
[ced]
type = ModularGapConductanceConstraint
variable = lm
secondary_variable = Tsolid
primary_boundary = 'core_outer'
primary_subdomain = 10000
secondary_boundary = 'rpv_inner'
secondary_subdomain = 10001
gap_flux_models = 'radiation conduction'
gap_geometry_type = 'CYLINDER'
[]
[]
[AuxVariables]
[power_density]
block = '${core_blocks}'
initial_condition = 50e3
[]
[]
[Materials]
[simple_mat]
type = HeatConductionMaterial
thermal_conductivity = 34.6 # W/m/K
[]
[]
[Postprocessors]
[Tcore_avg]
type = ElementAverageValue
variable = Tsolid
block = '${core_blocks}'
[]
[Tcore_max]
type = ElementExtremeValue
value_type = max
variable = Tsolid
block = '${core_blocks}'
[]
[Tcore_min]
type = ElementExtremeValue
value_type = min
variable = Tsolid
block = '${core_blocks}'
[]
[Trpv_avg]
type = ElementAverageValue
variable = Tsolid
block = '${rpv_blocks}'
[]
[Trpv_max]
type = ElementExtremeValue
value_type = max
variable = Tsolid
block = '${rpv_blocks}'
[]
[Trpv_min]
type = ElementExtremeValue
value_type = min
variable = Tsolid
block = '${rpv_blocks}'
[]
[ptot]
type = ElementIntegralVariablePostprocessor
variable = power_density
block = '${core_blocks}'
[]
[rpv_convective_out]
type = ConvectiveHeatTransferSideIntegral
T_solid = Tsolid
boundary = 'outer' # outer RVP
T_fluid = ${rpv_outer_Tinf}
htc = ${rpv_outer_htc}
[]
[heat_balance] # should be equal to 0 upon convergence
type = ParsedPostprocessor
expression = '(rpv_convective_out - ptot) / ptot'
pp_names = 'rpv_convective_out ptot'
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[VectorPostprocessors]
[NodalTemperature]
type = NodalValueSampler
sort_by = id
boundary = 'rpv_inner core_outer'
variable = 'Tsolid'
[]
[]
[Executioner]
type = Steady
petsc_options = '-snes_converged_reason -pc_svd_monitor'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type -pc_factor_shift_amount'
petsc_options_value = ' lu superlu_dist 1e-5 NONZERO 1e-15'
snesmf_reuse_base = false
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
l_max_its = 100
line_search = none
[]
[Outputs]
exodus = false
csv = true
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_htonly/corner_wrap.i)
[Mesh]
file = corner_wrap.e
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 3
secondary = 2
emissivity_primary = 0
emissivity_secondary = 0
check_boundary_restricted = false
quadrature = true
[]
[]
[Variables]
[temp]
initial_condition = 100
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[]
[BCs]
[temp_bot_right]
type = DirichletBC
boundary = 1
variable = temp
value = 50
[]
[temp_top_left]
type = DirichletBC
boundary = 4
variable = temp
value = 100
[]
[]
[Materials]
[heat1]
type = HeatConductionMaterial
block = '1 2'
specific_heat = 1.0
thermal_conductivity = 1.0
[]
[]
[Executioner]
type = Steady
solve_type = 'PJFNK'
line_search = 'none'
nl_rel_tol = 1e-14
l_tol = 1e-3
l_max_its = 100
# dt = 1e-1
# end_time = 1.0
[]
[Outputs]
exodus = true
[]
(modules/heat_transfer/test/tests/meshed_gap_thermal_contact/meshed_gap_thermal_contact.i)
[Mesh]
[fmesh]
type = FileMeshGenerator
file = meshed_gap.e
[]
[block0]
type = SubdomainBoundingBoxGenerator
input = fmesh
bottom_left = '.5 -.5 0'
top_right = '.7 .5 0'
block_id = 4
[]
[]
[Variables]
[./temp]
block = '1 3'
initial_condition = 1.0
[../]
[]
[Kernels]
[./hc]
type = HeatConduction
variable = temp
block = '1 3'
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = temp
boundary = 1
value = 1
[../]
[./right]
type = DirichletBC
variable = temp
boundary = 4
value = 2
[../]
[]
[ThermalContact]
[./gap_conductivity]
type = GapHeatTransfer
variable = temp
primary = 2
secondary = 3
emissivity_primary = 0
emissivity_secondary = 0
gap_conductivity = 0.5
[../]
[]
[Materials]
[./hcm]
type = HeatConductionMaterial
block = '1 3'
temp = temp
thermal_conductivity = 1
[../]
[]
[Problem]
type = FEProblem
kernel_coverage_check = false
material_coverage_check = false
[]
[Executioner]
type = Steady
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
[./out]
type = Exodus
[../]
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_balance/large_gap_heat_transfer_test_rz_cylinder.i)
rpv_core_gap_size = 0.2
core_outer_radius = 2
rpv_inner_radius = '${fparse 2 + rpv_core_gap_size}'
rpv_outer_radius = '${fparse 2.5 + rpv_core_gap_size}'
rpv_width = '${fparse rpv_outer_radius - rpv_inner_radius}'
rpv_outer_htc = 10 # W/m^2/K
rpv_outer_Tinf = 300 # K
core_blocks = '1'
rpv_blocks = '3'
[Mesh]
[gmg]
type = CartesianMeshGenerator
dim = 2
dx = '${core_outer_radius} ${rpv_core_gap_size} ${rpv_width}'
ix = '400 1 100'
dy = 1
iy = '5'
[]
[set_block_id1]
type = SubdomainBoundingBoxGenerator
input = gmg
bottom_left = '0 0 0'
top_right = '${core_outer_radius} 1 0'
block_id = 1
location = INSIDE
[]
[rename_core_bdy]
type = SideSetsBetweenSubdomainsGenerator
input = set_block_id1
primary_block = 1
paired_block = 0
new_boundary = 'core_outer'
[]
[set_block_id3]
type = SubdomainBoundingBoxGenerator
input = rename_core_bdy
bottom_left = '${rpv_inner_radius} 0 0'
top_right = '${rpv_outer_radius} 1 0'
block_id = 3
location = INSIDE
[]
[rename_inner_rpv_bdy]
type = SideSetsBetweenSubdomainsGenerator
input = set_block_id3
primary_block = 3
paired_block = 0
new_boundary = 'rpv_inner'
[]
# comment out for test without gap
[2d_mesh]
type = BlockDeletionGenerator
input = rename_inner_rpv_bdy
block = 0
[]
[]
[Problem]
coord_type = RZ
[]
[Variables]
[Tsolid]
initial_condition = 500
[]
[]
[Kernels]
[heat_source]
type = CoupledForce
variable = Tsolid
block = '${core_blocks}'
v = power_density
[]
[heat_conduction]
type = HeatConduction
variable = Tsolid
[]
[]
[BCs]
[RPV_out_BC] # k \nabla T = h (T- T_inf) at RPV outer boundary
type = ConvectiveFluxFunction # (Robin BC)
variable = Tsolid
boundary = 'right' # outer RPV
coefficient = ${rpv_outer_htc}
T_infinity = ${rpv_outer_Tinf}
[]
[]
[ThermalContact]
[RPV_gap]
type = GapHeatTransfer
gap_geometry_type = 'CYLINDER'
emissivity_primary = 0.8
emissivity_secondary = 0.8
variable = Tsolid
primary = 'core_outer'
secondary = 'rpv_inner'
gap_conductivity = 0.1
quadrature = true
[]
[]
[AuxVariables]
[power_density]
block = '${core_blocks}'
initial_condition = 50e3
[]
[]
[Materials]
[simple_mat]
type = HeatConductionMaterial
thermal_conductivity = 34.6 # W/m/K
[]
[]
[Postprocessors]
[Tcore_avg]
type = ElementAverageValue
variable = Tsolid
block = '${core_blocks}'
[]
[Tcore_max]
type = ElementExtremeValue
value_type = max
variable = Tsolid
block = '${core_blocks}'
[]
[Tcore_min]
type = ElementExtremeValue
value_type = min
variable = Tsolid
block = '${core_blocks}'
[]
[Trpv_avg]
type = ElementAverageValue
variable = Tsolid
block = '${rpv_blocks}'
[]
[Trpv_max]
type = ElementExtremeValue
value_type = max
variable = Tsolid
block = '${rpv_blocks}'
[]
[Trpv_min]
type = ElementExtremeValue
value_type = min
variable = Tsolid
block = '${rpv_blocks}'
[]
[ptot]
type = ElementIntegralVariablePostprocessor
variable = power_density
block = '${core_blocks}'
[]
[rpv_convective_out]
type = ConvectiveHeatTransferSideIntegral
T_solid = Tsolid
boundary = 'right' # outer RVP
T_fluid = ${rpv_outer_Tinf}
htc = ${rpv_outer_htc}
[]
[heat_balance] # should be equal to 0 upon convergence
type = ParsedPostprocessor
expression = '(rpv_convective_out - ptot) / ptot'
pp_names = 'rpv_convective_out ptot'
[]
[flux_from_core] # converges to ptot as the mesh is refined
type = SideDiffusiveFluxIntegral
variable = Tsolid
boundary = core_outer
diffusivity = thermal_conductivity
[]
[flux_into_rpv] # converges to rpv_convective_out as the mesh is refined
type = SideDiffusiveFluxIntegral
variable = Tsolid
boundary = rpv_inner
diffusivity = thermal_conductivity
[]
[]
[Executioner]
type = Steady
automatic_scaling = true
compute_scaling_once = false
petsc_options_iname = '-pc_type -pc_hypre_type -ksp_gmres_restart '
petsc_options_value = 'hypre boomeramg 100'
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
l_max_its = 100
[Quadrature]
# order = fifth
side_order = seventh
[]
line_search = none
[]
[Outputs]
exodus = false
csv = true
[]
(modules/heat_transfer/test/tests/transient_heat/transient_heat_derivatives.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 2
nx = 10
ny = 10
[]
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 2
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[ie]
type = HeatConductionTimeDerivative
variable = temp
specific_heat_dT = specific_heat_dT
density_name_dT = density_dT
[]
[]
[Functions]
[spheat]
type = ParsedFunction
expression = 't^4'
[]
[thcond]
type = ParsedFunction
expression = 'exp(t)'
[]
[]
[BCs]
[bottom]
type = DirichletBC
variable = temp
boundary = 1
value = 4
[]
[top]
type = DirichletBC
variable = temp
boundary = 2
value = 1
[]
[]
[Materials]
[constant]
type = HeatConductionMaterial
thermal_conductivity_temperature_function = thcond
specific_heat_temperature_function = spheat
temp = temp
[]
[density]
type = ParsedMaterial
property_name = density
coupled_variables = temp
expression = 'temp^3 + 2/temp'
[]
[density_dT]
type = ParsedMaterial
property_name = density_dT
coupled_variables = temp
expression = '3 * temp^2 - 2/temp/temp'
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
num_steps = 1
dt = .1
nl_max_its = 10
dtmin = .1
[]
[Postprocessors]
[avg]
type = ElementAverageValue
variable = temp
[]
[]
[Outputs]
csv = true
[]
(modules/heat_transfer/test/tests/heat_conduction/3d_quadrature_gap_heat_transfer/second.i)
[Mesh]
file = nonmatching.e
second_order = true
[]
[Variables]
[./temp]
order = SECOND
[../]
[]
[Kernels]
[./hc]
type = HeatConduction
variable = temp
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = temp
boundary = leftleft
value = 1000
[../]
[./right]
type = DirichletBC
variable = temp
boundary = rightright
value = 400
[../]
[]
[ThermalContact]
[./left_to_right]
secondary = leftright
quadrature = true
primary = rightleft
variable = temp
emissivity_primary = 0
emissivity_secondary = 0
type = GapHeatTransfer
order = SECOND
[../]
[]
[Materials]
[./hcm]
type = HeatConductionMaterial
block = 'left right'
specific_heat = 1
thermal_conductivity = 1
[../]
[]
[Postprocessors]
[./left]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = leftright
diffusivity = thermal_conductivity
[../]
[./right]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = rightleft
diffusivity = thermal_conductivity
[../]
[]
[Executioner]
type = Steady
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
exodus = true
[]
(modules/combined/test/tests/thermo_mech/thermo_mech_smp.i)
[GlobalParams]
temperature = temp
volumetric_locking_correction = true
[]
[Mesh]
file = cube.e
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./temp]
[../]
[]
[Kernels]
[./TensorMechanics]
displacements = 'disp_x disp_y disp_z'
[../]
[./heat]
type = HeatConduction
variable = temp
[../]
[]
[BCs]
[./bottom_x]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[../]
[./bottom_y]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./bottom_z]
type = DirichletBC
variable = disp_z
boundary = 1
value = 0.0
[../]
[./bottom_temp]
type = DirichletBC
variable = temp
boundary = 1
value = 10.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.0
poissons_ratio = 0.3
[../]
[./strain]
type = ComputeSmallStrain
displacements = 'disp_x disp_y disp_z'
eigenstrain_names = eigenstrain
[../]
[./thermal_strain]
type = ComputeThermalExpansionEigenstrain
stress_free_temperature = 0.0
thermal_expansion_coeff = 1e-5
eigenstrain_name = eigenstrain
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[./heat]
type = HeatConductionMaterial
specific_heat = 1.0
thermal_conductivity = 1.0
[../]
[./density]
type = Density
density = 1.0
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
nl_rel_tol = 1e-14
l_tol = 1e-3
l_max_its = 100
dt = 1.0
end_time = 1.0
[]
[Outputs]
file_base = thermo_mech_smp_out
[./exodus]
type = Exodus
execute_on = 'initial timestep_end nonlinear'
nonlinear_residual_dt_divisor = 100
[../]
[]
(modules/heat_transfer/test/tests/meshed_gap_thermal_contact/meshed_gap_thermal_contact_constant_conductance.i)
[Mesh]
[fmesh]
type = FileMeshGenerator
file = meshed_gap.e
[]
[block0]
type = SubdomainBoundingBoxGenerator
input = fmesh
bottom_left = '.5 -.5 0'
top_right = '.7 .5 0'
block_id = 4
[]
[]
[Variables]
[./temp]
block = '1 3'
initial_condition = 1.0
[../]
[]
[Kernels]
[./hc]
type = HeatConduction
variable = temp
block = '1 3'
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = temp
boundary = 1
value = 1
[../]
[./right]
type = DirichletBC
variable = temp
boundary = 4
value = 2
[../]
[]
[ThermalContact]
[./gap_conductance]
type = GapHeatTransfer
variable = temp
primary = 2
secondary = 3
emissivity_primary = 0
emissivity_secondary = 0
gap_conductance = 2.5
[../]
[]
[Materials]
[./hcm]
type = HeatConductionMaterial
block = '1 3'
temp = temp
thermal_conductivity = 1
[../]
[]
[Problem]
type = FEProblem
kernel_coverage_check = false
material_coverage_check = false
[]
[Executioner]
type = Steady
solve_type = PJFNK
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
[./out]
type = Exodus
[../]
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_mortar_action/modular_gap_heat_transfer_mortar_displaced_radiation_conduction_action.i)
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 2blk-gap.e
[]
allow_renumbering = false
[]
[Problem]
kernel_coverage_check = false
material_coverage_check = false
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
block = '1 2'
[]
[disp_x]
order = FIRST
family = LAGRANGE
block = '1 2'
[]
[disp_y]
order = FIRST
family = LAGRANGE
block = '1 2'
[]
[]
[Materials]
[left]
type = ADHeatConductionMaterial
block = 1
thermal_conductivity = 0.01
specific_heat = 1
[]
[right]
type = ADHeatConductionMaterial
block = 2
thermal_conductivity = 0.005
specific_heat = 1
[]
[]
[Kernels]
[hc_displaced_block]
type = ADHeatConduction
variable = temp
use_displaced_mesh = true
block = '1'
[]
[hc_undisplaced_block]
type = ADHeatConduction
variable = temp
use_displaced_mesh = false
block = '2'
[]
[disp_x]
type = Diffusion
variable = disp_x
block = '1 2'
[]
[disp_y]
type = Diffusion
variable = disp_y
block = '1 2'
[]
[]
[MortarGapHeatTransfer]
[mortar_heat_transfer]
temperature = temp
primary_emissivity = 1.0
secondary_emissivity = 1.0
boundary = 100
use_displaced_mesh = true
gap_conductivity = 0.02
primary_boundary = 100
secondary_boundary = 101
gap_flux_options = 'CONDUCTION RADIATION'
[]
[]
[BCs]
[left]
type = DirichletBC
variable = temp
boundary = 'left'
value = 100
[]
[right]
type = DirichletBC
variable = temp
boundary = 'right'
value = 0
[]
[left_disp_x]
type = DirichletBC
preset = false
variable = disp_x
boundary = 'left'
value = .1
[]
[right_disp_x]
type = DirichletBC
preset = false
variable = disp_x
boundary = 'right'
value = 0
[]
[bottom_disp_y]
type = DirichletBC
preset = false
variable = disp_y
boundary = 'bottom'
value = 0
[]
[]
[Preconditioning]
[fmp]
type = SMP
full = true
solve_type = 'NEWTON'
[]
[]
[Executioner]
type = Steady
nl_rel_tol = 1e-11
nl_abs_tol = 1.0e-10
[]
[VectorPostprocessors]
[NodalTemperature]
type = NodalValueSampler
sort_by = id
boundary = '100 101'
variable = 'temp'
[]
[]
[Outputs]
csv = true
[exodus]
type = Exodus
show = 'temp'
[]
[]
(modules/combined/test/tests/thermal_strain/thermal_strain.i)
# Patch Test
# This test is designed to compute displacements from a thermal strain.
# The cube is displaced by 1e-6 units in x, 2e-6 in y, and 3e-6 in z.
# The faces are sheared as well (1e-6, 2e-6, and 3e-6 for xy, yz, and
# zx). This gives a uniform strain/stress state for all six unique
# tensor components.
# The temperature moves 100 degrees, and the coefficient of thermal
# expansion is 1e-6. Therefore, the strain (and the displacement
# since this is a unit cube) is 1e-4.
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
file = thermal_strain_test.e
[]
[Functions]
[./tempFunc]
type = PiecewiseLinear
x = '0. 1.'
y = '117.56 217.56'
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./temp]
initial_condition = 117.56
[../]
[]
[Modules/TensorMechanics/Master]
add_variables = true
strain = SMALL
incremental = true
generate_output = 'stress_xx stress_yy stress_zz stress_xy stress_yz stress_zx'
temperature = temp
[./block1]
eigenstrain_names = eigenstrain1
block = 1
[../]
[./block2]
eigenstrain_names = eigenstrain2
block = 2
[../]
[./block3]
eigenstrain_names = eigenstrain3
block = 3
[../]
[./block4]
eigenstrain_names = eigenstrain4
block = 4
[../]
[./block5]
eigenstrain_names = eigenstrain5
block = 5
[../]
[./block6]
eigenstrain_names = eigenstrain6
block = 6
[../]
[./block7]
eigenstrain_names = eigenstrain7
block = 7
[../]
[]
[Kernels]
[./heat]
type = HeatConduction
variable = temp
[../]
[]
[BCs]
[./no_x]
type = DirichletBC
variable = disp_x
boundary = 10
value = 0.0
[../]
[./no_y]
type = DirichletBC
variable = disp_y
boundary = 9
value = 0.0
[../]
[./no_z]
type = DirichletBC
variable = disp_z
boundary = 14
value = 0
[../]
[./temp]
type = FunctionDirichletBC
variable = temp
boundary = '10 12'
function = tempFunc
[../]
[]
[Materials]
[./elasticity_tensor1]
type = ComputeIsotropicElasticityTensor
block = 1
bulk_modulus = 0.333333333333e6
poissons_ratio = 0.0
[../]
[./thermal_strain1]
type = ComputeThermalExpansionEigenstrain
block = 1
temperature = temp
stress_free_temperature = 117.56
thermal_expansion_coeff = 1e-6
eigenstrain_name = eigenstrain1
[../]
[./stress1]
type = ComputeStrainIncrementBasedStress
block = 1
[../]
[./elasticity_tensor2]
type = ComputeIsotropicElasticityTensor
block = 2
bulk_modulus = 0.333333333333e6
lambda = 0.0
[../]
[./thermal_strain2]
type = ComputeThermalExpansionEigenstrain
block = 2
temperature = temp
stress_free_temperature = 117.56
thermal_expansion_coeff = 1e-6
eigenstrain_name = eigenstrain2
[../]
[./stress2]
type = ComputeStrainIncrementBasedStress
block = 2
[../]
[./elasticity_tensor3]
type = ComputeIsotropicElasticityTensor
block = 3
youngs_modulus = 1e6
poissons_ratio = 0.0
[../]
[./thermal_strain3]
type = ComputeThermalExpansionEigenstrain
block = 3
temperature = temp
stress_free_temperature = 117.56
thermal_expansion_coeff = 1e-6
eigenstrain_name = eigenstrain3
[../]
[./stress3]
type = ComputeStrainIncrementBasedStress
block = 3
[../]
[./elasticity_tensor4]
type = ComputeIsotropicElasticityTensor
block = 4
youngs_modulus = 1e6
poissons_ratio = 0.0
[../]
[./thermal_strain4]
type = ComputeThermalExpansionEigenstrain
block = 4
temperature = temp
stress_free_temperature = 117.56
thermal_expansion_coeff = 1e-6
eigenstrain_name = eigenstrain4
[../]
[./stress4]
type = ComputeStrainIncrementBasedStress
block = 4
[../]
[./elasticity_tensor5]
type = ComputeIsotropicElasticityTensor
block = 5
youngs_modulus = 1e6
lambda = 0.0
[../]
[./thermal_strain5]
type = ComputeThermalExpansionEigenstrain
block = 5
temperature = temp
stress_free_temperature = 117.56
thermal_expansion_coeff = 1e-6
eigenstrain_name = eigenstrain5
[../]
[./stress5]
type = ComputeStrainIncrementBasedStress
block = 5
[../]
[./elasticity_tensor6]
type = ComputeIsotropicElasticityTensor
block = 6
youngs_modulus = 1e6
shear_modulus = 5e5
[../]
[./thermal_strain6]
type = ComputeThermalExpansionEigenstrain
block = 6
temperature = temp
stress_free_temperature = 117.56
thermal_expansion_coeff = 1e-6
eigenstrain_name = eigenstrain6
[../]
[./stress6]
type = ComputeStrainIncrementBasedStress
block = 6
[../]
[./elasticity_tensor7]
type = ComputeIsotropicElasticityTensor
block = 7
shear_modulus = 5e5
poissons_ratio = 0.0
[../]
[./thermal_strain7]
type = ComputeThermalExpansionEigenstrain
block = 7
temperature = temp
stress_free_temperature = 117.56
thermal_expansion_coeff = 1e-6
eigenstrain_name = eigenstrain7
[../]
[./stress7]
type = ComputeStrainIncrementBasedStress
block = 7
[../]
[./heat]
type = HeatConductionMaterial
block = '1 2 3 4 5 6 7'
specific_heat = 1.0
thermal_conductivity = 1.0
[../]
[./density]
type = Density
block = '1 2 3 4 5 6 7'
density = 1.0
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
nl_abs_tol = 1e-10
l_max_its = 20
start_time = 0.0
dt = 0.5
num_steps = 2
end_time = 1.0
[]
[Outputs]
exodus = true
[]
(modules/heat_transfer/test/tests/heat_conduction_patch/heat_conduction_patch.i)
#
# This problem is taken from the Abaqus verification manual:
# "1.5.8 Patch test for heat transfer elements"
#
# The temperature on the exterior nodes is 200x+100y+200z.
#
# This gives a constant flux at all Gauss points.
#
# In addition, the temperature at all nodes follows the same formula.
#
# Node x y z Temperature
# 1 1.00E+00 0.00E+00 1.00E+00 400
# 2 6.77E-01 3.05E-01 6.83E-01 302.5
# 3 3.20E-01 1.86E-01 6.43E-01 211.2
# 4 0.00E+00 0.00E+00 1.00E+00 200
# 5 1.00E+00 1.00E+00 1.00E+00 500
# 6 7.88E-01 6.93E-01 6.44E-01 355.7
# 7 1.65E-01 7.45E-01 7.02E-01 247.9
# 8 0.00E+00 1.00E+00 1.00E+00 300
# 9 1.00E+00 0.00E+00 0.00E+00 200
# 10 0.00E+00 0.00E+00 0.00E+00 0
# 11 8.26E-01 2.88E-01 2.88E-01 251.6
# 12 2.49E-01 3.42E-01 1.92E-01 122.4
# 13 2.73E-01 7.50E-01 2.30E-01 175.6
# 14 0.00E+00 1.00E+00 0.00E+00 100
# 15 8.50E-01 6.49E-01 2.63E-01 287.5
# 16 1.00E+00 1.00E+00 0.00E+00 300
[Mesh]#Comment
file = heat_conduction_patch.e
[] # Mesh
[Functions]
[./temps]
type = ParsedFunction
expression ='200*x+100*y+200*z'
[../]
[] # Functions
[Variables]
[./temp]
order = FIRST
family = LAGRANGE
[../]
[] # Variables
[Kernels]
[./heat]
type = HeatConduction
variable = temp
[../]
[] # Kernels
[BCs]
[./temps]
type = FunctionDirichletBC
variable = temp
boundary = 10
function = temps
[../]
[] # BCs
[Materials]
[./heat]
type = HeatConductionMaterial
block = 1
specific_heat = 0.116
thermal_conductivity = 4.85e-4
[../]
[] # Materials
[Executioner]
type = Steady
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -ksp_gmres_restart'
petsc_options_value = 'lu 101'
line_search = 'none'
nl_abs_tol = 1e-11
nl_rel_tol = 1e-10
l_max_its = 20
[] # Executioner
[Outputs]
exodus = true
[] # Output
(modules/heat_transfer/test/tests/gap_heat_transfer_htonly/gap_heat_transfer_htonly_rz_test.i)
#
# 2-D RZ Gap Heat Transfer Test without mechanics
#
# This test exercises 1-D gap heat transfer for a constant conductivity gap.
#
# The mesh consists of two element blocks containing one element each. Each
# element is a unit cube. They sit next to one another with a unit between them.
#
# The conductivity of both blocks is set very large to achieve a uniform temperature
# across each block. The temperature of the far left boundary
# is ramped from 100 to 200 over one time unit, and then held fixed for an additional
# time unit. The temperature of the far right boundary is held fixed at 100.
#
# A simple analytical solution is possible for the heat flux between the blocks, or cylinders in the case of RZ.:
#
# Flux = (T_left - T_right) * (gapK/(r*ln(r2/r1)))
#
# For gapK = 1 (default value)
#
# The integrated heat flux across the gap at time 2 is then:
#
# 2*pi*h*k*delta_T/(ln(r2/r1))
# 2*pi*1*1*100/(ln(2/1)) = 906.5 watts
#
# For comparison, see results from the flux post processors.
#
# As a second test, use the rectilinear (parallel plate) form of the gap heat transfer.
#
# Flux = (T_left - T_right) * (gapK/gapL)
#
# For gapK = 1 (default value)
#
# The integrated heat flux across the gap at time 2 is then:
#
# 2*pi*h*k*delta_T/(1)
# 2*pi*1*1*100/(1) = 628.3 watts
#
# For comparison, see results from the flux post processors.
#
[Problem]
coord_type = RZ
rz_coord_axis = Y # this is modified through CLI args to test Z-R as opposed to R-Z
[]
[Mesh]
active = 'file'
[file]
type = FileMeshGenerator
file = gap_heat_transfer_htonly_rz_test.e
[]
[rotate]
type = TransformGenerator
transform = ROTATE
vector_value = '90 0 0'
input = file
[]
[]
[Functions]
[./ramp]
type = PiecewiseLinear
x = '0 1 2'
y = '100 200 200'
[../]
[]
[ThermalContact]
[./thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 3
secondary = 2
emissivity_primary = 0
emissivity_secondary = 0
[../]
[./thermal_contact2]
type = GapHeatTransfer
variable = temp2
primary = 3
secondary = 2
emissivity_primary = 0
emissivity_secondary = 0
gap_geometry_type = PLATE
appended_property_name = 2
[../]
[]
[Variables]
[./temp]
order = FIRST
family = LAGRANGE
initial_condition = 100
[../]
[./temp2]
order = FIRST
family = LAGRANGE
initial_condition = 100
[../]
[]
[AuxVariables]
[./gap_cond]
order = CONSTANT
family = MONOMIAL
[../]
[./gap_cond2]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./heat]
type = HeatConduction
variable = temp
[../]
[./heat2]
type = HeatConduction
variable = temp2
[../]
[]
[BCs]
[./temp_far_left]
type = FunctionDirichletBC
boundary = 1
variable = temp
function = ramp
[../]
[./temp_far_right]
type = DirichletBC
boundary = 4
variable = temp
value = 100
[../]
[./temp_far_left2]
type = FunctionDirichletBC
boundary = 1
variable = temp2
function = ramp
[../]
[./temp_far_right2]
type = DirichletBC
boundary = 4
variable = temp2
value = 100
[../]
[]
[AuxKernels]
[./conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 2
[../]
[./conductance2]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond2
boundary = 2
[../]
[]
[Materials]
[./heat1]
type = HeatConductionMaterial
block = '1 2'
specific_heat = 1.0
thermal_conductivity = 1e6
[../]
[./density]
type = GenericConstantMaterial
block = '1 2'
prop_names = 'density'
prop_values = '1.0'
[../]
[]
[Executioner]
type = Transient
# petsc_options = '-snes_mf_operator -ksp_monitor -snes_ksp_ew'
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
# petsc_options_iname = '-snes_type -snes_ls -snes_linesearch_type -ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
# petsc_options_value = 'ls basic basic 201 hypre boomeramg 4'
# petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
# petsc_options_value = '201 hypre boomeramg 4'
nl_abs_tol = 1e-3
nl_rel_tol = 1e-8
l_tol = 1e-6
l_max_its = 100
start_time = 0.0
dt = 1e-1
dtmin = 1e-1
end_time = 2.0
[]
[Postprocessors]
[./temp_left]
type = SideAverageValue
boundary = 2
variable = temp
execute_on = 'initial timestep_end'
[../]
[./temp_right]
type = SideAverageValue
boundary = 3
variable = temp
execute_on = 'initial timestep_end'
[../]
[./flux_left]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 2
diffusivity = thermal_conductivity
[../]
[./flux_right]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 3
diffusivity = thermal_conductivity
[../]
[./temp_left2]
type = SideAverageValue
boundary = 2
variable = temp2
execute_on = 'initial timestep_end'
[../]
[./temp_right2]
type = SideAverageValue
boundary = 3
variable = temp2
execute_on = 'initial timestep_end'
[../]
[./flux_left2]
type = SideDiffusiveFluxIntegral
variable = temp2
boundary = 2
diffusivity = thermal_conductivity
[../]
[./flux_right2]
type = SideDiffusiveFluxIntegral
variable = temp2
boundary = 3
diffusivity = thermal_conductivity
[../]
[]
[Outputs]
exodus = true
[]
(modules/combined/test/tests/thermo_mech/ad-thermo_mech.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
temperature = temp
volumetric_locking_correction = true
[]
[Mesh]
file = cube.e
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./temp]
[../]
[]
[Kernels]
[./TensorMechanics]
use_automatic_differentiation = true
[../]
[./heat]
type = ADHeatConduction
variable = temp
[../]
[]
[BCs]
[./bottom_x]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[../]
[./bottom_y]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./bottom_z]
type = DirichletBC
variable = disp_z
boundary = 1
value = 0.0
[../]
[./bottom_temp]
type = DirichletBC
variable = temp
preset = false
boundary = 1
value = 10.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 1.0
poissons_ratio = 0.3
[../]
[./strain]
type = ADComputeSmallStrain
eigenstrain_names = eigenstrain
[../]
[./thermal_strain]
type = ADComputeThermalExpansionEigenstrain
stress_free_temperature = 0.0
thermal_expansion_coeff = 1e-5
eigenstrain_name = eigenstrain
[../]
[./stress]
type = ADComputeLinearElasticStress
[../]
[./heat]
type = ADHeatConductionMaterial
specific_heat = 1.0
thermal_conductivity = 1.0
[../]
[./density]
type = ADDensity
density = 1.0
[../]
[]
[Preconditioning]
[./smp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
nl_rel_tol = 1e-14
l_tol = 1e-3
l_max_its = 100
dt = 1.0
end_time = 1.0
[]
[Outputs]
exodus = true
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_mortar/large_gap_heat_transfer_test_cylinder.i)
rpv_core_gap_size = 0.15
core_outer_radius = 2
rpv_inner_radius = '${fparse 2 + rpv_core_gap_size}'
rpv_outer_radius = '${fparse 2.5 + rpv_core_gap_size}'
rpv_outer_htc = 10 # W/m^2/K
rpv_outer_Tinf = 300 # K
core_blocks = '1'
rpv_blocks = '3'
[Mesh]
[core_gap_rpv]
type = ConcentricCircleMeshGenerator
num_sectors = 10
radii = '${core_outer_radius} ${rpv_inner_radius} ${rpv_outer_radius}'
rings = '2 1 2'
has_outer_square = false
preserve_volumes = true
portion = full
[]
[rename_core_bdy]
type = SideSetsBetweenSubdomainsGenerator
input = core_gap_rpv
primary_block = 1
paired_block = 2
new_boundary = 'core_outer'
[]
[rename_inner_rpv_bdy]
type = SideSetsBetweenSubdomainsGenerator
input = rename_core_bdy
primary_block = 3
paired_block = 2
new_boundary = 'rpv_inner'
[]
[2d_mesh]
type = BlockDeletionGenerator
input = rename_inner_rpv_bdy
block = 2
[]
allow_renumbering = false
[]
[Variables]
[Tsolid]
initial_condition = 500
[]
[]
[Kernels]
[heat_source]
type = CoupledForce
variable = Tsolid
block = '${core_blocks}'
v = power_density
[]
[heat_conduction]
type = HeatConduction
variable = Tsolid
[]
[]
[BCs]
[RPV_out_BC] # k \nabla T = h (T- T_inf) at RPV outer boundary
type = ConvectiveFluxFunction # (Robin BC)
variable = Tsolid
boundary = 'outer' # outer RPV
coefficient = ${rpv_outer_htc}
T_infinity = ${rpv_outer_Tinf}
[]
[]
[ThermalContact]
[RPV_gap]
type = GapHeatTransfer
gap_geometry_type = 'CYLINDER'
emissivity_primary = 0.8
emissivity_secondary = 0.8
variable = Tsolid
primary = 'core_outer'
secondary = 'rpv_inner'
gap_conductivity = 0.1
quadrature = true
cylinder_axis_point_1 = '0 0 0'
cylinder_axis_point_2 = '0 0 5'
[]
[]
[AuxVariables]
[power_density]
block = '${core_blocks}'
initial_condition = 50e3
[]
[]
[Materials]
[simple_mat]
type = HeatConductionMaterial
thermal_conductivity = 34.6 # W/m/K
[]
[]
[Postprocessors]
[Tcore_avg]
type = ElementAverageValue
variable = Tsolid
block = '${core_blocks}'
[]
[Tcore_max]
type = ElementExtremeValue
value_type = max
variable = Tsolid
block = '${core_blocks}'
[]
[Tcore_min]
type = ElementExtremeValue
value_type = min
variable = Tsolid
block = '${core_blocks}'
[]
[Trpv_avg]
type = ElementAverageValue
variable = Tsolid
block = '${rpv_blocks}'
[]
[Trpv_max]
type = ElementExtremeValue
value_type = max
variable = Tsolid
block = '${rpv_blocks}'
[]
[Trpv_min]
type = ElementExtremeValue
value_type = min
variable = Tsolid
block = '${rpv_blocks}'
[]
[ptot]
type = ElementIntegralVariablePostprocessor
variable = power_density
block = '${core_blocks}'
[]
[rpv_convective_out]
type = ConvectiveHeatTransferSideIntegral
T_solid = Tsolid
boundary = 'outer' # outer RVP
T_fluid = ${rpv_outer_Tinf}
htc = ${rpv_outer_htc}
[]
[heat_balance] # should be equal to 0 upon convergence
type = ParsedPostprocessor
expression = '(rpv_convective_out - ptot) / ptot'
pp_names = 'rpv_convective_out ptot'
[]
[]
[VectorPostprocessors]
[NodalTemperature]
type = NodalValueSampler
sort_by = id
boundary = 'rpv_inner core_outer'
variable = Tsolid
[]
[]
[Executioner]
type = Steady
automatic_scaling = true
compute_scaling_once = false
petsc_options_iname = '-pc_type -pc_hypre_type -ksp_gmres_restart '
petsc_options_value = 'hypre boomeramg 100'
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
l_max_its = 100
[Quadrature]
side_order = seventh
[]
line_search = none
[]
[Outputs]
exodus = false
csv = true
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_radiation/cylinder.i)
#
# This problem is one of radiation boundary conditions between two
# cylindrical surfaces.
#
# S(T1^4 - T2^4) R1
# flux1 = - ---------------- and flux2 = -flux1 * --
# 1 1 - e2 R1 R2
# -- + ------ * --
# e1 e2 R2
#
# where S is the Stefan Boltzmann constant 5.67e-8 W/m^2/K^4
# T1 is the temperature on the left surface 278 K
# T2 is the temperature on the right surface 333 K
# e1 is the emissivity for the left surface 0.8
# e2 is the emissivity for the left surface 0.9
# R1 is the radius of the inner surface 0.1 m
# R2 is the radius of the outer surface 0.11 m
#
# Flux1:
# Exact Code
# ------------- -------------
# -265.29 W/m^2 -265.26 W/m^2
#
# Flux2:
# Exact Code
# ------------- -------------
# 241.26 W/m^2 241.15 W/m^2
#
thick = 0.01
R1 = 0.1
R2 = 0.11
[GlobalParams]
order = second
family = lagrange
[]
[Mesh]
coord_type = RZ
[mesh1]
type = GeneratedMeshGenerator
dim = 2
elem_type = quad8
nx = 4
ny = 1
xmin = '${fparse R1 - thick}'
xmax = '${R1}'
ymin = 0
ymax = '${R1}'
boundary_name_prefix = left
[]
[mesh2]
type = GeneratedMeshGenerator
dim = 2
elem_type = quad8
nx = 4
ny = 1
xmin = '${R2}'
xmax = '${fparse R2 + thick}'
ymin = 0
ymax = '${R1}'
boundary_id_offset = 4
boundary_name_prefix = right
[]
[final]
type = CombinerGenerator
inputs = 'mesh1 mesh2'
[]
[]
[Variables]
[temperature]
[]
[]
[Kernels]
[heat_conduction]
type = HeatConduction
variable = temperature
[]
[]
[BCs]
[left]
type = DirichletBC
variable = temperature
boundary = left_left
value = 278
[]
[right]
type = DirichletBC
variable = temperature
boundary = right_right
value = 333
[]
[]
[Materials]
[heat]
type = HeatConductionMaterial
thermal_conductivity = 200 # W/m/K
specific_heat = 4.2e5
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temperature
primary = left_right
secondary = right_left
emissivity_primary = 0.8
emissivity_secondary = 0.9
quadrature = true
gap_conductivity = 1e-40 # requires a positive value
gap_geometry_type = cylinder
[]
[]
[Functions]
[analytic_flux_1]
type = ParsedFunction
symbol_names = 'S T1 T2 e1 e2 R1 R2'
symbol_values = '5.67e-8 278 333 0.8 0.9 ${R1} ${R2}'
expression = 'T14 := T1*T1*T1*T1;
T24 := T2*T2*T2*T2;
S*(T14-T24)/(1/e1+(1-e2)/e2*R1/R2)'
[]
[analytic_flux_2]
type = ParsedFunction
symbol_names = 'S T1 T2 e1 e2 R1 R2'
symbol_values = '5.67e-8 278 333 0.8 0.9 ${R1} ${R2}'
expression = 'T14 := T1*T1*T1*T1;
T24 := T2*T2*T2*T2;
-S*(T14-T24)/(1/e1+(1-e2)/e2*R1/R2)*R1/R2'
[]
[]
[Postprocessors]
[code_flux_1]
type = SideDiffusiveFluxAverage
variable = temperature
boundary = left_right
diffusivity = thermal_conductivity
execute_on = 'initial timestep_end'
[]
[analytic_flux_1]
type = FunctionValuePostprocessor
function = analytic_flux_1
execute_on = 'initial timestep_end'
[]
[error_1]
type = ParsedPostprocessor
pp_names = 'code_flux_1 analytic_flux_1'
expression = '(analytic_flux_1 - code_flux_1)/analytic_flux_1*100'
execute_on = 'initial timestep_end'
[]
[code_flux_2]
type = SideDiffusiveFluxAverage
variable = temperature
boundary = right_left
diffusivity = thermal_conductivity
execute_on = 'initial timestep_end'
[]
[analytic_flux_2]
type = FunctionValuePostprocessor
function = analytic_flux_2
execute_on = 'initial timestep_end'
[]
[error_2]
type = ParsedPostprocessor
pp_names = 'code_flux_2 analytic_flux_2'
expression = '(analytic_flux_2 - code_flux_2)/analytic_flux_2*100'
execute_on = 'initial timestep_end'
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = newton
num_steps = 1
dt = 1
end_time = 1
nl_abs_tol = 1e-12
nl_rel_tol = 1e-10
[]
[Outputs]
csv = true
[]
(modules/heat_transfer/test/tests/heat_conduction/2d_quadrature_gap_heat_transfer/perfectQ9.i)
[GlobalParams]
order = SECOND
[]
[Mesh]
file = perfectQ9.e
[]
[Variables]
[./temp]
[../]
[]
[Kernels]
[./hc]
type = HeatConduction
variable = temp
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = temp
boundary = leftleft
value = 300
[../]
[./right]
type = DirichletBC
variable = temp
boundary = rightright
value = 400
[../]
[]
[ThermalContact]
[./left_to_right]
secondary = leftright
quadrature = true
primary = rightleft
emissivity_primary = 0
emissivity_secondary = 0
variable = temp
type = GapHeatTransfer
[../]
[]
[Materials]
[./hcm]
type = HeatConductionMaterial
block = 'left right'
specific_heat = 1
thermal_conductivity = 1
[../]
[]
[Executioner]
type = Steady
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
[./Quadrature]
order = THIRD
[../]
[]
[Outputs]
exodus = true
[]
(modules/heat_transfer/test/tests/multiple_contact_pairs/multiple_contact_pairs.i)
[Mesh]
file = 3blk.e
[]
[Functions]
[temperature]
type = PiecewiseLinear
x = '0 1 2'
y = '100 300 300'
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temperature
primary = '101 201'
secondary = '100 200'
emissivity_primary = 0
emissivity_secondary = 0
gap_conductance = 1.0e9
[]
[]
[Variables]
[temperature]
order = FIRST
family = LAGRANGE
initial_condition = 100
[]
[]
[AuxVariables]
[gap_cond]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temperature
[]
[]
[BCs]
[temp_far_left]
type = FunctionDirichletBC
boundary = '101 201'
variable = temperature
function = temperature
[]
[temp_far_right]
type = DirichletBC
boundary = 'left right'
variable = temperature
value = 100
[]
[]
[AuxKernels]
[conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 100
[]
[]
[Materials]
[heat1]
type = HeatConductionMaterial
block = '1 2 3'
specific_heat = 1.0
thermal_conductivity = 100000000.0
[]
[density]
type = GenericConstantMaterial
block = '1 2 3'
prop_names = 'density'
prop_values = '1.0'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
nl_rel_tol = 1e-8
l_tol = 1e-3
l_max_its = 100
dt = 1e-1
end_time = 1.0
[]
[Postprocessors]
[temp_left]
type = SideAverageValue
boundary = 100
variable = temperature
execute_on = 'initial timestep_end'
[]
[temp_right]
type = SideAverageValue
boundary = 200
variable = temperature
execute_on = 'initial timestep_end'
[]
[flux_left]
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 100
diffusivity = thermal_conductivity
execute_on = 'initial timestep_end'
[]
[flux_right]
type = SideDiffusiveFluxIntegral
variable = temperature
boundary = 200
diffusivity = thermal_conductivity
execute_on = 'initial timestep_end'
[]
[]
[Outputs]
exodus = false
csv = true
[]
(modules/combined/tutorials/introduction/thermal_mechanical_contact/thermomech_cont_step01.i)
#
# A first attempt at thermo mechanical contact
# https://mooseframework.inl.gov/modules/combined/tutorials/introduction/step01.html
#
[GlobalParams]
displacements = 'disp_x disp_y'
block = 0
[]
[Mesh]
[generated1]
type = GeneratedMeshGenerator
dim = 2
nx = 5
ny = 15
xmin = -0.6
xmax = -0.1
ymax = 5
bias_y = 0.9
boundary_name_prefix = pillar1
[]
[generated2]
type = GeneratedMeshGenerator
dim = 2
nx = 6
ny = 15
xmin = 0.1
xmax = 0.6
ymax = 4.999
bias_y = 0.9
boundary_name_prefix = pillar2
boundary_id_offset = 4
[]
[collect_meshes]
type = MeshCollectionGenerator
inputs = 'generated1 generated2'
[]
patch_update_strategy = iteration
[]
[Variables]
# temperature field variable
[T]
# initialize to an average temperature
initial_condition = 50
order = FIRST
family = LAGRANGE
[]
# temperature lagrange multiplier
[Tlm]
block = 'pillars_secondary_subdomain'
order = FIRST
family = LAGRANGE
[]
[]
[Kernels]
[heat_conduction]
type = HeatConduction
variable = T
[]
[dTdt]
type = HeatConductionTimeDerivative
variable = T
[]
[]
[Modules/TensorMechanics/Master]
[all]
add_variables = true
strain = FINITE
generate_output = 'vonmises_stress'
[]
[]
[Contact]
[pillars]
primary = pillar1_right
secondary = pillar2_left
model = frictionless
formulation = mortar
[]
[]
[Constraints]
# thermal contact constraint
[Tlm]
type = GapConductanceConstraint
variable = Tlm
secondary_variable = T
use_displaced_mesh = true
k = 1e-1
primary_boundary = pillar1_right
primary_subdomain = pillars_primary_subdomain
secondary_boundary = pillar2_left
secondary_subdomain = pillars_secondary_subdomain
[]
[]
[BCs]
[bottom_x]
type = DirichletBC
variable = disp_x
boundary = 'pillar1_bottom pillar2_bottom'
value = 0
[]
[bottom_y]
type = DirichletBC
variable = disp_y
boundary = 'pillar1_bottom pillar2_bottom'
value = 0
[]
[Pressure]
[sides]
boundary = 'pillar1_left pillar2_right'
function = 1e4*t^2
[]
[]
# thermal boundary conditions (pillars are heated/cooled from the bottom)
[heat_left]
type = DirichletBC
variable = T
boundary = pillar1_bottom
value = 100
[]
[cool_right]
type = DirichletBC
variable = T
boundary = pillar2_bottom
value = 0
[]
[]
[Materials]
[elasticity]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e9
poissons_ratio = 0.3
[]
[stress]
type = ComputeFiniteStrainElasticStress
[]
# thermal properties
[thermal_conductivity]
type = HeatConductionMaterial
thermal_conductivity = 100
specific_heat = 1
[]
[density]
type = Density
density = 1
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
line_search = none
# we deal with the saddle point structure of the system by adding a small shift
petsc_options_iname = '-pc_type -pc_factor_shift_type'
petsc_options_value = 'lu nonzero'
end_time = 5
dt = 0.1
[Predictor]
type = SimplePredictor
scale = 1
[]
[]
[Outputs]
exodus = true
print_linear_residuals = false
perf_graph = true
[]
(modules/heat_transfer/test/tests/heat_conduction/2d_quadrature_gap_heat_transfer/moving.i)
[Mesh]
file = nonmatching.e
displacements = 'disp_x disp_y'
[]
[Variables]
[temp]
[]
[]
[AuxVariables]
[disp_x]
[]
[disp_y]
[]
[]
[Functions]
[disp_y]
type = ParsedFunction
expression = 0.1*t
[]
[left_temp]
type = ParsedFunction
expression = 1000+t
[]
[]
[Kernels]
[hc]
type = HeatConduction
variable = temp
[]
[]
[AuxKernels]
[disp_y]
type = FunctionAux
variable = disp_y
function = disp_y
block = left
execute_on = 'INITIAL TIMESTEP_BEGIN'
[]
[]
[BCs]
[left]
type = FunctionDirichletBC
variable = temp
boundary = leftleft
function = left_temp
[]
[right]
type = DirichletBC
variable = temp
boundary = rightright
value = 400
[]
[]
[ThermalContact]
[left_to_right]
secondary = leftright
quadrature = true
primary = rightleft
emissivity_primary = 0
emissivity_secondary = 0
variable = temp
type = GapHeatTransfer
[]
[]
[Materials]
[hcm]
type = HeatConductionMaterial
block = 'left right'
specific_heat = 1
thermal_conductivity = 1
use_displaced_mesh = true
[]
[]
[Postprocessors]
[left]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = leftright
diffusivity = thermal_conductivity
[]
[right]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = rightleft
diffusivity = thermal_conductivity
[]
[]
[Executioner]
type = Transient
num_steps = 9
dt = 1
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
exodus = true
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_htonly/1D.i)
[GlobalParams]
order = SECOND
family = LAGRANGE
[]
[Mesh]
coord_type = RZ
[fred]
type = GeneratedMeshGenerator
dim = 1
nx = 25
xmin = 0
xmax = 1
boundary_name_prefix = left
elem_type = edge3
[]
[wilma]
type = GeneratedMeshGenerator
dim = 1
nx = 25
xmin = 2
xmax = 3
boundary_id_offset = 10
boundary_name_prefix = right
elem_type = edge3
[]
[combine]
type = CombinerGenerator
inputs = 'fred wilma'
[]
[]
[Functions]
[temp]
type = PiecewiseLinear
x = '0 1 2'
y = '100 200 200'
[]
[]
[Variables]
[temp]
initial_condition = 100
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[]
[BCs]
[temp_far_left]
type = FunctionDirichletBC
boundary = left_left
variable = temp
function = temp
[]
[temp_far_right]
type = DirichletBC
boundary = right_right
variable = temp
value = 100
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = right_left
secondary = left_right
emissivity_primary = 0
emissivity_secondary = 0
[]
[]
[Materials]
[heat]
type = HeatConductionMaterial
specific_heat = 1.0
thermal_conductivity = 1.0e6
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
nl_abs_tol = 1e-3
nl_rel_tol = 1e-12
l_tol = 1e-8
l_max_its = 100
start_time = 0.0
dt = 2e-1
end_time = 2.0
[]
[Postprocessors]
[temp_left]
type = SideAverageValue
boundary = left_right
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_right]
type = SideAverageValue
boundary = right_left
variable = temp
execute_on = 'initial timestep_end'
[]
[]
[Outputs]
exodus = true
[]
(modules/heat_transfer/tutorials/introduction/therm_step01.i)
#
# Initial single block thermal input
# https://mooseframework.inl.gov/modules/heat_transfer/tutorials/introduction/therm_step01.html
#
[Mesh]
[generated]
type = GeneratedMeshGenerator
dim = 2
nx = 10
ny = 10
xmax = 2
ymax = 1
[]
[]
[Variables]
[T]
[]
[]
[Kernels]
[heat_conduction]
type = HeatConduction
variable = T
[]
[]
[Materials]
[thermal]
type = HeatConductionMaterial
thermal_conductivity = 45.0
[]
[]
[Executioner]
type = Transient
end_time = 5
dt = 1
[]
[Outputs]
exodus = true
[]
(modules/heat_transfer/test/tests/conjugate_heat_transfer/conjugate_heat_transfer.i)
[Mesh]
type = FileMesh
file = simple_pb.e
[]
[Variables]
[./temp_wall]
block = 'left right'
[../]
[./temp_fluid]
block = 'center'
[../]
[]
[Kernels]
[./wall_conduction]
type = ADHeatConduction
variable = temp_wall
[../]
[./heat_source]
type = HeatSource
value = 1e3 # W/m^3
variable = temp_fluid
block = 'center'
[../]
[./center_conduction]
type = ADHeatConduction
variable = temp_fluid
block = 'center'
[../]
[]
[BCs]
[./right]
type = DirichletBC
variable = temp_wall
boundary = 'right'
value = 300
[../]
[./left]
type = DirichletBC
variable = temp_wall
boundary = 'left'
value = 100
[../]
[]
[Executioner]
type = Steady
solve_type = PJFNK
[]
[Outputs]
exodus = true
[]
[Materials]
[./walls]
type = ADHeatConductionMaterial
thermal_conductivity = 10 # W/m k
block = 'left right'
specific_heat = .49e3 # J/kg k
[../]
[./pb]
type = ADHeatConductionMaterial
thermal_conductivity = 1
specific_heat = .49e3 # J/kg K
block = 'center'
[../]
[./alpha_wall]
type = ADGenericConstantMaterial
prop_names = 'alpha_wall'
prop_values = '1'
block = 'center'
[../]
[]
[InterfaceKernels]
[./left_center_wrt_center]
type = ConjugateHeatTransfer
variable = temp_fluid
T_fluid = temp_fluid
neighbor_var = 'temp_wall'
boundary = 'left_center_wrt_center'
htc = 'alpha_wall'
[../]
[./right_center_wrt_center]
type = ConjugateHeatTransfer
variable = temp_fluid
T_fluid = temp_fluid
neighbor_var = 'temp_wall'
boundary = 'right_center_wrt_center'
htc = 'alpha_wall'
[../]
[]
[Preconditioning]
[./Hypre]
type = SMP
petsc_options_value = 'lu hypre'
full = true
petsc_options_iname = '-pc_type -pc_hypre_type'
[../]
[]
(modules/combined/test/tests/elastic_thermal_patch/elastic_thermal_weak_plane_stress_jacobian.i)
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y'
temperature = temp
out_of_plane_strain = strain_zz
[]
[Mesh]
[./square]
type = GeneratedMeshGenerator
dim = 2
nx = 2
ny = 2
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./strain_zz]
[../]
[./temp]
[../]
[]
[Kernels]
[./disp_x]
type = StressDivergenceTensors
variable = disp_x
eigenstrain_names = thermal_eigenstrain
component = 0
[../]
[./disp_y]
type = StressDivergenceTensors
variable = disp_y
eigenstrain_names = thermal_eigenstrain
component = 1
[../]
[./solid_z]
type = WeakPlaneStress
variable = strain_zz
eigenstrain_names = thermal_eigenstrain
[../]
[./heat]
type = HeatConduction
variable = temp
use_displaced_mesh = false
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
poissons_ratio = 0.0
youngs_modulus = 1
[../]
[./strain]
type = ComputePlaneSmallStrain
eigenstrain_names = thermal_eigenstrain
[../]
[./thermal_strain]
type = ComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 1e-5
stress_free_temperature = 0
eigenstrain_name = thermal_eigenstrain
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[./conductivity]
type = HeatConductionMaterial
thermal_conductivity = 1
use_displaced_mesh = false
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-ksp_type -pc_type -snes_type'
petsc_options_value = 'bcgs bjacobi test'
end_time = 1.0
[]
(modules/heat_transfer/test/tests/postprocessors/ad_convective_ht_side_integral.i)
[Mesh]
[./cartesian]
type = CartesianMeshGenerator
dim = 2
dx = '0.45 0.1 0.45'
ix = '5 1 5'
dy = '0.45 0.1 0.45'
iy = '5 1 5'
subdomain_id = '1 1 1
1 2 1
1 1 1'
[../]
[./add_iss_1]
type = SideSetsBetweenSubdomainsGenerator
primary_block = 1
paired_block = 2
new_boundary = 'interface'
input = cartesian
[../]
[./block_deleter]
type = BlockDeletionGenerator
block = 2
input = add_iss_1
[../]
[]
[Variables]
[./temperature]
initial_condition = 300
[../]
[]
[AuxVariables]
[./channel_T]
family = MONOMIAL
order = CONSTANT
initial_condition = 400
[../]
[./channel_Hw]
family = MONOMIAL
order = CONSTANT
initial_condition = 1000
[../]
[]
[Kernels]
[./graphite_diffusion]
type = ADHeatConduction
variable = temperature
thermal_conductivity = 'thermal_conductivity'
[../]
[]
[BCs]
## boundary conditions for the thm channels in the reflector
[./channel_heat_transfer]
type = CoupledConvectiveHeatFluxBC
variable = temperature
htc = channel_Hw
T_infinity = channel_T
boundary = 'interface'
[../]
# hot boundary on the left
[./left]
type = DirichletBC
variable = temperature
value = 1000
boundary = 'left'
[../]
# cool boundary on the right
[./right]
type = DirichletBC
variable = temperature
value = 300
boundary = 'right'
[../]
[]
[Materials]
[./pronghorn_solid_material]
type = ADHeatConductionMaterial
temp = temperature
thermal_conductivity = 25
specific_heat = 1000
[../]
[./htc_material]
type = ADGenericConstantMaterial
prop_names = 'alpha_wall'
prop_values = '1000'
[../]
[./tfluid_mat]
type = ADPiecewiseLinearInterpolationMaterial
property = tfluid_mat
variable = channel_T
x = '400 500'
y = '400 500'
[../]
[]
[Postprocessors]
[./Qw1]
type = ADConvectiveHeatTransferSideIntegral
T_fluid_var = channel_T
htc_var = channel_Hw
T_solid = temperature
boundary = interface
[../]
[./Qw2]
type = ADConvectiveHeatTransferSideIntegral
T_fluid_var = channel_T
htc = alpha_wall
T_solid = temperature
boundary = interface
[../]
[./Qw3]
type = ADConvectiveHeatTransferSideIntegral
T_fluid = tfluid_mat
htc = alpha_wall
T_solid = temperature
boundary = interface
[../]
[]
[Executioner]
type = Steady
[]
[Outputs]
csv = true
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_mortar/modular_gap_heat_transfer_mortar_displaced_conduction.i)
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 2blk-gap.e
[]
[secondary]
type = LowerDBlockFromSidesetGenerator
sidesets = '101'
new_block_id = 10001
new_block_name = 'secondary_lower'
input = file
[]
[primary]
type = LowerDBlockFromSidesetGenerator
sidesets = '100'
new_block_id = 10000
new_block_name = 'primary_lower'
input = secondary
[]
allow_renumbering = false
[]
[Problem]
kernel_coverage_check = false
material_coverage_check = false
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
block = '1 2'
[]
[disp_x]
order = FIRST
family = LAGRANGE
block = '1 2'
[]
[disp_y]
order = FIRST
family = LAGRANGE
block = '1 2'
[]
[lm]
order = FIRST
family = LAGRANGE
block = 'secondary_lower'
[]
[]
[Materials]
[left]
type = ADHeatConductionMaterial
block = 1
thermal_conductivity = 0.01
specific_heat = 1
[]
[right]
type = ADHeatConductionMaterial
block = 2
thermal_conductivity = 0.005
specific_heat = 1
[]
[]
[Kernels]
[hc_displaced_block]
type = ADHeatConduction
variable = temp
use_displaced_mesh = true
block = '1'
[]
[hc_undisplaced_block]
type = ADHeatConduction
variable = temp
use_displaced_mesh = false
block = '2'
[]
[disp_x]
type = Diffusion
variable = disp_x
block = '1 2'
[]
[disp_y]
type = Diffusion
variable = disp_y
block = '1 2'
[]
[]
[UserObjects]
[conduction]
type = GapFluxModelConduction
temperature = temp
boundary = 100
gap_conductivity = 10.0
[]
[]
[Constraints]
[ced]
type = ModularGapConductanceConstraint
variable = lm
secondary_variable = temp
use_displaced_mesh = true
primary_boundary = 100
primary_subdomain = 10000
secondary_boundary = 101
secondary_subdomain = 10001
gap_flux_models = conduction
[]
[]
[BCs]
[left]
type = DirichletBC
variable = temp
boundary = 'left'
value = 100
[]
[right]
type = DirichletBC
variable = temp
boundary = 'right'
value = 0
[]
[left_disp_x]
type = DirichletBC
preset = false
variable = disp_x
boundary = 'left'
value = .1
[]
[right_disp_x]
type = DirichletBC
preset = false
variable = disp_x
boundary = 'right'
value = 0
[]
[bottom_disp_y]
type = DirichletBC
preset = false
variable = disp_y
boundary = 'bottom'
value = 0
[]
[]
[Preconditioning]
[fmp]
type = SMP
full = true
solve_type = 'NEWTON'
[]
[]
[Executioner]
type = Steady
nl_rel_tol = 1e-11
nl_abs_tol = 1.0e-10
[]
[VectorPostprocessors]
[NodalTemperature]
type = NodalValueSampler
sort_by = id
boundary = '100 101'
variable = 'temp'
[]
[]
[Outputs]
exodus = false
csv = true
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_htonly/gap_heat_transfer_htonly_syntax.i)
#
# 1-D Gap Heat Transfer Test without mechanics
#
# This test exercises 1-D gap heat transfer for a constant conductivity gap.
#
# The mesh consists of two element blocks containing one element each. Each
# element is a unit cube. They sit next to one another with a unit between them.
#
# The conductivity of both blocks is set very large to achieve a uniform temperature
# across each block. The temperature of the far left boundary
# is ramped from 100 to 200 over one time unit. The temperature of the far right
# boundary is held fixed at 100.
#
# A simple analytical solution is possible for the heat flux between the blocks:
#
# Flux = (T_left - T_right) * (gapK/gap_width)
#
# The gap conductivity is specified as 1, thus
#
# gapK(Tavg) = 1.0*Tavg
#
#
# The heat flux across the gap at time = 1 is then:
#
# Flux(2) = 100 * (1.0/1.0) = 100
#
# For comparison, see results from the flux post processors
#
# This test has been augmented with a second scalar field that solves nearly
# the same problem. The conductivity has been changed to 10. Thus, the
# flux for the second field is 1000.
#
[Mesh]
file = gap_heat_transfer_htonly_test.e
[]
[Functions]
[./temp]
type = PiecewiseLinear
x = '0 1 2'
y = '100 200 200'
[../]
[]
[Modules/HeatTransfer/ThermalContact/BC]
[./thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 3
secondary = 2
emissivity_primary = 0
emissivity_secondary = 0
[../]
[./awesomium_contact]
type = GapHeatTransfer
variable = awesomium
primary = 3
secondary = 2
emissivity_primary = 0
emissivity_secondary = 0
gap_conductivity = 10
appended_property_name = _awesomium
[../]
[]
[Variables]
[./temp]
order = FIRST
family = LAGRANGE
initial_condition = 100
[../]
[./awesomium]
order = FIRST
family = LAGRANGE
initial_condition = 100
[../]
[]
[AuxVariables]
[./gap_cond]
order = CONSTANT
family = MONOMIAL
[../]
[./gap_cond_awesomium]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./heat]
type = HeatConduction
variable = temp
[../]
[./awe]
type = HeatConduction
variable = awesomium
[../]
[]
[BCs]
[./temp_far_left]
type = FunctionDirichletBC
boundary = 1
variable = temp
function = temp
[../]
[./temp_far_right]
type = DirichletBC
boundary = 4
variable = temp
value = 100
[../]
[./awesomium_far_left]
type = FunctionDirichletBC
boundary = 1
variable = awesomium
function = temp
[../]
[./awesomium_far_right]
type = DirichletBC
boundary = 4
variable = awesomium
value = 100
[../]
[]
[AuxKernels]
[./conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 2
[../]
[./conductance_awe]
type = MaterialRealAux
property = gap_conductance_awesomium
variable = gap_cond_awesomium
boundary = 2
[../]
[]
[Materials]
[./heat1]
type = HeatConductionMaterial
block = '1 2'
specific_heat = 1.0
thermal_conductivity = 100000000.0
[../]
[./density]
type = GenericConstantMaterial
block = '1 2'
prop_names = 'density'
prop_values = '1.0'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
nl_rel_tol = 1e-12
l_tol = 1e-3
l_max_its = 100
dt = 1e-1
end_time = 1.0
[]
[Postprocessors]
[./temp_left]
type = SideAverageValue
boundary = 2
variable = temp
execute_on = 'initial timestep_end'
[../]
[./temp_right]
type = SideAverageValue
boundary = 3
variable = temp
execute_on = 'initial timestep_end'
[../]
[./flux_left]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 2
diffusivity = thermal_conductivity
execute_on = 'initial timestep_end'
[../]
[./flux_right]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 3
diffusivity = thermal_conductivity
execute_on = 'initial timestep_end'
[../]
[./awe_left]
type = SideAverageValue
boundary = 2
variable = awesomium
execute_on = 'initial timestep_end'
[../]
[./awe_right]
type = SideAverageValue
boundary = 3
variable = awesomium
execute_on = 'initial timestep_end'
[../]
[./awe_flux_left]
type = SideDiffusiveFluxIntegral
variable = awesomium
boundary = 2
diffusivity = thermal_conductivity
execute_on = 'initial timestep_end'
[../]
[./awe_flux_right]
type = SideDiffusiveFluxIntegral
variable = awesomium
boundary = 3
diffusivity = thermal_conductivity
execute_on = 'initial timestep_end'
[../]
[]
[Outputs]
exodus = true
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_mortar/large_gap_heat_transfer_test_rz_cylinder_mortar.i)
rpv_core_gap_size = 0.2
core_outer_radius = 2
rpv_inner_radius = '${fparse 2 + rpv_core_gap_size}'
rpv_outer_radius = '${fparse 2.5 + rpv_core_gap_size}'
rpv_width = '${fparse rpv_outer_radius - rpv_inner_radius}'
rpv_outer_htc = 10 # W/m^2/K
rpv_outer_Tinf = 300 # K
core_blocks = '1'
rpv_blocks = '3'
[Mesh]
[gmg]
type = CartesianMeshGenerator
dim = 2
dx = '${core_outer_radius} ${rpv_core_gap_size} ${rpv_width}'
ix = '400 1 100'
dy = 1
iy = '5'
[]
[set_block_id1]
type = SubdomainBoundingBoxGenerator
input = gmg
bottom_left = '0 0 0'
top_right = '${core_outer_radius} 1 0'
block_id = 1
location = INSIDE
[]
[rename_core_bdy]
type = SideSetsBetweenSubdomainsGenerator
input = set_block_id1
primary_block = 1
paired_block = 0
new_boundary = 'core_outer'
[]
[set_block_id3]
type = SubdomainBoundingBoxGenerator
input = rename_core_bdy
bottom_left = '${rpv_inner_radius} 0 0'
top_right = '${rpv_outer_radius} 1 0'
block_id = 3
location = INSIDE
[]
[rename_inner_rpv_bdy]
type = SideSetsBetweenSubdomainsGenerator
input = set_block_id3
primary_block = 3
paired_block = 0
new_boundary = 'rpv_inner'
[]
# comment out for test without gap
[2d_mesh]
type = BlockDeletionGenerator
input = rename_inner_rpv_bdy
block = 0
[]
[secondary]
type = LowerDBlockFromSidesetGenerator
sidesets = 'rpv_inner'
new_block_id = 10001
new_block_name = 'secondary_lower'
input = 2d_mesh
[]
[primary]
type = LowerDBlockFromSidesetGenerator
sidesets = 'core_outer'
new_block_id = 10000
new_block_name = 'primary_lower'
input = secondary
[]
allow_renumbering = false
[]
[Problem]
coord_type = RZ
[]
[Variables]
[Tsolid]
initial_condition = 500
[]
[lm]
order = FIRST
family = LAGRANGE
block = 'secondary_lower'
[]
[]
[Kernels]
[heat_source]
type = CoupledForce
variable = Tsolid
block = '${core_blocks}'
v = power_density
[]
[heat_conduction]
type = HeatConduction
variable = Tsolid
[]
[]
[BCs]
[RPV_out_BC] # k \nabla T = h (T- T_inf) at RPV outer boundary
type = ConvectiveFluxFunction # (Robin BC)
variable = Tsolid
boundary = 'right' # outer RPV
coefficient = ${rpv_outer_htc}
T_infinity = ${rpv_outer_Tinf}
[]
[]
[UserObjects]
[radiation]
type = GapFluxModelRadiation
temperature = Tsolid
boundary = 'rpv_inner'
primary_emissivity = 0.8
secondary_emissivity = 0.8
[]
[conduction]
type = GapFluxModelConduction
temperature = Tsolid
boundary = 'rpv_inner'
gap_conductivity = 0.1
[]
[]
[Constraints]
[ced]
type = ModularGapConductanceConstraint
variable = lm
secondary_variable = Tsolid
primary_boundary = 'core_outer'
primary_subdomain = 10000
secondary_boundary = 'rpv_inner'
secondary_subdomain = 10001
gap_flux_models = 'radiation conduction'
gap_geometry_type = 'CYLINDER'
[]
[]
[AuxVariables]
[power_density]
block = '${core_blocks}'
initial_condition = 50e3
[]
[]
[Materials]
[simple_mat]
type = HeatConductionMaterial
thermal_conductivity = 34.6 # W/m/K
[]
[]
[Postprocessors]
[Tcore_avg]
type = ElementAverageValue
variable = Tsolid
block = '${core_blocks}'
[]
[Tcore_max]
type = ElementExtremeValue
value_type = max
variable = Tsolid
block = '${core_blocks}'
[]
[Tcore_min]
type = ElementExtremeValue
value_type = min
variable = Tsolid
block = '${core_blocks}'
[]
[Trpv_avg]
type = ElementAverageValue
variable = Tsolid
block = '${rpv_blocks}'
[]
[Trpv_max]
type = ElementExtremeValue
value_type = max
variable = Tsolid
block = '${rpv_blocks}'
[]
[Trpv_min]
type = ElementExtremeValue
value_type = min
variable = Tsolid
block = '${rpv_blocks}'
[]
[ptot]
type = ElementIntegralVariablePostprocessor
variable = power_density
block = '${core_blocks}'
[]
[rpv_convective_out]
type = ConvectiveHeatTransferSideIntegral
T_solid = Tsolid
boundary = 'right' # outer RVP
T_fluid = ${rpv_outer_Tinf}
htc = ${rpv_outer_htc}
[]
[heat_balance] # should be equal to 0 upon convergence
type = ParsedPostprocessor
expression = '(rpv_convective_out - ptot) / ptot'
pp_names = 'rpv_convective_out ptot'
[]
[flux_from_core] # converges to ptot as the mesh is refined
type = SideDiffusiveFluxIntegral
variable = Tsolid
boundary = core_outer
diffusivity = thermal_conductivity
[]
[flux_into_rpv] # converges to rpv_convective_out as the mesh is refined
type = SideDiffusiveFluxIntegral
variable = Tsolid
boundary = rpv_inner
diffusivity = thermal_conductivity
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[VectorPostprocessors]
[NodalTemperature]
type = NodalValueSampler
sort_by = id
boundary = 'rpv_inner core_outer'
variable = Tsolid
[]
[]
[Executioner]
type = Steady
petsc_options = '-snes_converged_reason -pc_svd_monitor'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = ' lu superlu_dist 1e-5 NONZERO '
'1e-15'
snesmf_reuse_base = false
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
l_max_its = 100
line_search = none
[]
[Outputs]
exodus = false
csv = true
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_mortar/large_gap_heat_transfer_test_sphere.i)
sphere_outer_htc = 10 # W/m^2/K
sphere_outer_Tinf = 300 # K
[GlobalParams]
order = SECOND
family = LAGRANGE
[]
[Problem]
coord_type = RZ
[]
[Mesh]
[file]
type = FileMeshGenerator
file = cyl2D.e
[]
allow_renumbering = false
[]
[Functions]
[temp]
type = PiecewiseLinear
x = '0 1'
y = '100 200'
[]
[]
[Variables]
[temp]
initial_condition = 500
[]
[]
[AuxVariables]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[power_density]
block = 'fuel'
initial_condition = 50e3
[]
[]
[Kernels]
[heat_conduction]
type = HeatConduction
variable = temp
[]
[heat_source]
type = CoupledForce
variable = temp
block = 'fuel'
v = power_density
[]
[]
[AuxKernels]
[gap_cond]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductance
boundary = 2
[]
[]
[Materials]
[heat1]
type = HeatConductionMaterial
block = '1 2'
specific_heat = 1.0
thermal_conductivity = 34.6
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 3
secondary = 2
emissivity_primary = 0.0
emissivity_secondary = 0.0
gap_conductivity = 5
# quadrature = true
gap_geometry_type = SPHERE
sphere_origin = '0 0 0'
[]
[]
[BCs]
[RPV_out_BC] # k \nabla T = h (T- T_inf) at RPV outer boundary
type = ConvectiveFluxFunction # (Robin BC)
variable = temp
boundary = '4' # outer RPV
coefficient = ${sphere_outer_htc}
T_infinity = ${sphere_outer_Tinf}
[]
[]
[VectorPostprocessors]
[NodalTemperature]
type = NodalValueSampler
sort_by = id
boundary = '2 3'
variable = temp
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
dt = 1
dtmin = 0.01
end_time = 1
nl_rel_tol = 1e-12
nl_abs_tol = 1e-7
[Quadrature]
order = fifth
side_order = seventh
[]
[]
[Outputs]
exodus = true
csv = true
[Console]
type = Console
[]
[]
[Postprocessors]
[temp_left]
type = SideAverageValue
boundary = 2
variable = temp
[]
[temp_right]
type = SideAverageValue
boundary = 3
variable = temp
[]
[flux_left]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 2
diffusivity = thermal_conductivity
[]
[flux_right]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 3
diffusivity = thermal_conductivity
[]
[ptot]
type = ElementIntegralVariablePostprocessor
variable = power_density
block = 'fuel'
[]
[sphere_convective_out]
type = ConvectiveHeatTransferSideIntegral
T_solid = temp
boundary = '4' # outer RVP
T_fluid = ${sphere_outer_Tinf}
htc = ${sphere_outer_htc}
[]
[heat_balance] # should be equal to 0 upon convergence
type = ParsedPostprocessor
expression = '(sphere_convective_out - ptot) / ptot'
pp_names = 'sphere_convective_out ptot'
[]
[]
(modules/combined/test/tests/reference_residual/reference_residual.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
nx = 4
ny = 4
nz = 4
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[./temp]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./saved_x]
[../]
[./saved_y]
[../]
[./saved_z]
[../]
[./saved_t]
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
volumetric_locking_correction = true
incremental = true
save_in = 'saved_x saved_y saved_z'
eigenstrain_names = thermal_expansion
strain = FINITE
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
temperature = temp
[../]
[]
[Kernels]
[./heat]
type = HeatConduction
variable = temp
save_in = saved_t
extra_vector_tags = 'ref'
[../]
[]
[Functions]
[./pull]
type = PiecewiseLinear
x = '0 1 2'
y = '0 1 1'
scale_factor = 0.1
[../]
[]
[BCs]
[./bottom_x]
type = DirichletBC
variable = disp_x
boundary = bottom
value = 0.0
[../]
[./bottom_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./bottom_z]
type = DirichletBC
variable = disp_z
boundary = bottom
value = 0.0
[../]
[./top_x]
type = DirichletBC
variable = disp_x
boundary = top
value = 0.0
[../]
[./top_y]
type = FunctionDirichletBC
variable = disp_y
boundary = top
function = pull
[../]
[./top_z]
type = DirichletBC
variable = disp_z
boundary = top
value = 0.0
[../]
[./bottom_temp]
type = DirichletBC
variable = temp
boundary = bottom
value = 10.0
[../]
[./top_temp]
type = DirichletBC
variable = temp
boundary = top
value = 20.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 0
youngs_modulus = 1.0
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
block = 0
[../]
[./thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 0
eigenstrain_name = thermal_expansion
temperature = temp
thermal_expansion_coeff = 1e-5
stress_free_temperature = 0.0
[../]
[./heat1]
type = HeatConductionMaterial
block = 0
specific_heat = 1.0
thermal_conductivity = 1e-3 #Tuned to give temperature reference resid close to that of solidmech
[../]
[./density]
type = Density
block = 0
density = 1.0
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
nl_rel_tol = 1e-10
l_tol = 1e-3
l_max_its = 100
dt = 1.0
end_time = 2.0
[]
[Postprocessors]
[./ref_resid_x]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_x
[../]
[./ref_resid_y]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_y
[../]
[./ref_resid_z]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_z
[../]
[./ref_resid_t]
type = NodalL2Norm
execute_on = timestep_end
variable = saved_t
[../]
[./nonlinear_its]
type = NumNonlinearIterations
[]
[]
[Outputs]
exodus = true
[]
(python/peacock/tests/common/transient_heat_test.i)
[Mesh]
file = cube.e
[]
[Variables]
[./u]
order = FIRST
family = LAGRANGE
[../]
[]
[Kernels]
[./heat]
type = HeatConduction
variable = u
[../]
[./ie]
type = SpecificHeatConductionTimeDerivative
variable = u
[../]
[]
[BCs]
[./bottom]
type = DirichletBC
variable = u
boundary = 1
value = 0.0
[../]
[./top]
type = DirichletBC
variable = u
boundary = 2
value = 1.0
[../]
[]
[Materials]
[./constant]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 1
specific_heat = 1
[../]
[./density]
type = Density
block = 1
density = 1
[../]
[]
[Executioner]
type = Transient
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
start_time = 0.0
num_steps = 5
dt = .1
[]
[Outputs]
file_base = out
exodus = true
[]
(modules/combined/test/tests/stateful_mortar_constraints/stateful_mortar_npr.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD4
order = FIRST
[Mesh]
patch_size = 80
patch_update_strategy = auto
[plank]
type = GeneratedMeshGenerator
dim = 2
xmin = -0.3
xmax = 0.3
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[]
[plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[]
[block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.31
xmax = 0.91
ymin = 7.7
ymax = 8.5
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[]
[block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[]
[combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[]
[block_rename]
type = RenameBlockGenerator
input = combined
old_block = '1 2'
new_block = 'plank block'
[]
[secondary]
input = block_rename
type = LowerDBlockFromSidesetGenerator
sidesets = 'block_left'
new_block_id = '30'
new_block_name = 'frictionless_secondary_subdomain'
[]
[primary]
input = secondary
type = LowerDBlockFromSidesetGenerator
sidesets = 'plank_right'
new_block_id = '20'
new_block_name = 'frictionless_primary_subdomain'
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[disp_x]
order = ${order}
block = 'plank block'
scaling = '${fparse 2.0 / (E_plank + E_block)}'
[]
[disp_y]
order = ${order}
block = 'plank block'
scaling = '${fparse 2.0 / (E_plank + E_block)}'
[]
[temp]
order = ${order}
block = 'plank block'
scaling = 1e-1
[]
[thermal_lm]
order = ${order}
block = 'frictionless_secondary_subdomain'
scaling = 1e-7
[]
[frictionless_normal_lm]
order = ${order}
block = 'frictionless_secondary_subdomain'
use_dual = true
[]
[]
[AuxVariables]
[stress_xx]
order = FIRST
family = MONOMIAL
block = 'plank block'
[]
[stress_yy]
order = FIRST
family = MONOMIAL
block = 'plank block'
[]
[stress_xx_recovered]
order = FIRST
family = LAGRANGE
block = 'plank block'
[]
[stress_yy_recovered]
order = FIRST
family = LAGRANGE
block = 'plank block'
[]
[]
[AuxKernels]
[stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = 'timestep_end'
block = 'plank block'
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = 'timestep_end'
block = 'plank block'
[]
[stress_xx_recovered]
type = NodalPatchRecoveryAux
variable = stress_xx_recovered
nodal_patch_recovery_uo = stress_xx_patch
execute_on = 'TIMESTEP_END'
block = 'plank block'
[]
[stress_yy_recovered]
type = NodalPatchRecoveryAux
variable = stress_yy_recovered
nodal_patch_recovery_uo = stress_yy_patch
execute_on = 'TIMESTEP_END'
block = 'plank block'
[]
[]
[Modules/TensorMechanics/Master]
[action]
generate_output = 'stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank block'
use_automatic_differentiation = false
strain = FINITE
[]
[]
[Kernels]
[hc]
type = HeatConduction
variable = temp
use_displaced_mesh = true
block = 'plank block'
[]
[]
[UserObjects]
[weighted_gap_uo]
type = LMWeightedGapUserObject
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
lm_variable = frictionless_normal_lm
disp_x = disp_x
disp_y = disp_y
[]
[stress_xx_patch]
type = NodalPatchRecoveryMaterialProperty
patch_polynomial_order = FIRST
property = 'stress'
component = '0 0'
execute_on = 'NONLINEAR TIMESTEP_END'
block = 'plank block'
[]
[stress_yy_patch]
type = NodalPatchRecoveryMaterialProperty
patch_polynomial_order = FIRST
property = 'stress'
component = '1 1'
execute_on = 'NONLINEAR TIMESTEP_END'
block = 'plank block'
[]
[]
[Constraints]
[weighted_gap_lm]
type = ComputeWeightedGapLMMechanicalContact
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
variable = frictionless_normal_lm
disp_x = disp_x
disp_y = disp_y
use_displaced_mesh = true
weighted_gap_uo = weighted_gap_uo
[]
[normal_x]
type = NormalMortarMechanicalContact
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
variable = frictionless_normal_lm
secondary_variable = disp_x
component = x
use_displaced_mesh = true
compute_lm_residuals = false
weighted_gap_uo = weighted_gap_uo
[]
[normal_y]
type = NormalMortarMechanicalContact
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
variable = frictionless_normal_lm
secondary_variable = disp_y
component = y
use_displaced_mesh = true
compute_lm_residuals = false
weighted_gap_uo = weighted_gap_uo
[]
[thermal_contact]
type = GapConductanceStatefulConstraint
variable = thermal_lm
secondary_variable = temp
k = 0.0001
use_displaced_mesh = true
primary_boundary = plank_right
primary_subdomain = frictionless_primary_subdomain
secondary_boundary = block_left
secondary_subdomain = frictionless_secondary_subdomain
displacements = 'disp_x disp_y'
stateful_variable = stress_xx_recovered
[]
[]
[BCs]
[left_temp]
type = DirichletBC
variable = temp
boundary = 'plank_left'
value = 400
[]
[right_temp]
type = DirichletBC
variable = temp
boundary = 'block_right'
value = 300
[]
[left_x]
type = DirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
[]
[left_y]
type = DirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
[]
[right_x]
type = FunctionDirichletBC
variable = disp_x
boundary = block_right
function = '-0.04*sin(4*(t+1.5))+0.02'
preset = false
[]
[right_y]
type = FunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
preset = false
[]
[]
[Materials]
[plank]
type = ComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[]
[block]
type = ComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[]
[stress]
type = ComputeFiniteStrainElasticStress
block = 'plank block'
[]
[heat_plank]
type = HeatConductionMaterial
block = plank
thermal_conductivity = 2
specific_heat = 1
[]
[heat_block]
type = HeatConductionMaterial
block = block
thermal_conductivity = 1
specific_heat = 1
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -snes_max_it'
petsc_options_value = 'lu NONZERO 1e-15 20'
end_time = 0.5
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'none'
[]
[Postprocessors]
[avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[]
[avg_temp]
type = ElementAverageValue
variable = temp
block = 'block'
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[]
[avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[]
[max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[]
[min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[]
[stress_xx_recovered]
type = ElementExtremeValue
variable = stress_xx_recovered
block = 'block'
value_type = max
[]
[stress_yy_recovered]
type = ElementExtremeValue
variable = stress_yy_recovered
block = 'block'
value_type = max
[]
[min_temperature]
type = ElementExtremeValue
variable = temp
block = 'plank'
value_type = min
[]
[]
[Outputs]
exodus = true
[out]
type = CSV
[]
[dof]
type = DOFMap
execute_on = 'initial'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/combined/test/tests/adaptive_timestepping/adapt_tstep_function_change.i)
# This is a test designed to evaluate the cabability of the
# IterationAdaptiveDT TimeStepper to adjust time step size according to
# a function. For example, if the power input function for a BISON
# simulation rapidly increases or decreases, the IterationAdaptiveDT
# TimeStepper should take time steps small enough to capture the
# oscillation.
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
order = FIRST
family = LAGRANGE
block = 1
[]
[Mesh]
file = 1hex8_10mm_cube.e
[]
[Functions]
[./Fiss_Function]
type = PiecewiseLinear
x = '0 1e6 2e6 2.001e6 2.002e6'
y = '0 3e8 3e8 12e8 0'
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./temp]
initial_condition = 300.0
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = FINITE
volumetric_locking_correction = true
incremental = true
eigenstrain_names = thermal_expansion
decomposition_method = EigenSolution
add_variables = true
generate_output = 'vonmises_stress'
temperature = temp
[../]
[]
[Kernels]
[./heat]
type = HeatConduction
variable = temp
[../]
[./heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[../]
[./heat_source]
type = HeatSource
variable = temp
value = 1.0
function = Fiss_Function
[../]
[]
[BCs]
[./bottom_temp]
type = DirichletBC
variable = temp
boundary = 1
value = 300
[../]
[./top_bottom_disp_x]
type = DirichletBC
variable = disp_x
boundary = '1'
value = 0
[../]
[./top_bottom_disp_y]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0
[../]
[./top_bottom_disp_z]
type = DirichletBC
variable = disp_z
boundary = '1'
value = 0
[../]
[]
[Materials]
[./thermal]
type = HeatConductionMaterial
temp = temp
specific_heat = 1.0
thermal_conductivity = 1.0
[../]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 300e6
poissons_ratio = .3
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
[../]
[./thermal_expansion]
type = ComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 5e-6
stress_free_temperature = 300.0
temperature = temp
eigenstrain_name = thermal_expansion
[../]
[./density]
type = Density
density = 10963.0
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
verbose = true
nl_abs_tol = 1e-10
start_time = 0.0
num_steps = 50000
end_time = 2.002e6
[./TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_function = Fiss_Function
max_function_change = 3e7
dt = 1e6
[../]
[]
[Postprocessors]
[./Temperature_of_Block]
type = ElementAverageValue
variable = temp
execute_on = 'initial timestep_end'
[../]
[./vonMises]
type = ElementAverageValue
variable = vonmises_stress
execute_on = 'initial timestep_end'
[../]
[]
[Outputs]
[./out]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 10
[../]
[]
(modules/combined/test/tests/gap_heat_transfer_mortar/finite-2d/finite.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD4
order = FIRST
name = 'finite'
[Mesh]
patch_size = 80
patch_update_strategy = auto
[plank]
type = GeneratedMeshGenerator
dim = 2
xmin = -0.3
xmax = 0.3
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[]
[plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[]
[block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.31
xmax = 0.91
ymin = 7.7
ymax = 8.5
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[]
[block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[]
[combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[]
[block_rename]
type = RenameBlockGenerator
input = combined
old_block = '1 2'
new_block = 'plank block'
[]
[secondary]
input = block_rename
type = LowerDBlockFromSidesetGenerator
sidesets = 'block_left'
new_block_id = '30'
new_block_name = 'frictionless_secondary_subdomain'
[]
[primary]
input = secondary
type = LowerDBlockFromSidesetGenerator
sidesets = 'plank_right'
new_block_id = '20'
new_block_name = 'frictionless_primary_subdomain'
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[disp_x]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[]
[disp_y]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[]
[temp]
order = ${order}
block = 'plank block'
scaling = 1e-1
[]
[thermal_lm]
order = ${order}
block = 'frictionless_secondary_subdomain'
scaling = 1e-7
[]
[frictionless_normal_lm]
order = ${order}
block = 'frictionless_secondary_subdomain'
use_dual = true
[]
[]
[Modules/TensorMechanics/Master]
[action]
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank block'
use_automatic_differentiation = true
strain = FINITE
[]
[]
[Kernels]
[hc]
type = ADHeatConduction
variable = temp
use_displaced_mesh = true
block = 'plank block'
[]
[]
[UserObjects]
[weighted_gap_uo]
type = LMWeightedGapUserObject
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
lm_variable = frictionless_normal_lm
disp_x = disp_x
disp_y = disp_y
[]
[]
[Constraints]
[weighted_gap_lm]
type = ComputeWeightedGapLMMechanicalContact
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
variable = frictionless_normal_lm
disp_x = disp_x
disp_y = disp_y
use_displaced_mesh = true
weighted_gap_uo = weighted_gap_uo
[]
[normal_x]
type = NormalMortarMechanicalContact
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
variable = frictionless_normal_lm
secondary_variable = disp_x
component = x
use_displaced_mesh = true
compute_lm_residuals = false
weighted_gap_uo = weighted_gap_uo
[]
[normal_y]
type = NormalMortarMechanicalContact
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
variable = frictionless_normal_lm
secondary_variable = disp_y
component = y
use_displaced_mesh = true
compute_lm_residuals = false
weighted_gap_uo = weighted_gap_uo
[]
[thermal_contact]
type = GapConductanceConstraint
variable = thermal_lm
secondary_variable = temp
k = 1
use_displaced_mesh = true
primary_boundary = plank_right
primary_subdomain = frictionless_primary_subdomain
secondary_boundary = block_left
secondary_subdomain = frictionless_secondary_subdomain
displacements = 'disp_x disp_y'
[]
[]
[BCs]
[left_temp]
type = ADDirichletBC
variable = temp
boundary = 'plank_left'
value = 400
[]
[right_temp]
type = ADDirichletBC
variable = temp
boundary = 'block_right'
value = 300
[]
[left_x]
type = ADDirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
[]
[left_y]
type = ADDirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
[]
[right_x]
type = ADFunctionDirichletBC
variable = disp_x
boundary = block_right
function = '-0.04*sin(4*(t+1.5))+0.02'
preset = false
[]
[right_y]
type = ADFunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
preset = false
[]
[]
[Materials]
[plank]
type = ADComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[]
[block]
type = ADComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[]
[stress]
type = ADComputeFiniteStrainElasticStress
block = 'plank block'
[]
[heat_plank]
type = ADHeatConductionMaterial
block = plank
thermal_conductivity = 2
specific_heat = 1
[]
[heat_block]
type = ADHeatConductionMaterial
block = block
thermal_conductivity = 1
specific_heat = 1
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -snes_max_it'
petsc_options_value = 'lu NONZERO 1e-15 20'
end_time = 13.5
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'none'
[]
[Postprocessors]
[nl_its]
type = NumNonlinearIterations
[]
[total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[]
[l_its]
type = NumLinearIterations
[]
[total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[]
[contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[]
[avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[]
[avg_temp]
type = ElementAverageValue
variable = temp
block = 'block'
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[]
[avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[]
[max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[]
[min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[]
[]
[Outputs]
file_base = ${name}
[comp]
type = CSV
show = 'contact avg_temp'
[]
[out]
type = CSV
file_base = '${name}_out'
[]
[dof]
type = DOFMap
execute_on = 'initial'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/combined/test/tests/gap_heat_transfer_mortar/finite-2d/finite_rr.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD4
order = FIRST
name = 'finite'
[Mesh]
patch_size = 80
patch_update_strategy = auto
[plank]
type = GeneratedMeshGenerator
dim = 2
xmin = -0.3
xmax = 0.3
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[]
[plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[]
[block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.31
xmax = 0.91
ymin = 7.7
ymax = 8.5
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[]
[block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[]
[combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[]
[block_rename]
type = RenameBlockGenerator
input = combined
old_block = '1 2'
new_block = 'plank block'
[]
[secondary]
input = block_rename
type = LowerDBlockFromSidesetGenerator
sidesets = 'block_left'
new_block_id = '30'
new_block_name = 'frictionless_secondary_subdomain'
[]
[primary]
input = secondary
type = LowerDBlockFromSidesetGenerator
sidesets = 'plank_right'
new_block_id = '20'
new_block_name = 'frictionless_primary_subdomain'
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Variables]
[disp_x]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[]
[disp_y]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[]
[temp]
order = ${order}
block = 'plank block'
scaling = 1e-1
[]
[thermal_lm]
order = ${order}
block = 'frictionless_secondary_subdomain'
scaling = 1e-7
[]
[frictionless_normal_lm]
order = ${order}
block = 'frictionless_secondary_subdomain'
use_dual = true
[]
[]
[Modules/TensorMechanics/Master]
[action]
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank block'
use_automatic_differentiation = true
strain = FINITE
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[hc]
type = ADHeatConduction
variable = temp
use_displaced_mesh = true
block = 'plank block'
extra_vector_tags = 'ref'
[]
[]
[UserObjects]
[weighted_gap_uo]
type = LMWeightedGapUserObject
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
lm_variable = frictionless_normal_lm
disp_x = disp_x
disp_y = disp_y
[]
[]
[Constraints]
[weighted_gap_lm]
type = ComputeWeightedGapLMMechanicalContact
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
variable = frictionless_normal_lm
disp_x = disp_x
disp_y = disp_y
use_displaced_mesh = true
weighted_gap_uo = weighted_gap_uo
[]
[normal_x]
type = NormalMortarMechanicalContact
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
variable = frictionless_normal_lm
secondary_variable = disp_x
component = x
use_displaced_mesh = true
compute_lm_residuals = false
weighted_gap_uo = weighted_gap_uo
[]
[normal_y]
type = NormalMortarMechanicalContact
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
variable = frictionless_normal_lm
secondary_variable = disp_y
component = y
use_displaced_mesh = true
compute_lm_residuals = false
weighted_gap_uo = weighted_gap_uo
[]
[thermal_contact]
type = GapConductanceConstraint
variable = thermal_lm
secondary_variable = temp
k = 1
use_displaced_mesh = true
primary_boundary = plank_right
primary_subdomain = frictionless_primary_subdomain
secondary_boundary = block_left
secondary_subdomain = frictionless_secondary_subdomain
displacements = 'disp_x disp_y'
[]
[]
[BCs]
[left_temp]
type = ADDirichletBC
variable = temp
boundary = 'plank_left'
value = 400
[]
[right_temp]
type = ADDirichletBC
variable = temp
boundary = 'block_right'
value = 300
[]
[left_x]
type = ADDirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
[]
[left_y]
type = ADDirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
[]
[right_x]
type = ADFunctionDirichletBC
variable = disp_x
boundary = block_right
function = '-0.04*sin(4*(t+1.5))+0.02'
preset = false
[]
[right_y]
type = ADFunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
preset = false
[]
[]
[Materials]
[plank]
type = ADComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[]
[block]
type = ADComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[]
[stress]
type = ADComputeFiniteStrainElasticStress
block = 'plank block'
[]
[heat_plank]
type = ADHeatConductionMaterial
block = plank
thermal_conductivity = 2
specific_heat = 1
[]
[heat_block]
type = ADHeatConductionMaterial
block = block
thermal_conductivity = 1
specific_heat = 1
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -snes_max_it'
petsc_options_value = 'lu NONZERO 1e-15 20'
end_time = 13.5
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'none'
nl_abs_tol = 1e-13
[]
[Postprocessors]
[nl_its]
type = NumNonlinearIterations
[]
[total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[]
[l_its]
type = NumLinearIterations
[]
[total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[]
[contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[]
[avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[]
[avg_temp]
type = ElementAverageValue
variable = temp
block = 'block'
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[]
[avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[]
[max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[]
[min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[]
[]
[Outputs]
file_base = ${name}
[comp]
type = CSV
show = 'contact avg_temp'
[]
[out]
type = CSV
file_base = '${name}_out'
[]
[dof]
type = DOFMap
execute_on = 'initial'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/combined/test/tests/nodal_patch_recovery/npr_with_lower_domains.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD4
order = FIRST
[Mesh]
patch_size = 80
patch_update_strategy = auto
[plank]
type = GeneratedMeshGenerator
dim = 2
xmin = -0.3
xmax = 0.3
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[]
[plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[]
[block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.31
xmax = 0.91
ymin = 7.7
ymax = 8.5
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[]
[block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[]
[combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[]
[block_rename]
type = RenameBlockGenerator
input = combined
old_block = '1 2'
new_block = 'plank block'
[]
[secondary]
input = block_rename
type = LowerDBlockFromSidesetGenerator
sidesets = 'block_left'
new_block_id = '30'
new_block_name = 'frictionless_secondary_subdomain'
[]
[primary]
input = secondary
type = LowerDBlockFromSidesetGenerator
sidesets = 'plank_right'
new_block_id = '20'
new_block_name = 'frictionless_primary_subdomain'
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[disp_x]
order = ${order}
block = 'plank block'
scaling = '${fparse 2.0 / (E_plank + E_block)}'
[]
[disp_y]
order = ${order}
block = 'plank block'
scaling = '${fparse 2.0 / (E_plank + E_block)}'
[]
[temp]
order = ${order}
block = 'plank block'
scaling = 1e-1
[]
[thermal_lm]
order = ${order}
block = 'frictionless_secondary_subdomain'
scaling = 1e-7
[]
[frictionless_normal_lm]
order = ${order}
block = 'frictionless_secondary_subdomain'
use_dual = true
[]
[]
[AuxVariables]
[stress_xx]
order = FIRST
family = MONOMIAL
block = 'plank block'
[]
[stress_yy]
order = FIRST
family = MONOMIAL
block = 'plank block'
[]
[stress_xx_recovered]
order = FIRST
family = LAGRANGE
block = 'plank block'
[]
[stress_yy_recovered]
order = FIRST
family = LAGRANGE
block = 'plank block'
[]
[]
[AuxKernels]
[stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = 'timestep_end'
block = 'plank block'
[]
[stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = 'timestep_end'
block = 'plank block'
[]
[stress_xx_recovered]
type = NodalPatchRecoveryAux
variable = stress_xx_recovered
nodal_patch_recovery_uo = stress_xx_patch
execute_on = 'TIMESTEP_END'
block = 'plank block'
[]
[stress_yy_recovered]
type = NodalPatchRecoveryAux
variable = stress_yy_recovered
nodal_patch_recovery_uo = stress_yy_patch
execute_on = 'TIMESTEP_END'
block = 'plank block'
[]
[]
[Modules/TensorMechanics/Master]
[action]
generate_output = 'stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank block'
use_automatic_differentiation = false
strain = FINITE
[]
[]
[Kernels]
[hc]
type = HeatConduction
variable = temp
use_displaced_mesh = true
block = 'plank block'
[]
[]
[UserObjects]
[weighted_gap_uo]
type = LMWeightedGapUserObject
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
lm_variable = frictionless_normal_lm
disp_x = disp_x
disp_y = disp_y
[]
[stress_xx_patch]
type = NodalPatchRecoveryMaterialProperty
patch_polynomial_order = FIRST
property = 'stress'
component = '0 0'
execute_on = 'NONLINEAR TIMESTEP_END'
block = 'plank block'
[]
[stress_yy_patch]
type = NodalPatchRecoveryMaterialProperty
patch_polynomial_order = FIRST
property = 'stress'
component = '1 1'
execute_on = 'NONLINEAR TIMESTEP_END'
block = 'plank block'
[]
[]
[Constraints]
[weighted_gap_lm]
type = ComputeWeightedGapLMMechanicalContact
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
variable = frictionless_normal_lm
disp_x = disp_x
disp_y = disp_y
use_displaced_mesh = true
weighted_gap_uo = weighted_gap_uo
[]
[normal_x]
type = NormalMortarMechanicalContact
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
variable = frictionless_normal_lm
secondary_variable = disp_x
component = x
use_displaced_mesh = true
compute_lm_residuals = false
weighted_gap_uo = weighted_gap_uo
[]
[normal_y]
type = NormalMortarMechanicalContact
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
variable = frictionless_normal_lm
secondary_variable = disp_y
component = y
use_displaced_mesh = true
compute_lm_residuals = false
weighted_gap_uo = weighted_gap_uo
[]
[thermal_contact]
type = GapConductanceConstraint
variable = thermal_lm
secondary_variable = temp
k = 1
use_displaced_mesh = true
primary_boundary = plank_right
primary_subdomain = frictionless_primary_subdomain
secondary_boundary = block_left
secondary_subdomain = frictionless_secondary_subdomain
displacements = 'disp_x disp_y'
[]
[]
[BCs]
[left_temp]
type = DirichletBC
variable = temp
boundary = 'plank_left'
value = 400
[]
[right_temp]
type = DirichletBC
variable = temp
boundary = 'block_right'
value = 300
[]
[left_x]
type = DirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
[]
[left_y]
type = DirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
[]
[right_x]
type = FunctionDirichletBC
variable = disp_x
boundary = block_right
function = '-0.04*sin(4*(t+1.5))+0.02'
preset = false
[]
[right_y]
type = FunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
preset = false
[]
[]
[Materials]
[plank]
type = ComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[]
[block]
type = ComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[]
[stress]
type = ComputeFiniteStrainElasticStress
block = 'plank block'
[]
[heat_plank]
type = HeatConductionMaterial
block = plank
thermal_conductivity = 2
specific_heat = 1
[]
[heat_block]
type = HeatConductionMaterial
block = block
thermal_conductivity = 1
specific_heat = 1
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -snes_max_it'
petsc_options_value = 'lu NONZERO 1e-15 20'
end_time = 0.4
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'none'
[]
[Postprocessors]
[nl_its]
type = NumNonlinearIterations
[]
[total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[]
[l_its]
type = NumLinearIterations
[]
[total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[]
[contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[]
[avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[]
[avg_temp]
type = ElementAverageValue
variable = temp
block = 'block'
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[]
[avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[]
[max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[]
[min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[]
[stress_xx_recovered]
type = ElementExtremeValue
variable = stress_xx_recovered
block = 'block'
value_type = max
[]
[stress_yy_recovered]
type = ElementExtremeValue
variable = stress_yy_recovered
block = 'block'
value_type = max
[]
[]
[Outputs]
exodus = true
[comp]
type = CSV
show = 'contact avg_temp'
[]
[out]
type = CSV
[]
[dof]
type = DOFMap
execute_on = 'initial'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_mortar/modular_gap_heat_transfer_mortar_displaced.i)
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 2blk-gap.e
[]
[secondary]
type = LowerDBlockFromSidesetGenerator
sidesets = '101'
new_block_id = 10001
new_block_name = 'secondary_lower'
input = file
[]
[primary]
type = LowerDBlockFromSidesetGenerator
sidesets = '100'
new_block_id = 10000
new_block_name = 'primary_lower'
input = secondary
[]
[]
[Problem]
kernel_coverage_check = false
material_coverage_check = false
[]
[Variables]
[./temp]
order = FIRST
family = LAGRANGE
block = '1 2'
[../]
[./disp_x]
order = FIRST
family = LAGRANGE
block = '1 2'
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
block = '1 2'
[../]
[./lm]
order = FIRST
family = LAGRANGE
block = 'secondary_lower'
[../]
[]
[Materials]
[./left]
type = ADHeatConductionMaterial
block = 1
thermal_conductivity = 1000
specific_heat = 1
[../]
[./right]
type = ADHeatConductionMaterial
block = 2
thermal_conductivity = 500
specific_heat = 1
[../]
[]
[Kernels]
[./hc_displaced_block]
type = ADHeatConduction
variable = temp
use_displaced_mesh = true
block = '1'
[../]
[./hc_undisplaced_block]
type = ADHeatConduction
variable = temp
use_displaced_mesh = false
block = '2'
[../]
[disp_x]
type = Diffusion
variable = disp_x
block = '1 2'
[]
[disp_y]
type = Diffusion
variable = disp_y
block = '1 2'
[]
[]
[UserObjects]
[simple]
type = GapFluxModelSimple
k = 100
temperature = temp
boundary = 100
[]
[]
[Constraints]
[ced]
type = ModularGapConductanceConstraint
variable = lm
secondary_variable = temp
use_displaced_mesh = true
primary_boundary = 100
primary_subdomain = 10000
secondary_boundary = 101
secondary_subdomain = 10001
gap_flux_models = simple
[]
[]
[BCs]
[./left]
type = DirichletBC
variable = temp
boundary = 'left'
value = 1
[../]
[./right]
type = DirichletBC
variable = temp
boundary = 'right'
value = 0
[../]
[left_disp_x]
type = DirichletBC
preset = false
variable = disp_x
boundary = 'left'
value = .1
[]
[right_disp_x]
type = DirichletBC
preset = false
variable = disp_x
boundary = 'right'
value = 0
[]
[bottom_disp_y]
type = DirichletBC
preset = false
variable = disp_y
boundary = 'bottom'
value = 0
[]
[]
[Preconditioning]
[./fmp]
type = SMP
full = true
solve_type = 'NEWTON'
[../]
[]
[Executioner]
type = Steady
nl_rel_tol = 1e-11
[]
[Outputs]
exodus = true
show = 'temp disp_x disp_y'
[dof]
type = DOFMap
execute_on = 'initial'
[]
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_mortar/gap_heat_transfer_mortar.i)
[Mesh]
[file]
type = FileMeshGenerator
file = 2blk-gap.e
[]
[secondary]
type = LowerDBlockFromSidesetGenerator
sidesets = '101'
new_block_id = '10001'
new_block_name = 'secondary_lower'
input = file
[]
[primary]
type = LowerDBlockFromSidesetGenerator
sidesets = '100'
new_block_id = '10000'
new_block_name = 'primary_lower'
input = secondary
[]
[]
[Problem]
kernel_coverage_check = false
material_coverage_check = false
[]
[Variables]
[./temp]
order = FIRST
family = LAGRANGE
block = '1 2'
[../]
[./lm]
order = FIRST
family = LAGRANGE
block = 'secondary_lower'
[../]
[]
[Materials]
[./left]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 1000
specific_heat = 1
[../]
[./right]
type = HeatConductionMaterial
block = 2
thermal_conductivity = 500
specific_heat = 1
[../]
[]
[Kernels]
[./hc]
type = HeatConduction
variable = temp
use_displaced_mesh = false
block = '1 2'
[../]
[]
[Constraints]
[./ced]
type = GapConductanceConstraint
variable = lm
secondary_variable = temp
k = 100
primary_boundary = 100
primary_subdomain = 10000
secondary_boundary = 101
secondary_subdomain = 10001
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = temp
boundary = 'left'
value = 1
[../]
[./right]
type = DirichletBC
variable = temp
boundary = 'right'
value = 0
[../]
[]
[Preconditioning]
[./fmp]
type = SMP
full = true
[../]
[]
[Executioner]
type = Steady
solve_type = 'PJFNK'
nl_rel_tol = 1e-11
[]
[Outputs]
exodus = true
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_mortar/modular_gap_heat_transfer_mortar_displaced_conduction_function.i)
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 2blk-gap.e
[]
[secondary]
type = LowerDBlockFromSidesetGenerator
sidesets = '101'
new_block_id = 10001
new_block_name = 'secondary_lower'
input = file
[]
[primary]
type = LowerDBlockFromSidesetGenerator
sidesets = '100'
new_block_id = 10000
new_block_name = 'primary_lower'
input = secondary
[]
allow_renumbering = false
[]
[Problem]
kernel_coverage_check = false
material_coverage_check = false
[]
[AuxVariables]
[dummy]
order = FIRST
family = LAGRANGE
initial_condition = 1.0
[]
[]
[Functions]
[function]
type = ParsedFunction
expression = 'if(t > 100.0, 0.0, t)'
[]
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
block = '1 2'
[]
[disp_x]
order = FIRST
family = LAGRANGE
block = '1 2'
[]
[disp_y]
order = FIRST
family = LAGRANGE
block = '1 2'
[]
[lm]
order = FIRST
family = LAGRANGE
block = 'secondary_lower'
[]
[]
[Materials]
[left]
type = ADHeatConductionMaterial
block = 1
thermal_conductivity = 0.01
specific_heat = 1
[]
[right]
type = ADHeatConductionMaterial
block = 2
thermal_conductivity = 0.005
specific_heat = 1
[]
[]
[Kernels]
[hc_displaced_block]
type = ADHeatConduction
variable = temp
use_displaced_mesh = true
block = '1'
[]
[hc_undisplaced_block]
type = ADHeatConduction
variable = temp
use_displaced_mesh = false
block = '2'
[]
[disp_x]
type = Diffusion
variable = disp_x
block = '1 2'
[]
[disp_y]
type = Diffusion
variable = disp_y
block = '1 2'
[]
[]
[UserObjects]
[conduction]
type = GapFluxModelConduction
temperature = temp
boundary = 100
gap_conductivity = 10.0
gap_conductivity_function_variable = dummy
gap_conductivity_function = function
[]
[]
[Constraints]
[ced]
type = ModularGapConductanceConstraint
variable = lm
secondary_variable = temp
use_displaced_mesh = true
primary_boundary = 100
primary_subdomain = 10000
secondary_boundary = 101
secondary_subdomain = 10001
gap_flux_models = conduction
[]
[]
[BCs]
[left]
type = DirichletBC
variable = temp
boundary = 'left'
value = 100
[]
[right]
type = DirichletBC
variable = temp
boundary = 'right'
value = 0
[]
[left_disp_x]
type = DirichletBC
preset = false
variable = disp_x
boundary = 'left'
value = .1
[]
[right_disp_x]
type = DirichletBC
preset = false
variable = disp_x
boundary = 'right'
value = 0
[]
[bottom_disp_y]
type = DirichletBC
preset = false
variable = disp_y
boundary = 'bottom'
value = 0
[]
[]
[Preconditioning]
[fmp]
type = SMP
full = true
solve_type = 'NEWTON'
[]
[]
[Executioner]
type = Steady
nl_rel_tol = 1e-11
nl_abs_tol = 1.0e-10
[]
[VectorPostprocessors]
[NodalTemperature]
type = NodalValueSampler
sort_by = id
boundary = '100 101'
variable = 'temp'
[]
[]
[Outputs]
exodus = false
csv = true
[]
(modules/heat_transfer/test/tests/heat_conduction/2d_quadrature_gap_heat_transfer/nonmatching.i)
[Mesh]
file = nonmatching.e
[]
[Variables]
[./temp]
[../]
[]
[Kernels]
[./hc]
type = HeatConduction
variable = temp
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = temp
boundary = leftleft
value = 1000
[../]
[./right]
type = DirichletBC
variable = temp
boundary = rightright
value = 400
[../]
[]
[ThermalContact]
[./left_to_right]
emissivity_primary = 0
emissivity_secondary = 0
secondary = leftright
quadrature = true
primary = rightleft
variable = temp
type = GapHeatTransfer
[../]
[]
[Materials]
[./hcm]
type = HeatConductionMaterial
block = 'left right'
specific_heat = 1
thermal_conductivity = 1
[../]
[./gap_conductance]
type = GenericConstantMaterial
prop_names = 'gap_conductance gap_conductance_dT'
boundary = 'leftright rightleft'
prop_values = '1 0'
[../]
[]
[Postprocessors]
[./left]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = leftright
diffusivity = thermal_conductivity
[../]
[./right]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = rightleft
diffusivity = thermal_conductivity
[../]
[]
[Executioner]
type = Steady
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
exodus = true
[]
(modules/heat_transfer/test/tests/heat_conduction/3d_quadrature_gap_heat_transfer/nonmatching.i)
[Mesh]
file = nonmatching.e
[]
[Variables]
[./temp]
[../]
[]
[Kernels]
[./hc]
type = HeatConduction
variable = temp
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = temp
boundary = leftleft
value = 1000
[../]
[./right]
type = DirichletBC
variable = temp
boundary = rightright
value = 400
[../]
[]
[ThermalContact]
[./left_to_right]
secondary = leftright
quadrature = true
primary = rightleft
variable = temp
emissivity_primary = 0
emissivity_secondary = 0
type = GapHeatTransfer
[../]
[]
[Materials]
[./hcm]
type = HeatConductionMaterial
block = 'left right'
specific_heat = 1
thermal_conductivity = 1
[../]
[]
[Postprocessors]
[./left]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = leftright
diffusivity = thermal_conductivity
[../]
[./right]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = rightleft
diffusivity = thermal_conductivity
[../]
[]
[Executioner]
type = Steady
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
exodus = true
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_balance/large_gap_heat_transfer_test_sphere.i)
sphere_outer_htc = 10 # W/m^2/K
sphere_outer_Tinf = 300 # K
[GlobalParams]
order = SECOND
family = LAGRANGE
[]
[Problem]
coord_type = RZ
[]
[Mesh]
[file]
type = FileMeshGenerator
file = cyl2D.e
[]
[]
[Functions]
[temp]
type = PiecewiseLinear
x = '0 1'
y = '100 200'
[]
[]
[Variables]
[temp]
initial_condition = 500
[]
[]
[AuxVariables]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[power_density]
block = 'fuel'
initial_condition = 50e3
[]
[]
[Kernels]
[heat_conduction]
type = HeatConduction
variable = temp
[]
[heat_source]
type = CoupledForce
variable = temp
block = 'fuel'
v = power_density
[]
[]
[AuxKernels]
[gap_cond]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductance
boundary = 2
[]
[]
[Materials]
[heat1]
type = HeatConductionMaterial
block = '1 2'
specific_heat = 1.0
thermal_conductivity = 34.6
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 3
secondary = 2
emissivity_primary = 0.8
emissivity_secondary = 0.8
gap_conductivity = 0.1
quadrature = true
gap_geometry_type = SPHERE
sphere_origin = '0 0 0'
[]
[]
[BCs]
[RPV_out_BC] # k \nabla T = h (T- T_inf) at RPV outer boundary
type = ConvectiveFluxFunction # (Robin BC)
variable = temp
boundary = '4' # outer RPV
coefficient = ${sphere_outer_htc}
T_infinity = ${sphere_outer_Tinf}
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
dt = 1
dtmin = 0.01
end_time = 1
nl_rel_tol = 1e-12
nl_abs_tol = 1e-7
[Quadrature]
order = fifth
side_order = seventh
[]
[]
[Outputs]
exodus = false
csv = true
[Console]
type = Console
[]
[]
[Postprocessors]
[temp_left]
type = SideAverageValue
boundary = 2
variable = temp
[]
[temp_right]
type = SideAverageValue
boundary = 3
variable = temp
[]
[flux_left]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 2
diffusivity = thermal_conductivity
[]
[flux_right]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 3
diffusivity = thermal_conductivity
[]
[ptot]
type = ElementIntegralVariablePostprocessor
variable = power_density
block = 'fuel'
[]
[sphere_convective_out]
type = ConvectiveHeatTransferSideIntegral
T_solid = temp
boundary = '4' # outer RVP
T_fluid = ${sphere_outer_Tinf}
htc = ${sphere_outer_htc}
[]
[heat_balance] # should be equal to 0 upon convergence
type = ParsedPostprocessor
expression = '(sphere_convective_out - ptot) / ptot'
pp_names = 'sphere_convective_out ptot'
[]
[]
(modules/combined/test/tests/adaptive_timestepping/adapt_tstep_function_change_restart1.i)
# This is a test designed to evaluate the cabability of the
# IterationAdaptiveDT TimeStepper to adjust time step size according to
# a function. For example, if the power input function for a BISON
# simulation rapidly increases or decreases, the IterationAdaptiveDT
# TimeStepper should take time steps small enough to capture the
# oscillation.
[GlobalParams]
order = FIRST
family = LAGRANGE
block = 1
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
file = 1hex8_10mm_cube.e
[]
[Functions]
[./Fiss_Function]
type = PiecewiseLinear
x = '0 1e6 2e6 2.001e6 2.002e6'
y = '0 3e8 3e8 12e8 0'
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./temp]
initial_condition = 300.0
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = FINITE
incremental = true
volumetric_locking_correction = true
eigenstrain_names = thermal_expansion
decomposition_method = EigenSolution
add_variables = true
generate_output = 'vonmises_stress'
temperature = temp
[../]
[]
[Kernels]
[./heat]
type = HeatConduction
variable = temp
[../]
[./heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[../]
[./heat_source]
type = HeatSource
variable = temp
value = 1.0
function = Fiss_Function
[../]
[]
[BCs]
[./bottom_temp]
type = DirichletBC
variable = temp
boundary = 1
value = 300
[../]
[./top_bottom_disp_x]
type = DirichletBC
variable = disp_x
boundary = '1'
value = 0
[../]
[./top_bottom_disp_y]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0
[../]
[./top_bottom_disp_z]
type = DirichletBC
variable = disp_z
boundary = '1'
value = 0
[../]
[]
[Materials]
[./thermal]
type = HeatConductionMaterial
temp = temp
specific_heat = 1.0
thermal_conductivity = 1.0
[../]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 300e6
poissons_ratio = .3
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
[../]
[./thermal_expansion]
type = ComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 5e-6
stress_free_temperature = 300.0
temperature = temp
eigenstrain_name = thermal_expansion
[../]
[./density]
type = Density
density = 10963.0
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
verbose = true
nl_abs_tol = 1e-10
start_time = 0.0
num_steps = 65
end_time = 2.002e6
[./TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_function = Fiss_Function
max_function_change = 3e7
dt = 1e6
[../]
[]
[Postprocessors]
[./Temperature_of_Block]
type = ElementAverageValue
variable = temp
execute_on = 'initial timestep_end'
[../]
[./vonMises]
type = ElementAverageValue
variable = vonmises_stress
execute_on = 'initial timestep_end'
[../]
[]
[Outputs]
[./out]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 10
[../]
[./checkpoint]
type = Checkpoint
num_files = 1
[../]
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_mortar/large_gap_heat_transfer_test_cylinder_mortar_error.i)
rpv_core_gap_size = 0.15
core_outer_radius = 2
rpv_inner_radius = ${fparse 2 + rpv_core_gap_size}
rpv_outer_radius = ${fparse 2.5 + rpv_core_gap_size}
rpv_outer_htc = 10 # W/m^2/K
rpv_outer_Tinf = 300 # K
core_blocks = '1'
rpv_blocks = '3'
[Mesh]
[core_gap_rpv]
type = ConcentricCircleMeshGenerator
num_sectors = 10
radii = '${core_outer_radius} ${rpv_inner_radius} ${rpv_outer_radius}'
rings = '2 1 2'
has_outer_square = false
preserve_volumes = true
portion = full
[]
[rename_core_bdy]
type = SideSetsBetweenSubdomainsGenerator
input = core_gap_rpv
primary_block = 1
paired_block = 2
new_boundary = 'core_outer'
[]
[rename_inner_rpv_bdy]
type = SideSetsBetweenSubdomainsGenerator
input = rename_core_bdy
primary_block = 3
paired_block = 2
new_boundary = 'rpv_inner'
[]
[2d_mesh]
type = BlockDeletionGenerator
input = rename_inner_rpv_bdy
block = 2
[]
[secondary]
type = LowerDBlockFromSidesetGenerator
sidesets = 'rpv_inner'
new_block_id = 10001
new_block_name = 'secondary_lower'
input = 2d_mesh
[]
[primary]
type = LowerDBlockFromSidesetGenerator
sidesets = 'core_outer'
new_block_id = 10000
new_block_name = 'primary_lower'
input = secondary
[]
allow_renumbering = false
[]
[Variables]
[Tsolid]
initial_condition = 500
[]
[lm]
order = FIRST
family = LAGRANGE
block = 'secondary_lower'
[]
[]
[Kernels]
[heat_source]
type = CoupledForce
variable = Tsolid
block = '${core_blocks}'
v = power_density
[]
[heat_conduction]
type = HeatConduction
variable = Tsolid
[]
[]
[BCs]
[RPV_out_BC] # k \nabla T = h (T- T_inf) at RPV outer boundary
type = ConvectiveFluxFunction # (Robin BC)
variable = Tsolid
boundary = 'outer' # outer RPV
coefficient = ${rpv_outer_htc}
T_infinity = ${rpv_outer_Tinf}
[]
[]
[UserObjects]
[radiation]
type = GapFluxModelRadiation
temperature = Tsolid
boundary = 'rpv_inner'
primary_emissivity = 0.8
secondary_emissivity = 0.8
[]
[conduction]
type = GapFluxModelConduction
temperature = Tsolid
boundary = 'rpv_inner'
gap_conductivity = 0.1
[]
[]
[Constraints]
[ced]
type = ModularGapConductanceConstraint
variable = lm
secondary_variable = Tsolid
primary_boundary = 'core_outer'
primary_subdomain = 10000
secondary_boundary = 'rpv_inner'
secondary_subdomain = 10001
gap_flux_models = 'radiation conduction'
gap_geometry_type = 'CYLINDER'
cylinder_axis_point_2 = '0 0 5'
[]
[]
[AuxVariables]
[power_density]
block = '${core_blocks}'
initial_condition = 50e3
[]
[]
[Materials]
[simple_mat]
type = HeatConductionMaterial
thermal_conductivity = 34.6 # W/m/K
[]
[]
[Postprocessors]
[Tcore_avg]
type = ElementAverageValue
variable = Tsolid
block = '${core_blocks}'
[]
[Tcore_max]
type = ElementExtremeValue
value_type = max
variable = Tsolid
block = '${core_blocks}'
[]
[Tcore_min]
type = ElementExtremeValue
value_type = min
variable = Tsolid
block = '${core_blocks}'
[]
[Trpv_avg]
type = ElementAverageValue
variable = Tsolid
block = '${rpv_blocks}'
[]
[Trpv_max]
type = ElementExtremeValue
value_type = max
variable = Tsolid
block = '${rpv_blocks}'
[]
[Trpv_min]
type = ElementExtremeValue
value_type = min
variable = Tsolid
block = '${rpv_blocks}'
[]
[ptot]
type = ElementIntegralVariablePostprocessor
variable = power_density
block = '${core_blocks}'
[]
[rpv_convective_out]
type = ConvectiveHeatTransferSideIntegral
T_solid = Tsolid
boundary = 'outer' # outer RVP
T_fluid = ${rpv_outer_Tinf}
htc = ${rpv_outer_htc}
[]
[heat_balance] # should be equal to 0 upon convergence
type = ParsedPostprocessor
expression = '(rpv_convective_out - ptot) / ptot'
pp_names = 'rpv_convective_out ptot'
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[VectorPostprocessors]
[NodalTemperature]
type = NodalValueSampler
sort_by = id
boundary = 'rpv_inner core_outer'
variable = 'Tsolid'
[]
[]
[Executioner]
type = Steady
petsc_options = '-snes_converged_reason -pc_svd_monitor'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -mat_mffd_err -pc_factor_shift_type '
'-pc_factor_shift_amount'
petsc_options_value = ' lu superlu_dist 1e-5 NONZERO '
'1e-15'
snesmf_reuse_base = false
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
l_max_its = 100
line_search = none
[]
[Outputs]
exodus = false
csv = true
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_radiation/sphere.i)
#
# This problem is one of radiation boundary conditions between two
# spherical surfaces.
#
# S(T1^4 - T2^4) R1^2
# flux1 = - ---------------- and flux2 = -flux1 * ----
# 1 1 - e2 R1^2 R2^2
# -- + ------ * ----
# e1 e2 R2^2
#
# where S is the Stefan Boltzmann constant 5.67e-8 W/m^2/K^4
# T1 is the temperature on the left surface 278 K
# T2 is the temperature on the right surface 333 K
# e1 is the emissivity for the left surface 0.8
# e2 is the emissivity for the left surface 0.9
# R1 is the radius of the inner surface 0.1 m
# R2 is the radius of the outer surface 0.11 m
#
# Flux1:
# Exact Code
# ------------- -------------
# -267.21 W/m^2 -267.02 W/m^2
#
# Flux2:
# Exact Code
# ------------- -------------
# 220.83 W/m^2 220.70 W/m^2
#
thick = 0.01
R1 = 0.1
R2 = 0.11
[GlobalParams]
order = second
family = lagrange
[]
[Mesh]
coord_type = RSPHERICAL
[mesh1]
type = GeneratedMeshGenerator
dim = 1
elem_type = edge3
nx = 4
xmin = '${fparse R1 - thick}'
xmax = '${R1}'
boundary_name_prefix = left
[]
[mesh2]
type = GeneratedMeshGenerator
dim = 1
elem_type = edge3
nx = 4
ny = 1
xmin = '${R2}'
xmax = '${fparse R2 + thick}'
boundary_id_offset = 4
boundary_name_prefix = right
[]
[final]
type = CombinerGenerator
inputs = 'mesh1 mesh2'
[]
[]
[Variables]
[temperature]
[]
[]
[Kernels]
[heat_conduction]
type = HeatConduction
variable = temperature
[]
[]
[BCs]
[left]
type = DirichletBC
variable = temperature
boundary = left_left
value = 278
[]
[right]
type = DirichletBC
variable = temperature
boundary = right_right
value = 333
[]
[]
[Materials]
[heat]
type = HeatConductionMaterial
thermal_conductivity = 200 # W/m/K
specific_heat = 4.2e5
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temperature
primary = left_right
secondary = right_left
emissivity_primary = 0.8
emissivity_secondary = 0.9
quadrature = true
gap_conductivity = 1e-40 # requires a positive value
gap_geometry_type = sphere
[]
[]
[Functions]
[analytic_flux_1]
type = ParsedFunction
symbol_names = 'S T1 T2 e1 e2 R1 R2'
symbol_values = '5.67e-8 278 333 0.8 0.9 ${R1} ${R2}'
expression = 'T14 := T1*T1*T1*T1;
T24 := T2*T2*T2*T2;
S*(T14-T24)/(1/e1+(1-e2)/e2*R1*R1/R2/R2)'
[]
[analytic_flux_2]
type = ParsedFunction
symbol_names = 'S T1 T2 e1 e2 R1 R2'
symbol_values = '5.67e-8 278 333 0.8 0.9 ${R1} ${R2}'
expression = 'T14 := T1*T1*T1*T1;
T24 := T2*T2*T2*T2;
-S*(T14-T24)/(1/e1+(1-e2)/e2*R1*R1/R2/R2)*R1*R1/R2/R2'
[]
[]
[Postprocessors]
[code_flux_1]
type = SideDiffusiveFluxAverage
variable = temperature
boundary = left_right
diffusivity = thermal_conductivity
execute_on = 'initial timestep_end'
[]
[analytic_flux_1]
type = FunctionValuePostprocessor
function = analytic_flux_1
execute_on = 'initial timestep_end'
[]
[error_1]
type = ParsedPostprocessor
pp_names = 'code_flux_1 analytic_flux_1'
expression = '(analytic_flux_1 - code_flux_1)/analytic_flux_1*100'
execute_on = 'initial timestep_end'
[]
[code_flux_2]
type = SideDiffusiveFluxAverage
variable = temperature
boundary = right_left
diffusivity = thermal_conductivity
execute_on = 'initial timestep_end'
[]
[analytic_flux_2]
type = FunctionValuePostprocessor
function = analytic_flux_2
execute_on = 'initial timestep_end'
[]
[error_2]
type = ParsedPostprocessor
pp_names = 'code_flux_2 analytic_flux_2'
expression = '(analytic_flux_2 - code_flux_2)/analytic_flux_2*100'
execute_on = 'initial timestep_end'
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = newton
num_steps = 1
dt = 1
end_time = 1
nl_abs_tol = 1e-12
nl_rel_tol = 1e-10
[]
[Outputs]
csv = true
[]
(modules/combined/tutorials/introduction/thermal_mechanical/thermomech_step01.i)
#
# Single block coupled thermal/mechanical
# https://mooseframework.inl.gov/modules/combined/tutorials/introduction/thermoech_step01.html
#
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
[generated]
type = GeneratedMeshGenerator
dim = 2
nx = 10
ny = 10
xmax = 2
ymax = 1
[]
[pin]
type = ExtraNodesetGenerator
input = generated
new_boundary = pin
coord = '0 0 0'
[]
[]
[Variables]
[T]
initial_condition = 300.0
[]
[]
[Kernels]
[heat_conduction]
type = HeatConduction
variable = T
[]
[time_derivative]
type = HeatConductionTimeDerivative
variable = T
[]
[heat_source]
type = HeatSource
variable = T
value = 5e4
[]
[]
[Physics/SolidMechanics/QuasiStatic]
[all]
add_variables = true
strain = FINITE
automatic_eigenstrain_names = true
generate_output = 'vonmises_stress'
[]
[]
[Materials]
[thermal]
type = HeatConductionMaterial
thermal_conductivity = 45.0
specific_heat = 0.5
[]
[density]
type = GenericConstantMaterial
prop_names = 'density'
prop_values = 8000.0
[]
[elasticity]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e9
poissons_ratio = 0.3
[]
[expansion1]
type = ComputeThermalExpansionEigenstrain
temperature = T
thermal_expansion_coeff = 0.001
stress_free_temperature = 300
eigenstrain_name = thermal_expansion
[]
[stress]
type = ComputeFiniteStrainElasticStress
[]
[]
[BCs]
[t_left]
type = DirichletBC
variable = T
value = 300
boundary = 'left'
[]
[t_right]
type = FunctionDirichletBC
variable = T
function = '300+5*t'
boundary = 'right'
[]
[pin_x]
type = DirichletBC
variable = disp_x
boundary = pin
value = 0
[]
[bottom_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
end_time = 5
dt = 1
[]
[Outputs]
exodus = true
[]
(modules/heat_transfer/tutorials/introduction/therm_step02.i)
#
# Single block thermal input with boundary conditions
# https://mooseframework.inl.gov/modules/heat_transfer/tutorials/introduction/therm_step02.html
#
[Mesh]
[generated]
type = GeneratedMeshGenerator
dim = 2
nx = 10
ny = 10
xmax = 2
ymax = 1
[]
[]
[Variables]
[T]
[]
[]
[Kernels]
[heat_conduction]
type = HeatConduction
variable = T
[]
[]
[Materials]
[thermal]
type = HeatConductionMaterial
thermal_conductivity = 45.0
[]
[]
[BCs]
[t_left]
type = DirichletBC
variable = T
value = 300
boundary = 'left'
[]
[t_right]
type = FunctionDirichletBC
variable = T
function = '300+5*t'
boundary = 'right'
[]
[]
[Executioner]
type = Transient
end_time = 5
dt = 1
[]
[Outputs]
exodus = true
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_mortar/large_gap_heat_transfer_test_sphere_mortar_error.i)
sphere_outer_htc = 10 # W/m^2/K
sphere_outer_Tinf = 300 # K
[GlobalParams]
order = SECOND
family = LAGRANGE
[]
[Problem]
coord_type = RZ
kernel_coverage_check = false
material_coverage_check = false
[]
[Mesh]
[file]
type = FileMeshGenerator
file = cyl2D.e
[]
[secondary]
type = LowerDBlockFromSidesetGenerator
sidesets = '2'
new_block_id = 10001
new_block_name = 'secondary_lower'
input = file
[]
[primary]
type = LowerDBlockFromSidesetGenerator
sidesets = '3'
new_block_id = 10000
new_block_name = 'primary_lower'
input = secondary
[]
allow_renumbering = false
[]
[Functions]
[temp]
type = PiecewiseLinear
x = '0 1'
y = '100 200'
[]
[]
[Variables]
[temp]
initial_condition = 500
[]
[lm]
order = SECOND
family = LAGRANGE
block = 'secondary_lower'
[]
[]
[AuxVariables]
[power_density]
block = 'fuel'
initial_condition = 50e3
[]
[]
[Kernels]
[heat_conduction]
type = HeatConduction
variable = temp
block = '1 2'
[]
[heat_source]
type = CoupledForce
variable = temp
block = 'fuel'
v = power_density
[]
[]
[Materials]
[heat1]
type = HeatConductionMaterial
block = '1 2'
specific_heat = 1.0
thermal_conductivity = 34.6
[]
[]
[UserObjects]
[radiation]
type = GapFluxModelRadiation
temperature = temp
boundary = 2
primary_emissivity = 0.0
secondary_emissivity = 0.0
[]
[conduction]
type = GapFluxModelConduction
temperature = temp
boundary = 2
gap_conductivity = 5.0
[]
[]
[Constraints]
[ced]
type = ModularGapConductanceConstraint
variable = lm
secondary_variable = temp
primary_boundary = 3
primary_subdomain = 10000
secondary_boundary = 2
secondary_subdomain = 10001
gap_flux_models = 'radiation conduction'
gap_geometry_type = SPHERE
[]
[]
[BCs]
[RPV_out_BC] # k \nabla T = h (T- T_inf) at RPV outer boundary
type = ConvectiveFluxFunction # (Robin BC)
variable = temp
boundary = '4' # outer RPV
coefficient = ${sphere_outer_htc}
T_infinity = ${sphere_outer_Tinf}
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
dt = 1
dtmin = 0.01
end_time = 1
nl_rel_tol = 1e-12
nl_abs_tol = 1e-7
[]
[Outputs]
exodus = true
csv = true
[Console]
type = Console
[]
[]
[VectorPostprocessors]
[NodalTemperature]
type = NodalValueSampler
sort_by = id
boundary = '2 3'
variable = temp
[]
[]
[Postprocessors]
[temp_left]
type = SideAverageValue
boundary = 2
variable = temp
[]
[temp_right]
type = SideAverageValue
boundary = 3
variable = temp
[]
[flux_left]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 2
diffusivity = thermal_conductivity
[]
[flux_right]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 3
diffusivity = thermal_conductivity
[]
[ptot]
type = ElementIntegralVariablePostprocessor
variable = power_density
block = 'fuel'
[]
[sphere_convective_out]
type = ConvectiveHeatTransferSideIntegral
T_solid = temp
boundary = '4' # outer RVP
T_fluid = ${sphere_outer_Tinf}
htc = ${sphere_outer_htc}
[]
[heat_balance] # should be equal to 0 upon convergence
type = ParsedPostprocessor
expression = '(sphere_convective_out - ptot) / ptot'
pp_names = 'sphere_convective_out ptot'
[]
[]
(modules/heat_transfer/test/tests/recover/recover.i)
[GlobalParams]
order = SECOND
family = LAGRANGE
[]
[Problem]
coord_type = RZ
[]
[Mesh]
file = recover_in.e
[]
[Variables]
[./temp]
initial_condition = 580.0
[../]
[]
[AuxVariables]
[./gap_cond]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./heat]
type = HeatConduction
variable = temp
[../]
[./heat_source]
type = BodyForce
variable = temp
block = pellet_type_1
value = 1e3
function = 't'
[../]
[]
[ThermalContact]
[./thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
emissivity_primary = 0
emissivity_secondary = 0
quadrature = true
[../]
[]
[BCs]
[./outside]
type = DirichletBC
value = 580
boundary = '1 2 3'
variable = temp
[../]
[./edge]
type = DirichletBC
value = 700
boundary = 10
variable = temp
[../]
[]
[Materials]
[./thermal_3]
type = HeatConductionMaterial
block = 3
thermal_conductivity = 5
specific_heat = 12
[../]
[./thermal_1]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
nl_rel_tol = 1e-9
nl_abs_tol = 1e-11
start_time = -200
n_startup_steps = 1
end_time = 1.02e5
num_steps = 10
dtmax = 2e6
dtmin = 1
[./TimeStepper]
type = IterationAdaptiveDT
dt = 2.0e2
optimal_iterations = 15
iteration_window = 2
[../]
[./Quadrature]
order = FIFTH
side_order = SEVENTH
[../]
[]
[Postprocessors]
[./ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[../]
[./avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[../]
[./flux_from_clad]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[../]
[./_dt]
type = TimestepSize
[../]
[]
[Outputs]
exodus = true
[]
(modules/heat_transfer/test/tests/heat_conduction_patch/heat_conduction_patch_hex20.i)
#
# This problem is taken from the Abaqus verification manual:
# "1.5.8 Patch test for heat transfer elements"
#
# The temperature on the exterior nodes is 200x+100y+200z.
#
# This gives a constant flux at all Gauss points.
#
# In addition, the temperature at all nodes follows the same formula.
#
# Node x y z Temperature
# 1 1.000E+00 0.000E+00 1.000E+00 4.0000E+02
# 2 6.770E-01 3.050E-01 6.830E-01 3.0250E+02
# 3 3.200E-01 1.860E-01 6.430E-01 2.1120E+02
# 4 0.000E+00 0.000E+00 1.000E+00 2.0000E+02
# 5 1.000E+00 1.000E+00 1.000E+00 5.0000E+02
# 6 7.880E-01 6.930E-01 6.440E-01 3.5570E+02
# 7 1.650E-01 7.450E-01 7.020E-01 2.4790E+02
# 8 0.000E+00 1.000E+00 1.000E+00 3.0000E+02
# 9 8.385E-01 1.525E-01 8.415E-01 3.5125E+02
# 10 4.985E-01 2.455E-01 6.630E-01 2.5685E+02
# 11 1.600E-01 9.300E-02 8.215E-01 2.0560E+02
# 12 5.000E-01 0.000E+00 1.000E+00 3.0000E+02
# 13 1.000E+00 5.000E-01 1.000E+00 4.5000E+02
# 14 7.325E-01 4.990E-01 6.635E-01 3.2910E+02
# 15 2.425E-01 4.655E-01 6.725E-01 2.2955E+02
# 16 0.000E+00 5.000E-01 1.000E+00 2.5000E+02
# 17 8.940E-01 8.465E-01 8.220E-01 4.2785E+02
# 18 4.765E-01 7.190E-01 6.730E-01 3.0180E+02
# 19 8.250E-02 8.725E-01 8.510E-01 2.7395E+02
# 20 5.000E-01 1.000E+00 1.000E+00 4.0000E+02
# 21 1.000E+00 0.000E+00 0.000E+00 2.0000E+02
# 22 0.000E+00 0.000E+00 0.000E+00 0.0000E+00
# 23 8.260E-01 2.880E-01 2.880E-01 2.5160E+02
# 24 2.490E-01 3.420E-01 1.920E-01 1.2240E+02
# 25 1.000E+00 0.000E+00 5.000E-01 3.0000E+02
# 26 5.000E-01 0.000E+00 0.000E+00 1.0000E+02
# 27 0.000E+00 0.000E+00 5.000E-01 1.0000E+02
# 28 9.130E-01 1.440E-01 1.440E-01 2.2580E+02
# 29 1.245E-01 1.710E-01 9.600E-02 6.1200E+01
# 30 7.515E-01 2.965E-01 4.855E-01 2.7705E+02
# 31 5.375E-01 3.150E-01 2.400E-01 1.8700E+02
# 32 2.845E-01 2.640E-01 4.175E-01 1.6680E+02
# 33 2.730E-01 7.500E-01 2.300E-01 1.7560E+02
# 34 0.000E+00 1.000E+00 0.000E+00 1.0000E+02
# 35 2.610E-01 5.460E-01 2.110E-01 1.4900E+02
# 36 0.000E+00 5.000E-01 0.000E+00 5.0000E+01
# 37 2.190E-01 7.475E-01 4.660E-01 2.1175E+02
# 38 1.365E-01 8.750E-01 1.150E-01 1.3780E+02
# 39 0.000E+00 1.000E+00 5.000E-01 2.0000E+02
# 40 8.500E-01 6.490E-01 2.630E-01 2.8750E+02
# 41 8.380E-01 4.685E-01 2.755E-01 2.6955E+02
# 42 8.190E-01 6.710E-01 4.535E-01 3.2160E+02
# 43 5.615E-01 6.995E-01 2.465E-01 2.3155E+02
# 44 1.000E+00 1.000E+00 0.000E+00 3.0000E+02
# 45 1.000E+00 5.000E-01 0.000E+00 2.5000E+02
# 46 1.000E+00 1.000E+00 5.000E-01 4.0000E+02
# 47 9.250E-01 8.245E-01 1.315E-01 2.9375E+02
# 48 5.000E-01 1.000E+00 0.000E+00 2.0000E+02
[Mesh]#Comment
file = heat_conduction_patch_hex20.e
[] # Mesh
[Functions]
[./temps]
type = ParsedFunction
expression ='200*x+100*y+200*z'
[../]
[] # Functions
[Variables]
[./temp]
order = SECOND
family = LAGRANGE
[../]
[] # Variables
[Kernels]
[./heat_r]
type = HeatConduction
variable = temp
[../]
[] # Kernels
[BCs]
[./temps]
type = FunctionDirichletBC
variable = temp
boundary = 10
function = temps
[../]
[] # BCs
[Materials]
[./heat]
type = HeatConductionMaterial
block = 1
specific_heat = 0.116
thermal_conductivity = 4.85e-4
[../]
[] # Materials
[Executioner]
type = Steady
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -ksp_gmres_restart'
petsc_options_value = 'lu 101'
line_search = 'none'
nl_abs_tol = 1e-11
nl_rel_tol = 1e-10
l_max_its = 20
[./Quadrature]
order = THIRD
[../]
[] # Executioner
[Outputs]
exodus = true
[] # Output
(modules/heat_transfer/test/tests/gap_heat_transfer_htonly/cyl2D_yz.i)
#
# 2D Cylindrical Gap Heat Transfer Test.
#
# This test exercises 2D gap heat transfer for a constant conductivity gap.
#
# The mesh consists of an inner solid cylinder of radius = 1 unit, and outer
# hollow cylinder with an inner radius of 2 in the y-z plane. In other words,
# the gap between them is 1 radial unit in length.
#
# The calculated results are the same as for the cyl2D.i case in the x-y plane.
[GlobalParams]
order = SECOND
family = LAGRANGE
[]
[Mesh]
[file]
type = FileMeshGenerator
file = cyl2D.e
[]
[./rotate]
type = TransformGenerator
transform = ROTATE
vector_value = '0 90 90'
input = file
[../]
[]
[Functions]
[./temp]
type = PiecewiseLinear
x = '0 1'
y = '100 200'
[../]
[]
[Variables]
[./temp]
initial_condition = 100
[../]
[]
[AuxVariables]
[./gap_conductance]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./heat_conduction]
type = HeatConduction
variable = temp
[../]
[]
[AuxKernels]
[./gap_cond]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductance
boundary = 2
[../]
[]
[Materials]
[./heat1]
type = HeatConductionMaterial
block = '1 2'
specific_heat = 1.0
thermal_conductivity = 1000000.0
[../]
[]
[ThermalContact]
[./thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 3
secondary = 2
emissivity_primary = 0
emissivity_secondary = 0
gap_conductivity = 1
quadrature = true
gap_geometry_type = CYLINDER
cylinder_axis_point_1 = '0 0 0'
cylinder_axis_point_2 = '1 0 0'
[../]
[]
[BCs]
[./mid]
type = FunctionDirichletBC
boundary = 1
variable = temp
function = temp
[../]
[./temp_far_right]
type = DirichletBC
boundary = 4
variable = temp
value = 100
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
dt = 1
dtmin = 0.01
end_time = 1
nl_rel_tol = 1e-12
nl_abs_tol = 1e-7
[./Quadrature]
order = fifth
side_order = seventh
[../]
[]
[Outputs]
exodus = true
[]
[Postprocessors]
[./temp_left]
type = SideAverageValue
boundary = 2
variable = temp
[../]
[./temp_right]
type = SideAverageValue
boundary = 3
variable = temp
[../]
[./flux_left]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 2
diffusivity = thermal_conductivity
[../]
[./flux_right]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 3
diffusivity = thermal_conductivity
[../]
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_radiation/gap_heat_transfer_radiation_test.i)
#
# 1-D Gap Heat Transfer Test without mechanics
#
# This test exercises 1-D gap heat transfer for a helium-filled gap including radiation.
#
# The mesh consists of two element blocks containing one element each. Each
# element is a unit cube. They sit next to one another with a unit between them.
#
# The conductivity of both blocks is set very large to achieve a uniform temperature
# across each block. The temperature of the far left boundary
# is ramped from 100 to 200 over one time unit, and then held fixed for an additional
# time unit. The temperature of the far right boundary is held fixed at 100.
#
# A simple analytical solution is possible for the heat flux between the blocks:
#
# Flux = (T_left - T_right) * h_gap
#
# where h_gap = h_gas + h_cont + h_rad
#
# By setting the contact pressure, roughnesses, and jump distances to zero, the gap
# conductance simplifies to:
#
# h_gap = gapK/d_gap + sigma*Fe*(T_left^2 + T_right^2)*(T_left + T_right)
#
# where Fe = 1/(1/eps_left + 1/eps_right - 1)
# eps = emissivity
#
# For pure helium, BISON computes the gas conductivity as:
#
# gapK(Tavg) = 2.639e-3*Tavg^0.7085
#
# For the test, the final (t=2) average gas temperature is (200 +100)/2 = 150,
# giving gapK(150) = 0.09187557
#
# Assuming ems_left = ems_right = 0.5, Fe = 1/3
#
# The heat flux across the gap at that time is then:
#
# Flux(2) = 100 * ((0.09187557/1.0) + (5.669e-8/3)*(200^2 + 100^2)*(200 + 100))
# = 37.532557
#
# The flux post processors give 37.53255
#
[Mesh]
file = gap_heat_transfer_radiation_test.e
[]
[Functions]
[./temp]
type = PiecewiseLinear
x = '0 1'
y = '200 200'
[../]
[]
[Variables]
[./temp]
order = FIRST
family = LAGRANGE
initial_condition = 100
[../]
[]
[Kernels]
[./heat]
type = HeatConduction
variable = temp
[../]
[]
[BCs]
[./temp_far_left]
type = FunctionDirichletBC
boundary = 1
variable = temp
function = temp
[../]
[./temp_far_right]
type = DirichletBC
boundary = 4
variable = temp
value = 100
[../]
[]
[ThermalContact]
[./gap]
type = GapHeatTransfer
variable = temp
primary = 3
secondary = 2
gap_conductivity = 0.09187557
emissivity_primary = 0.5
emissivity_secondary = 0.5
[../]
[]
[Materials]
[./heat1]
type = HeatConductionMaterial
block = '1 2'
specific_heat = 1.0
thermal_conductivity = 10000000.0
[../]
[./density]
type = GenericConstantMaterial
block = '1 2'
prop_names = 'density'
prop_values = '1.0'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
nl_abs_tol = 1e-6
nl_rel_tol = 1e-10
l_tol = 1e-3
l_max_its = 100
start_time = 0.0
dt = 1
end_time = 1.0
[]
[Postprocessors]
[./temp_left]
type = SideAverageValue
boundary = 2
variable = temp
execute_on = 'initial timestep_end'
[../]
[./temp_right]
type = SideAverageValue
boundary = 3
variable = temp
execute_on = 'initial timestep_end'
[../]
[./flux_left]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 2
diffusivity = thermal_conductivity
[../]
[./flux_right]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 3
diffusivity = thermal_conductivity
[../]
[]
[Outputs]
exodus = true
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_htonly/gap_heat_transfer_htonly_it_plot_test.i)
#
# 1-D Gap Heat Transfer Test without mechanics
#
# This test exercises 1-D gap heat transfer for a constant conductivity gap.
#
# The mesh consists of two element blocks containing one element each. Each
# element is a unit cube. They sit next to one another with a unit between them.
#
# The conductivity of both blocks is set very large to achieve a uniform temperature
# across each block. The temperature of the far left boundary
# is ramped from 100 to 200 over one time unit, and then held fixed for an additional
# time unit. The temperature of the far right boundary is held fixed at 100.
#
# A simple analytical solution is possible for the heat flux between the blocks:
#
# Flux = (T_left - T_right) * (gapK/gap_width)
#
# The gap conductivity is specified as 1, thus
#
# gapK(Tavg) = 1.0*Tavg
#
#
# The heat flux across the gap at time = 2 is then:
#
# Flux(2) = 100 * (1.0/1.0) = 100
#
# For comparison, see results from the flux post processors
#
[Mesh]
file = gap_heat_transfer_htonly_test.e
[]
[Functions]
[./temp]
type = PiecewiseLinear
x = '0 1 2'
y = '100 200 200'
[../]
[]
[ThermalContact]
[./thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 3
secondary = 2
emissivity_primary = 0
emissivity_secondary = 0
[../]
[]
[Variables]
[./temp]
order = FIRST
family = LAGRANGE
initial_condition = 100
[../]
[]
[Kernels]
[./heat]
type = HeatConduction
variable = temp
[../]
[]
[BCs]
[./temp_far_left]
type = FunctionDirichletBC
boundary = 1
variable = temp
function = temp
[../]
[./temp_far_right]
type = DirichletBC
boundary = 4
variable = temp
value = 100
[../]
[]
[Materials]
[./heat1]
type = HeatConductionMaterial
block = '1 2'
specific_heat = 1.0
thermal_conductivity = 100000000.0
[../]
[./density]
type = GenericConstantMaterial
block = '1 2'
prop_names = 'density'
prop_values = '1.0'
[../]
[]
[Executioner]
type = Transient
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
nl_abs_tol = 1e-5
nl_rel_tol = 1e-12
l_tol = 1e-10
l_max_its = 100
start_time = 0.0
dt = 1e-1
end_time = 2.0
[]
[Postprocessors]
[./temp_left]
type = SideAverageValue
boundary = 2
variable = temp
[../]
[./temp_right]
type = SideAverageValue
boundary = 3
variable = temp
[../]
[./flux_left]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 2
diffusivity = thermal_conductivity
[../]
[./flux_right]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 3
diffusivity = thermal_conductivity
[../]
[]
[Outputs]
file_base = out_it_plot
[./exodus]
type = Exodus
execute_on = 'initial timestep_end nonlinear'
nonlinear_residual_dt_divisor = 100
[../]
[]
(modules/heat_transfer/test/tests/heat_conduction_patch/heat_conduction_patch_rz.i)
#
# This problem is taken from the Abaqus verification manual:
# "1.5.8 Patch test for heat transfer elements"
#
# The temperature on the exterior nodes is -2e5+200x+100y.
#
# This gives a constant flux at all Gauss points.
#
# In addition, the temperature at all nodes follows the same formula.
#
# Node x y Temperature
# 1 1e3 0 0
# 2 1.00024e3 0 48
# 3 1.00018e3 3e-2 39
# 4 1.00004e3 2e-2 10
# 5 1.00008e3 8e-2 24
# 6 1e3 1.2e-1 12
# 7 1.00016e3 8e-2 40
# 8 1.00024e3 1.2e-1 60
[Problem]
coord_type = RZ
[]
[Mesh]#Comment
file = heat_conduction_patch_rz.e
[] # Mesh
[Functions]
[./temps]
type = ParsedFunction
expression ='-2e5+200*x+100*y'
[../]
[] # Functions
[Variables]
[./temp]
order = FIRST
family = LAGRANGE
[../]
[] # Variables
[Kernels]
[./heat_r]
type = HeatConduction
variable = temp
[../]
[] # Kernels
[BCs]
[./temps]
type = FunctionDirichletBC
variable = temp
boundary = 10
function = temps
[../]
[] # BCs
[Materials]
[./heat]
type = HeatConductionMaterial
block = 1
specific_heat = 0.116
thermal_conductivity = 4.85e-4
[../]
[] # Materials
[Executioner]
type = Steady
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -ksp_gmres_restart'
petsc_options_value = 'lu 101'
line_search = 'none'
nl_abs_tol = 1e-11
nl_rel_tol = 1e-10
l_max_its = 20
[] # Executioner
[Outputs]
exodus = true
[] # Outputs
(modules/combined/test/tests/combined_plasticity_temperature/ad_plasticity_temperature_dep_yield.i)
#
# This is a test of the piece-wise linear strain hardening model using the
# small strain formulation. This test exercises the temperature-dependent
# yield stress.
#
# Test procedure:
# 1. The element is pulled to and then beyond the yield stress for a given
# temperature.
# 2. The displacement is then constant while the temperature increases and
# the yield stress decreases. This results in a lower stress with more
# plastic strain.
# 3. The temperature decreases beyond its original value giving a higher
# yield stress. The displacement increases, causing increases stress to
# the new yield stress.
# 4. The temperature and yield stress are constant with increasing
# displacement giving a constant stress and more plastic strain.
#
# Plotting total_strain_yy on the x axis and stress_yy on the y axis shows
# the stress history in a clear way.
#
# s |
# t | *****
# r | *
# e | ***** *
# s | * * *
# s | * *
# |*
# +------------------
# total strain
#
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Modules/TensorMechanics/Master]
[./all]
strain = FINITE
incremental = true
add_variables = true
generate_output = 'stress_yy plastic_strain_xx plastic_strain_yy plastic_strain_zz'
use_automatic_differentiation = true
[../]
[]
[Variables]
[./temp]
order = FIRST
family = LAGRANGE
[../]
[]
[Functions]
[./top_pull]
type = PiecewiseLinear
x = '0 1 2 4 5 6'
y = '0 0.025 0.05 0.05 0.06 0.085'
[../]
[./yield]
type = PiecewiseLinear
x = '400 500 600'
y = '6e3 5e3 4e3'
[../]
[./temp]
type = PiecewiseLinear
x = '0 1 2 3 4'
y = '500 500 500 600 400'
[../]
[]
[Kernels]
[./heat]
type = ADHeatConduction
variable = temp
[../]
[]
[BCs]
[./y_pull_function]
type = FunctionDirichletBC
variable = disp_y
boundary = top
function = top_pull
[../]
[./x_bot]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./y_bot]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./z_bot]
type = DirichletBC
variable = disp_z
boundary = back
value = 0.0
[../]
[./temp]
type = FunctionDirichletBC
variable = temp
function = temp
boundary = left
[../]
[]
[Materials]
[./elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
block = 0
youngs_modulus = 2.0e5
poissons_ratio = 0.3
[../]
[./creep_plas]
type = ADComputeMultipleInelasticStress
block = 0
inelastic_models = 'plasticity'
max_iterations = 50
absolute_tolerance = 1e-05
[../]
[./plasticity]
type = ADIsotropicPlasticityStressUpdate
block = 0
hardening_constant = 0
yield_stress_function = yield
temperature = temp
[../]
[./heat_conduction]
type = ADHeatConductionMaterial
block = 0
specific_heat = 1
thermal_conductivity = 1
[../]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-12
nl_abs_tol = 1e-10
l_tol = 1e-9
start_time = 0.0
end_time = 6
dt = 0.1
[]
[Outputs]
exodus = true
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_mortar/modular_gap_heat_transfer_mortar_displaced_radiation.i)
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 2blk-gap.e
[]
[secondary]
type = LowerDBlockFromSidesetGenerator
sidesets = '101'
new_block_id = 10001
new_block_name = 'secondary_lower'
input = file
[]
[primary]
type = LowerDBlockFromSidesetGenerator
sidesets = '100'
new_block_id = 10000
new_block_name = 'primary_lower'
input = secondary
[]
allow_renumbering = false
[]
[Problem]
kernel_coverage_check = false
material_coverage_check = false
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
block = '1 2'
[]
[disp_x]
order = FIRST
family = LAGRANGE
block = '1 2'
[]
[disp_y]
order = FIRST
family = LAGRANGE
block = '1 2'
[]
[lm]
order = FIRST
family = LAGRANGE
block = 'secondary_lower'
[]
[]
[Materials]
[left]
type = ADHeatConductionMaterial
block = 1
thermal_conductivity = 0.01
specific_heat = 1
[]
[right]
type = ADHeatConductionMaterial
block = 2
thermal_conductivity = 0.005
specific_heat = 1
[]
[]
[Kernels]
[hc_displaced_block]
type = ADHeatConduction
variable = temp
use_displaced_mesh = true
block = '1'
[]
[hc_undisplaced_block]
type = ADHeatConduction
variable = temp
use_displaced_mesh = false
block = '2'
[]
[disp_x]
type = Diffusion
variable = disp_x
block = '1 2'
[]
[disp_y]
type = Diffusion
variable = disp_y
block = '1 2'
[]
[]
[UserObjects]
[radiation]
type = GapFluxModelRadiation
temperature = temp
boundary = 100
primary_emissivity = 1.0
secondary_emissivity = 1.0
use_displaced_mesh = true
[]
[]
[Constraints]
[ced]
type = ModularGapConductanceConstraint
variable = lm
secondary_variable = temp
use_displaced_mesh = true
primary_boundary = 100
primary_subdomain = 10000
secondary_boundary = 101
secondary_subdomain = 10001
gap_flux_models = radiation
[]
[]
[BCs]
[left]
type = DirichletBC
variable = temp
boundary = 'left'
value = 100
[]
[right]
type = DirichletBC
variable = temp
boundary = 'right'
value = 0
[]
[left_disp_x]
type = DirichletBC
preset = false
variable = disp_x
boundary = 'left'
value = .1
[]
[right_disp_x]
type = DirichletBC
preset = false
variable = disp_x
boundary = 'right'
value = 0
[]
[bottom_disp_y]
type = DirichletBC
preset = false
variable = disp_y
boundary = 'bottom'
value = 0
[]
[]
[Preconditioning]
[fmp]
type = SMP
full = true
solve_type = 'NEWTON'
[]
[]
[Executioner]
type = Steady
nl_rel_tol = 1e-11
nl_abs_tol = 1.0e-10
[]
[VectorPostprocessors]
[NodalTemperature]
type = NodalValueSampler
sort_by = id
boundary = '100 101'
variable = 'temp'
[]
[]
[Outputs]
exodus = false
csv = true
[]
(modules/combined/test/tests/fdp_geometric_coupling/fdp_geometric_coupling.i)
[Mesh]
file = twoBlocksContactDiceSecondary2OffsetGap.e
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
volumetric_locking_correction = true
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./temp]
initial_condition = 100.0
[../]
[]
[Functions]
[./pressure]
type = PiecewiseLinear
x = '0 1 2'
y = '0 1 1'
scale_factor = 10.0
[../]
[./tempFunc]
type = PiecewiseLinear
x = '0. 3.'
y = '100.0 440.0'
[../]
[]
[Modules/TensorMechanics/Master]
[./block1]
block = 1
volumetric_locking_correction = true
incremental = true
strain = FINITE
eigenstrain_names = 'thermal_expansion1'
decomposition_method = EigenSolution
temperature = temp
[../]
[./block2]
block = 2
volumetric_locking_correction = true
incremental = true
strain = FINITE
eigenstrain_names = 'thermal_expansion2'
decomposition_method = EigenSolution
temperature = temp
[../]
[]
[Kernels]
[./heat]
type = HeatConduction
variable = temp
[../]
[]
[BCs]
[./left_right_x]
type = DirichletBC
variable = disp_x
boundary = '1 4'
value = 0.0
[../]
[./left_right_y]
type = DirichletBC
variable = disp_y
boundary = '1 4'
value = 0.0
[../]
[./left_right_z]
type = DirichletBC
variable = disp_z
boundary = '1 4'
value = 0.0
[../]
[./temp]
type = FunctionDirichletBC
variable = temp
boundary = '2 3'
function = tempFunc
[../]
[]
[Contact]
[./dummy_name]
primary = 2
secondary = 3
penalty = 1e8
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = '1 2'
youngs_modulus = 1e6
poissons_ratio = 0.0
[../]
[./stress1]
type = ComputeFiniteStrainElasticStress
block = '1 2'
[../]
[./thermal_expansion1]
type = ComputeThermalExpansionEigenstrain
block = 1
thermal_expansion_coeff = 1e-4
stress_free_temperature = 100.0
temperature = temp
eigenstrain_name = thermal_expansion1
[../]
[./thermal_expansion2]
type = ComputeThermalExpansionEigenstrain
block = 2
thermal_expansion_coeff = 1e-5
stress_free_temperature = 100.0
temperature = temp
eigenstrain_name = thermal_expansion2
[../]
[./heat]
type = HeatConductionMaterial
block = '1 2'
specific_heat = 1.0
thermal_conductivity = 1.0
[../]
[./density]
type = Density
block = '1 2'
density = 1.0
[../]
[]
[Preconditioning]
[./FDP]
type = FDP
full = true
implicit_geometric_coupling = true
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -mat_fd_coloring_err -mat_fd_type'
petsc_options_value = 'lu 1e-8 ds'
nl_rel_tol = 1e-10
l_max_its = 5
nl_max_its = 3
dt = 5.0e-1
num_steps = 2
[]
[Outputs]
file_base = fdp_geometric_coupling_out
exodus = true
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_mortar/bc_gap_heat_transfer_displaced_radiation.i)
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 2blk-gap.e
[]
allow_renumbering = false
[]
[Problem]
kernel_coverage_check = false
material_coverage_check = false
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
block = '1 2'
[]
[disp_x]
order = FIRST
family = LAGRANGE
block = '1 2'
[]
[disp_y]
order = FIRST
family = LAGRANGE
block = '1 2'
[]
[]
[Materials]
[left]
type = ADHeatConductionMaterial
block = 1
thermal_conductivity = 0.01
specific_heat = 1
[]
[right]
type = ADHeatConductionMaterial
block = 2
thermal_conductivity = 0.005
specific_heat = 1
[]
[]
[Kernels]
[hc_displaced_block]
type = ADHeatConduction
variable = temp
use_displaced_mesh = true
block = '1'
[]
[hc_undisplaced_block]
type = ADHeatConduction
variable = temp
use_displaced_mesh = false
block = '2'
[]
[disp_x]
type = Diffusion
variable = disp_x
block = '1 2'
[]
[disp_y]
type = Diffusion
variable = disp_y
block = '1 2'
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 100
secondary = 101
emissivity_primary = 1.0
emissivity_secondary = 1.0
gap_conductivity = 1.0e-12
quadrature = true
[]
[]
[BCs]
[left]
type = DirichletBC
variable = temp
boundary = 'left'
value = 100
[]
[right]
type = DirichletBC
variable = temp
boundary = 'right'
value = 0
[]
[left_disp_x]
type = DirichletBC
preset = false
variable = disp_x
boundary = 'left'
value = .1
[]
[right_disp_x]
type = DirichletBC
preset = false
variable = disp_x
boundary = 'right'
value = 0
[]
[bottom_disp_y]
type = DirichletBC
preset = false
variable = disp_y
boundary = 'bottom'
value = 0
[]
[]
[Preconditioning]
[fmp]
type = SMP
full = true
solve_type = 'NEWTON'
[]
[]
[Executioner]
type = Steady
nl_rel_tol = 1e-11
nl_abs_tol = 1.0e-10
[]
[VectorPostprocessors]
[NodalTemperature]
type = NodalValueSampler
sort_by = id
boundary = '100 101'
variable = 'temp'
[]
[]
[Outputs]
exodus = false
csv = true
[]
(modules/combined/test/tests/adaptive_timestepping/adapt_tstep_function_change_restart2.i)
# This is a test designed to evaluate the cabability of the
# IterationAdaptiveDT TimeStepper to adjust time step size according to
# a function. For example, if the power input function for a BISON
# simulation rapidly increases or decreases, the IterationAdaptiveDT
# TimeStepper should take time steps small enough to capture the
# oscillation.
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
order = FIRST
family = LAGRANGE
block = 1
[]
[Mesh]
file = 1hex8_10mm_cube.e
[]
[Functions]
[./Fiss_Function]
type = PiecewiseLinear
x = '0 1e6 2e6 2.001e6 2.002e6'
y = '0 3e8 3e8 12e8 0'
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./temp]
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = FINITE
volumetric_locking_correction = true
incremental = true
eigenstrain_names = thermal_expansion
decomposition_method = EigenSolution
add_variables = true
generate_output = 'vonmises_stress'
temperature = temp
[../]
[]
[Kernels]
[./heat]
type = HeatConduction
variable = temp
[../]
[./heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[../]
[./heat_source]
type = HeatSource
variable = temp
value = 1.0
function = Fiss_Function
[../]
[]
[BCs]
[./bottom_temp]
type = DirichletBC
variable = temp
boundary = 1
value = 300
[../]
[./top_bottom_disp_x]
type = DirichletBC
variable = disp_x
boundary = '1'
value = 0
[../]
[./top_bottom_disp_y]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0
[../]
[./top_bottom_disp_z]
type = DirichletBC
variable = disp_z
boundary = '1'
value = 0
[../]
[]
[Materials]
[./thermal]
type = HeatConductionMaterial
temp = temp
specific_heat = 1.0
thermal_conductivity = 1.0
[../]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 300e6
poissons_ratio = .3
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
[../]
[./thermal_expansion]
type = ComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 5e-6
stress_free_temperature = 300.0
temperature = temp
eigenstrain_name = thermal_expansion
[../]
[./density]
type = Density
density = 10963.0
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
verbose = true
nl_abs_tol = 1e-10
num_steps = 50000
end_time = 2.002e6
[./TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_function = Fiss_Function
max_function_change = 3e7
dt = 1e6
[../]
[]
[Postprocessors]
[./Temperature_of_Block]
type = ElementAverageValue
variable = temp
execute_on = 'timestep_end'
[../]
[./vonMises]
type = ElementAverageValue
variable = vonmises_stress
execute_on = 'timestep_end'
[../]
[]
[Outputs]
[./out]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 10
[../]
[]
[Problem]
restart_file_base = adapt_tstep_function_change_restart1_checkpoint_cp/0065
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_mortar/gap_heat_transfer_mortar_displaced.i)
[Mesh]
displacements = 'disp_x disp_y'
[file]
type = FileMeshGenerator
file = 2blk-gap.e
[]
[secondary]
type = LowerDBlockFromSidesetGenerator
sidesets = '101'
new_block_id = 10001
new_block_name = 'secondary_lower'
input = file
[]
[primary]
type = LowerDBlockFromSidesetGenerator
sidesets = '100'
new_block_id = 10000
new_block_name = 'primary_lower'
input = secondary
[]
[]
[Problem]
kernel_coverage_check = false
material_coverage_check = false
[]
[Variables]
[./temp]
order = FIRST
family = LAGRANGE
block = '1 2'
[../]
[./disp_x]
order = FIRST
family = LAGRANGE
block = '1 2'
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
block = '1 2'
[../]
[./lm]
order = FIRST
family = LAGRANGE
block = 'secondary_lower'
[../]
[]
[Materials]
[./left]
type = ADHeatConductionMaterial
block = 1
thermal_conductivity = 1000
specific_heat = 1
[../]
[./right]
type = ADHeatConductionMaterial
block = 2
thermal_conductivity = 500
specific_heat = 1
[../]
[]
[Kernels]
[./hc_displaced_block]
type = ADHeatConduction
variable = temp
use_displaced_mesh = true
block = '1'
[../]
[./hc_undisplaced_block]
type = ADHeatConduction
variable = temp
use_displaced_mesh = false
block = '2'
[../]
[disp_x]
type = Diffusion
variable = disp_x
block = '1 2'
[]
[disp_y]
type = Diffusion
variable = disp_y
block = '1 2'
[]
[]
[Constraints]
[./ced]
type = GapConductanceConstraint
variable = lm
secondary_variable = temp
k = 100
use_displaced_mesh = true
primary_boundary = 100
primary_subdomain = 10000
secondary_boundary = 101
secondary_subdomain = 10001
displacements = 'disp_x disp_y'
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = temp
boundary = 'left'
value = 1
[../]
[./right]
type = DirichletBC
variable = temp
boundary = 'right'
value = 0
[../]
[left_disp_x]
type = DirichletBC
preset = false
variable = disp_x
boundary = 'left'
value = .1
[]
[right_disp_x]
type = DirichletBC
preset = false
variable = disp_x
boundary = 'right'
value = 0
[]
[bottom_disp_y]
type = DirichletBC
preset = false
variable = disp_y
boundary = 'bottom'
value = 0
[]
[]
[Preconditioning]
[./fmp]
type = SMP
full = true
solve_type = 'NEWTON'
[../]
[]
[Executioner]
type = Steady
nl_rel_tol = 1e-11
[]
[Outputs]
exodus = true
show = 'temp disp_x disp_y'
[dof]
type = DOFMap
execute_on = 'initial'
[]
[]
(modules/combined/test/tests/axisymmetric_2d3d_solution_function/2d.i)
[GlobalParams]
order = FIRST
family = LAGRANGE
displacements = 'disp_x disp_y'
[]
[Problem]
coord_type = RZ
[]
[Mesh]
file = 2d.e
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[temp]
initial_condition = 400
[]
[]
[AuxVariables]
[hoop_stress]
order = CONSTANT
family = MONOMIAL
[]
[]
[Functions]
[temp_inner_func]
type = PiecewiseLinear
xy_data = '0 400
1 350'
[]
[temp_outer_func]
type = PiecewiseLinear
xy_data = '0 400
1 400'
[]
[press_func]
type = PiecewiseLinear
xy_data = '0 15
1 15'
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[]
[Modules/TensorMechanics/Master]
[all]
volumetric_locking_correction = true
add_variables = true
incremental = true
strain = FINITE
eigenstrain_names = thermal_expansion
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress'
temperature = temp
[]
[]
[AuxKernels]
[hoop_stress]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = hoop_stress
scalar_type = HoopStress
execute_on = timestep_end
[]
[]
[BCs]
[no_y]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0.0
[]
[Pressure]
[internal_pressure]
boundary = '4'
factor = 1.e6
function = press_func
[]
[]
[t_in]
type = FunctionDirichletBC
variable = temp
boundary = '4'
function = temp_inner_func
[]
[t_out]
type = FunctionDirichletBC
variable = temp
boundary = '2'
function = temp_outer_func
[]
[]
[Constraints]
[disp_y]
type = EqualValueBoundaryConstraint
variable = disp_y
primary = '65'
secondary = '3'
penalty = 1e18
[]
[]
[Materials]
[thermal1]
type = HeatConductionMaterial
block = '1'
thermal_conductivity = 25.0
specific_heat = 490.0
temp = temp
[]
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 193.05e9
poissons_ratio = 0.3
[]
[stress]
type = ComputeFiniteStrainElasticStress
[]
[thermal_expansion]
type = ComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 13e-6
stress_free_temperature = 295.00
temperature = temp
eigenstrain_name = thermal_expansion
[]
[density]
type = Density
block = '1'
density = 8000.0
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-ksp_snes_ew'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = ' 201 hypre boomeramg 4'
line_search = 'none'
l_max_its = 25
nl_max_its = 20
nl_rel_tol = 1e-9
l_tol = 1e-2
start_time = 0.0
dt = 1
end_time = 1
dtmin = 1
[]
[Outputs]
file_base = 2d_out
exodus = true
[console]
type = Console
max_rows = 25
[]
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_mortar/gap_heat_transfer_3D.i)
outer_htc = 10 # W/m^2/K
outer_Tinf = 300 # K
[GlobalParams]
order = SECOND
family = LAGRANGE
[]
[Mesh]
[left_block]
type = GeneratedMeshGenerator
dim = 3
nx = 3
ny = 6
nz = 6
xmin = -1
xmax = -0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
elem_type = HEX27
[]
[left_block_sidesets]
type = RenameBoundaryGenerator
input = left_block
old_boundary = '0 1 2 3 4 5'
new_boundary = 'left_bottom left_back left_right left_front left_left left_top'
[]
[left_block_id]
type = SubdomainIDGenerator
input = left_block_sidesets
subdomain_id = 1
[]
[right_block]
type = GeneratedMeshGenerator
dim = 3
nx = 4
ny = 8
nz = 8
xmin = 0.5
xmax = 1
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
elem_type = HEX27
[]
[right_block_sidesets]
type = RenameBoundaryGenerator
input = right_block
old_boundary = '0 1 2 3 4 5'
# new_boundary = 'right_bottom right_back right_right right_front right_left right_top'
new_boundary = '100 101 102 103 104 105'
[]
[right_block_sidesets_rename]
type = RenameBoundaryGenerator
input = right_block_sidesets
old_boundary = '100 101 102 103 104 105'
new_boundary = 'right_bottom right_back right_right right_front right_left right_top'
[]
[right_block_id]
type = SubdomainIDGenerator
input = right_block_sidesets_rename
subdomain_id = 2
[]
[combined_mesh]
type = MeshCollectionGenerator
inputs = 'left_block_id right_block_id'
[]
[]
[Functions]
[temp]
type = PiecewiseLinear
x = '0 1'
y = '100 200'
[]
[]
[Variables]
[temp]
initial_condition = 500
[]
[]
[AuxVariables]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[power_density]
block = 1
initial_condition = 50e3
[]
[]
[Kernels]
[heat_conduction]
type = HeatConduction
variable = temp
[]
[heat_source]
type = CoupledForce
variable = temp
block = 1
v = power_density
[]
[]
[AuxKernels]
[gap_cond]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductance
boundary = 'left_right'
[]
[]
[Materials]
[heat1]
type = HeatConductionMaterial
block = '1 2'
specific_heat = 1.0
thermal_conductivity = 34.6
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 'right_left'
secondary = 'left_right'
emissivity_primary = 0
emissivity_secondary = 0
gap_conductivity = 5
gap_geometry_type = PLATE
[]
[]
[BCs]
[RPV_out_BC] # k \nabla T = h (T- T_inf) at RPV outer boundary
type = ConvectiveFluxFunction # (Robin BC)
variable = temp
boundary = 'right_right' # outer RPV
coefficient = ${outer_htc}
T_infinity = ${outer_Tinf}
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
dt = 1
dtmin = 0.01
end_time = 1
nl_rel_tol = 1e-12
nl_abs_tol = 1e-8
[Quadrature]
order = fifth
side_order = seventh
[]
[]
[Outputs]
exodus = true
csv = true
[Console]
type = Console
[]
[]
[Postprocessors]
[temp_left]
type = SideAverageValue
boundary = 'left_right'
variable = temp
[]
[temp_right]
type = SideAverageValue
boundary = 'right_left'
variable = temp
[]
[flux_left]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 'left_right'
diffusivity = thermal_conductivity
[]
[flux_right]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 'right_left'
diffusivity = thermal_conductivity
[]
[ptot]
type = ElementIntegralVariablePostprocessor
variable = power_density
block = 1
[]
[convective_out]
type = ConvectiveHeatTransferSideIntegral
T_solid = temp
boundary = 'right_right' # outer RVP
T_fluid = ${outer_Tinf}
htc = ${outer_htc}
[]
[heat_balance] # should be equal to 0 upon convergence
type = ParsedPostprocessor
expression = '(convective_out - ptot) / ptot'
pp_names = 'convective_out ptot'
[]
[]
[VectorPostprocessors]
[NodalTemperature]
type = NodalValueSampler
sort_by = id
boundary = 'left_right right_left'
variable = temp
[]
[]
(modules/combined/test/tests/gap_heat_transfer_jac/two_blocks.i)
# This problem consists of two beams with different prescribed temperatures on
# the top of the top beam and the bottom of the bottom beam. The top beam is
# fixed against vertical displacement on the top surface, and the bottom beam
# bends downward due to thermal expansion.
# This is a test of the effectiveness of the Jacobian terms coupling temperature
# and displacement for thermal contact. The Jacobian is not exactly correct,
# but is close enough that this challenging problem converges in a small number
# of nonlinear iterations using NEWTON.
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
[./msh]
type = FileMeshGenerator
file = two_blocks.e
[]
[]
[Variables]
[./temp]
[../]
[]
[Kernels]
[./heat]
type = ADHeatConduction
variable = temp
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = FINITE
add_variables = true
eigenstrain_names = thermal_expansion
generate_output = 'stress_xx stress_yy stress_zz stress_yz stress_xz stress_xy'
use_automatic_differentiation = true
[../]
[]
[Contact]
[./mechanical]
primary = 4
secondary = 5
formulation = kinematic
tangential_tolerance = 1e-1
penalty = 1e10
[../]
[]
[ThermalContact]
[./thermal]
type = GapHeatTransfer
variable = temp
primary = 4
secondary = 5
emissivity_primary = 0
emissivity_secondary = 0
gap_conductivity = 1e4
quadrature = true
[../]
[]
[BCs]
[./left_x]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[../]
[./left_y]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./top_y]
type = DirichletBC
variable = disp_y
boundary = 7
value = 0
[../]
[./top_temp]
type = DirichletBC
variable = temp
boundary = 7
value = 1000.0
[../]
[./bot_temp]
type = DirichletBC
variable = temp
boundary = 6
value = 500.0
[../]
[]
[Materials]
[./density]
type = Density
density = 100
[../]
[./temp]
type = ADHeatConductionMaterial
thermal_conductivity = 1e5
specific_heat = 620.0
[../]
[./Elasticity_tensor]
type = ADComputeElasticityTensor
fill_method = symmetric_isotropic
C_ijkl = '0.3 0.5e8'
[../]
[./thermal_eigenstrain]
type = ADComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 1e-5
stress_free_temperature = 500
temperature = temp
eigenstrain_name = thermal_expansion
[../]
[./stress]
type = ADComputeFiniteStrainElasticStress
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Outputs]
exodus = true
[]
[Executioner]
automatic_scaling = true
type = Transient
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
solve_type = NEWTON
nl_max_its = 15
l_tol = 1e-10
l_max_its = 50
start_time = 0.0
dt = 0.2
dtmin = 0.2
num_steps = 1
line_search = none
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_htonly/gap_heat_transfer_htonly_test.i)
#
# 1-D Gap Heat Transfer Test without mechanics
#
# This test exercises 1-D gap heat transfer for a constant conductivity gap.
#
# The mesh consists of two element blocks containing one element each. Each
# element is a unit cube. They sit next to one another with a unit between them.
#
# The conductivity of both blocks is set very large to achieve a uniform temperature
# across each block. The temperature of the far left boundary
# is ramped from 100 to 200 over one time unit. The temperature of the far right
# boundary is held fixed at 100.
#
# A simple analytical solution is possible for the heat flux between the blocks:
#
# Flux = (T_left - T_right) * (gapK/gap_width)
#
# The gap conductivity is specified as 1, thus
#
# gapK(Tavg) = 1.0*Tavg
#
#
# The heat flux across the gap at time = 1 is then:
#
# Flux(2) = 100 * (1.0/1.0) = 100
#
# For comparison, see results from the flux post processors
#
# This test has been augmented with a second scalar field that solves nearly
# the same problem. The conductivity has been changed to 10. Thus, the
# flux for the second field is 1000.
#
[Mesh]
file = gap_heat_transfer_htonly_test.e
[]
[Functions]
[./temp]
type = PiecewiseLinear
x = '0 1 2'
y = '100 200 200'
[../]
[]
[ThermalContact]
[./thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 3
secondary = 2
emissivity_primary = 0
emissivity_secondary = 0
[../]
[./awesomium_contact]
type = GapHeatTransfer
variable = awesomium
primary = 3
secondary = 2
emissivity_primary = 0
emissivity_secondary = 0
gap_conductivity = 10
appended_property_name = _awesomium
[../]
[]
[Variables]
[./temp]
order = FIRST
family = LAGRANGE
initial_condition = 100
[../]
[./awesomium]
order = FIRST
family = LAGRANGE
initial_condition = 100
[../]
[]
[AuxVariables]
[./gap_cond]
order = CONSTANT
family = MONOMIAL
[../]
[./gap_cond_awesomium]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./heat]
type = HeatConduction
variable = temp
[../]
[./awe]
type = HeatConduction
variable = awesomium
[../]
[]
[BCs]
[./temp_far_left]
type = FunctionDirichletBC
boundary = 1
variable = temp
function = temp
[../]
[./temp_far_right]
type = DirichletBC
boundary = 4
variable = temp
value = 100
[../]
[./awesomium_far_left]
type = FunctionDirichletBC
boundary = 1
variable = awesomium
function = temp
[../]
[./awesomium_far_right]
type = DirichletBC
boundary = 4
variable = awesomium
value = 100
[../]
[]
[AuxKernels]
[./conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 2
[../]
[./conductance_awe]
type = MaterialRealAux
property = gap_conductance_awesomium
variable = gap_cond_awesomium
boundary = 2
[../]
[]
[Materials]
[./heat1]
type = HeatConductionMaterial
block = '1 2'
specific_heat = 1.0
thermal_conductivity = 100000000.0
[../]
[./density]
type = GenericConstantMaterial
block = '1 2'
prop_names = 'density'
prop_values = '1.0'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
nl_rel_tol = 1e-12
l_tol = 1e-3
l_max_its = 100
dt = 1e-1
end_time = 1.0
[]
[Postprocessors]
[./temp_left]
type = SideAverageValue
boundary = 2
variable = temp
execute_on = 'initial timestep_end'
[../]
[./temp_right]
type = SideAverageValue
boundary = 3
variable = temp
execute_on = 'initial timestep_end'
[../]
[./flux_left]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 2
diffusivity = thermal_conductivity
execute_on = 'initial timestep_end'
[../]
[./flux_right]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 3
diffusivity = thermal_conductivity
execute_on = 'initial timestep_end'
[../]
[./awe_left]
type = SideAverageValue
boundary = 2
variable = awesomium
execute_on = 'initial timestep_end'
[../]
[./awe_right]
type = SideAverageValue
boundary = 3
variable = awesomium
execute_on = 'initial timestep_end'
[../]
[./awe_flux_left]
type = SideDiffusiveFluxIntegral
variable = awesomium
boundary = 2
diffusivity = thermal_conductivity
execute_on = 'initial timestep_end'
[../]
[./awe_flux_right]
type = SideDiffusiveFluxIntegral
variable = awesomium
boundary = 3
diffusivity = thermal_conductivity
execute_on = 'initial timestep_end'
[../]
[]
[Outputs]
exodus = true
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_htonly/sphere2DRZ.i)
#
# 2DRZ Spherical Gap Heat Transfer Test.
#
# This test exercises 2D gap heat transfer for a constant conductivity gap.
#
# The mesh consists of an inner solid sphere of radius = 1 unit, and outer
# hollow sphere with an inner radius of 2. In other words, the gap between
# them is 1 radial unit in length.
#
# The conductivity of both spheres is set very large to achieve a uniform
# temperature in each sphere. The temperature of the center node of the
# inner sphere is ramped from 100 to 200 over one time unit. The
# temperature of the outside of the outer, hollow sphere is held fixed
# at 100.
#
# A simple analytical solution is possible for the integrated heat flux
# between the inner and outer spheres:
#
# Integrated Flux = (T_left - T_right) * (gapK/(r^2*((1/r1)-(1/r2)))) * Area
#
# For gapK = 1 (default value)
#
# The area is taken as the area of the secondary (inner) surface:
#
# Area = 4 * pi * 1^2 (4*pi*r^2)
#
# The integrated heat flux across the gap at time 1 is then:
#
# 4*pi*k*delta_T/((1/r1)-(1/r2))
# 4*pi*1*100/((1/1) - (1/2)) = 2513.3 watts
#
# For comparison, see results from the integrated flux post processors.
# This simulation makes use of symmetry, so only 1/2 of the spheres is meshed
# As such, the integrated flux from the post processors is 1/2 of the total,
# or 1256.6 watts... i.e. 400*pi.
# The value coming from the post processor is slightly less than this
# but converges as mesh refinement increases.
#
# Simulating contact is challenging. Regression tests that exercise
# contact features can be difficult to solve consistently across multiple
# platforms. While designing these tests, we felt it worth while to note
# some aspects of these tests. The following applies to:
# sphere3D.i, sphere2DRZ.i, cyl2D.i, and cyl3D.i.
# 1. We decided that to perform consistently across multiple platforms we
# would use very small convergence tolerance. In this test we chose an
# nl_rel_tol of 1e-12.
# 2. Due to such a high value for thermal conductivity (used here so that the
# domains come to a uniform temperature) the integrated flux at time = 0
# was relatively large (the value coming from SideIntegralFlux =
# -_diffusion_coef[_qp]*_grad_u[_qp]*_normals[_qp] where the diffusion coefficient
# here is thermal conductivity).
# Even though _grad_u[_qp] is small, in this case the diffusion coefficient
# is large. The result is a number that isn't exactly zero and tends to
# fail exodiff. For this reason the parameter execute_on = initial should not
# be used. That parameter is left to default settings in these regression tests.
#
[GlobalParams]
order = SECOND
family = LAGRANGE
[]
[Problem]
coord_type = RZ
[]
[Mesh]
file = cyl2D.e
[]
[Functions]
[./temp]
type = PiecewiseLinear
x = '0 1'
y = '100 200'
[../]
[]
[Variables]
[./temp]
initial_condition = 100
[../]
[]
[AuxVariables]
[./gap_conductance]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./heat_conduction]
type = HeatConduction
variable = temp
[../]
[]
[AuxKernels]
[./gap_cond]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductance
boundary = 2
[../]
[]
[Materials]
[./heat1]
type = HeatConductionMaterial
block = '1 2'
specific_heat = 1.0
thermal_conductivity = 1000000.0
[../]
[]
[ThermalContact]
[./thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 3
secondary = 2
emissivity_primary = 0
emissivity_secondary = 0
gap_conductivity = 1
quadrature = true
gap_geometry_type = SPHERE
sphere_origin = '0 0 0'
[../]
[]
[BCs]
[./mid]
type = FunctionDirichletBC
boundary = 1
variable = temp
function = temp
[../]
[./temp_far_right]
type = DirichletBC
boundary = 4
variable = temp
value = 100
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
dt = 1
dtmin = 0.01
end_time = 1
nl_rel_tol = 1e-12
nl_abs_tol = 1e-7
[./Quadrature]
order = fifth
side_order = seventh
[../]
[]
[Outputs]
exodus = true
[./Console]
type = Console
[../]
[]
[Postprocessors]
[./temp_left]
type = SideAverageValue
boundary = 2
variable = temp
[../]
[./temp_right]
type = SideAverageValue
boundary = 3
variable = temp
[../]
[./flux_left]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 2
diffusivity = thermal_conductivity
[../]
[./flux_right]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 3
diffusivity = thermal_conductivity
[../]
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_htonly/cyl2D.i)
#
# 2D Cylindrical Gap Heat Transfer Test.
#
# This test exercises 2D gap heat transfer for a constant conductivity gap.
#
# The mesh consists of an inner solid cylinder of radius = 1 unit, and outer
# hollow cylinder with an inner radius of 2 in the x-y plane. In other words,
# the gap between them is 1 radial unit in length.
#
# The conductivity of both cylinders is set very large to achieve a uniform
# temperature in each cylinder. The temperature of the center node of the
# inner cylinder is ramped from 100 to 200 over one time unit. The temperature
# of the outside of the outer, hollow cylinder is held fixed at 100.
#
# A simple analytical solution is possible for the integrated heat flux
# between the inner and outer cylinders:
#
# Integrated Flux = (T_left - T_right) * (gapK/(r*ln(r2/r1))) * Area
#
# For gapK = 1 (default value)
#
# The area is taken as the area of the secondary (inner) surface:
#
# Area = 2 * pi * h * r, where h is the height of the cylinder.
#
# The integrated heat flux across the gap at time 1 is then:
#
# 2*pi*h*k*delta_T/(ln(r2/r1))
# 2*pi*1*1*100/(ln(2/1)) = 906.5 watts
#
# For comparison, see results from the integrated flux post processors.
# This simulation makes use of symmetry, so only 1/4 of the cylinders is meshed
# As such, the integrated flux from the post processors is 1/4 of the total,
# or 226.6 watts.
# The value coming from the post processor is slightly less than this
# but converges as mesh refinement increases.
# Note that the 2D and 3D results are the same.
#
# Simulating contact is challenging. Regression tests that exercise
# contact features can be difficult to solve consistently across multiple
# platforms. While designing these tests, we felt it worth while to note
# some aspects of these tests. The following applies to:
# sphere3D.i, sphere2DRZ.i, cyl2D.i, and cyl3D.i.
# 1. We decided that to perform consistently across multiple platforms we
# would use very small convergence tolerance. In this test we chose an
# nl_rel_tol of 1e-12.
# 2. Due to such a high value for thermal conductivity (used here so that the
# domains come to a uniform temperature) the integrated flux at time = 0
# was relatively large (the value coming from SideIntegralFlux =
# -_diffusion_coef[_qp]*_grad_u[_qp]*_normals[_qp] where the diffusion coefficient
# here is thermal conductivity).
# Even though _grad_u[_qp] is small, in this case the diffusion coefficient
# is large. The result is a number that isn't exactly zero and tends to
# fail exodiff. For this reason the parameter execute_on = initial should not
# be used. That parameter is left to default settings in these regression tests.
#
[GlobalParams]
order = SECOND
family = LAGRANGE
[]
[Mesh]
file = cyl2D.e
[]
[Functions]
[./temp]
type = PiecewiseLinear
x = '0 1'
y = '100 200'
[../]
[]
[Variables]
[./temp]
initial_condition = 100
[../]
[]
[AuxVariables]
[./gap_conductance]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./heat_conduction]
type = HeatConduction
variable = temp
[../]
[]
[AuxKernels]
[./gap_cond]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductance
boundary = 2
[../]
[]
[Materials]
[./heat1]
type = HeatConductionMaterial
block = '1 2'
specific_heat = 1.0
thermal_conductivity = 1000000.0
[../]
[]
[ThermalContact]
[./thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 3
secondary = 2
emissivity_primary = 0
emissivity_secondary = 0
gap_conductivity = 1
quadrature = true
gap_geometry_type = CYLINDER
cylinder_axis_point_1 = '0 0 0'
cylinder_axis_point_2 = '0 0 1'
[../]
[]
[BCs]
[./mid]
type = FunctionDirichletBC
boundary = 1
variable = temp
function = temp
[../]
[./temp_far_right]
type = DirichletBC
boundary = 4
variable = temp
value = 100
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
dt = 1
dtmin = 0.01
end_time = 1
nl_rel_tol = 1e-12
nl_abs_tol = 1e-7
[./Quadrature]
order = fifth
side_order = seventh
[../]
[]
[Outputs]
exodus = true
[./Console]
type = Console
[../]
[]
[Postprocessors]
[./temp_left]
type = SideAverageValue
boundary = 2
variable = temp
[../]
[./temp_right]
type = SideAverageValue
boundary = 3
variable = temp
[../]
[./flux_left]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 2
diffusivity = thermal_conductivity
[../]
[./flux_right]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 3
diffusivity = thermal_conductivity
[../]
[]
(modules/heat_transfer/test/tests/radiation_transfer_action/cavity_with_pillar_vf.i)
[Mesh]
[cartesian]
type = CartesianMeshGenerator
dim = 3
dx = '0.1 0.3 0.4 0.3 0.1'
ix = ' 1 3 4 3 1'
dy = '0.1 0.3 0.4 0.3 0.1'
iy = ' 1 3 4 3 1'
dz = '0.1 0.8 0.2 0.1'
iz = ' 1 8 2 1'
subdomain_id = '1 1 1 1 1
1 15 15 15 1
1 15 1 15 1
1 15 15 15 1
1 1 1 1 1
1 12 12 12 1
11 0 103 0 14
11 104 2 102 14
11 0 101 0 14
1 13 13 13 1
1 12 12 12 1
11 0 0 0 14
11 0 105 0 14
11 0 0 0 14
1 13 13 13 1
1 1 1 1 1
1 16 16 16 1
1 16 16 16 1
1 16 16 16 1
1 1 1 1 1'
[]
[left_interior]
type = SideSetsBetweenSubdomainsGenerator
primary_block = 11
paired_block = '0 101 102 103 104 105'
new_boundary = left_interior_wall
input = cartesian
[]
[right_interior]
type = SideSetsBetweenSubdomainsGenerator
primary_block = 14
paired_block = '0 101 102 103 104 105'
new_boundary = right_interior_wall
input = left_interior
[]
[bottom_interior]
type = SideSetsBetweenSubdomainsGenerator
primary_block = 12
paired_block = '0 101 102 103 104 105'
new_boundary = bottom_interior_wall
input = right_interior
[]
[top_interior]
type = SideSetsBetweenSubdomainsGenerator
primary_block = 13
paired_block = '0 101 102 103 104 105'
new_boundary = top_interior_wall
input = bottom_interior
[]
[front_interior]
type = SideSetsBetweenSubdomainsGenerator
primary_block = 15
paired_block = '0 101 102 103 104 105'
new_boundary = front_interior_wall
input = top_interior
[]
[back_interior]
type = SideSetsBetweenSubdomainsGenerator
primary_block = 16
paired_block = '0 101 102 103 104 105'
new_boundary = back_interior_wall
input = front_interior
[]
[pillar_left]
type = SideSetsBetweenSubdomainsGenerator
primary_block = 2
paired_block = 104
new_boundary = pillar_left
input = 'back_interior'
[]
[pillar_right]
type = SideSetsBetweenSubdomainsGenerator
primary_block = 2
paired_block = 102
new_boundary = pillar_right
input = 'pillar_left'
[]
[pillar_bottom]
type = SideSetsBetweenSubdomainsGenerator
primary_block = 2
paired_block = 103
new_boundary = pillar_bottom
input = 'pillar_right'
[]
[pillar_top]
type = SideSetsBetweenSubdomainsGenerator
primary_block = 2
paired_block = 101
new_boundary = pillar_top
input = 'pillar_bottom'
[]
[pillar_back]
type = SideSetsBetweenSubdomainsGenerator
primary_block = 2
paired_block = 105
new_boundary = pillar_back
input = 'pillar_top'
[]
[rename_block]
type = RenameBlockGenerator
old_block = '2 11 12 13 14 15 16 101 102 103 104 105'
new_block = '2 1 1 1 1 1 1 0 0 0 0 0'
input = 'pillar_back'
[]
[]
[GrayDiffuseRadiation]
[cavity]
sidesets = '6 7 8 9 10 11 12 13 14 15 16'
emissivity = '0.8 0.8 0.8 0.8 0.8 eps_fn 0.8 0.8 0.8 0.8 0.8'
n_patches = '5 5 5 5 5 5 5 5 5 5 5'
partitioners = 'metis metis metis metis metis metis metis metis metis metis metis'
temperature = temperature
ray_tracing_face_order = SECOND
[]
[]
[Functions]
[eps_fn]
type = ConstantFunction
value = 0.8
[]
[]
[Variables]
[temperature]
initial_condition = 300
block = '1 2'
[]
[]
[Kernels]
[hc]
type = HeatConduction
variable = temperature
block = '1 2'
[]
[]
[BCs]
[left]
type = DirichletBC
variable = temperature
boundary = left
value = 500
[]
[front]
type = DirichletBC
variable = temperature
boundary = front
value = 300
[]
[]
[Materials]
[hcmat]
type = HeatConductionMaterial
thermal_conductivity = 25.0
specific_heat = 490.0
block = '1 2'
[]
[density]
type = GenericConstantMaterial
prop_names = 'density'
prop_values = '80'
block = '1 2'
[]
[]
[Executioner]
type = Steady
nl_abs_tol = 1e-8
nl_rel_tol = 1e-8
[]
[Outputs]
exodus = true
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_mortar_action/modular_gap_heat_transfer_mortar_displaced_conduction_UOs_function.i)
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 2blk-gap.e
[]
allow_renumbering = false
[]
[Problem]
kernel_coverage_check = false
material_coverage_check = false
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
block = '1 2'
[]
[disp_x]
order = FIRST
family = LAGRANGE
block = '1 2'
[]
[disp_y]
order = FIRST
family = LAGRANGE
block = '1 2'
[]
[]
[Functions]
[gc_function]
type = PiecewiseLinear
x = '-10000 10000'
y = '0.02 0.02'
[]
[]
[Materials]
[left]
type = ADHeatConductionMaterial
block = 1
thermal_conductivity = 0.01
specific_heat = 1
[]
[right]
type = ADHeatConductionMaterial
block = 2
thermal_conductivity = 0.005
specific_heat = 1
[]
[]
[Kernels]
[hc_displaced_block]
type = ADHeatConduction
variable = temp
use_displaced_mesh = true
block = '1'
[]
[hc_undisplaced_block]
type = ADHeatConduction
variable = temp
use_displaced_mesh = false
block = '2'
[]
[disp_x]
type = Diffusion
variable = disp_x
block = '1 2'
[]
[disp_y]
type = Diffusion
variable = disp_y
block = '1 2'
[]
[]
[MortarGapHeatTransfer]
[mortar_heat_transfer]
temperature = temp
boundary = 100
use_displaced_mesh = true
primary_boundary = 100
secondary_boundary = 101
user_created_gap_flux_models = 'radiation_uo conduction_uo'
[]
[]
[UserObjects]
[radiation_uo]
type = GapFluxModelRadiation
temperature = temp
boundary = 100
primary_emissivity = 1.0
secondary_emissivity = 1.0
use_displaced_mesh = true
[]
[conduction_uo]
type = GapFluxModelConduction
temperature = temp
boundary = 100
gap_conductivity_function = gc_function
gap_conductivity_function_variable = temp
gap_conductivity = 1.0
use_displaced_mesh = true
[]
[]
[BCs]
[left]
type = DirichletBC
variable = temp
boundary = 'left'
value = 100
[]
[right]
type = DirichletBC
variable = temp
boundary = 'right'
value = 0
[]
[left_disp_x]
type = DirichletBC
preset = false
variable = disp_x
boundary = 'left'
value = .1
[]
[right_disp_x]
type = DirichletBC
preset = false
variable = disp_x
boundary = 'right'
value = 0
[]
[bottom_disp_y]
type = DirichletBC
preset = false
variable = disp_y
boundary = 'bottom'
value = 0
[]
[]
[Preconditioning]
[fmp]
type = SMP
full = true
solve_type = 'NEWTON'
[]
[]
[Executioner]
type = Steady
nl_rel_tol = 1e-11
nl_abs_tol = 1.0e-10
[]
[VectorPostprocessors]
[NodalTemperature]
type = NodalValueSampler
sort_by = id
boundary = '100 101'
variable = 'temp'
[]
[]
[Outputs]
csv = true
[exodus]
type = Exodus
show = 'temp'
[]
[]
(modules/combined/test/tests/thermal_conductivity_temperature_function_test/thermal_conductivity_temperature_function_test.i)
#
# This test evaluates the capability of HeatConductionMaterial to define
# thermal conductivity as a function of temperature. The test uses the patch test
# cube mesh with a flux bc on one side and a temperature bc on the opposite side.
# The temperature bc changes as a function of time from 100 to 200. The thermal
# conductivity is a function of temperature, with k = 1 for temps = 100-199, k = 2
# for temps _>_ 200. The flux, q = 10 is constant. The Transient Executioner is used here
# although the interial kernel is omitted, so this is really a series of two steady-state
# solutions.
#
# ---------------
# | |
# | |
# q -> | k | T2
# | |
# T1 = ? | |
# ---------------
# dx = 1
#
#
# q = -k dT/dx
#
# q = -k (T1 - T2)/dx
#
# T1 = (q/-k)*dx + T2
#
# for: T2 = 100, k = 1, q = -10
#
# T1 = 110
# --------
#
# for: T2 = 200, k = 2, q = -10
#
# T1 = 205
# --------
#
[Mesh]#Comment
file = fe_patch.e
[] # Mesh
[Functions]
[./k_func]
type = PiecewiseLinear
x = '100 199 200'
y = '1 1 2'
[../]
[./c_func]
type = PiecewiseLinear
x = '100 200'
y = '0.116 0.116'
[../]
[./t_func]
type = PiecewiseLinear
x = '0 1 2'
y = '100 100 200'
[../]
[] # Functions
[Variables]
[./temp]
order = FIRST
family = LAGRANGE
initial_condition = 100
[../]
[] # Variables
[Kernels]
[./heat_r]
type = HeatConduction
variable = temp
[../]
[] # Kernels
[BCs]
[./temps_function]
type = FunctionDirichletBC
variable = temp
boundary = 1000
function = t_func
[../]
[./flux_in]
type = NeumannBC
variable = temp
boundary = 100
value = 10
[../]
[] # BCs
[Materials]
[./heat]
type = HeatConductionMaterial
block = 1
temp = temp
thermal_conductivity_temperature_function = k_func
specific_heat_temperature_function = c_func
[../]
[./density]
type = Density
block = 1
density = 0.283
[../]
[] # Materials
[Executioner]
type = Transient
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -ksp_gmres_restart'
petsc_options_value = 'lu 101'
line_search = 'none'
l_max_its = 100
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-4
nl_abs_tol = 1e-10
start_time = 0.0
dt = 1
end_time = 2
num_steps = 2
[] # Executioner
[Outputs]
file_base = out
exodus = true
[] # Outputs
(modules/combined/test/tests/heat_convection/heat_convection_function.i)
[Mesh] # Mesh Start
file = patch_3d.e
#
[] # Mesh END
[Functions]
[./t_infinity]
type = ParsedFunction
expression = '300'
[../]
[./htc]
type = ParsedFunction
expression = 10.0*5.7 # convective heat transfer coefficient (w/m^2-K)[50 BTU/hr-ft^2-F]
[../]
[]
[Variables] # Variables Start
[./temp]
order = FIRST
family = LAGRANGE
initial_condition = 294.26
[../]
[] # Variables END
[Kernels] # Kernels Start
[./heat]
type = HeatConduction
variable = temp
[../]
[] # Kernels END
[BCs] # Boundary Conditions Start
# Heat transfer coefficient on outer parallelpiped radius and ends
[./convective_clad_surface] # Convective Start
type = ConvectiveFluxFunction # Convective flux, e.g. q'' = h*(Tw - Tf)
boundary = 12
variable = temp
coefficient = htc
T_infinity = t_infinity
[../] # Convective End
[./fixed]
type = DirichletBC
variable = temp
boundary = 10
value = 100
[../]
[] # BCs END
[Materials] # Materials Start
[./thermal]
type = HeatConductionMaterial
block = '1 2 3 4 5 6 7'
specific_heat = 826.4
thermal_conductivity = 57
[../]
[./density]
type = Density
block = '1 2 3 4 5 6 7'
density = 2405.28
[../]
[] # Materials END
[Executioner] # Executioner Start
type = Transient
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew '
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type'
petsc_options_value = '70 hypre boomeramg'
l_max_its = 60
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
l_tol = 1e-5
start_time = 0.0
dt = 1
num_steps = 1
[] # Executioner END
[Outputs] # Output Start
# Output Start
exodus = true
[] # Output END
# # Input file END
(modules/combined/test/tests/elastic_thermal_patch/elastic_thermal_jacobian_rz_smp.i)
# This problem is intended to exercise the Jacobian for coupled RZ
# problems. Only two iterations should be needed.
[GlobalParams]
temperature = temp
volumetric_locking_correction = true
[]
[Problem]
coord_type = RZ
[]
[Mesh]
file = elastic_thermal_patch_rz_test.e
[]
[Functions]
[./ur]
type = ParsedFunction
expression = '0'
[../]
[./uz]
type = ParsedFunction
expression = '0'
[../]
[./body]
type = ParsedFunction
expression = '-400/x'
[../]
[./temp]
type = ParsedFunction
expression = '117.56+100*t'
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./temp]
initial_condition = 117.56
[../]
[]
[Modules]
[TensorMechanics]
[Master]
displacements = 'disp_x disp_y'
[All]
displacements = 'disp_x disp_y'
add_variables = true
strain = SMALL
incremental = true
eigenstrain_names = eigenstrain
generate_output = 'stress_xx stress_yy stress_zz stress_xy stress_yz stress_zx'
[../]
[../]
[../]
[]
[Kernels]
[./heat]
type = HeatConduction
variable = temp
[../]
[]
[BCs]
[./ur]
type = FunctionDirichletBC
variable = disp_x
boundary = 1
function = ur
[../]
[./uz]
type = FunctionDirichletBC
variable = disp_y
boundary = 2
function = uz
[../]
[./temp]
type = FunctionDirichletBC
variable = temp
boundary = 10
function = temp
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1e6
poissons_ratio = 0.25
[../]
[./thermal_strain]
type = ComputeThermalExpansionEigenstrain
stress_free_temperature = 117.56
thermal_expansion_coeff = 1e-6
eigenstrain_name = eigenstrain
[../]
[./stress]
type = ComputeStrainIncrementBasedStress
[../]
[./heat]
type = HeatConductionMaterial
specific_heat = 0.116
thermal_conductivity = 4.85e-4
[../]
[./density]
type = Density
density = 0.283
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
nl_abs_tol = 1e-9
nl_rel_tol = 1e-12
l_max_its = 20
start_time = 0.0
dt = 1.0
num_steps = 1
end_time = 1.0
[]
[Outputs]
file_base = elastic_thermal_jacobian_rz_smp_out
[./exodus]
type = Exodus
execute_on = 'initial timestep_end nonlinear'
nonlinear_residual_dt_divisor = 100
[../]
[]
(modules/combined/test/tests/elastic_thermal_patch/elastic_thermal_patch_rz_smp.i)
#
# This problem is modified from the Abaqus verification manual:
# "1.5.4 Patch test for axisymmetric elements"
# The original stress solution is given as:
# xx = yy = zz = 2000
# xy = 400
#
# Here, E=1e6 and nu=0.25.
# However, with a +100 degree change in temperature and a coefficient
# of thermal expansion of 1e-6, the solution becomes:
# xx = yy = zz = 1800
# xy = 400
# since
# E*(1-nu)/(1+nu)/(1-2*nu)*(1+2*nu/(1-nu))*(1e-3-1e-4) = 1800
#
# Also,
#
# dSrr dSrz Srr-Stt
# ---- + ---- + ------- + br = 0
# dr dz r
#
# and
#
# dSrz Srz dSzz
# ---- + --- + ---- + bz = 0
# dr r dz
#
# where
# Srr = stress in rr
# Szz = stress in zz
# Stt = stress in theta-theta
# Srz = stress in rz
# br = body force in r direction
# bz = body force in z direction
#
# This test is meant to exercise the Jacobian. To that end, the body
# force has been turned off. This makes the results differ slightly
# from the original values, but requires a correct Jacobian for minimal
# iterations. Iteration plotting is turned on to ensure that the
# number of iterations needed does not increase.
[GlobalParams]
temperature = temp
volumetric_locking_correction = true
[]
[Problem]
coord_type = RZ
[]
[Mesh]
file = elastic_thermal_patch_rz_test.e
[]
[Functions]
[./ur]
type = ParsedFunction
expression = '1e-3*x'
[../]
[./uz]
type = ParsedFunction
expression = '1e-3*(x+y)'
[../]
[./body]
type = ParsedFunction
expression = '-400/x'
[../]
[./temp]
type = ParsedFunction
expression = '117.56+100*t'
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./temp]
initial_condition = 117.56
[../]
[]
[Modules]
[TensorMechanics]
[Master]
displacements = 'disp_x disp_y'
[All]
displacements = 'disp_x disp_y'
add_variables = true
strain = SMALL
incremental = true
eigenstrain_names = eigenstrain
generate_output = 'stress_xx stress_yy stress_zz stress_xy stress_yz stress_zx'
[../]
[../]
[../]
[]
[Kernels]
[./heat]
type = HeatConduction
variable = temp
[../]
[]
[BCs]
[./ur]
type = FunctionDirichletBC
variable = disp_x
boundary = 10
function = ur
[../]
[./uz]
type = FunctionDirichletBC
variable = disp_y
boundary = 10
function = uz
[../]
[./temp]
type = FunctionDirichletBC
variable = temp
boundary = 10
function = temp
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
bulk_modulus = 666666.6666666667
poissons_ratio = 0.25
[../]
[./thermal_strain]
type = ComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 1e-6
stress_free_temperature = 117.56
eigenstrain_name = eigenstrain
[../]
[./stress]
type = ComputeStrainIncrementBasedStress
[../]
[./heat]
type = HeatConductionMaterial
specific_heat = 0.116
thermal_conductivity = 4.85e-4
[../]
[./density]
type = Density
block = 1
density = 0.283
[../]
[]
[Preconditioning]
[./SMP]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
nl_abs_tol = 1e-11
nl_rel_tol = 1e-12
l_max_its = 20
start_time = 0.0
dt = 1.0
num_steps = 1
end_time = 1.0
[]
[Outputs]
file_base = elastic_thermal_patch_rz_smp_out
[./exodus]
type = Exodus
execute_on = 'initial timestep_end nonlinear'
nonlinear_residual_dt_divisor = 100
[../]
[]
(modules/combined/tutorials/introduction/thermal_mechanical_contact/thermomech_cont_step02.i)
#
# Three shell thermo mechanical contact
# https://mooseframework.inl.gov/modules/combined/tutorials/introduction/step02.html
#
[GlobalParams]
displacements = 'disp_x disp_y'
block = '0 1 2'
[]
[Problem]
# switch to an axisymmetric coordinate system
coord_type = RZ
[]
[Mesh]
# inner cylinder
[inner]
type = GeneratedMeshGenerator
dim = 2
nx = 10
ny = 40
xmax = 1
ymin = -1.75
ymax = 1.75
boundary_name_prefix = inner
[]
# middle shell with subdomain ID 1
[middle_elements]
type = GeneratedMeshGenerator
dim = 2
nx = 10
ny = 40
xmin = 1.1
xmax = 2.1
ymin = -2.5
ymax = 2.5
boundary_name_prefix = middle
boundary_id_offset = 4
[]
[middle]
type = SubdomainIDGenerator
input = middle_elements
subdomain_id = 1
[]
# outer shell with subdomain ID 2
[outer_elements]
type = GeneratedMeshGenerator
dim = 2
nx = 10
ny = 48
xmin = 2.2
xmax = 3.2
ymin = -3
ymax = 3
boundary_name_prefix = outer
boundary_id_offset = 8
[]
[outer]
type = SubdomainIDGenerator
input = outer_elements
subdomain_id = 2
[]
[collect_meshes]
type = MeshCollectionGenerator
inputs = 'inner middle outer'
[]
# add set of 3 nodes to remove rigid body modes for y-translation in each block
[pin]
type = ExtraNodesetGenerator
input = collect_meshes
new_boundary = pin
coord = '0 0 0; 1.6 0 0; 2.7 0 0'
[]
patch_update_strategy = iteration
[]
[Variables]
# temperature field variable (first order Lagrange by default)
[T]
[]
# temperature lagrange multipliers
[Tlm1]
block = 'inner_gap_secondary_subdomain'
[]
[Tlm2]
block = 'outer_gap_secondary_subdomain'
[]
[]
[Kernels]
[heat_conduction]
type = HeatConduction
variable = T
[]
[dTdt]
type = HeatConductionTimeDerivative
variable = T
[]
[]
[Modules/TensorMechanics/Master]
[all]
add_variables = true
strain = FINITE
eigenstrain_names = thermal
generate_output = 'vonmises_stress stress_xx strain_xx stress_yy strain_yy'
volumetric_locking_correction = true
temperature = T
[]
[]
[Contact]
[inner_gap]
primary = middle_left
secondary = inner_right
model = frictionless
formulation = mortar
c_normal = 1e+0
[]
[outer_gap]
primary = outer_left
secondary = middle_right
model = frictionless
formulation = mortar
c_normal = 1e+0
[]
[]
[Constraints]
# thermal contact constraint
[Tlm1]
type = GapConductanceConstraint
variable = Tlm1
secondary_variable = T
use_displaced_mesh = true
k = 1e-1
primary_boundary = middle_left
primary_subdomain = inner_gap_secondary_subdomain
secondary_boundary = inner_right
secondary_subdomain = inner_gap_primary_subdomain
[]
[Tlm2]
type = GapConductanceConstraint
variable = Tlm2
secondary_variable = T
use_displaced_mesh = true
k = 1e-1
primary_boundary = outer_left
primary_subdomain = outer_gap_secondary_subdomain
secondary_boundary = middle_right
secondary_subdomain = outer_gap_primary_subdomain
[]
[]
[BCs]
[center_axis_fix]
type = DirichletBC
variable = disp_x
boundary = 'inner_left'
value = 0
[]
[y_translation_fix]
type = DirichletBC
variable = disp_y
boundary = 'pin'
value = 0
[]
[heat_center]
type = FunctionDirichletBC
variable = T
boundary = 'inner_left'
function = t*40
[]
[cool_right]
type = DirichletBC
variable = T
boundary = 'outer_right'
value = 0
[]
[]
[Materials]
[eigen_strain_inner]
type = ComputeThermalExpansionEigenstrain
eigenstrain_name = thermal
temperature = T
thermal_expansion_coeff = 1e-3
stress_free_temperature = 0
block = 0
[]
[eigen_strain_middle]
type = ComputeThermalExpansionEigenstrain
eigenstrain_name = thermal
temperature = T
thermal_expansion_coeff = 2e-4
stress_free_temperature = 0
block = 1
[]
[eigen_strain_outer]
type = ComputeThermalExpansionEigenstrain
eigenstrain_name = thermal
temperature = T
thermal_expansion_coeff = 1e-5
stress_free_temperature = 0
block = 2
[]
[elasticity]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1
poissons_ratio = 0.3
[]
[stress]
type = ComputeFiniteStrainElasticStress
[]
# thermal properties
[thermal_conductivity_0]
type = HeatConductionMaterial
thermal_conductivity = 50
specific_heat = 1
block = 0
[]
[thermal_conductivity_1]
type = HeatConductionMaterial
thermal_conductivity = 5
specific_heat = 1
block = 1
[]
[thermal_conductivity_2]
type = HeatConductionMaterial
thermal_conductivity = 1
specific_heat = 1
block = 2
[]
[density]
type = Density
density = 1
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
# [Debug]
# show_var_residual_norms = true
# []
[Executioner]
type = Transient
solve_type = PJFNK
line_search = none
petsc_options_iname = '-pc_type -pc_factor_shift_type'
petsc_options_value = 'lu nonzero '
snesmf_reuse_base = false
end_time = 7
dt = 0.05
nl_rel_tol = 1e-08
nl_abs_tol = 1e-50
[Predictor]
type = SimplePredictor
scale = 0.5
[]
[]
[Outputs]
exodus = true
print_linear_residuals = false
perf_graph = true
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_mortar/gap_heat_transfer_3D_mortar.i)
outer_htc = 10 # W/m^2/K
outer_Tinf = 300 # K
[GlobalParams]
order = SECOND
family = LAGRANGE
[]
[Problem]
kernel_coverage_check = false
material_coverage_check = false
[]
[Mesh]
[left_block]
type = GeneratedMeshGenerator
dim = 3
nx = 3
ny = 6
nz = 6
xmin = -1
xmax = -0.5
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
elem_type = HEX27
[]
[left_block_sidesets]
type = RenameBoundaryGenerator
input = left_block
old_boundary = '0 1 2 3 4 5'
new_boundary = 'left_bottom left_back left_right left_front left_left left_top'
[]
[left_block_id]
type = SubdomainIDGenerator
input = left_block_sidesets
subdomain_id = 1
[]
[right_block]
type = GeneratedMeshGenerator
dim = 3
nx = 4
ny = 8
nz = 8
xmin = 0.5
xmax = 1
ymin = -0.5
ymax = 0.5
zmin = -0.5
zmax = 0.5
elem_type = HEX27
[]
[right_block_sidesets]
type = RenameBoundaryGenerator
input = right_block
old_boundary = '0 1 2 3 4 5'
# new_boundary = 'right_bottom right_back right_right right_front right_left right_top'
new_boundary = '100 101 102 103 104 105'
[]
[right_block_sidesets_rename]
type = RenameBoundaryGenerator
input = right_block_sidesets
old_boundary = '100 101 102 103 104 105'
new_boundary = 'right_bottom right_back right_right right_front right_left right_top'
[]
[right_block_id]
type = SubdomainIDGenerator
input = right_block_sidesets_rename
subdomain_id = 2
[]
[combined_mesh]
type = MeshCollectionGenerator
inputs = 'left_block_id right_block_id'
[]
[left_lower]
type = LowerDBlockFromSidesetGenerator
input = combined_mesh
sidesets = 'left_right'
new_block_id = '10001'
new_block_name = 'secondary_lower'
[]
[right_lower]
type = LowerDBlockFromSidesetGenerator
input = left_lower
sidesets = 'right_left'
new_block_id = '10000'
new_block_name = 'primary_lower'
[]
[]
[Functions]
[temp]
type = PiecewiseLinear
x = '0 1'
y = '100 200'
[]
[]
[Variables]
[temp]
initial_condition = 500
[]
[lm]
order = SECOND
family = LAGRANGE
block = 'secondary_lower'
[]
[]
[AuxVariables]
[power_density]
block = 1
initial_condition = 50e3
[]
[]
[Kernels]
[heat_conduction]
type = HeatConduction
variable = temp
block = '1 2'
[]
[heat_source]
type = CoupledForce
variable = temp
block = '1'
v = power_density
[]
[]
[Materials]
[heat1]
type = HeatConductionMaterial
block = '1 2'
specific_heat = 1.0
thermal_conductivity = 34.6
[]
[]
[UserObjects]
[radiation]
type = GapFluxModelRadiation
temperature = temp
boundary = 'left_right'
primary_emissivity = 0.0
secondary_emissivity = 0.0
[]
[conduction]
type = GapFluxModelConduction
temperature = temp
boundary = 'left_right'
gap_conductivity = 5.0
[]
[]
[Constraints]
[ced]
type = ModularGapConductanceConstraint
variable = lm
secondary_variable = temp
primary_boundary = 'right_left'
primary_subdomain = 'primary_lower'
secondary_boundary = 'left_right'
secondary_subdomain = 'secondary_lower'
gap_flux_models = 'radiation conduction'
gap_geometry_type = PLATE
[]
[]
[BCs]
[RPV_out_BC] # k \nabla T = h (T- T_inf) at RPV outer boundary
type = ConvectiveFluxFunction # (Robin BC)
variable = temp
boundary = 'right_right' # outer RPV
coefficient = ${outer_htc}
T_infinity = ${outer_Tinf}
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
dt = 1
dtmin = 0.01
end_time = 1
nl_rel_tol = 1e-12
nl_abs_tol = 1e-8
[]
[Outputs]
exodus = true
csv = true
[Console]
type = Console
[]
[]
[Postprocessors]
[temp_left]
type = SideAverageValue
boundary = 'left_right'
variable = temp
[]
[temp_right]
type = SideAverageValue
boundary = 'right_left'
variable = temp
[]
[flux_left]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 'left_right'
diffusivity = thermal_conductivity
[]
[flux_right]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 'right_left'
diffusivity = thermal_conductivity
[]
[ptot]
type = ElementIntegralVariablePostprocessor
variable = power_density
block = 1
[]
[convective_out]
type = ConvectiveHeatTransferSideIntegral
T_solid = temp
boundary = 'right_right' # outer RVP
T_fluid = ${outer_Tinf}
htc = ${outer_htc}
[]
[heat_balance] # should be equal to 0 upon convergence
type = ParsedPostprocessor
expression = '(convective_out - ptot) / ptot'
pp_names = 'convective_out ptot'
[]
[]
[VectorPostprocessors]
[NodalTemperature]
type = NodalValueSampler
sort_by = id
boundary = 'left_right right_left'
variable = temp
[]
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_htonly/planar_xy.i)
# 1-D Gap Heat Transfer Test without mechanics
#
# This test exercises 1-D gap heat transfer for a constant conductivity gap.
#
# The mesh consists of two element blocks in the x-y plane. Each element block
# is a square. They sit next to one another with a unit between them.
#
# The conductivity of both blocks is set very large to achieve a uniform temperature
# across each block. The temperature of the far bottom boundary
# is ramped from 100 to 200 over one time unit. The temperature of the far top
# boundary is held fixed at 100.
#
# A simple analytical solution is possible for the heat flux between the blocks:
#
# Flux = (T_left - T_right) * (gapK/gap_width)
#
# The gap conductivity is specified as 1, thus
#
# gapK(Tavg) = 1.0*Tavg
#
# The heat flux across the gap at time = 1 is then:
#
# Flux = 100 * (1.0/1.0) = 100
#
# For comparison, see results from the flux post processors. These results
# are the same as for the unit 1-D gap heat transfer between two unit cubes.
[Mesh]
file = simple_2D.e
[]
[Functions]
[./temp]
type = PiecewiseLinear
x = '0 1 2'
y = '100 200 200'
[../]
[]
[ThermalContact]
[./thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 3
secondary = 2
emissivity_primary = 0
emissivity_secondary = 0
[../]
[]
[Variables]
[./temp]
order = FIRST
family = LAGRANGE
initial_condition = 100
[../]
[]
[AuxVariables]
[./gap_cond]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./heat]
type = HeatConduction
variable = temp
[../]
[]
[BCs]
[./temp_far_bottom]
type = FunctionDirichletBC
boundary = 1
variable = temp
function = temp
[../]
[./temp_far_top]
type = DirichletBC
boundary = 4
variable = temp
value = 100
[../]
[]
[AuxKernels]
[./conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 2
[../]
[]
[Materials]
[./heat1]
type = HeatConductionMaterial
block = '1 2'
specific_heat = 1.0
thermal_conductivity = 100000000.0
[../]
[./density]
type = GenericConstantMaterial
block = '1 2'
prop_names = 'density'
prop_values = '1.0'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
nl_rel_tol = 1e-14
l_tol = 1e-3
l_max_its = 100
dt = 1e-1
end_time = 1.0
[]
[Postprocessors]
[./temp_bottom]
type = SideAverageValue
boundary = 2
variable = temp
execute_on = 'initial timestep_end'
[../]
[./temp_top]
type = SideAverageValue
boundary = 3
variable = temp
execute_on = 'initial timestep_end'
[../]
[./flux_bottom]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 2
diffusivity = thermal_conductivity
execute_on = 'initial timestep_end'
[../]
[./flux_top]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 3
diffusivity = thermal_conductivity
execute_on = 'initial timestep_end'
[../]
[]
[Outputs]
exodus = true
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_htonly/cyl2D_xz.i)
#
# 2D Cylindrical Gap Heat Transfer Test.
#
# This test exercises 2D gap heat transfer for a constant conductivity gap.
#
# The mesh consists of an inner solid cylinder of radius = 1 unit, and outer
# hollow cylinder with an inner radius of 2 in the x-z plane. In other words,
# the gap between them is 1 radial unit in length.
#
# The calculated results are the same as for the cyl2D.i case in the x-y plane.
[GlobalParams]
order = SECOND
family = LAGRANGE
[]
[Mesh]
[file]
type = FileMeshGenerator
file = cyl2D.e
[]
[./rotate]
type = TransformGenerator
transform = ROTATE
vector_value = '0 90 0'
input = file
[../]
[]
[Functions]
[./temp]
type = PiecewiseLinear
x = '0 1'
y = '100 200'
[../]
[]
[Variables]
[./temp]
initial_condition = 100
[../]
[]
[AuxVariables]
[./gap_conductance]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./heat_conduction]
type = HeatConduction
variable = temp
[../]
[]
[AuxKernels]
[./gap_cond]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductance
boundary = 2
[../]
[]
[Materials]
[./heat1]
type = HeatConductionMaterial
block = '1 2'
specific_heat = 1.0
thermal_conductivity = 1000000.0
[../]
[]
[ThermalContact]
[./thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 3
secondary = 2
emissivity_primary = 0
emissivity_secondary = 0
gap_conductivity = 1
quadrature = true
gap_geometry_type = CYLINDER
cylinder_axis_point_1 = '0 0 0'
cylinder_axis_point_2 = '0 1 0'
[../]
[]
[BCs]
[./mid]
type = FunctionDirichletBC
boundary = 1
variable = temp
function = temp
[../]
[./temp_far_right]
type = DirichletBC
boundary = 4
variable = temp
value = 100
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
dt = 1
dtmin = 0.01
end_time = 1
nl_rel_tol = 1e-12
nl_abs_tol = 1e-7
[./Quadrature]
order = fifth
side_order = seventh
[../]
[]
[Outputs]
exodus = true
[]
[Postprocessors]
[./temp_left]
type = SideAverageValue
boundary = 2
variable = temp
[../]
[./temp_right]
type = SideAverageValue
boundary = 3
variable = temp
[../]
[./flux_left]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 2
diffusivity = thermal_conductivity
[../]
[./flux_right]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 3
diffusivity = thermal_conductivity
[../]
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_mortar/gap_heat_transfer_sphere3D.i)
sphere_outer_htc = 10 # W/m^2/K
sphere_outer_Tinf = 300 # K
[GlobalParams]
order = SECOND
family = LAGRANGE
[]
[Mesh]
file = sphere3D.e
[]
[Functions]
[temp]
type = PiecewiseLinear
x = '0 1'
y = '100 200'
[]
[]
[Variables]
[temp]
initial_condition = 500
[]
[]
[AuxVariables]
[gap_conductance]
order = CONSTANT
family = MONOMIAL
[]
[power_density]
block = 'fuel'
initial_condition = 50e3
[]
[]
[Kernels]
[heat_conduction]
type = HeatConduction
variable = temp
[]
[heat_source]
type = CoupledForce
variable = temp
block = 'fuel'
v = power_density
[]
[]
[AuxKernels]
[gap_cond]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductance
boundary = 2
[]
[]
[Materials]
[heat1]
type = HeatConductionMaterial
block = '1 2'
specific_heat = 1.0
thermal_conductivity = 34.6
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 3
secondary = 2
emissivity_primary = 0
emissivity_secondary = 0
gap_conductivity = 5
gap_geometry_type = SPHERE
sphere_origin = '0 0 0'
[]
[]
[BCs]
[RPV_out_BC] # k \nabla T = h (T- T_inf) at RPV outer boundary
type = ConvectiveFluxFunction # (Robin BC)
variable = temp
boundary = '4' # outer RPV
coefficient = ${sphere_outer_htc}
T_infinity = ${sphere_outer_Tinf}
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
dt = 1
dtmin = 0.01
end_time = 1
nl_rel_tol = 1e-12
nl_abs_tol = 1e-7
[Quadrature]
order = fifth
side_order = seventh
[]
[]
[Outputs]
exodus = true
csv = true
[Console]
type = Console
[]
[]
[Postprocessors]
[temp_left]
type = SideAverageValue
boundary = 2
variable = temp
[]
[temp_right]
type = SideAverageValue
boundary = 3
variable = temp
[]
[flux_left]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 2
diffusivity = thermal_conductivity
[]
[flux_right]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 3
diffusivity = thermal_conductivity
[]
[ptot]
type = ElementIntegralVariablePostprocessor
variable = power_density
block = 'fuel'
[]
[sphere_convective_out]
type = ConvectiveHeatTransferSideIntegral
T_solid = temp
boundary = '4' # outer RVP
T_fluid = ${sphere_outer_Tinf}
htc = ${sphere_outer_htc}
[]
[heat_balance] # should be equal to 0 upon convergence
type = ParsedPostprocessor
expression = '(sphere_convective_out - ptot) / ptot'
pp_names = 'sphere_convective_out ptot'
[]
[]
[VectorPostprocessors]
[NodalTemperature]
type = NodalValueSampler
sort_by = id
boundary = '2 3'
variable = temp
[]
[]
(modules/combined/test/tests/gap_heat_transfer_mortar/small-2d-rz/small.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD4
order = FIRST
name = 'small'
[Mesh]
patch_size = 80
patch_update_strategy = auto
[plank]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 0.6
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[]
[plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[]
[block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.61
xmax = 1.21
ymin = 7.7
ymax = 8.5
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[]
[block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[]
[combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[]
[block_rename]
type = RenameBlockGenerator
input = combined
old_block = '1 2'
new_block = 'plank block'
[]
[secondary]
input = block_rename
type = LowerDBlockFromSidesetGenerator
sidesets = 'block_left'
new_block_id = '30'
new_block_name = 'frictionless_secondary_subdomain'
[]
[primary]
input = secondary
type = LowerDBlockFromSidesetGenerator
sidesets = 'plank_right'
new_block_id = '20'
new_block_name = 'frictionless_primary_subdomain'
[]
[]
[Problem]
coord_type = RZ
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[disp_x]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[]
[disp_y]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[]
[temp]
order = ${order}
block = 'plank block'
scaling = 1e-1
[]
[thermal_lm]
order = ${order}
block = 'frictionless_secondary_subdomain'
scaling = 1e-7
[]
[frictionless_normal_lm]
order = ${order}
block = 'frictionless_secondary_subdomain'
use_dual = true
[]
[]
[Modules/TensorMechanics/Master]
[action]
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank block'
use_automatic_differentiation = true
[]
[]
[Kernels]
[hc]
type = ADHeatConduction
variable = temp
use_displaced_mesh = true
block = 'plank block'
[]
[]
[UserObjects]
[weighted_gap_uo]
type = LMWeightedGapUserObject
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
lm_variable = frictionless_normal_lm
disp_x = disp_x
disp_y = disp_y
[]
[]
[Constraints]
[weighted_gap_lm]
type = ComputeWeightedGapLMMechanicalContact
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
variable = frictionless_normal_lm
disp_x = disp_x
disp_y = disp_y
use_displaced_mesh = true
weighted_gap_uo = weighted_gap_uo
[]
[normal_x]
type = NormalMortarMechanicalContact
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
variable = frictionless_normal_lm
secondary_variable = disp_x
component = x
use_displaced_mesh = true
compute_lm_residuals = false
weighted_gap_uo = weighted_gap_uo
[]
[normal_y]
type = NormalMortarMechanicalContact
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
variable = frictionless_normal_lm
secondary_variable = disp_y
component = y
use_displaced_mesh = true
compute_lm_residuals = false
weighted_gap_uo = weighted_gap_uo
[]
[thermal_contact]
type = GapConductanceConstraint
variable = thermal_lm
secondary_variable = temp
k = 1
use_displaced_mesh = true
primary_boundary = plank_right
primary_subdomain = frictionless_primary_subdomain
secondary_boundary = block_left
secondary_subdomain = frictionless_secondary_subdomain
displacements = 'disp_x disp_y'
[]
[]
[BCs]
[left_temp]
type = DirichletBC
variable = temp
boundary = 'plank_left'
value = 400
[]
[right_temp]
type = DirichletBC
variable = temp
boundary = 'block_right'
value = 300
[]
[left_x]
type = DirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
[]
[left_y]
type = DirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
[]
[right_x]
type = ADFunctionDirichletBC
variable = disp_x
boundary = block_right
function = '-0.04*sin(4*(t+1.5))+0.02'
preset = false
[]
[right_y]
type = ADFunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
preset = false
[]
[]
[Materials]
[plank]
type = ADComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[]
[block]
type = ADComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[]
[stress]
type = ADComputeLinearElasticStress
block = 'plank block'
[]
[heat_plank]
type = ADHeatConductionMaterial
block = plank
thermal_conductivity = 2
specific_heat = 1
[]
[heat_block]
type = ADHeatConductionMaterial
block = block
thermal_conductivity = 1
specific_heat = 1
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -snes_max_it'
petsc_options_value = 'lu NONZERO 1e-15 20'
end_time = 13.5
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'none'
[]
[Postprocessors]
[nl_its]
type = NumNonlinearIterations
[]
[total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[]
[l_its]
type = NumLinearIterations
[]
[total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[]
[contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[]
[avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[]
[avg_temp]
type = ElementAverageValue
variable = temp
block = 'block'
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[]
[avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[]
[max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[]
[min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[]
[]
[Outputs]
file_base = ${name}
[comp]
type = CSV
show = 'contact avg_temp'
[]
[out]
type = CSV
file_base = '${name}_out'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/heat_transfer/test/tests/heat_conduction/2d_quadrature_gap_heat_transfer/gap_conductivity_property.i)
[Mesh]
file = perfect.e
[]
[Variables]
[./temp]
[../]
[]
[AuxVariables]
[./gap_conductivity]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./hc]
type = HeatConduction
variable = temp
[../]
[]
[AuxKernels]
[./gap_conductivity]
type = MaterialRealAux
boundary = leftright
property = gap_conductivity
variable = gap_conductivity
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = temp
boundary = leftleft
value = 300
[../]
[./right]
type = DirichletBC
variable = temp
boundary = rightright
value = 400
[../]
[]
[ThermalContact]
[./left_to_right]
secondary = leftright
quadrature = true
primary = rightleft
emissivity_primary = 0
emissivity_secondary = 0
variable = temp
type = GapHeatTransfer
gap_conductivity = 3.0
[../]
[]
[Materials]
[./hcm]
type = HeatConductionMaterial
block = 'left right'
specific_heat = 1
thermal_conductivity = 1
[../]
[]
[Executioner]
type = Steady
solve_type = 'PJFNK'
[]
[Outputs]
exodus = true
[]
(modules/combined/test/tests/heat_convection/heat_convection_rz_test.i)
# Test cases for convective boundary conditions. TKLarson, 11/01/11, rev. 0.
# Input file for htc_2dtest1
# TKLarson
# 11/01/11
# Revision 0
#
# Goals of this test are:
# 1) show that expected results ensue from application of convective boundary conditions
# Convective boundary condition:
# q = h*A*(Tw - Tf)
# where
# q - heat transfer rate (w)
# h - heat transfer coefficient (w/m^2-K)
# A - surface area (m^2)
# Tw - surface temperature (K)
# Tf - fluid temperature adjacent to the surface (K)
# The heat transfer coefficient (h) is input as a variable called 'rate'
# Tf is a two valued function specified by 'initial' and 'final' along with a variable
# called 'duration,' the length of time in seconds that it takes initial to linearly ramp
# to 'final.'
# The mesh for this test case is based on an ASTM standard for the so-called Brazillian Cylinder test
# (ASTM International, Standard Test Method for Splitting Tensile Strength of Cylindrical Concrete
# Specimens, C 496/C 496M-04, 2004) (because I already had a version of the model). While the
# Brazillian Cylinder test is for dynamic tensile testing of concrete, the model works for the present
# purposes. The model is 2-d RZ coordinates.
#
# Brazillian Cylinder sample dimensions:
# L = 20.3 cm, 0.203 m, (8 in)
# r = 5.08 cm, 0.0508 m, (2 in)
# Material properties are:
# density = 2405.28 km/m^3
# specific heat = 826.4 J/kg-K
# thermal conductivity 1.937 w/m-K
# alpha (thermal conductivity/(density*specific heat) is then 9.74e-7 m^2/s
#
# Initial cylinder temperature is room temperature 294.26 K (70 F)
# The initial fluid temperature is room temperature. We will ramp it to 477.6 K (400 F) in 10 minutes.
# We will use a natural convection h (284 w/m^2-K (50 BTU/hr-ft^2-F)) on all faces of the cylinder.
# This is akin to putting the cylinder in an oven (nonconvection type) and turning the oven on.
# What we expect for this problem:
# 1) Use of h = 284 should cause the cylinder to slowly warm up
# 2) The fluid temperature should rise from initial (294 K) to final (477 K) in 600 s.
# 3) 1) and 2) should cause the cylinder to become soaked at 477.6 K after sufficient time(i.e. ~ 1/2 hr).
# This is a simple thermal soak problem.
[Problem]
coord_type = RZ
[]
[Mesh] # Mesh Start
# 10cm x 20cm cylinder not so detailed mesh, 2 radial, 6 axial nodes
# Only one block (Block 1), all concrete
# Sideset 1 - top of cylinder, Sideset 2 - length of cylinder, Sideset 3 - bottom of cylinder
file = heat_convection_rz_mesh.e
[] # Mesh END
[Variables] # Variables Start
[./temp]
order = FIRST
family = LAGRANGE
initial_condition = 294.26 # Initial cylinder temperature
[../]
[] # Variables END
[Kernels] # Kernels Start
[./heat]
type = HeatConduction
variable = temp
[../]
[./heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[../]
[] # Kernels END
[BCs] # Boundary Conditions Start
# Heat transfer coefficient on outer cylinder radius and ends
[./convective_clad_surface] # Convective Start
type = ConvectiveFluxBC # Convective flux, e.g. q'' = h*(Tw - Tf)
boundary = '1 2 3' # BC applied on top, along length, and bottom
variable = temp
rate = 284. # (w/m^2-K)[50 BTU/hr/-ft^2-F]
# the above h is a reasonable natural convection value
initial = 294.26 # initial ambient (lab or oven) temperature (K)
final = 477.6 # final ambient (lab or oven) temperature (K)
duration = 600. # length of time in seconds that it takes the ambient
# temperature to ramp from initial to final
[../] # Convective End
[] # BCs END
[Materials] # Materials Start
[./thermal]
type = HeatConductionMaterial
block = 1
specific_heat = 826.4
# thermal_conductivity = 1.937 # this makes alpha 9.74e-7 m^2/s
# thermal_conductivity = 19.37 # this makes alpha 9.74e-6 m^2/s
# thermal conductivity arbitrarily increased by a decade to
# make the cylinder thermally soak faster (only for the purposes
# of this test problem
thermal_conductivity = 193.7 # this makes alpha 9.74e-5 m^2/s
# thermal conductivity arbitrarily increased by 2 decade to
# make the cylinder thermally soak faster (only for the purposes
# of this test problem
[../]
[./density]
type = Density
block = 1
density = 2405.28
[../]
[] # Materials END
[Executioner] # Executioner Start
type = Transient
# type = Steady
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew '
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type'
petsc_options_value = '70 hypre boomeramg'
l_max_its = 60
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
l_tol = 1e-5
start_time = 0.0
dt = 60.
num_steps = 20 # Total run time 1200 s
[] # Executioner END
[Outputs] # Output Start
# Output Start
file_base = out_rz
exodus = true
[] # Output END
# # Input file END
(modules/heat_transfer/test/tests/gap_heat_transfer_mortar_action/modular_gap_heat_transfer_mortar_displaced_radiation_conduction_action_existing_UOs.i)
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 2blk-gap.e
[]
allow_renumbering = false
[]
[Problem]
kernel_coverage_check = false
material_coverage_check = false
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
block = '1 2'
[]
[disp_x]
order = FIRST
family = LAGRANGE
block = '1 2'
[]
[disp_y]
order = FIRST
family = LAGRANGE
block = '1 2'
[]
[]
[Materials]
[left]
type = ADHeatConductionMaterial
block = 1
thermal_conductivity = 0.01
specific_heat = 1
[]
[right]
type = ADHeatConductionMaterial
block = 2
thermal_conductivity = 0.005
specific_heat = 1
[]
[]
[Kernels]
[hc_displaced_block]
type = ADHeatConduction
variable = temp
use_displaced_mesh = true
block = '1'
[]
[hc_undisplaced_block]
type = ADHeatConduction
variable = temp
use_displaced_mesh = false
block = '2'
[]
[disp_x]
type = Diffusion
variable = disp_x
block = '1 2'
[]
[disp_y]
type = Diffusion
variable = disp_y
block = '1 2'
[]
[]
[MortarGapHeatTransfer]
[mortar_heat_transfer]
temperature = temp
boundary = 100
use_displaced_mesh = true
primary_boundary = 100
secondary_boundary = 101
user_created_gap_flux_models = 'radiation_uo conduction_uo'
[]
[]
[UserObjects]
[radiation_uo]
type = GapFluxModelRadiation
temperature = temp
boundary = 100
primary_emissivity = 1.0
secondary_emissivity = 1.0
use_displaced_mesh = true
[]
[conduction_uo]
type = GapFluxModelConduction
temperature = temp
boundary = 100
gap_conductivity = 0.02
use_displaced_mesh = true
[]
[]
[BCs]
[left]
type = DirichletBC
variable = temp
boundary = 'left'
value = 100
[]
[right]
type = DirichletBC
variable = temp
boundary = 'right'
value = 0
[]
[left_disp_x]
type = DirichletBC
preset = false
variable = disp_x
boundary = 'left'
value = .1
[]
[right_disp_x]
type = DirichletBC
preset = false
variable = disp_x
boundary = 'right'
value = 0
[]
[bottom_disp_y]
type = DirichletBC
preset = false
variable = disp_y
boundary = 'bottom'
value = 0
[]
[]
[Preconditioning]
[fmp]
type = SMP
full = true
solve_type = 'NEWTON'
[]
[]
[Executioner]
type = Steady
nl_rel_tol = 1e-11
nl_abs_tol = 1.0e-10
[]
[VectorPostprocessors]
[NodalTemperature]
type = NodalValueSampler
sort_by = id
boundary = '100 101'
variable = 'temp'
[]
[]
[Outputs]
csv = true
[exodus]
type = Exodus
show = 'temp'
[]
[]
(modules/combined/test/tests/restart-transient-from-ss-with-stateful/parent_ss.i)
[Mesh]
[gen]
type = GeneratedMeshGenerator
nx = 8
ny = 8
xmin = -82.627
xmax = 82.627
ymin = -82.627
ymax = 82.627
dim = 2
[]
[]
[Variables]
[./temp]
order = FIRST
family = LAGRANGE
initial_condition = 500
[../]
[]
[AuxVariables]
[./power]
order = FIRST
family = L2_LAGRANGE
initial_condition = 350
[../]
[]
[Kernels]
[./heat]
type = HeatConduction
variable = temp
[../]
[./heat_source_fuel]
type = CoupledForce
variable = temp
v = 'power'
[../]
[]
[BCs]
[./all]
type = DirichletBC
variable = temp
boundary = 'bottom top left right'
value = 300
[../]
[]
[Materials]
[./heat_material]
type = HeatConductionMaterial
temp = temp
specific_heat = 1000
thermal_conductivity = 500
[../]
[./density]
type = Density
density = 2000
[../]
[]
[Postprocessors]
[./avg_temp]
type = ElementAverageValue
variable = temp
execute_on = 'initial timestep_end'
[../]
[./avg_power]
type = ElementAverageValue
variable = power
[../]
[]
[Executioner]
type = Steady
petsc_options_iname = '-pc_type -pc_hypre_type -ksp_gmres_restart'
petsc_options_value = 'hypre boomeramg 300'
line_search = 'none'
l_tol = 1e-05
nl_rel_tol = 1e-12
nl_abs_tol = 1e-9
l_max_its = 50
nl_max_its = 25
[]
[Outputs]
perf_graph = true
color = true
exodus = true
[checkpoint]
type = Checkpoint
num_files = 2
additional_execute_on = 'FINAL' # seems to be a necessary to avoid a Checkpoint bug
[]
[]
[MultiApps]
[./bison]
type = FullSolveMultiApp
positions = '0 0 0'
input_files = 'sub_ss.i'
execute_on = 'timestep_end'
[../]
[]
[Transfers]
[./to_bison_mechanics]
type = MultiAppProjectionTransfer
to_multi_app = bison
variable = temp
source_variable = temp
execute_on = 'timestep_end'
[../]
[]
(modules/heat_transfer/test/tests/heat_conduction/2d_quadrature_gap_heat_transfer/perfectQ8.i)
[GlobalParams]
order = SECOND
[]
[Mesh]
file = perfectQ8.e
[]
[Variables]
[./temp]
[../]
[]
[Kernels]
[./hc]
type = HeatConduction
variable = temp
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = temp
boundary = leftleft
value = 300
[../]
[./right]
type = DirichletBC
variable = temp
boundary = rightright
value = 400
[../]
[]
[ThermalContact]
[./left_to_right]
secondary = leftright
quadrature = true
primary = rightleft
emissivity_primary = 0
emissivity_secondary = 0
variable = temp
type = GapHeatTransfer
[../]
[]
[Materials]
[./hcm]
type = HeatConductionMaterial
block = 'left right'
specific_heat = 1
thermal_conductivity = 1
[../]
[]
[Executioner]
type = Steady
solve_type = 'PJFNK'
[./Quadrature]
order = THIRD
[../]
[]
[Outputs]
exodus = true
[]
(modules/combined/test/tests/elastic_thermal_patch/elastic_thermal_patch_rz.i)
#
# This problem is modified from the Abaqus verification manual:
# "1.5.4 Patch test for axisymmetric elements"
# The original stress solution is given as:
# xx = yy = zz = 2000
# xy = 400
#
# Here, E=1e6 and nu=0.25.
# However, with a +100 degree change in temperature and a coefficient
# of thermal expansion of 1e-6, the solution becomes:
# xx = yy = zz = 1800
# xy = 400
# since
# E*(1-nu)/(1+nu)/(1-2*nu)*(1+2*nu/(1-nu))*(1e-3-1e-4) = 1800
#
# Also,
#
# dSrr dSrz Srr-Stt
# ---- + ---- + ------- + br = 0
# dr dz r
#
# and
#
# dSrz Srz dSzz
# ---- + --- + ---- + bz = 0
# dr r dz
#
# where
# Srr = stress in rr
# Szz = stress in zz
# Stt = stress in theta-theta
# Srz = stress in rz
# br = body force in r direction
# bz = body force in z direction
#
[GlobalParams]
displacements = 'disp_x disp_y'
temperature = temp
volumetric_locking_correction = true
[]
[Problem]
coord_type = RZ
[]
[Mesh]
file = elastic_thermal_patch_rz_test.e
[]
[Functions]
[./ur]
type = ParsedFunction
expression = '1e-3*x'
[../]
[./uz]
type = ParsedFunction
expression = '1e-3*(x+y)'
[../]
[./body]
type = ParsedFunction
expression = '-400/x'
[../]
[./temp]
type = ParsedFunction
expression = '117.56+100*t'
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./temp]
initial_condition = 117.56
[../]
[]
[Modules/TensorMechanics/Master/All]
add_variables = true
strain = SMALL
incremental = true
eigenstrain_names = eigenstrain
generate_output = 'stress_xx stress_yy stress_zz stress_xy stress_yz stress_zx'
[]
[Kernels]
[./body]
type = BodyForce
variable = disp_y
value = 1
function = body
[../]
[./heat]
type = HeatConduction
variable = temp
[../]
[]
[BCs]
[./ur]
type = FunctionDirichletBC
variable = disp_x
boundary = 10
function = ur
[../]
[./uz]
type = FunctionDirichletBC
variable = disp_y
boundary = 10
function = uz
[../]
[./temp]
type = FunctionDirichletBC
variable = temp
boundary = 10
function = temp
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
lambda = 400000.0
poissons_ratio = 0.25
[../]
[./thermal_strain]
type = ComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 1e-6
stress_free_temperature = 117.56
eigenstrain_name = eigenstrain
[../]
[./stress]
type = ComputeStrainIncrementBasedStress
[../]
[./heat]
type = HeatConductionMaterial
specific_heat = 0.116
thermal_conductivity = 4.85e-4
[../]
[./density]
type = Density
density = 0.283
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
nl_abs_tol = 1e-11
nl_rel_tol = 1e-12
l_max_its = 20
start_time = 0.0
dt = 1.0
num_steps = 1
end_time = 1.0
[]
[Outputs]
exodus = true
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_mortar/gap_heat_transfer_radiation_test.i)
#
# This test replicates the legacy heat transfter test
# gap_heat_transfer_radiation/gap_heat_transfer_radiation_test.i
# The flux post processors give 3.753945e+01
#
[Mesh]
[file]
type = FileMeshGenerator
file = gap_heat_transfer_radiation_test.e
[]
[secondary]
type = LowerDBlockFromSidesetGenerator
sidesets = '2'
new_block_id = '200'
new_block_name = 'secondary_lower'
input = file
[]
[primary]
type = LowerDBlockFromSidesetGenerator
sidesets = '3'
new_block_id = '300'
new_block_name = 'primary_lower'
input = secondary
[]
[]
[Functions]
[temp]
type = PiecewiseLinear
x = '0 1'
y = '200 200'
[]
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
initial_condition = 100
scaling = 1e-8
[]
[lm]
order = FIRST
family = LAGRANGE
block = 'secondary_lower'
scaling = 1e-1
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
block = '1 2'
[]
[]
[BCs]
[temp_far_left]
type = FunctionDirichletBC
boundary = 1
variable = temp
function = temp
[]
[temp_far_right]
type = DirichletBC
boundary = 4
variable = temp
value = 100
[]
[]
[UserObjects]
[radiative]
type = GapFluxModelRadiative
secondary_emissivity = 0.5
primary_emissivity = 0.5
temperature = temp
boundary = 3
[]
[simple]
type = GapFluxModelSimple
k = 0.09187557
temperature = temp
boundary = 3
[]
[]
[Constraints]
[ced]
type = ModularGapConductanceConstraint
variable = lm
secondary_variable = temp
primary_boundary = 3
primary_subdomain = 300
secondary_boundary = 2
secondary_subdomain = 200
gap_flux_models = 'simple radiative'
[]
[]
[Materials]
[heat1]
type = HeatConductionMaterial
block = '1 2'
specific_heat = 1.0
thermal_conductivity = 10000000.0
[]
[density]
type = GenericConstantMaterial
block = '1 2'
prop_names = 'density'
prop_values = '1.0'
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
end_time = 1.0
[]
[Postprocessors]
[temp_left]
type = SideAverageValue
boundary = 2
variable = temp
execute_on = 'initial timestep_end'
[]
[temp_right]
type = SideAverageValue
boundary = 3
variable = temp
execute_on = 'initial timestep_end'
[]
[flux_left]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 2
diffusivity = thermal_conductivity
[]
[flux_right]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 3
diffusivity = thermal_conductivity
[]
[]
[Outputs]
exodus = true
[]
(modules/combined/test/tests/heat_convection/heat_convection_3d_test.i)
# Test cases for convective boundary conditions.
# Input file for htc_3dtest1
# TKLarson
# 11/02/11
# Revision 0
#
# Goals of this test are:
# 1) show that the 'fluid' temperature for convective boundary condition
# is behaving as expected/desired
# 2) show that expected results ensue from application of convective boundary conditions
# Convective boundary condition:
# q = h*A*(Tw - Tf)
# where
# q - heat transfer rate (w)
# h - heat transfer coefficient (w/m^2-K)
# A - surface area (m^2)
# Tw - surface temperature (K)
# Tf - fluid temperature adjacent to the surface (K)
# The heat transfer coefficient (h) is input as a variable called 'rate'
# Tf is a two valued function specified by 'initial' and 'final' along with a variable
# called 'duration,' the length of time in seconds that it takes initial to linearly ramp
# to 'final.'
# The mesh for this test case is concocted from an ASTM standard for the so-called Brazillian Cylinder test
# (ASTM International, Standard Test Method for Splitting Tensile Strength of Cylindrical Concrete
# Specimens, C 496/C 496M-04, 2004). I turned a cylinder model into a rectangular parallelpiped,
# because I already had the cylinder model.
# The model is 3-d xyz coordinates.
#
# Brazillian Parallelpiped sample dimensions:
# z = 10.3 cm, 0.103 m, (4 in)
# y = 5.08 cm, 0.0508 m, (2 in)
# x = 5.08 cm, 0.0508 m, (2 in)
# Material properties are:
# density = 2405.28 km/m^3
# specific heat = 826.4 J/kg-K
# thermal conductivity 1.937 w/m-K
# alpha (thermal conductivity/(density*specific heat) is then 9.74e-7 m^2/s
#
# Initial parallelpiped temperature is room temperature 294.26 K (70 F)
# The initial fluid temperature is room temperature. We will ramp it to 477.6 K (400 F) in 10 minutes.
# We will use an h representative of natural convection conditions as the boundary condition for all sides
# on the parallelpiped. Akin to putting the object in an oven and turning the oven on.
# This is essentially a thermal soak.
#
# What we expect for this problem:
# 1) Use of h = 284 w/m^2-K (50 BTU/hr-ft^2-F) should cause the parallelpiped to slowly heat up to 477K.
# 2) The fluid temperature should rise from initial (294.26 K) to final (477.6 K) in 600 s.
# 3) 1) and 2) should show the convective BC is working as desired.
#
[Mesh] # Mesh Start
# 5cm x 5cm x 10cm parallelpiped not so detailed mesh, 4 elements each end, 8 elements each long face
# Only one block (Block 1), all concrete
# Sideset definitions:
# 1 - xy plane at z=0,
# 2 - xy plane at z=-0.103,
# 3 - xz plane at y=0,
# 4 - yz plane at x=0,
# 5 - xz plane at y=0.0508,
# 6 - yz plane at x=0.0508
file = heat_convection_3d_mesh.e
#
[] # Mesh END
[Variables] # Variables Start
[./temp]
order = FIRST
family = LAGRANGE
initial_condition = 294.26 # Initial parallelpiped temperature
[../]
[] # Variables END
[Kernels] # Kernels Start
[./heat]
# type = HeatConductionRZ
type = HeatConduction
variable = temp
[../]
[./heat_ie]
# type = HeatConductionTimeDerivativeRZ
type = HeatConductionTimeDerivative
variable = temp
[../]
[] # Kernels END
[BCs] # Boundary Conditions Start
# Heat transfer coefficient on outer parallelpiped radius and ends
[./convective_clad_surface] # Convective Start
# type = ConvectiveFluxRZ # Convective flux, e.g. q'' = h*(Tw - Tf)
type = ConvectiveFluxBC # Convective flux, e.g. q'' = h*(Tw - Tf)
boundary = '1 2 3 4 5 6' # BC applied on top, along length, and bottom
variable = temp
rate = 284. # convective heat transfer coefficient (w/m^2-K)[50 BTU/hr-ft^2-F]
initial = 294.26 # initial ambient (lab or oven) temperature (K)
final = 477.6 # final ambient (lab or oven) temperature (K)
duration = 600. # length of time in seconds that it takes the ambient
# temperature to ramp from initial to final
[../] # Convective End
[] # BCs END
[Materials] # Materials Start
[./thermal]
type = HeatConductionMaterial
block = 1
specific_heat = 826.4
#thermal_conductivity = 1.937 # this makes alpha 9.74e-7 m^2/s
thermal_conductivity = 193.7 # this makes alpha 9.74e-5 m^2/s
# above conductivity arbitrarily increased by 2 decades to make the
# object soak faster for the present purposes
[../]
[./density]
type = Density
block = 1
density = 2405.28
[../]
[] # Materials END
[Executioner] # Executioner Start
type = Transient
# type = Steady
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew '
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type'
petsc_options_value = '70 hypre boomeramg'
l_max_its = 60
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
l_tol = 1e-5
start_time = 0.0
dt = 60.
num_steps = 20 # Total run time 1200 s
[] # Executioner END
[Outputs] # Output Start
# Output Start
file_base = out_3d
exodus = true
[] # Output END
# # Input file END
(modules/combined/test/tests/inelastic_strain/creep/creep_nl1.i)
#
# Test for effective strain calculation.
# Boundary conditions from NAFEMS test NL1
#
# This is not a verification test. This is the creep analog of the same test
# in the elas_plas directory. Instead of using the IsotropicPlasticity
# material model this test uses the PowerLawCreep material model.
#
[GlobalParams]
temperature = temp
order = FIRST
family = LAGRANGE
volumetric_locking_correction = true
displacements = 'disp_x disp_y'
[]
[Mesh]
file = one_elem2.e
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./temp]
initial_condition = 600.0
[../]
[]
[AuxVariables]
[./stress_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./stress_xy]
order = CONSTANT
family = MONOMIAL
[../]
[./vonmises]
order = CONSTANT
family = MONOMIAL
[../]
[./pressure]
order = CONSTANT
family = MONOMIAL
[../]
[./elastic_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./elastic_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./elastic_strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./creep_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./creep_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./creep_strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./tot_strain_xx]
order = CONSTANT
family = MONOMIAL
[../]
[./tot_strain_yy]
order = CONSTANT
family = MONOMIAL
[../]
[./tot_strain_zz]
order = CONSTANT
family = MONOMIAL
[../]
[./eff_creep_strain]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./TensorMechanics]
use_displaced_mesh = true
decomposition_method = EigenSolution
[../]
[./heat]
type = HeatConduction
variable = temp
[../]
[./heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[../]
[]
[AuxKernels]
[./stress_xx]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./stress_yy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./stress_zz]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./stress_xy]
type = RankTwoAux
rank_two_tensor = stress
variable = stress_xy
index_i = 0
index_j = 1
execute_on = timestep_end
[../]
[./vonmises]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = vonmises
scalar_type = VonMisesStress
execute_on = timestep_end
[../]
[./pressure]
type = RankTwoScalarAux
rank_two_tensor = stress
variable = pressure
scalar_type = Hydrostatic
execute_on = timestep_end
[../]
[./elastic_strain_xx]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = elastic_strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./elastic_strain_yy]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = elastic_strain_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./elastic_strain_zz]
type = RankTwoAux
rank_two_tensor = elastic_strain
variable = elastic_strain_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./creep_strain_xx]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_xx
index_i = 0
index_j = 0
execute_on = timestep_end
[../]
[./creep_strain_yy]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_yy
index_i = 1
index_j = 1
execute_on = timestep_end
[../]
[./creep_strain_zz]
type = RankTwoAux
rank_two_tensor = creep_strain
variable = creep_strain_zz
index_i = 2
index_j = 2
execute_on = timestep_end
[../]
[./tot_strain_xx]
type = RankTwoAux
rank_two_tensor = total_strain
variable = tot_strain_xx
index_i = 0
index_j = 0
[../]
[./tot_strain_yy]
type = RankTwoAux
rank_two_tensor = total_strain
variable = tot_strain_yy
index_i = 1
index_j = 1
[../]
[./tot_strain_zz]
type = RankTwoAux
rank_two_tensor = total_strain
variable = tot_strain_zz
index_i = 2
index_j = 2
[../]
[./eff_creep_strain]
type = MaterialRealAux
property = effective_creep_strain
variable = eff_creep_strain
[../]
[]
[Functions]
[./appl_dispy]
type = PiecewiseLinear
x = '0 1.0 2.0'
y = '0.0 0.25e-4 0.50e-4'
[../]
[]
[BCs]
[./side_x]
type = DirichletBC
variable = disp_x
boundary = 101
value = 0.0
[../]
[./origin_x]
type = DirichletBC
variable = disp_x
boundary = 103
value = 0.0
[../]
[./bot_y]
type = DirichletBC
variable = disp_y
boundary = 102
value = 0.0
[../]
[./origin_y]
type = DirichletBC
variable = disp_y
boundary = 103
value = 0.0
[../]
[./top_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 1
function = appl_dispy
[../]
[./temp_fix]
type = DirichletBC
variable = temp
boundary = '1 2'
value = 600.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 1
youngs_modulus = 250e9
poissons_ratio = 0.25
[../]
[./strain]
type = ComputePlaneFiniteStrain
block = 1
[../]
[./radial_return_stress]
type = ComputeMultipleInelasticStress
block = 1
inelastic_models = 'powerlawcrp'
[../]
[./powerlawcrp]
type = PowerLawCreepStressUpdate
block = 1
coefficient = 3.125e-14
n_exponent = 5.0
m_exponent = 0.0
activation_energy = 0.0
[../]
[./thermal]
type = HeatConductionMaterial
block = 1
specific_heat = 1.0
thermal_conductivity = 100.
[../]
[./density]
type = Density
block = 1
density = 1.0
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
nl_rel_tol = 1e-10
nl_abs_tol = 1e-12
l_tol = 1e-6
l_max_its = 100
nl_max_its = 20
dt = 1.0
start_time = 0.0
num_steps = 100
end_time = 2.0
[]
[Postprocessors]
[./stress_xx]
type = ElementAverageValue
variable = stress_xx
[../]
[./stress_yy]
type = ElementAverageValue
variable = stress_yy
[../]
[./stress_zz]
type = ElementAverageValue
variable = stress_zz
[../]
[./stress_xy]
type = ElementAverageValue
variable = stress_xy
[../]
[./vonmises]
type = ElementAverageValue
variable = vonmises
[../]
[./pressure]
type = ElementAverageValue
variable = pressure
[../]
[./el_strain_xx]
type = ElementAverageValue
variable = elastic_strain_xx
[../]
[./el_strain_yy]
type = ElementAverageValue
variable = elastic_strain_yy
[../]
[./el_strain_zz]
type = ElementAverageValue
variable = elastic_strain_zz
[../]
[./crp_strain_xx]
type = ElementAverageValue
variable = creep_strain_xx
[../]
[./crp_strain_yy]
type = ElementAverageValue
variable = creep_strain_yy
[../]
[./crp_strain_zz]
type = ElementAverageValue
variable = creep_strain_zz
[../]
[./eff_creep_strain]
type = ElementAverageValue
variable = eff_creep_strain
[../]
[./tot_strain_xx]
type = ElementAverageValue
variable = tot_strain_xx
[../]
[./tot_strain_yy]
type = ElementAverageValue
variable = tot_strain_yy
[../]
[./tot_strain_zz]
type = ElementAverageValue
variable = tot_strain_zz
[../]
[./disp_x1]
type = NodalVariableValue
nodeid = 0
variable = disp_x
[../]
[./disp_x4]
type = NodalVariableValue
nodeid = 3
variable = disp_x
[../]
[./disp_y1]
type = NodalVariableValue
nodeid = 0
variable = disp_y
[../]
[./disp_y4]
type = NodalVariableValue
nodeid = 3
variable = disp_y
[../]
[./_dt]
type = TimestepSize
[../]
[]
[Outputs]
exodus = true
[./console]
type = Console
output_linear = true
[../]
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_mortar/modular_gap_heat_transfer_mortar_displaced_radiation_conduction.i)
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 2blk-gap.e
[]
[secondary]
type = LowerDBlockFromSidesetGenerator
sidesets = '101'
new_block_id = 10001
new_block_name = 'secondary_lower'
input = file
[]
[primary]
type = LowerDBlockFromSidesetGenerator
sidesets = '100'
new_block_id = 10000
new_block_name = 'primary_lower'
input = secondary
[]
allow_renumbering = false
[]
[Problem]
kernel_coverage_check = false
material_coverage_check = false
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
block = '1 2'
[]
[disp_x]
order = FIRST
family = LAGRANGE
block = '1 2'
[]
[disp_y]
order = FIRST
family = LAGRANGE
block = '1 2'
[]
[lm]
order = FIRST
family = LAGRANGE
block = 'secondary_lower'
[]
[]
[Materials]
[left]
type = ADHeatConductionMaterial
block = 1
thermal_conductivity = 0.01
specific_heat = 1
[]
[right]
type = ADHeatConductionMaterial
block = 2
thermal_conductivity = 0.005
specific_heat = 1
[]
[]
[Kernels]
[hc_displaced_block]
type = ADHeatConduction
variable = temp
use_displaced_mesh = true
block = '1'
[]
[hc_undisplaced_block]
type = ADHeatConduction
variable = temp
use_displaced_mesh = false
block = '2'
[]
[disp_x]
type = Diffusion
variable = disp_x
block = '1 2'
[]
[disp_y]
type = Diffusion
variable = disp_y
block = '1 2'
[]
[]
[UserObjects]
[radiation]
type = GapFluxModelRadiation
temperature = temp
boundary = 100
primary_emissivity = 1.0
secondary_emissivity = 1.0
use_displaced_mesh = true
[]
[conduction]
type = GapFluxModelConduction
temperature = temp
boundary = 100
gap_conductivity = 0.02
use_displaced_mesh = true
[]
[]
[Constraints]
[ced]
type = ModularGapConductanceConstraint
variable = lm
secondary_variable = temp
use_displaced_mesh = true
primary_boundary = 100
primary_subdomain = 10000
secondary_boundary = 101
secondary_subdomain = 10001
gap_flux_models = 'radiation conduction'
[]
[]
[BCs]
[left]
type = DirichletBC
variable = temp
boundary = 'left'
value = 100
[]
[right]
type = DirichletBC
variable = temp
boundary = 'right'
value = 0
[]
[left_disp_x]
type = DirichletBC
preset = false
variable = disp_x
boundary = 'left'
value = .1
[]
[right_disp_x]
type = DirichletBC
preset = false
variable = disp_x
boundary = 'right'
value = 0
[]
[bottom_disp_y]
type = DirichletBC
preset = false
variable = disp_y
boundary = 'bottom'
value = 0
[]
[]
[Preconditioning]
[fmp]
type = SMP
full = true
solve_type = 'NEWTON'
[]
[]
[Executioner]
type = Steady
nl_rel_tol = 1e-11
nl_abs_tol = 1.0e-10
[]
[VectorPostprocessors]
[NodalTemperature]
type = NodalValueSampler
sort_by = id
boundary = '100 101'
variable = 'temp'
[]
[]
[Outputs]
exodus = false
csv = true
[]
(modules/heat_transfer/tutorials/introduction/therm_step03.i)
#
# Single block thermal input with time derivative term
# https://mooseframework.inl.gov/modules/heat_transfer/tutorials/introduction/therm_step03.html
#
[Mesh]
[generated]
type = GeneratedMeshGenerator
dim = 2
nx = 10
ny = 10
xmax = 2
ymax = 1
[]
[]
[Variables]
[T]
initial_condition = 300.0
[]
[]
[Kernels]
[heat_conduction]
type = HeatConduction
variable = T
[]
[time_derivative]
type = HeatConductionTimeDerivative
variable = T
[]
[]
[Materials]
[thermal]
type = HeatConductionMaterial
thermal_conductivity = 45.0
specific_heat = 0.5
[]
[density]
type = GenericConstantMaterial
prop_names = 'density'
prop_values = 8000.0
[]
[]
[BCs]
[t_left]
type = DirichletBC
variable = T
value = 300
boundary = 'left'
[]
[t_right]
type = FunctionDirichletBC
variable = T
function = '300+5*t'
boundary = 'right'
[]
[]
[Executioner]
type = Transient
end_time = 5
dt = 1
[]
[VectorPostprocessors]
[t_sampler]
type = LineValueSampler
variable = T
start_point = '0 0.5 0'
end_point = '2 0.5 0'
num_points = 20
sort_by = x
[]
[]
[Outputs]
exodus = true
[csv]
type = CSV
file_base = therm_step03_out
execute_on = final
[]
[]
(modules/combined/test/tests/gap_heat_transfer_mortar/finite-2d-rz/finite_action.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD4
order = FIRST
name = 'finite'
[Mesh]
patch_size = 80
patch_update_strategy = auto
coord_type = RZ
[plank]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 0.6
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[]
[plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[]
[block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.61
xmax = 1.21
ymin = 7.7
ymax = 8.5
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[]
[block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[]
[combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[]
[block_rename]
type = RenameBlockGenerator
input = combined
old_block = '1 2'
new_block = 'plank block'
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[disp_x]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[]
[disp_y]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[]
[temp]
order = ${order}
block = 'plank block'
scaling = 1e-1
[]
[]
[Modules/TensorMechanics/Master]
[action]
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank block'
use_automatic_differentiation = true
strain = FINITE
[]
[]
[Kernels]
[hc]
type = ADHeatConduction
variable = temp
use_displaced_mesh = true
block = 'plank block'
[]
[]
[Contact]
[frictionless]
primary = plank_right
secondary = block_left
formulation = mortar
c_normal = 1e6
[]
[]
[MortarGapHeatTransfer]
[mortar_heat_transfer]
temperature = temp
use_displaced_mesh = true
gap_flux_options = conduction
gap_conductivity = 1
boundary = plank_right
primary_boundary = plank_right
primary_subdomain = frictionless_primary_subdomain
secondary_boundary = block_left
secondary_subdomain = frictionless_secondary_subdomain
thermal_lm_scaling = 1e-7
gap_geometry_type = PLATE
[]
[]
[BCs]
[left_temp]
type = DirichletBC
variable = temp
boundary = 'plank_left'
value = 400
[]
[right_temp]
type = DirichletBC
variable = temp
boundary = 'block_right'
value = 300
[]
[left_x]
type = DirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
[]
[left_y]
type = DirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
[]
[right_x]
type = ADFunctionDirichletBC
variable = disp_x
boundary = block_right
function = '-0.04*sin(4*(t+1.5))+0.02'
preset = false
[]
[right_y]
type = ADFunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
preset = false
[]
[]
[Materials]
[plank]
type = ADComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[]
[block]
type = ADComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[]
[stress]
type = ADComputeFiniteStrainElasticStress
block = 'plank block'
[]
[heat_plank]
type = ADHeatConductionMaterial
block = plank
thermal_conductivity = 2
specific_heat = 1
[]
[heat_block]
type = ADHeatConductionMaterial
block = block
thermal_conductivity = 1
specific_heat = 1
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -snes_max_it'
petsc_options_value = 'lu NONZERO 1e-15 20'
end_time = 13.5
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'none'
[]
[Postprocessors]
[nl_its]
type = NumNonlinearIterations
[]
[total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[]
[l_its]
type = NumLinearIterations
[]
[total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[]
[contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[]
[avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[]
[avg_temp]
type = ElementAverageValue
variable = temp
block = 'block'
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[]
[avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[]
[max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[]
[min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[]
[]
[Outputs]
file_base = ${name}
[comp]
type = CSV
show = 'contact avg_temp'
[]
[out]
type = CSV
file_base = '${name}_out'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_htonly/gap_heat_transfer_htonly_rspherical.i)
#
# 1-D spherical Gap Heat Transfer Test
#
# This test exercises 1-D gap heat transfer for a constant conductivity gap.
#
# The mesh consists of two "blocks" with a mesh biased toward the gap
# between them. Each block is unit length. The gap between them is one
# unit in length.
#
# The conductivity of both blocks is set very large to achieve a uniform temperature
# across each block. The temperature of the far left boundary
# is ramped from 100 to 200 over one time unit, and then held fixed for an additional
# time unit. The temperature of the far right boundary is held fixed at 100.
#
# A simple analytical solution is possible for the heat flux between the blocks, or spheres in the case of RSPHERICAL.:
#
# Flux = (T_left - T_right) * (gapK/(r^2*((1/r1)-(1/r2))))
#
# For gapK = 1 (default value)
#
# The area is taken as the area of the secondary (inner) surface:
#
# Area = 4 * pi * 1 * 1
#
# The integrated heat flux across the gap at time 2 is then:
#
# 4*pi*k*delta_T/((1/r1)-(1/r2))
# 4*pi*1*100/((1/1) - (1/2)) = 2513.3 watts
#
# For comparison, see results from the flux post processors.
#
#
[Problem]
coord_type = RSPHERICAL
[]
[Mesh]
file = gap_heat_transfer_htonly_rspherical.e
construct_side_list_from_node_list = true
[]
[Functions]
[./temp]
type = PiecewiseLinear
x = '0 1 2'
y = '100 200 200'
[../]
[]
[ThermalContact]
[./thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 3
secondary = 2
emissivity_primary = 0
emissivity_secondary = 0
gap_geometry_type = sphere
[../]
[]
[Variables]
[./temp]
order = FIRST
family = LAGRANGE
initial_condition = 100
[../]
[]
[AuxVariables]
[./gap_cond]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./heat]
type = HeatConduction
variable = temp
[../]
[]
[BCs]
[./temp_far_left]
type = FunctionDirichletBC
boundary = 1
variable = temp
function = temp
[../]
[./temp_far_right]
type = DirichletBC
boundary = 4
variable = temp
value = 100
[../]
[]
[AuxKernels]
[./conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 2
[../]
[]
[Materials]
[./heat1]
type = HeatConductionMaterial
block = '1 2'
specific_heat = 1.0
thermal_conductivity = 1e6
[../]
[./density]
type = GenericConstantMaterial
block = '1 2'
prop_names = 'density'
prop_values = '1.0'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
# I don't know enough about this test to say why it needs such a
# loose nl_abs_tol... after timestep 10 the residual basically can't
# be reduced much beyond the initial residual. The test probably
# needs to be revisited to determine why.
nl_abs_tol = 1e-3
nl_rel_tol = 1e-10
l_tol = 1e-6
l_max_its = 100
line_search = 'none'
nl_max_its = 10
dt = 1e-1
dtmin = 1e-1
end_time = 2.0
[]
[Postprocessors]
[./temp_left]
type = SideAverageValue
boundary = 2
variable = temp
execute_on = 'initial timestep_end'
[../]
[./temp_right]
type = SideAverageValue
boundary = 3
variable = temp
execute_on = 'initial timestep_end'
[../]
[./flux_left]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 2
diffusivity = thermal_conductivity
[../]
[./flux_right]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 3
diffusivity = thermal_conductivity
[../]
[]
[Outputs]
exodus = true
[]
(modules/combined/test/tests/restart-transient-from-ss-with-stateful/parent_tr.i)
[Problem]
restart_file_base = parent_ss_checkpoint_cp/LATEST
force_restart = true
# The auxiliary field has an initial condition
allow_initial_conditions_with_restart = true
[]
[Mesh]
file = parent_ss_checkpoint_cp/LATEST
[]
[Variables]
[temp]
# no initial condition for restart.
[]
[]
[AuxVariables]
[power]
order = FIRST
family = L2_LAGRANGE
initial_condition = 350
[]
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[]
[heat_source_fuel]
type = CoupledForce
variable = temp
v = 'power'
[]
[]
[BCs]
[all]
type = DirichletBC
variable = temp
boundary = 'bottom top left right'
value = 300
[]
[]
[Materials]
[heat_material]
type = HeatConductionMaterial
temp = temp
specific_heat = 1000
thermal_conductivity = 500
[]
[density]
type = Density
density = 2000
[]
[]
[Postprocessors]
[avg_temp]
type = ElementAverageValue
variable = temp
execute_on = 'timestep_end'
[]
[avg_power]
type = ElementAverageValue
variable = power
execute_on = 'timestep_end'
[]
[]
[Executioner]
type = Transient
petsc_options_iname = '-pc_type -pc_hypre_type -ksp_gmres_restart'
petsc_options_value = 'hypre boomeramg 300'
line_search = 'none'
l_tol = 1e-02
nl_rel_tol = 5e-05
nl_abs_tol = 5e-05
l_max_its = 50
nl_max_its = 25
start_time = 0
end_time = 40
dt = 10
[]
[Outputs]
print_linear_residuals = false
perf_graph = true
color = true
exodus = true
[]
[MultiApps]
[bison]
type = TransientMultiApp
positions = '0 0 0'
input_files = 'sub_tr.i'
execute_on = 'timestep_end'
[]
[]
[Transfers]
[to_bison_mechanics]
type = MultiAppProjectionTransfer
to_multi_app = bison
variable = temp
source_variable = temp
execute_on = 'timestep_end'
[]
[]
(modules/heat_transfer/test/tests/function_ellipsoid_heat_source/function_heat_source.i)
[Mesh]
type = GeneratedMesh
dim = 3
xmin = -5.0
xmax = 5.0
nx = 10
ymin = -5.0
ymax = 5.0
ny = 10
zmin = 0.0
zmax = 1.0
nz = 1
[]
[Variables]
[./temp]
initial_condition = 300
[../]
[]
[Kernels]
[./time]
type = ADHeatConductionTimeDerivative
variable = temp
[../]
[./heat_conduct]
type = ADHeatConduction
variable = temp
thermal_conductivity = thermal_conductivity
[../]
[./heat_source]
type = ADMatHeatSource
material_property = volumetric_heat
variable = temp
[../]
[]
[BCs]
[./temp_bottom_fix]
type = ADDirichletBC
variable = temp
boundary = 1
value = 300
[../]
[]
[Materials]
[./heat]
type = ADHeatConductionMaterial
specific_heat = 603
thermal_conductivity = 10e-2
[../]
[./density]
type = ADGenericConstantMaterial
prop_names = 'density'
prop_values = '4.43e-6'
[../]
[./volumetric_heat]
type = FunctionPathEllipsoidHeatSource
rx = 1
ry = 1
rz = 1
power = 1000
efficiency = 0.5
factor = 2
function_x= path_x
function_y= path_y
function_z= path_z
[../]
[]
[Functions]
[./path_x]
type = ParsedFunction
expression = 2*cos(2.0*pi*t)
[../]
[./path_y]
type = ParsedFunction
expression = 2*sin(2.0*pi*t)
[../]
[./path_z]
type = ParsedFunction
expression = 1.0
[../]
[]
[Postprocessors]
[temp_max]
type = ElementExtremeValue
variable = temp
[]
[temp_min]
type = ElementExtremeValue
variable = temp
value_type = min
[]
[temp_avg]
type = ElementAverageValue
variable = temp
[]
[]
[Preconditioning]
[./full]
type = SMP
full = true
[../]
[]
[Executioner]
type = Transient
solve_type = PJFNK
nl_rel_tol = 1e-6
nl_abs_tol = 1e-6
petsc_options_iname = '-ksp_type -pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'preonly lu superlu_dist'
l_max_its = 100
end_time = 1
dt = 0.1
dtmin = 1e-4
[]
[Outputs]
csv = true
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_htonly/sphere3D.i)
#
# 3D Spherical Gap Heat Transfer Test.
#
# This test exercises 3D gap heat transfer for a constant conductivity gap.
#
# The mesh consists of an inner solid sphere of radius = 1 unit, and outer
# hollow sphere with an inner radius of 2. In other words, the gap between
# them is 1 radial unit in length.
#
# The conductivity of both spheres is set very large to achieve a uniform
# temperature in each sphere. The temperature of the center node of the
# inner sphere is ramped from 100 to 200 over one time unit. The
# temperature of the outside of the outer, hollow sphere is held fixed
# at 100.
#
# A simple analytical solution is possible for the integrated heat flux
# between the inner and outer spheres:
#
# Integrated Flux = (T_left - T_right) * (gapK/(r^2*((1/r1)-(1/r2)))) * Area
#
# For gapK = 1 (default value)
#
# The area is taken as the area of the secondary (inner) surface:
#
# Area = 4 * pi * 1^2 (4*pi*r^2)
#
# The integrated heat flux across the gap at time 1 is then:
#
# 4*pi*k*delta_T/((1/r1)-(1/r2))
# 4*pi*1*100/((1/1) - (1/2)) = 2513.3 watts
#
# For comparison, see results from the integrated flux post processors.
# This simulation makes use of symmetry, so only 1/8 of the spheres is meshed
# As such, the integrated flux from the post processors is 1/8 of the total,
# or 314.159 watts... i.e. 100*pi.
# The value coming from the post processor is slightly less than this
# but converges as mesh refinement increases.
#
# Simulating contact is challenging. Regression tests that exercise
# contact features can be difficult to solve consistently across multiple
# platforms. While designing these tests, we felt it worth while to note
# some aspects of these tests. The following applies to:
# sphere3D.i, sphere2DRZ.i, cyl2D.i, and cyl3D.i.
# 1. We decided that to perform consistently across multiple platforms we
# would use very small convergence tolerance. In this test we chose an
# nl_rel_tol of 1e-12.
# 2. Due to such a high value for thermal conductivity (used here so that the
# domains come to a uniform temperature) the integrated flux at time = 0
# was relatively large (the value coming from SideIntegralFlux =
# -_diffusion_coef[_qp]*_grad_u[_qp]*_normals[_qp] where the diffusion coefficient
# here is thermal conductivity).
# Even though _grad_u[_qp] is small, in this case the diffusion coefficient
# is large. The result is a number that isn't exactly zero and tends to
# fail exodiff. For this reason the parameter execute_on = initial should not
# be used. That parameter is left to default settings in these regression tests.
#
[GlobalParams]
order = SECOND
family = LAGRANGE
[]
[Mesh]
file = sphere3D.e
[]
[Functions]
[./temp]
type = PiecewiseLinear
x = '0 1'
y = '100 200'
[../]
[]
[Variables]
[./temp]
initial_condition = 100
[../]
[]
[AuxVariables]
[./gap_conductance]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./heat_conduction]
type = HeatConduction
variable = temp
[../]
[]
[AuxKernels]
[./gap_cond]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductance
boundary = 2
[../]
[]
[Materials]
[./heat1]
type = HeatConductionMaterial
block = '1 2'
specific_heat = 1.0
thermal_conductivity = 100000000.0
[../]
[]
[ThermalContact]
[./thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 3
secondary = 2
emissivity_primary = 0
emissivity_secondary = 0
gap_conductivity = 1
quadrature = true
gap_geometry_type = SPHERE
sphere_origin = '0 0 0'
[../]
[]
[BCs]
[./mid]
type = FunctionDirichletBC
boundary = 5
variable = temp
function = temp
[../]
[./temp_far_right]
type = DirichletBC
boundary = 4
variable = temp
value = 100
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
dt = 1
dtmin = 0.01
end_time = 1
nl_rel_tol = 1e-12
nl_abs_tol = 1e-7
[./Quadrature]
order = fifth
side_order = seventh
[../]
[]
[Outputs]
exodus = true
[./Console]
type = Console
[../]
[]
[Postprocessors]
[./temp_left]
type = SideAverageValue
boundary = 2
variable = temp
[../]
[./temp_right]
type = SideAverageValue
boundary = 3
variable = temp
[../]
[./flux_left]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 2
diffusivity = thermal_conductivity
[../]
[./flux_right]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 3
diffusivity = thermal_conductivity
[../]
[]
(modules/combined/test/tests/heat_convection/heat_convection_rz_tf_test.i)
# Test cases for convective boundary conditions. TKLarson, 11/01/11, rev. 0.
# Input file for htc_2dtest0
# TKLarson
# 11/01/11
# Revision 0
#
# Goals of this test are:
# 1) show that the 'fluid' temperature for convective boundary condition
# is behaving as expected/desired
# 2) show that expected results ensue from application of convective boundary conditions
# Convective boundary condition:
# q = h*A*(Tw - Tf)
# where
# q - heat transfer rate (w)
# h - heat transfer coefficient (w/m^2-K)
# A - surface area (m^2)
# Tw - surface temperature (K)
# Tf - fluid temperature adjacent to the surface (K)
# The heat transfer coefficient (h) is input as a variable called 'rate'
# Tf is a two valued function specified by 'initial' and 'final' along with a variable
# called 'duration,' the length of time in seconds that it takes initial to linearly ramp
# to 'final.'
# The mesh for this test case is based on an ASTM standard for the so-called Brazillian Cylinder test
# (ASTM International, Standard Test Method for Splitting Tensile Strength of Cylindrical Concrete
# Specimens, C 496/C 496M-04, 2004) (because I already had a version of the model). While the
# Brazillian Cylinder test is for dynamic tensile testing of concrete, the model works for the present
# purposes. The model is 2-d RZ coordinates.
#
# Brazillian Cylinder sample dimensions:
# L = 20.3 cm, 0.203 m, (8 in)
# r = 5.08 cm, 0.0508 m, (2 in)
# Material properties are:
# density = 2405.28 km/m^3
# specific heat = 826.4 J/kg-K
# thermal conductivity 1.937 w/m-K
# alpha (thermal conductivity/(density*specific heat) is then 9.74e-7 m^2/s
#
# Initial cylinder temperature is room temperature 294.26 K (70 F)
# The initial fluid temperature is room temperature. We will ramp it to 477.6 K (400 F) in 10 minutes.
# We will use a very large h (1000000) to make the surface temperature mimick the fluid temperature.
# What we expect for this problem:
# 1) Use of h = 1000000 should cause the cylinder surface temperature to track the fluid temperature
# 2) The fluid temperature should rise from initial (294.26 K) to final (477.6 K) in 600 s.
# 3) 1) and 2) should prove that the Tf boundary condition is ramping as desired.
# Note, we do the above because there is no way to plot a variable that is not on a mesh node!
[Problem]
coord_type = RZ
[]
[Mesh] # Mesh Start
# 10cm x 20cm cylinder not so detailed mesh, 2 radial, 6 axial nodes
# Only one block (Block 1), all concrete
# Sideset 1 - top of cylinder, Sideset 2 - length of cylinder, Sideset 3 - bottom of cylinder
file = heat_convection_rz_mesh.e
[] # Mesh END
[Variables] # Variables Start
[./temp]
order = FIRST
family = LAGRANGE
initial_condition = 294.26 # Initial cylinder temperature
[../]
[] # Variables END
[Kernels] # Kernels Start
[./heat]
type = HeatConduction
variable = temp
[../]
[./heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[../]
[] # Kernels END
[BCs] # Boundary Conditions Start
# Heat transfer coefficient on outer cylinder radius and ends
[./convective_clad_surface] # Convective Start
type = ConvectiveFluxBC # Convective flux, e.g. q'' = h*(Tw - Tf)
boundary = '1 2 3' # BC applied on top, along length, and bottom
variable = temp
rate = 1000000. # convective heat transfer coefficient (w/m^2-K)[176000 "]
# # the above h is ~ infinity for present purposes
initial = 294.26 # initial ambient (lab or oven) temperature (K)
final = 477.6 # final ambient (lab or oven) temperature (K)
duration = 600. # length of time in seconds that it takes the ambient
# temperature to ramp from initial to final
[../] # Convective End
[] # BCs END
[Materials] # Materials Start
[./thermal]
type = HeatConductionMaterial
block = 1
specific_heat = 826.4
thermal_conductivity = 1.937 # this makes alpha 9.74e-7 m^2/s
[../]
[./density]
type = Density
block = 1
density = 2405.28
[../]
[] # Materials END
[Executioner] # Executioner Start
type = Transient
# type = Steady
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew '
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type'
petsc_options_value = '70 hypre boomeramg'
l_max_its = 60
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
l_tol = 1e-5
start_time = 0.0
dt = 60.
num_steps = 20 # Total run time 1200 s
[] # Executioner END
[Outputs] # Output Start
# Output Start
file_base = out_rz_tf
exodus = true
[] # Output END
# # Input file END
(modules/combined/test/tests/gap_heat_transfer_mortar/finite-2d/finite_action.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD4
order = FIRST
name = 'finite'
[Mesh]
patch_size = 80
patch_update_strategy = auto
[plank]
type = GeneratedMeshGenerator
dim = 2
xmin = -0.3
xmax = 0.3
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[]
[plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[]
[block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.31
xmax = 0.91
ymin = 7.7
ymax = 8.5
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[]
[block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[]
[combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[]
[block_rename]
type = RenameBlockGenerator
input = combined
old_block = '1 2'
new_block = 'plank block'
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[disp_x]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[]
[disp_y]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[]
[temp]
order = ${order}
block = 'plank block'
scaling = 1e-1
[]
[]
[Modules/TensorMechanics/Master]
[action]
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank block'
use_automatic_differentiation = true
strain = FINITE
[]
[]
[Kernels]
[hc]
type = ADHeatConduction
variable = temp
use_displaced_mesh = true
block = 'plank block'
[]
[]
[Contact]
[frictionless]
primary = plank_right
secondary = block_left
formulation = mortar
c_normal = 1e6
[]
[]
[MortarGapHeatTransfer]
[mortar_heat_transfer]
temperature = temp
use_displaced_mesh = true
gap_flux_options = conduction
gap_conductivity = 1
boundary = plank_right
primary_boundary = plank_right
primary_subdomain = frictionless_primary_subdomain
secondary_boundary = block_left
secondary_subdomain = frictionless_secondary_subdomain
thermal_lm_scaling = 1e-7
gap_geometry_type = PLATE
[]
[]
[BCs]
[left_temp]
type = ADDirichletBC
variable = temp
boundary = 'plank_left'
value = 400
[]
[right_temp]
type = ADDirichletBC
variable = temp
boundary = 'block_right'
value = 300
[]
[left_x]
type = ADDirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
[]
[left_y]
type = ADDirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
[]
[right_x]
type = ADFunctionDirichletBC
variable = disp_x
boundary = block_right
function = '-0.04*sin(4*(t+1.5))+0.02'
preset = false
[]
[right_y]
type = ADFunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
preset = false
[]
[]
[Materials]
[plank]
type = ADComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[]
[block]
type = ADComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[]
[stress]
type = ADComputeFiniteStrainElasticStress
block = 'plank block'
[]
[heat_plank]
type = ADHeatConductionMaterial
block = plank
thermal_conductivity = 2
specific_heat = 1
[]
[heat_block]
type = ADHeatConductionMaterial
block = block
thermal_conductivity = 1
specific_heat = 1
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -snes_max_it'
petsc_options_value = 'lu NONZERO 1e-15 20'
end_time = 13.5
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'none'
[]
[Postprocessors]
[nl_its]
type = NumNonlinearIterations
[]
[total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[]
[l_its]
type = NumLinearIterations
[]
[total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[]
[contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[]
[avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[]
[avg_temp]
type = ElementAverageValue
variable = temp
block = 'block'
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[]
[avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[]
[max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[]
[min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[]
[]
[Outputs]
file_base = ${name}
[comp]
type = CSV
show = 'contact avg_temp'
[]
[out]
type = CSV
file_base = '${name}_out'
[]
[dof]
type = DOFMap
execute_on = 'initial'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/combined/test/tests/gap_heat_transfer_convex/gap_heat_transfer_convex.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
temperature = temp
[]
[Mesh]
file = gap_heat_transfer_convex.e
[]
[Functions]
[./disp]
type = PiecewiseLinear
x = '0 2.0'
y = '0 1.0'
[../]
[./temp]
type = PiecewiseLinear
x = '0 1'
y = '200 200'
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./temp]
initial_condition = 100
[../]
[]
[ThermalContact]
[./thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 2
secondary = 3
emissivity_primary = 0
emissivity_secondary = 0
[../]
[]
[Modules/TensorMechanics/Master/All]
volumetric_locking_correction = true
strain = FINITE
eigenstrain_names = eigenstrain
[]
[Kernels]
[./heat]
type = HeatConduction
variable = temp
[../]
[]
[BCs]
[./move_right]
type = FunctionDirichletBC
boundary = '3'
variable = disp_x
function = disp
[../]
[./fixed_x]
type = DirichletBC
boundary = '1'
variable = disp_x
value = 0
[../]
[./fixed_y]
type = DirichletBC
boundary = '1 2 3 4'
variable = disp_y
value = 0
[../]
[./fixed_z]
type = DirichletBC
boundary = '1 2 3 4'
variable = disp_z
value = 0
[../]
[./temp_bottom]
type = FunctionDirichletBC
boundary = 1
variable = temp
function = temp
[../]
[./temp_top]
type = DirichletBC
boundary = 4
variable = temp
value = 100
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = '1 2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./thermal_strain]
type = ComputeThermalExpansionEigenstrain
stress_free_temperature = 100
thermal_expansion_coeff = 0
eigenstrain_name = eigenstrain
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
[../]
[./heat1]
type = HeatConductionMaterial
block = 1
specific_heat = 1.0
thermal_conductivity = 1.0
[../]
[./heat2]
type = HeatConductionMaterial
block = 2
specific_heat = 1.0
thermal_conductivity = 1.0
[../]
[./density]
type = Density
block = '1 2'
density = 1.0
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
start_time = 0.0
dt = 0.1
end_time = 2.0
[]
[Outputs]
exodus = true
[]
(modules/combined/test/tests/umat/gap_heat_transfer_umat.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
temperature = temp
[]
[Mesh]
file = gap_heat_transfer_mesh.e
[]
[Functions]
[disp]
type = PiecewiseLinear
x = '0 2.0'
y = '0 1.0'
[]
[temp]
type = PiecewiseLinear
x = '0 1'
y = '273 2000'
[]
[pressure_function]
type = PiecewiseLinear
x = '0 1'
y = '0 200'
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[temp]
initial_condition = 273
[]
[]
[ThermalContact]
[thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 2
secondary = 3
emissivity_primary = 0
emissivity_secondary = 0
[]
[]
[Modules/TensorMechanics/Master/All]
volumetric_locking_correction = true
strain = FINITE
generate_output = 'strain_yy stress_yy'
[]
[Kernels]
[heat]
type = HeatConduction
variable = temp
[]
[]
[BCs]
[move_right]
type = FunctionDirichletBC
boundary = '3'
variable = disp_x
function = disp
[]
[fixed_x]
type = DirichletBC
boundary = '1'
variable = disp_x
value = 0
[]
[fixed_y]
type = DirichletBC
boundary = '1 2 4'
variable = disp_y
value = 0
[]
[fixed_z]
type = DirichletBC
boundary = '1 2 3 4'
variable = disp_z
value = 0
[]
[temp_bottom]
type = FunctionDirichletBC
boundary = 1
variable = temp
function = temp
[]
[temp_top]
type = DirichletBC
boundary = 4
variable = temp
value = 100
[]
[Pressure]
[example]
boundary = 3
function = pressure_function
[]
[]
[]
[Materials]
# 1. Active for umat calculation
[umat]
type = AbaqusUMATStress
constant_properties = '1.0e6 0.3'
plugin = '../../../../solid_mechanics/test/plugins/elastic_temperature'
num_state_vars = 0
temperature = temp
use_one_based_indexing = true
[]
# 2. Active for reference MOOSE computations
[elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = '1 2'
base_name = 'base'
youngs_modulus = 1e6
poissons_ratio = 0.3
[]
[temp_dependent_elasticity_tensor]
type = CompositeElasticityTensor
block = '1 2'
args = temp
tensors = 'base'
weights = 'prefactor_material'
[]
[prefactor_material_block]
type = DerivativeParsedMaterial
block = '1 2'
property_name = prefactor_material
coupled_variables = temp
expression = '273/(temp)'
[]
[stress]
type = ComputeFiniteStrainElasticStress
block = '1 2'
[]
[heat]
type = HeatConductionMaterial
block = '1 2'
specific_heat = 1.0
thermal_conductivity = 1.0
[]
[density]
type = Density
block = '1 2'
density = 1.0
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
start_time = 0.0
dt = 0.1
end_time = 2.0
[]
[Outputs]
exodus = true
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_mortar/large_gap_heat_transfer_test_sphere_mortar.i)
sphere_outer_htc = 10 # W/m^2/K
sphere_outer_Tinf = 300 # K
[GlobalParams]
order = SECOND
family = LAGRANGE
[]
[Problem]
coord_type = RZ
kernel_coverage_check = false
material_coverage_check = false
[]
[Mesh]
[file]
type = FileMeshGenerator
file = cyl2D.e
[]
[secondary]
type = LowerDBlockFromSidesetGenerator
sidesets = '2'
new_block_id = 10001
new_block_name = 'secondary_lower'
input = file
[]
[primary]
type = LowerDBlockFromSidesetGenerator
sidesets = '3'
new_block_id = 10000
new_block_name = 'primary_lower'
input = secondary
[]
allow_renumbering = false
[]
[Functions]
[temp]
type = PiecewiseLinear
x = '0 1'
y = '100 200'
[]
[]
[Variables]
[temp]
initial_condition = 500
[]
[lm]
order = SECOND
family = LAGRANGE
block = 'secondary_lower'
[]
[]
[AuxVariables]
[power_density]
block = 'fuel'
initial_condition = 50e3
[]
[]
[Kernels]
[heat_conduction]
type = HeatConduction
variable = temp
block = '1 2'
[]
[heat_source]
type = CoupledForce
variable = temp
block = 'fuel'
v = power_density
[]
[]
[Materials]
[heat1]
type = HeatConductionMaterial
block = '1 2'
specific_heat = 1.0
thermal_conductivity = 34.6
[]
[]
[UserObjects]
[radiation]
type = GapFluxModelRadiation
temperature = temp
boundary = 2
primary_emissivity = 0.0
secondary_emissivity = 0.0
[]
[conduction]
type = GapFluxModelConduction
temperature = temp
boundary = 2
gap_conductivity = 5.0
[]
[]
[Constraints]
[ced]
type = ModularGapConductanceConstraint
variable = lm
secondary_variable = temp
primary_boundary = 3
primary_subdomain = 10000
secondary_boundary = 2
secondary_subdomain = 10001
gap_flux_models = 'radiation conduction'
gap_geometry_type = SPHERE
sphere_origin = '0 0 0'
[]
[]
[BCs]
[RPV_out_BC] # k \nabla T = h (T- T_inf) at RPV outer boundary
type = ConvectiveFluxFunction # (Robin BC)
variable = temp
boundary = '4' # outer RPV
coefficient = ${sphere_outer_htc}
T_infinity = ${sphere_outer_Tinf}
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
dt = 1
dtmin = 0.01
end_time = 1
nl_rel_tol = 1e-12
nl_abs_tol = 1e-7
[]
[Outputs]
exodus = true
csv = true
[Console]
type = Console
[]
[]
[VectorPostprocessors]
[NodalTemperature]
type = NodalValueSampler
sort_by = id
boundary = '2 3'
variable = temp
[]
[]
[Postprocessors]
[temp_left]
type = SideAverageValue
boundary = 2
variable = temp
[]
[temp_right]
type = SideAverageValue
boundary = 3
variable = temp
[]
[flux_left]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 2
diffusivity = thermal_conductivity
[]
[flux_right]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 3
diffusivity = thermal_conductivity
[]
[ptot]
type = ElementIntegralVariablePostprocessor
variable = power_density
block = 'fuel'
[]
[sphere_convective_out]
type = ConvectiveHeatTransferSideIntegral
T_solid = temp
boundary = '4' # outer RVP
T_fluid = ${sphere_outer_Tinf}
htc = ${sphere_outer_htc}
[]
[heat_balance] # should be equal to 0 upon convergence
type = ParsedPostprocessor
expression = '(sphere_convective_out - ptot) / ptot'
pp_names = 'sphere_convective_out ptot'
[]
[]
(modules/combined/test/tests/elastic_thermal_patch/elastic_thermal_patch.i)
# Patch Test
# This test is designed to compute constant xx, yy, zz, xy, yz, and zx
# stress on a set of irregular hexes. The mesh is composed of one
# block with seven elements. The elements form a unit cube with one
# internal element. There is a nodeset for each exterior node.
# The cube is displaced by 1e-6 units in x, 2e-6 in y, and 3e-6 in z.
# The faces are sheared as well (1e-6, 2e-6, and 3e-6 for xy, yz, and
# zx). This gives a uniform strain/stress state for all six unique
# tensor components.
# With Young's modulus at 1e6 and Poisson's ratio at 0, the shear
# modulus is 5e5 (G=E/2/(1+nu)). Therefore, for the mechanical strain,
#
# stress xx = 1e6 * 1e-6 = 1
# stress yy = 1e6 * 2e-6 = 2
# stress zz = 1e6 * 3e-6 = 3
# stress xy = 2 * 5e5 * 1e-6 / 2 = 0.5
# (2 * G * gamma_xy / 2 = 2 * G * epsilon_xy)
# stress yz = 2 * 5e5 * 2e-6 / 2 = 1
# stress zx = 2 * 5e5 * 3e-6 / 2 = 1.5
# However, we must also consider the thermal strain.
# The temperature moves 100 degrees, and the coefficient of thermal
# expansion is 1e-8. Therefore, the thermal strain (and the displacement
# since this is a unit cube) is 1e-6.
# Therefore, the overall effect is (at time 1, with a 50 degree delta):
#
# stress xx = 1e6 * (1e-6-0.5e-6) = 0.5
# stress yy = 1e6 * (2e-6-0.5e-6) = 1.5
# stress zz = 1e6 * (3e-6-0.5e-6) = 2.5
# stress xy = 2 * 5e5 * 1e-6 / 2 = 0.5
# (2 * G * gamma_xy / 2 = 2 * G * epsilon_xy)
# stress yz = 2 * 5e5 * 2e-6 / 2 = 1
# stress zx = 2 * 5e5 * 3e-6 / 2 = 1.5
#
# At time 2:
#
# stress xx = 1e6 * (1e-6-1e-6) = 0
# stress yy = 1e6 * (2e-6-1e-6) = 1
# stress zz = 1e6 * (3e-6-1e-6) = 2
# stress xy = 2 * 5e5 * 1e-6 / 2 = 0.5
# (2 * G * gamma_xy / 2 = 2 * G * epsilon_xy)
# stress yz = 2 * 5e5 * 2e-6 / 2 = 1
# stress zx = 2 * 5e5 * 3e-6 / 2 = 1.5
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
temperature = temp
[]
[Mesh]
file = elastic_thermal_patch_test.e
[]
[Functions]
[./rampConstant1]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. 1. 1.'
scale_factor = 1e-6
[../]
[./rampConstant2]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. 1. 1.'
scale_factor = 2e-6
[../]
[./rampConstant3]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. 1. 1.'
scale_factor = 3e-6
[../]
[./rampConstant4]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. 1. 1.'
scale_factor = 4e-6
[../]
[./rampConstant6]
type = PiecewiseLinear
x = '0. 1. 2.'
y = '0. 1. 1.'
scale_factor = 6e-6
[../]
[./tempFunc]
type = PiecewiseLinear
x = '0. 2.'
y = '117.56 217.56'
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./temp]
initial_condition = 117.56
[../]
[]
[Modules/TensorMechanics/Master/All]
add_variables = true
strain = FINITE
eigenstrain_names = eigenstrain
generate_output = 'stress_xx stress_yy stress_zz stress_xy stress_yz stress_zx'
[]
[Kernels]
[./heat]
type = HeatConduction
variable = temp
[../]
[]
[BCs]
[./node1_x]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[../]
[./node1_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 1
function = rampConstant2
[../]
[./node1_z]
type = FunctionDirichletBC
variable = disp_z
boundary = 1
function = rampConstant3
[../]
[./node2_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 2
function = rampConstant1
[../]
[./node2_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 2
function = rampConstant2
[../]
[./node2_z]
type = FunctionDirichletBC
variable = disp_z
boundary = 2
function = rampConstant6
[../]
[./node3_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 3
function = rampConstant1
[../]
[./node3_y]
type = DirichletBC
variable = disp_y
boundary = 3
value = 0.0
[../]
[./node3_z]
type = FunctionDirichletBC
variable = disp_z
boundary = 3
function = rampConstant3
[../]
[./node4_x]
type = DirichletBC
variable = disp_x
boundary = 4
value = 0.0
[../]
[./node4_y]
type = DirichletBC
variable = disp_y
boundary = 4
value = 0.0
[../]
[./node4_z]
type = DirichletBC
variable = disp_z
boundary = 4
value = 0.0
[../]
[./node5_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 5
function = rampConstant1
[../]
[./node5_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 5
function = rampConstant4
[../]
[./node5_z]
type = FunctionDirichletBC
variable = disp_z
boundary = 5
function = rampConstant3
[../]
[./node6_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 6
function = rampConstant2
[../]
[./node6_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 6
function = rampConstant4
[../]
[./node6_z]
type = FunctionDirichletBC
variable = disp_z
boundary = 6
function = rampConstant6
[../]
[./node7_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 7
function = rampConstant2
[../]
[./node7_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 7
function = rampConstant2
[../]
[./node7_z]
type = FunctionDirichletBC
variable = disp_z
boundary = 7
function = rampConstant3
[../]
[./node8_x]
type = FunctionDirichletBC
variable = disp_x
boundary = 8
function = rampConstant1
[../]
[./node8_y]
type = FunctionDirichletBC
variable = disp_y
boundary = 8
function = rampConstant2
[../]
[./node8_z]
type = DirichletBC
variable = disp_z
boundary = 8
value = 0.0
[../]
[./temp]
type = FunctionDirichletBC
variable = temp
boundary = '10 12'
function = tempFunc
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
bulk_modulus = 0.333333333333333e6
shear_modulus = 0.5e6
[../]
[./thermal_strain]
type = ComputeThermalExpansionEigenstrain
stress_free_temperature = 117.56
thermal_expansion_coeff = 1e-8
eigenstrain_name = eigenstrain
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
[../]
[./heat]
type = HeatConductionMaterial
specific_heat = 1.0
thermal_conductivity = 1.0
[../]
[./density]
type = Density
density = 1.0
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
nl_rel_tol = 1e-12
l_max_its = 20
start_time = 0.0
dt = 1.0
num_steps = 2
end_time = 2.0
[]
[Outputs]
exodus = true
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_mortar/ref.i)
[Mesh]
file = 3blk.e
[]
[Variables]
[./temp]
order = FIRST
family = LAGRANGE
block = '1 2 3'
[../]
[]
[Materials]
[./left]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 1000
specific_heat = 1
[../]
[./right]
type = HeatConductionMaterial
block = 2
thermal_conductivity = 500
specific_heat = 1
[../]
[./middle]
type = HeatConductionMaterial
block = 3
thermal_conductivity = 100
specific_heat = 1
[../]
[]
[Kernels]
[./hc]
type = HeatConduction
variable = temp
use_displaced_mesh = false
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = temp
boundary = 'left'
value = 1
[../]
[./right]
type = DirichletBC
variable = temp
boundary = 'right'
value = 0
[../]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
nl_rel_tol = 1e-11
l_tol = 1e-11
[]
[Outputs]
exodus = true
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_mortar/large_gap_heat_transfer_test_rz_cylinder.i)
rpv_core_gap_size = 0.2
core_outer_radius = 2
rpv_inner_radius = '${fparse 2 + rpv_core_gap_size}'
rpv_outer_radius = '${fparse 2.5 + rpv_core_gap_size}'
rpv_width = '${fparse rpv_outer_radius - rpv_inner_radius}'
rpv_outer_htc = 10 # W/m^2/K
rpv_outer_Tinf = 300 # K
core_blocks = '1'
rpv_blocks = '3'
[Mesh]
[gmg]
type = CartesianMeshGenerator
dim = 2
dx = '${core_outer_radius} ${rpv_core_gap_size} ${rpv_width}'
ix = '400 1 100'
dy = 1
iy = '5'
[]
[set_block_id1]
type = SubdomainBoundingBoxGenerator
input = gmg
bottom_left = '0 0 0'
top_right = '${core_outer_radius} 1 0'
block_id = 1
location = INSIDE
[]
[rename_core_bdy]
type = SideSetsBetweenSubdomainsGenerator
input = set_block_id1
primary_block = 1
paired_block = 0
new_boundary = 'core_outer'
[]
[set_block_id3]
type = SubdomainBoundingBoxGenerator
input = rename_core_bdy
bottom_left = '${rpv_inner_radius} 0 0'
top_right = '${rpv_outer_radius} 1 0'
block_id = 3
location = INSIDE
[]
[rename_inner_rpv_bdy]
type = SideSetsBetweenSubdomainsGenerator
input = set_block_id3
primary_block = 3
paired_block = 0
new_boundary = 'rpv_inner'
[]
# comment out for test without gap
[2d_mesh]
type = BlockDeletionGenerator
input = rename_inner_rpv_bdy
block = 0
[]
allow_renumbering = false
[]
[Problem]
coord_type = RZ
[]
[Variables]
[Tsolid]
initial_condition = 500
[]
[]
[Kernels]
[heat_source]
type = CoupledForce
variable = Tsolid
block = '${core_blocks}'
v = power_density
[]
[heat_conduction]
type = HeatConduction
variable = Tsolid
[]
[]
[BCs]
[RPV_out_BC] # k \nabla T = h (T- T_inf) at RPV outer boundary
type = ConvectiveFluxFunction # (Robin BC)
variable = Tsolid
boundary = 'right' # outer RPV
coefficient = ${rpv_outer_htc}
T_infinity = ${rpv_outer_Tinf}
[]
[]
[ThermalContact]
[RPV_gap]
type = GapHeatTransfer
gap_geometry_type = 'CYLINDER'
emissivity_primary = 0.8
emissivity_secondary = 0.8
variable = Tsolid
primary = 'core_outer'
secondary = 'rpv_inner'
gap_conductivity = 0.1
quadrature = true
[]
[]
[AuxVariables]
[power_density]
block = '${core_blocks}'
initial_condition = 50e3
[]
[]
[Materials]
[simple_mat]
type = HeatConductionMaterial
thermal_conductivity = 34.6 # W/m/K
[]
[]
[Postprocessors]
[Tcore_avg]
type = ElementAverageValue
variable = Tsolid
block = '${core_blocks}'
[]
[Tcore_max]
type = ElementExtremeValue
value_type = max
variable = Tsolid
block = '${core_blocks}'
[]
[Tcore_min]
type = ElementExtremeValue
value_type = min
variable = Tsolid
block = '${core_blocks}'
[]
[Trpv_avg]
type = ElementAverageValue
variable = Tsolid
block = '${rpv_blocks}'
[]
[Trpv_max]
type = ElementExtremeValue
value_type = max
variable = Tsolid
block = '${rpv_blocks}'
[]
[Trpv_min]
type = ElementExtremeValue
value_type = min
variable = Tsolid
block = '${rpv_blocks}'
[]
[ptot]
type = ElementIntegralVariablePostprocessor
variable = power_density
block = '${core_blocks}'
[]
[rpv_convective_out]
type = ConvectiveHeatTransferSideIntegral
T_solid = Tsolid
boundary = 'right' # outer RVP
T_fluid = ${rpv_outer_Tinf}
htc = ${rpv_outer_htc}
[]
[heat_balance] # should be equal to 0 upon convergence
type = ParsedPostprocessor
expression = '(rpv_convective_out - ptot) / ptot'
pp_names = 'rpv_convective_out ptot'
[]
[flux_from_core] # converges to ptot as the mesh is refined
type = SideDiffusiveFluxIntegral
variable = Tsolid
boundary = core_outer
diffusivity = thermal_conductivity
[]
[flux_into_rpv] # converges to rpv_convective_out as the mesh is refined
type = SideDiffusiveFluxIntegral
variable = Tsolid
boundary = rpv_inner
diffusivity = thermal_conductivity
[]
[]
[VectorPostprocessors]
[NodalTemperature]
type = NodalValueSampler
sort_by = id
boundary = 'rpv_inner core_outer'
variable = Tsolid
[]
[]
[Executioner]
type = Steady
automatic_scaling = true
compute_scaling_once = false
petsc_options_iname = '-pc_type -pc_hypre_type -ksp_gmres_restart '
petsc_options_value = 'hypre boomeramg 100'
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
l_max_its = 100
[Quadrature]
# order = fifth
side_order = seventh
[]
line_search = none
[]
[Outputs]
exodus = false
csv = true
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_htonly/cyl3D.i)
#
# 3D Cylindrical Gap Heat Transfer Test.
#
# This test exercises 3D gap heat transfer for a constant conductivity gap.
#
# The mesh consists of an inner solid cylinder of radius = 1 unit, and outer
# hollow cylinder with an inner radius of 2. In other words, the gap between
# them is 1 radial unit in length.
#
# The conductivity of both cylinders is set very large to achieve a uniform
# temperature in each cylinder. The temperature of the center node of the
# inner cylinder is ramped from 100 to 200 over one time unit. The temperature
# of the outside of the outer, hollow cylinder is held fixed at 100.
#
# A simple analytical solution is possible for the integrated heat flux
# between the inner and outer cylinders:
#
# Integrated Flux = (T_left - T_right) * (gapK/(r*ln(r2/r1))) * Area
#
# For gapK = 1 (default value)
#
# The area is taken as the area of the secondary (inner) surface:
#
# Area = 2 * pi * h * r, where h is the height of the cylinder.
#
# The integrated heat flux across the gap at time 1 is then:
#
# 2*pi*h*k*delta_T/(ln(r2/r1))
# 2*pi*1*1*100/(ln(2/1)) = 906.5 watts
#
# For comparison, see results from the integrated flux post processors.
# This simulation makes use of symmetry, so only 1/4 of the cylinders is meshed
# As such, the integrated flux from the post processors is 1/4 of the total,
# or 226.6 watts.
# The value coming from the post processor is slightly less than this
# but converges as mesh refinement increases.
#
# Simulating contact is challenging. Regression tests that exercise
# contact features can be difficult to solve consistently across multiple
# platforms. While designing these tests, we felt it worth while to note
# some aspects of these tests. The following applies to:
# sphere3D.i, sphere2DRZ.i, cyl2D.i, and cyl3D.i.
# 1. We decided that to perform consistently across multiple platforms we
# would use very small convergence tolerance. In this test we chose an
# nl_rel_tol of 1e-12.
# 2. Due to such a high value for thermal conductivity (used here so that the
# domains come to a uniform temperature) the integrated flux at time = 0
# was relatively large (the value coming from SideIntegralFlux =
# -_diffusion_coef[_qp]*_grad_u[_qp]*_normals[_qp] where the diffusion coefficient
# here is thermal conductivity).
# Even though _grad_u[_qp] is small, in this case the diffusion coefficient
# is large. The result is a number that isn't exactly zero and tends to
# fail exodiff. For this reason the parameter execute_on = initial should not
# be used. That parameter is left to default settings in these regression tests.
#
[GlobalParams]
order = SECOND
family = LAGRANGE
[]
[Mesh]
file = cyl3D.e
[]
[Functions]
[./temp]
type = PiecewiseLinear
x = '0 1'
y = '100 200'
[../]
[]
[Variables]
[./temp]
initial_condition = 100
[../]
[]
[AuxVariables]
[./gap_conductance]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./heat_conduction]
type = HeatConduction
variable = temp
[../]
[]
[AuxKernels]
[./gap_cond]
type = MaterialRealAux
property = gap_conductance
variable = gap_conductance
boundary = 2
[../]
[]
[Materials]
[./heat1]
type = HeatConductionMaterial
block = '1 2'
specific_heat = 1.0
thermal_conductivity = 1000000.0
[../]
[]
[ThermalContact]
[./thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 3
secondary = 2
emissivity_primary = 0
emissivity_secondary = 0
gap_conductivity = 1
quadrature = true
gap_geometry_type = CYLINDER
cylinder_axis_point_1 = '0 0 0'
cylinder_axis_point_2 = '0 1 0'
[../]
[]
[BCs]
[./mid]
type = FunctionDirichletBC
boundary = 5
variable = temp
function = temp
[../]
[./temp_far_right]
type = DirichletBC
boundary = 4
variable = temp
value = 100
[../]
[]
[Executioner]
type = Transient
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
dt = 1
dtmin = 0.01
end_time = 1
nl_rel_tol = 1e-12
nl_abs_tol = 1e-7
[./Quadrature]
order = fifth
side_order = seventh
[../]
[]
[Outputs]
exodus = true
[./Console]
type = Console
[../]
[]
[Postprocessors]
[./temp_left]
type = SideAverageValue
boundary = 2
variable = temp
[../]
[./temp_right]
type = SideAverageValue
boundary = 3
variable = temp
[../]
[./flux_left]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 2
diffusivity = thermal_conductivity
[../]
[./flux_right]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 3
diffusivity = thermal_conductivity
[../]
[]
(modules/combined/test/tests/thermo_mech/thermo_mech.i)
#Run with 4 procs
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
temperature = temp
volumetric_locking_correction = true
[]
[Mesh]
file = cube.e
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./temp]
[../]
[]
[Kernels]
[./TensorMechanics]
[../]
[./heat]
type = HeatConduction
variable = temp
[../]
[]
[BCs]
[./bottom_x]
type = DirichletBC
variable = disp_x
boundary = 1
value = 0.0
[../]
[./bottom_y]
type = DirichletBC
variable = disp_y
boundary = 1
value = 0.0
[../]
[./bottom_z]
type = DirichletBC
variable = disp_z
boundary = 1
value = 0.0
[../]
[./bottom_temp]
type = DirichletBC
variable = temp
boundary = 1
value = 10.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 1.0
poissons_ratio = 0.3
[../]
[./strain]
type = ComputeSmallStrain
eigenstrain_names = eigenstrain
[../]
[./thermal_strain]
type = ComputeThermalExpansionEigenstrain
stress_free_temperature = 0.0
thermal_expansion_coeff = 1e-5
eigenstrain_name = eigenstrain
[../]
[./stress]
type = ComputeLinearElasticStress
[../]
[./heat]
type = HeatConductionMaterial
specific_heat = 1.0
thermal_conductivity = 1.0
[../]
[./density]
type = Density
density = 1.0
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
nl_rel_tol = 1e-14
l_tol = 1e-3
l_max_its = 100
dt = 1.0
end_time = 1.0
[]
[Outputs]
exodus = true
[]
(modules/combined/test/tests/adaptive_timestepping/adapt_tstep_function_force_step.i)
# This is a test designed to evaluate the cabability of the
# IterationAdaptiveDT TimeStepper to adjust time step size according to
# a function. For example, if the power input function for a BISON
# simulation rapidly increases or decreases, the IterationAdaptiveDT
# TimeStepper should take time steps small enough to capture the
# oscillation.
[GlobalParams]
order = FIRST
family = LAGRANGE
block = 1
volumetric_locking_correction = true
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
file = 1hex8_10mm_cube.e
[]
[Functions]
[./Fiss_Function]
type = PiecewiseLinear
data_file = blip.csv
format = columns
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./temp]
initial_condition = 300.0
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
strain = FINITE
incremental = true
eigenstrain_names = thermal_expansion
add_variables = true
generate_output = 'vonmises_stress'
temperature = temp
[../]
[]
[Kernels]
[./heat]
type = HeatConduction
variable = temp
[../]
[./heat_ie]
type = HeatConductionTimeDerivative
variable = temp
[../]
[./heat_source]
type = HeatSource
variable = temp
value = 1.0
function = Fiss_Function
[../]
[]
[BCs]
[./bottom_temp]
type = DirichletBC
variable = temp
boundary = 1
value = 300
[../]
[./top_bottom_disp_x]
type = DirichletBC
variable = disp_x
boundary = '1'
value = 0
[../]
[./top_bottom_disp_y]
type = DirichletBC
variable = disp_y
boundary = '1'
value = 0
[../]
[./top_bottom_disp_z]
type = DirichletBC
variable = disp_z
boundary = '1'
value = 0
[../]
[]
[Materials]
[./thermal]
type = HeatConductionMaterial
temp = temp
specific_heat = 1.0
thermal_conductivity = 1.0
[../]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 300e6
poissons_ratio = .3
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
[../]
[./thermal_expansion]
type = ComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 5e-6
stress_free_temperature = 300.0
temperature = temp
eigenstrain_name = thermal_expansion
[../]
[./density]
type = Density
density = 10963.0
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
verbose = true
nl_abs_tol = 1e-10
start_time = 0.0
num_steps = 50000
end_time = 5.1e3
[./TimeStepper]
type = IterationAdaptiveDT
timestep_limiting_function = Fiss_Function
max_function_change = 3e20
force_step_every_function_point = true
dt = 1e2
[../]
[]
[Postprocessors]
[./Temperature_of_Block]
type = ElementAverageValue
variable = temp
execute_on = 'initial timestep_end'
[../]
[./vonMises]
type = ElementAverageValue
variable = vonmises_stress
execute_on = 'initial timestep_end'
[../]
[]
[Outputs]
[./out]
type = Exodus
elemental_as_nodal = true
[../]
[./console]
type = Console
max_rows = 10
[../]
[]
(modules/combined/test/tests/gap_heat_transfer_mortar/finite-2d/finite_action_rr.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD4
order = FIRST
name = 'finite'
[Mesh]
patch_size = 80
patch_update_strategy = auto
[plank]
type = GeneratedMeshGenerator
dim = 2
xmin = -0.3
xmax = 0.3
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[]
[plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[]
[block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.31
xmax = 0.91
ymin = 7.7
ymax = 8.5
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[]
[block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[]
[combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[]
[block_rename]
type = RenameBlockGenerator
input = combined
old_block = '1 2'
new_block = 'plank block'
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Problem]
type = ReferenceResidualProblem
reference_vector = 'ref'
extra_tag_vectors = 'ref'
converge_on = 'disp_x disp_y temp'
[]
[Variables]
[disp_x]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[]
[disp_y]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[]
[temp]
order = ${order}
block = 'plank block'
scaling = 1e-1
[]
[]
[Modules/TensorMechanics/Master]
[action]
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank block'
use_automatic_differentiation = true
strain = FINITE
extra_vector_tags = 'ref'
[]
[]
[Kernels]
[hc]
type = ADHeatConduction
variable = temp
use_displaced_mesh = true
block = 'plank block'
extra_vector_tags = 'ref'
[]
[]
[Contact]
[frictionless]
primary = plank_right
secondary = block_left
formulation = mortar
c_normal = 1e6
[]
[]
[MortarGapHeatTransfer]
[mortar_heat_transfer]
temperature = temp
use_displaced_mesh = true
gap_flux_options = conduction
gap_conductivity = 1
boundary = plank_right
primary_boundary = plank_right
primary_subdomain = frictionless_primary_subdomain
secondary_boundary = block_left
secondary_subdomain = frictionless_secondary_subdomain
thermal_lm_scaling = 1e-7
gap_geometry_type = PLATE
[]
[]
[BCs]
[left_temp]
type = ADDirichletBC
variable = temp
boundary = 'plank_left'
value = 400
[]
[right_temp]
type = ADDirichletBC
variable = temp
boundary = 'block_right'
value = 300
[]
[left_x]
type = ADDirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
[]
[left_y]
type = ADDirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
[]
[right_x]
type = ADFunctionDirichletBC
variable = disp_x
boundary = block_right
function = '-0.04*sin(4*(t+1.5))+0.02'
preset = false
[]
[right_y]
type = ADFunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
preset = false
[]
[]
[Materials]
[plank]
type = ADComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[]
[block]
type = ADComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[]
[stress]
type = ADComputeFiniteStrainElasticStress
block = 'plank block'
[]
[heat_plank]
type = ADHeatConductionMaterial
block = plank
thermal_conductivity = 2
specific_heat = 1
[]
[heat_block]
type = ADHeatConductionMaterial
block = block
thermal_conductivity = 1
specific_heat = 1
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -snes_max_it'
petsc_options_value = 'lu NONZERO 1e-15 20'
end_time = 13.5
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'none'
nl_abs_tol = 1e-13
[]
[Postprocessors]
[nl_its]
type = NumNonlinearIterations
[]
[total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[]
[l_its]
type = NumLinearIterations
[]
[total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[]
[contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[]
[avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[]
[avg_temp]
type = ElementAverageValue
variable = temp
block = 'block'
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[]
[avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[]
[max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[]
[min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[]
[]
[Outputs]
file_base = ${name}
[comp]
type = CSV
show = 'contact avg_temp'
[]
[out]
type = CSV
file_base = '${name}_out'
[]
[dof]
type = DOFMap
execute_on = 'initial'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/combined/test/tests/elastic_thermal_patch/ad_elastic_thermal_weak_plane_stress_jacobian.i)
[GlobalParams]
displacements = 'disp_x disp_y'
temperature = temp
out_of_plane_strain = strain_zz
[]
[Mesh]
[./square]
type = GeneratedMeshGenerator
dim = 2
nx = 2
ny = 2
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./strain_zz]
[../]
[./temp]
[../]
[]
[Modules/TensorMechanics/Master]
[./plane_stress]
planar_formulation = WEAK_PLANE_STRESS
strain = SMALL
eigenstrain_names = thermal_eigenstrain
use_automatic_differentiation = true
[../]
[]
[Kernels]
[./heat]
type = HeatConduction
variable = temp
use_displaced_mesh = false
[../]
[]
[Materials]
[./elasticity_tensor]
type = ADComputeIsotropicElasticityTensor
poissons_ratio = 0.0
youngs_modulus = 1
[../]
[./thermal_strain]
type = ADComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 1e-5
stress_free_temperature = 0
eigenstrain_name = thermal_eigenstrain
[../]
[./stress]
type = ADComputeLinearElasticStress
[../]
[./conductivity]
type = HeatConductionMaterial
thermal_conductivity = 1
use_displaced_mesh = false
[../]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-ksp_type -pc_type -snes_type'
petsc_options_value = 'bcgs bjacobi test'
end_time = 1.0
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_htonly/planar_xz.i)
# 1-D Gap Heat Transfer Test without mechanics
#
# This test exercises 1-D gap heat transfer for a constant conductivity gap.
#
# The mesh consists of two element blocks in the x-z plane. Each element block
# is a square. They sit next to one another with a unit between them.
#
# The conductivity of both blocks is set very large to achieve a uniform temperature
# across each block. The temperature of the far bottom boundary
# is ramped from 100 to 200 over one time unit. The temperature of the far top
# boundary is held fixed at 100.
#
# A simple analytical solution is possible for the heat flux between the blocks:
#
# Flux = (T_left - T_right) * (gapK/gap_width)
#
# The gap conductivity is specified as 1, thus
#
# gapK(Tavg) = 1.0*Tavg
#
# The heat flux across the gap at time = 1 is then:
#
# Flux = 100 * (1.0/1.0) = 100
#
# For comparison, see results from the flux post processors. These results
# are the same as for the unit 1-D gap heat transfer between two unit cubes.
[Mesh]
[file]
type = FileMeshGenerator
file = simple_2D.e
[]
[./rotate]
type = TransformGenerator
transform = ROTATE
vector_value = '0 90 0'
input = file
[../]
[]
[Functions]
[./temp]
type = PiecewiseLinear
x = '0 1 2'
y = '100 200 200'
[../]
[]
[ThermalContact]
[./thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 3
secondary = 2
emissivity_primary = 0
emissivity_secondary = 0
[../]
[]
[Variables]
[./temp]
order = FIRST
family = LAGRANGE
initial_condition = 100
[../]
[]
[AuxVariables]
[./gap_cond]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./heat]
type = HeatConduction
variable = temp
[../]
[]
[BCs]
[./temp_far_bottom]
type = FunctionDirichletBC
boundary = 1
variable = temp
function = temp
[../]
[./temp_far_top]
type = DirichletBC
boundary = 4
variable = temp
value = 100
[../]
[]
[AuxKernels]
[./conductance]
type = MaterialRealAux
property = gap_conductance
variable = gap_cond
boundary = 2
[../]
[]
[Materials]
[./heat1]
type = HeatConductionMaterial
block = '1 2'
specific_heat = 1.0
thermal_conductivity = 100000000.0
[../]
[./density]
type = GenericConstantMaterial
block = '1 2'
prop_names = 'density'
prop_values = '1.0'
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
nl_rel_tol = 1e-12
l_tol = 1e-3
l_max_its = 100
dt = 1e-1
end_time = 1.0
[]
[Postprocessors]
[./temp_bottom]
type = SideAverageValue
boundary = 2
variable = temp
execute_on = 'initial timestep_end'
[../]
[./temp_top]
type = SideAverageValue
boundary = 3
variable = temp
execute_on = 'initial timestep_end'
[../]
[./flux_bottom]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 2
diffusivity = thermal_conductivity
execute_on = 'initial timestep_end'
[../]
[./flux_top]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 3
diffusivity = thermal_conductivity
execute_on = 'initial timestep_end'
[../]
[]
[Outputs]
exodus = true
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_mortar/modular_gap_heat_transfer_mortar_displaced_radiation_conduction_separate.i)
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 2blk-gap.e
[]
[secondary]
type = LowerDBlockFromSidesetGenerator
sidesets = '101'
new_block_id = 10001
new_block_name = 'secondary_lower'
input = file
[]
[primary]
type = LowerDBlockFromSidesetGenerator
sidesets = '100'
new_block_id = 10000
new_block_name = 'primary_lower'
input = secondary
[]
allow_renumbering = false
[]
[Problem]
kernel_coverage_check = false
material_coverage_check = false
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
block = '1 2'
[]
[disp_x]
order = FIRST
family = LAGRANGE
block = '1 2'
[]
[disp_y]
order = FIRST
family = LAGRANGE
block = '1 2'
[]
[lm]
order = FIRST
family = LAGRANGE
block = 'secondary_lower'
[]
[lm_conduction]
order = FIRST
family = LAGRANGE
block = 'secondary_lower'
[]
[]
[Materials]
[left]
type = ADHeatConductionMaterial
block = 1
thermal_conductivity = 0.01
specific_heat = 1
[]
[right]
type = ADHeatConductionMaterial
block = 2
thermal_conductivity = 0.005
specific_heat = 1
[]
[]
[Kernels]
[hc_displaced_block]
type = ADHeatConduction
variable = temp
use_displaced_mesh = true
block = '1'
[]
[hc_undisplaced_block]
type = ADHeatConduction
variable = temp
use_displaced_mesh = false
block = '2'
[]
[disp_x]
type = Diffusion
variable = disp_x
block = '1 2'
[]
[disp_y]
type = Diffusion
variable = disp_y
block = '1 2'
[]
[]
[UserObjects]
[radiation]
type = GapFluxModelRadiation
temperature = temp
boundary = 100
primary_emissivity = 1.0
secondary_emissivity = 1.0
use_displaced_mesh = true
[]
[conduction]
type = GapFluxModelConduction
temperature = temp
boundary = 100
gap_conductivity = 0.02
use_displaced_mesh = true
[]
[]
[Constraints]
[ced_radiation]
type = ModularGapConductanceConstraint
variable = lm
secondary_variable = temp
use_displaced_mesh = true
primary_boundary = 100
primary_subdomain = 10000
secondary_boundary = 101
secondary_subdomain = 10001
gap_flux_models = 'radiation'
[]
[ced_conduction]
type = ModularGapConductanceConstraint
variable = lm_conduction
secondary_variable = temp
use_displaced_mesh = true
primary_boundary = 100
primary_subdomain = 10000
secondary_boundary = 101
secondary_subdomain = 10001
gap_flux_models = 'conduction'
[]
[]
[BCs]
[left]
type = DirichletBC
variable = temp
boundary = 'left'
value = 100
[]
[right]
type = DirichletBC
variable = temp
boundary = 'right'
value = 0
[]
[left_disp_x]
type = DirichletBC
preset = false
variable = disp_x
boundary = 'left'
value = .1
[]
[right_disp_x]
type = DirichletBC
preset = false
variable = disp_x
boundary = 'right'
value = 0
[]
[bottom_disp_y]
type = DirichletBC
preset = false
variable = disp_y
boundary = 'bottom'
value = 0
[]
[]
[Preconditioning]
[fmp]
type = SMP
full = true
solve_type = 'NEWTON'
[]
[]
[Executioner]
type = Steady
nl_rel_tol = 1e-11
nl_abs_tol = 1.0e-10
[]
[VectorPostprocessors]
[NodalTemperature]
type = NodalValueSampler
sort_by = id
boundary = '100 101'
variable = 'temp'
[]
[]
[Outputs]
exodus = false
csv = true
[]
(modules/combined/test/tests/heat_conduction_xfem/heat.i)
[GlobalParams]
order = FIRST
family = LAGRANGE
[]
[Mesh]
type = GeneratedMesh
dim = 2
nx = 5
ny = 6
xmin = 0.0
xmax = 1.0
ymin = 0.0
ymax = 1.0
elem_type = QUAD4
[]
[XFEM]
geometric_cut_userobjects = 'line_seg_cut_uo'
qrule = volfrac
output_cut_plane = true
[]
[UserObjects]
[./line_seg_cut_uo]
type = LineSegmentCutUserObject
cut_data = '0.5 1.0 0.5 0.5'
time_start_cut = 0.0
time_end_cut = 0.0
[../]
[]
[Variables]
[./temp]
initial_condition = 300.0 # set initial temp to ambient
[../]
[]
[Functions]
[./temp_left]
type = PiecewiseLinear
x = '0 2'
y = '0 0.1'
[../]
[]
[Kernels]
[./heat] # gradient term in heat conduction equation
type = HeatConduction
variable = temp
[../]
[]
[BCs]
# Define boundary conditions
[./left_temp]
type = FunctionDirichletBC
variable = temp
boundary = 3
function = temp_left
[../]
[./right_temp]
type = DirichletBC
variable = temp
boundary = 1
value = 0
[../]
[]
[Materials]
[./fuel_thermal]
type = HeatConductionMaterial
block = 0
temp = temp
thermal_conductivity = 5.0
specific_heat = 1.0
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 8'
line_search = 'none'
l_max_its = 100
l_tol = 8e-3
nl_max_its = 15
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
start_time = 0.0
dt = 1.0
end_time = 2.0
num_steps = 2
[]
[Outputs]
# Define output file(s)
file_base = heat_out
time_step_interval = 1
execute_on = timestep_end
exodus = true
[./console]
type = Console
output_linear = true
[../]
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_mortar/gap_heat_transfer_sphere3D_mortar.i)
sphere_outer_htc = 10 # W/m^2/K
sphere_outer_Tinf = 300 # K
[GlobalParams]
order = SECOND
family = LAGRANGE
[]
[Problem]
kernel_coverage_check = false
material_coverage_check = false
[]
[Mesh]
[file]
type = FileMeshGenerator
file = sphere3D.e
[]
[secondary]
type = LowerDBlockFromSidesetGenerator
sidesets = '2'
new_block_id = 10001
new_block_name = 'secondary_lower'
input = file
[]
[primary]
type = LowerDBlockFromSidesetGenerator
sidesets = '3'
new_block_id = 10000
new_block_name = 'primary_lower'
input = secondary
[]
[]
[Functions]
[temp]
type = PiecewiseLinear
x = '0 1'
y = '100 200'
[]
[]
[Variables]
[temp]
initial_condition = 500
[]
[lm]
order = FIRST
family = LAGRANGE
block = 'secondary_lower'
[]
[]
[AuxVariables]
# [gap_conductance]
# order = CONSTANT
# family = MONOMIAL
# []
[power_density]
block = 'fuel'
initial_condition = 50e3
[]
[]
[Kernels]
[heat_conduction]
type = HeatConduction
variable = temp
block = '1 2'
[]
[heat_source]
type = CoupledForce
variable = temp
block = 'fuel'
v = power_density
[]
[]
# [AuxKernels]
# [gap_cond]
# type = MaterialRealAux
# property = gap_conductance
# variable = gap_conductance
# boundary = 2
# []
# []
[Materials]
[heat1]
type = HeatConductionMaterial
block = '1 2'
specific_heat = 1.0
thermal_conductivity = 34.6
[]
[]
[UserObjects]
[radiation]
type = GapFluxModelRadiation
temperature = temp
boundary = 2
primary_emissivity = 0.0
secondary_emissivity = 0.0
[]
[conduction]
type = GapFluxModelConduction
temperature = temp
boundary = 2
gap_conductivity = 5.0
[]
[]
[Constraints]
[ced]
type = ModularGapConductanceConstraint
variable = lm
secondary_variable = temp
primary_boundary = 3
primary_subdomain = 10000
secondary_boundary = 2
secondary_subdomain = 10001
gap_flux_models = 'radiation conduction'
gap_geometry_type = SPHERE
sphere_origin = '0 0 0'
[]
[]
[BCs]
[RPV_out_BC] # k \nabla T = h (T- T_inf) at RPV outer boundary
type = ConvectiveFluxFunction # (Robin BC)
variable = temp
boundary = '4' # outer RPV
coefficient = ${sphere_outer_htc}
T_infinity = ${sphere_outer_Tinf}
[]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = 'lu superlu_dist'
dt = 1
dtmin = 0.01
end_time = 1
nl_rel_tol = 1e-12
nl_abs_tol = 1e-7
[]
[Outputs]
exodus = true
csv = true
[Console]
type = Console
[]
[]
[Postprocessors]
[temp_left]
type = SideAverageValue
boundary = 2
variable = temp
[]
[temp_right]
type = SideAverageValue
boundary = 3
variable = temp
[]
[flux_left]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 2
diffusivity = thermal_conductivity
[]
[flux_right]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = 3
diffusivity = thermal_conductivity
[]
[ptot]
type = ElementIntegralVariablePostprocessor
variable = power_density
block = 'fuel'
[]
[sphere_convective_out]
type = ConvectiveHeatTransferSideIntegral
T_solid = temp
boundary = '4' # outer RVP
T_fluid = ${sphere_outer_Tinf}
htc = ${sphere_outer_htc}
[]
[heat_balance] # should be equal to 0 upon convergence
type = ParsedPostprocessor
expression = '(sphere_convective_out - ptot) / ptot'
pp_names = 'sphere_convective_out ptot'
[]
[]
[VectorPostprocessors]
[NodalTemperature]
type = NodalValueSampler
sort_by = id
boundary = '2 3'
variable = temp
[]
[]
(modules/heat_transfer/test/tests/heat_conduction/2d_quadrature_gap_heat_transfer/perfect.i)
[Mesh]
file = perfect.e
[]
[Variables]
[./temp]
[../]
[]
[Kernels]
[./hc]
type = HeatConduction
variable = temp
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = temp
boundary = leftleft
value = 300
[../]
[./right]
type = DirichletBC
variable = temp
boundary = rightright
value = 400
[../]
[]
[ThermalContact]
[./left_to_right]
secondary = leftright
quadrature = true
primary = rightleft
emissivity_primary = 0
emissivity_secondary = 0
variable = temp
type = GapHeatTransfer
[../]
[]
[Materials]
[./hcm]
type = HeatConductionMaterial
block = 'left right'
specific_heat = 1
thermal_conductivity = 1
[../]
[]
[Executioner]
type = Steady
solve_type = 'PJFNK'
[]
[Outputs]
exodus = true
[]
(modules/heat_transfer/test/tests/homogenization/heatConduction2D.i)
#
# Homogenization of thermal conductivity according to
# Homogenization of Temperature-Dependent Thermal Conductivity in Composite
# Materials, Journal of Thermophysics and Heat Transfer, Vol. 15, No. 1,
# January-March 2001.
#
# The problem solved here is a simple square with two blocks. The square is
# divided vertically between the blocks. One block has a thermal conductivity
# of 10. The other block's thermal conductivity is 100.
#
# The analytic solution for the homogenized thermal conductivity in the
# horizontal direction is found by summing the thermal resistance, recognizing
# that the blocks are in series:
#
# R = L/A/k = R1 + R2 = L1/A1/k1 + L2/A2/k2 = .5/1/10 + .5/1/100
# Since L = A = 1, k_xx = 18.1818.
#
# The analytic solution for the homogenized thermal conductivity in the vertical
# direction is found by summing reciprocals of resistance, recognizing that
# the blocks are in parallel:
#
# 1/R = k*A/L = 1/R1 + 1/R2 = 10*.5/1 + 100*.5/1
# Since L = A = 1, k_yy = 55.0.
#
[Mesh]
file = heatConduction2D.e
[]
[Variables]
[temp_x]
order = FIRST
family = LAGRANGE
initial_condition = 100
[]
[temp_y]
order = FIRST
family = LAGRANGE
initial_condition = 100
[]
[]
[Kernels]
[heat_x]
type = HeatConduction
variable = temp_x
[]
[heat_y]
type = HeatConduction
variable = temp_y
[]
[heat_rhs_x]
type = HomogenizedHeatConduction
variable = temp_x
component = 0
[]
[heat_rhs_y]
type = HomogenizedHeatConduction
variable = temp_y
component = 1
[]
[]
[BCs]
[Periodic]
[left_right]
primary = 10
secondary = 20
translation = '1 0 0'
[]
[bottom_top]
primary = 30
secondary = 40
translation = '0 1 0'
[]
[]
[fix_center_x]
type = DirichletBC
variable = temp_x
value = 100
boundary = 1
[]
[fix_center_y]
type = DirichletBC
variable = temp_y
value = 100
boundary = 1
[]
[]
[Materials]
[heat1]
type = HeatConductionMaterial
block = 1
specific_heat = 0.116
thermal_conductivity = 10
[]
[heat2]
type = HeatConductionMaterial
block = 2
specific_heat = 0.116
thermal_conductivity = 100
[]
[]
[Executioner]
type = Steady
petsc_options_iname = '-pc_type -ksp_gmres_restart'
petsc_options_value = 'lu 101'
line_search = 'none'
nl_abs_tol = 1e-11
nl_rel_tol = 1e-10
l_max_its = 20
[]
[Outputs]
exodus = true
[]
[Postprocessors]
[k_xx]
type = HomogenizedThermalConductivity
chi = 'temp_x temp_y'
row = 0
col = 0
execute_on = 'initial timestep_end'
[]
[k_yy]
type = HomogenizedThermalConductivity
chi = 'temp_x temp_y'
row = 1
col = 1
execute_on = 'initial timestep_end'
[]
[]
(modules/combined/test/tests/combined_plasticity_temperature/plasticity_temperature_dep_yield.i)
#
# This is a test of the piece-wise linear strain hardening model using the
# small strain formulation. This test exercises the temperature-dependent
# yield stress.
#
# Test procedure:
# 1. The element is pulled to and then beyond the yield stress for a given
# temperature.
# 2. The displacement is then constant while the temperature increases and
# the yield stress decreases. This results in a lower stress with more
# plastic strain.
# 3. The temperature decreases beyond its original value giving a higher
# yield stress. The displacement increases, causing increases stress to
# the new yield stress.
# 4. The temperature and yield stress are constant with increasing
# displacement giving a constant stress and more plastic strain.
#
# Plotting total_strain_yy on the x axis and stress_yy on the y axis shows
# the stress history in a clear way.
#
# s |
# t | *****
# r | *
# e | ***** *
# s | * * *
# s | * *
# |*
# +------------------
# total strain
#
[Mesh]
type = GeneratedMesh
dim = 3
nx = 1
ny = 1
nz = 1
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Modules/TensorMechanics/Master]
[./all]
strain = FINITE
incremental = true
add_variables = true
generate_output = 'stress_yy plastic_strain_xx plastic_strain_yy plastic_strain_zz'
[../]
[]
[Variables]
[./temp]
order = FIRST
family = LAGRANGE
[../]
[]
[Functions]
[./top_pull]
type = PiecewiseLinear
x = '0 1 2 4 5 6'
y = '0 0.025 0.05 0.05 0.06 0.085'
[../]
[./yield]
type = PiecewiseLinear
x = '400 500 600'
y = '6e3 5e3 4e3'
[../]
[./temp]
type = PiecewiseLinear
x = '0 1 2 3 4'
y = '500 500 500 600 400'
[../]
[]
[Kernels]
[./heat]
type = HeatConduction
variable = temp
[../]
[]
[BCs]
[./y_pull_function]
type = FunctionDirichletBC
variable = disp_y
boundary = top
function = top_pull
[../]
[./x_bot]
type = DirichletBC
variable = disp_x
boundary = left
value = 0.0
[../]
[./y_bot]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./z_bot]
type = DirichletBC
variable = disp_z
boundary = back
value = 0.0
[../]
[./temp]
type = FunctionDirichletBC
variable = temp
function = temp
boundary = left
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 0
youngs_modulus = 2.0e5
poissons_ratio = 0.3
[../]
[./creep_plas]
type = ComputeMultipleInelasticStress
tangent_operator = elastic
block = 0
inelastic_models = 'plasticity'
max_iterations = 50
absolute_tolerance = 1e-05
[../]
[./plasticity]
type = IsotropicPlasticityStressUpdate
block = 0
hardening_constant = 0
yield_stress_function = yield
temperature = temp
[../]
[./heat_conduction]
type = HeatConductionMaterial
block = 0
specific_heat = 1
thermal_conductivity = 1
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type -pc_hypre_boomeramg_max_iter'
petsc_options_value = '201 hypre boomeramg 4'
line_search = 'none'
l_max_its = 100
nl_max_its = 100
nl_rel_tol = 1e-12
nl_abs_tol = 1e-10
l_tol = 1e-9
start_time = 0.0
end_time = 6
dt = 0.1
[]
[Outputs]
exodus = true
[]
(modules/combined/test/tests/additive_manufacturing/check_stateful_properties.i)
[Problem]
kernel_coverage_check = false
material_coverage_check = false
[]
[Mesh]
[gen]
type = GeneratedMeshGenerator
dim = 3
xmin = 0
xmax = 10
ymin = 0
ymax = 10
zmin = 0
zmax = 0.5
nx = 20
ny = 20
nz = 1
[]
[left_domain]
input = gen
type = SubdomainBoundingBoxGenerator
bottom_left = '0 0 0'
top_right = '5 10 0.5'
block_id = 1
[]
[right_domain]
input = left_domain
type = SubdomainBoundingBoxGenerator
bottom_left = '5 0 0'
top_right = '10 10 0.5'
block_id = 2
[]
[sidesets]
input = right_domain
type = SideSetsAroundSubdomainGenerator
normal = '1 0 0'
block = 1
new_boundary = 'moving_interface'
[]
[]
[Variables]
[temp]
initial_condition = 300
block = '1'
[]
[]
# Output aux variables to check if stateful properties
# are initialized properly for newly added elements
[AuxVariables]
[density_aux]
order = CONSTANT
family = MONOMIAL
block = '1'
[]
[specific_heat_aux]
order = CONSTANT
family = MONOMIAL
block = '1'
[]
[thermal_conductivity_aux]
order = CONSTANT
family = MONOMIAL
block = '1'
[]
[]
[Kernels]
[null]
type = NullKernel
variable = temp
jacobian_fill = 1e-5
[]
[]
[AuxKernels]
[density]
type = ADMaterialRealAux
property = density
variable = density_aux
block = 1
[]
[specific_heat]
type = ADMaterialRealAux
property = specific_heat
variable = specific_heat_aux
block = 1
[]
[thermal_conductivity]
type = ADMaterialRealAux
property = thermal_conductivity
variable = thermal_conductivity_aux
block = 1
[]
[]
[Functions]
[fx]
type = ParsedFunction
expression = '5.25'
[]
[fy]
type = ParsedFunction
expression = '2.5*t'
[]
[fz]
type = ParsedFunction
expression = '0.25'
[]
[]
[Materials]
[density]
type = ADDensity
density = 4.43e-6
block = '1'
[]
[heat]
type = ADHeatConductionMaterial
specific_heat = 600
thermal_conductivity = 10e-3
block = '1'
[]
[volumetric_heat]
type = ADGenericConstantMaterial
prop_names = 'volumetric_heat'
prop_values = 100
block = '1'
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
automatic_scaling = true
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
line_search = 'none'
l_max_its = 10
nl_max_its = 20
nl_rel_tol = 1e-4
start_time = 0.0
end_time = 1.0
dt = 1e-1
dtmin = 1e-4
[]
[UserObjects]
[activated_elem_uo]
type = ActivateElementsByPath
execute_on = timestep_begin
function_x = fx
function_y = fy
function_z = fz
active_subdomain_id = 1
expand_boundary_name = 'moving_interface'
[]
[]
[Outputs]
exodus = true
[]
(modules/combined/test/tests/heat_convection/heat_convection_3d_tf_test.i)
# Test cases for convective boundary conditions.
# Input file for htc_3dtest0
# TKLarson
# 11/02/11
# Revision 0
#
# Goals of this test are:
# 1) show that the 'fluid' temperature for convective boundary condition
# is behaving as expected/desired
# 2) show that expected results ensue from application of convective boundary conditions
# Convective boundary condition:
# q = h*A*(Tw - Tf)
# where
# q - heat transfer rate (w)
# h - heat transfer coefficient (w/m^2-K)
# A - surface area (m^2)
# Tw - surface temperature (K)
# Tf - fluid temperature adjacent to the surface (K)
# The heat transfer coefficient (h) is input as a variable called 'rate'
# Tf is a two valued function specified by 'initial' and 'final' along with a variable
# called 'duration,' the length of time in seconds that it takes initial to linearly ramp
# to 'final.'
# The mesh for this test case is concocted from an ASTM standard for the so-called Brazillian Cylinder test
# (ASTM International, Standard Test Method for Splitting Tensile Strength of Cylindrical Concrete
# Specimens, C 496/C 496M-04, 2004). I turned a cylinder model into a rectangular parallelpiped,
# because I already had the cylinder model.
# The model is 3-d xyz coordinates.
#
# Brazillian Parallelpiped sample dimensions:
# z = 10.3 cm, 0.103 m, (4 in)
# y = 5.08 cm, 0.0508 m, (2 in)
# x = 5.08 cm, 0.0508 m, (2 in)
# Material properties are:
# density = 2405.28 km/m^3
# specific heat = 826.4 J/kg-K
# thermal conductivity 1.937 w/m-K
# alpha (thermal conductivity/(density*specific heat) is then 9.74e-7 m^2/s
#
# Initial parallelpiped temperature is room temperature 294.26 K (70 F)
# The initial fluid temperature is room temperature. We will ramp it to 477.6 K (400 F) in 10 minutes.
# We will use a very large h (1000000) to make the surface temperature mimick the fluid temperature.
# What we expect for this problem:
# 1) Use of h = 1000000 should cause the parallelpiped surface temperature to track the fluid temperature
# 2) The fluid temperature should rise from initial (294.26 K) to final (477.6 K) in 600 s.
# 3) 1) and 2) should prove that the Tf boundary condition is ramping as desired.
# Note, we do the above because there is no way to plot a variable that is not on a mesh node!
[Mesh] # Mesh Start
# 5cm x 5cm x 10cm parallelpiped not so detailed mesh, 4 elements each end, 8 elements each long face
# Only one block (Block 1), all concrete
# Sideset definitions:
# 1 - xy plane at z=0,
# 2 - xy plane at z=-0.103,
# 3 - xz plane at y=0,
# 4 - yz plane at x=0,
# 5 - xz plane at y=0.0508,
# 6 - yz plane at x=0.0508
file = heat_convection_3d_mesh.e
#
[] # Mesh END
[Variables] # Variables Start
[./temp]
order = FIRST
family = LAGRANGE
initial_condition = 294.26 # Initial parallelpiped temperature
[../]
[] # Variables END
[Kernels] # Kernels Start
[./heat]
# type = HeatConductionRZ
type = HeatConduction
variable = temp
[../]
[./heat_ie]
# type = HeatConductionTimeDerivativeRZ
type = HeatConductionTimeDerivative
variable = temp
[../]
[] # Kernels END
[BCs] # Boundary Conditions Start
# Heat transfer coefficient on outer parallelpiped radius and ends
[./convective_clad_surface] # Convective Start
# type = ConvectiveFluxRZ # Convective flux, e.g. q'' = h*(Tw - Tf)
type = ConvectiveFluxBC # Convective flux, e.g. q'' = h*(Tw - Tf)
boundary = '1 2 3 4 5 6' # BC applied on top, along length, and bottom
variable = temp
rate = 1000000. # convective heat transfer coefficient (w/m^2-K)[176000 "]
# # the above h is ~ infinity for present purposes
initial = 294.26 # initial ambient (lab or oven) temperature (K)
final = 477.6 # final ambient (lab or oven) temperature (K)
duration = 600. # length of time in seconds that it takes the ambient
# temperature to ramp from initial to final
[../] # Convective End
[] # BCs END
[Materials] # Materials Start
[./thermal]
type = HeatConductionMaterial
block = 1
specific_heat = 826.4
thermal_conductivity = 1.937 # this makes alpha 9.74e-7 m^2/s
[../]
[./density]
type = Density
block = 1
density = 2405.28
[../]
[] # Materials END
[Executioner] # Executioner Start
type = Transient
# type = Steady
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew '
petsc_options_iname = '-ksp_gmres_restart -pc_type -pc_hypre_type'
petsc_options_value = '70 hypre boomeramg'
l_max_its = 60
nl_rel_tol = 1e-8
nl_abs_tol = 1e-10
l_tol = 1e-5
start_time = 0.0
dt = 60.
num_steps = 20 # Total run time 1200 s
[] # Executioner END
[Outputs] # Output Start
# Output Start
file_base = out_3d_tf
exodus = true
[] # Output END
# # Input file END
(modules/heat_transfer/test/tests/heat_conduction/2d_quadrature_gap_heat_transfer/second_order.i)
[Mesh]
file = nonmatching.e
second_order = true
[]
[Variables]
[./temp]
order = SECOND
[../]
[]
[Kernels]
[./hc]
type = HeatConduction
variable = temp
[../]
[]
[BCs]
[./left]
type = DirichletBC
variable = temp
boundary = leftleft
value = 1000
[../]
[./right]
type = DirichletBC
variable = temp
boundary = rightright
value = 400
[../]
[]
[ThermalContact]
[./left_to_right]
emissivity_primary = 0
emissivity_secondary = 0
secondary = leftright
quadrature = true
primary = rightleft
variable = temp
type = GapHeatTransfer
order = SECOND
[../]
[]
[Materials]
[./hcm]
type = HeatConductionMaterial
block = 'left right'
specific_heat = 1
thermal_conductivity = 1
[../]
[]
[Postprocessors]
[./left]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = leftright
diffusivity = thermal_conductivity
[../]
[./right]
type = SideDiffusiveFluxIntegral
variable = temp
boundary = rightleft
diffusivity = thermal_conductivity
[../]
[]
[Executioner]
type = Steady
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
exodus = true
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_balance/large_gap_heat_transfer_test_cylinder.i)
rpv_core_gap_size = 0.15
core_outer_radius = 2
rpv_inner_radius = ${fparse 2 + rpv_core_gap_size}
rpv_outer_radius = ${fparse 2.5 + rpv_core_gap_size}
rpv_outer_htc = 10 # W/m^2/K
rpv_outer_Tinf = 300 # K
core_blocks = '1'
rpv_blocks = '3'
[Mesh]
[core_gap_rpv]
type = ConcentricCircleMeshGenerator
num_sectors = 10
radii = '${core_outer_radius} ${rpv_inner_radius} ${rpv_outer_radius}'
rings = '2 1 2'
has_outer_square = false
preserve_volumes = true
portion = full
[]
[rename_core_bdy]
type = SideSetsBetweenSubdomainsGenerator
input = core_gap_rpv
primary_block = 1
paired_block = 2
new_boundary = 'core_outer'
[]
[rename_inner_rpv_bdy]
type = SideSetsBetweenSubdomainsGenerator
input = rename_core_bdy
primary_block = 3
paired_block = 2
new_boundary = 'rpv_inner'
[]
[2d_mesh]
type = BlockDeletionGenerator
input = rename_inner_rpv_bdy
block = 2
[]
[]
[Variables]
[Tsolid]
initial_condition = 500
[]
[]
[Kernels]
[heat_source]
type = CoupledForce
variable = Tsolid
block = '${core_blocks}'
v = power_density
[]
[heat_conduction]
type = HeatConduction
variable = Tsolid
[]
[]
[BCs]
[RPV_out_BC] # k \nabla T = h (T- T_inf) at RPV outer boundary
type = ConvectiveFluxFunction # (Robin BC)
variable = Tsolid
boundary = 'outer' # outer RPV
coefficient = ${rpv_outer_htc}
T_infinity = ${rpv_outer_Tinf}
[]
[]
[ThermalContact]
[RPV_gap]
type = GapHeatTransfer
gap_geometry_type = 'CYLINDER'
emissivity_primary = 0.8
emissivity_secondary = 0.8
variable = Tsolid
primary = 'core_outer'
secondary = 'rpv_inner'
gap_conductivity = 0.1
quadrature = true
cylinder_axis_point_1 = '0 0 0'
cylinder_axis_point_2 = '0 0 5'
[]
[]
[AuxVariables]
[power_density]
block = '${core_blocks}'
initial_condition = 50e3
[]
[]
[Materials]
[simple_mat]
type = HeatConductionMaterial
thermal_conductivity = 34.6 # W/m/K
[]
[]
[Postprocessors]
[Tcore_avg]
type = ElementAverageValue
variable = Tsolid
block = '${core_blocks}'
[]
[Tcore_max]
type = ElementExtremeValue
value_type = max
variable = Tsolid
block = '${core_blocks}'
[]
[Tcore_min]
type = ElementExtremeValue
value_type = min
variable = Tsolid
block = '${core_blocks}'
[]
[Trpv_avg]
type = ElementAverageValue
variable = Tsolid
block = '${rpv_blocks}'
[]
[Trpv_max]
type = ElementExtremeValue
value_type = max
variable = Tsolid
block = '${rpv_blocks}'
[]
[Trpv_min]
type = ElementExtremeValue
value_type = min
variable = Tsolid
block = '${rpv_blocks}'
[]
[ptot]
type = ElementIntegralVariablePostprocessor
variable = power_density
block = '${core_blocks}'
[]
[rpv_convective_out]
type = ConvectiveHeatTransferSideIntegral
T_solid = Tsolid
boundary = 'outer' # outer RVP
T_fluid = ${rpv_outer_Tinf}
htc = ${rpv_outer_htc}
[]
[heat_balance] # should be equal to 0 upon convergence
type = ParsedPostprocessor
expression = '(rpv_convective_out - ptot) / ptot'
pp_names = 'rpv_convective_out ptot'
[]
[]
[Executioner]
type = Steady
automatic_scaling = true
compute_scaling_once = false
petsc_options_iname = '-pc_type -pc_hypre_type -ksp_gmres_restart '
petsc_options_value = 'hypre boomeramg 100'
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
l_max_its = 100
[Quadrature]
side_order = seventh
[]
line_search = none
[]
[Outputs]
exodus = false
csv = true
[]
(modules/combined/test/tests/reference_residual/reference_residual_perfgraph.i)
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
[]
[Mesh]
type = GeneratedMesh
dim = 3
nx = 4
ny = 4
nz = 4
[]
[Problem]
type = ReferenceResidualProblem
extra_tag_vectors = 'ref'
reference_vector = 'ref'
[]
[Variables]
[./disp_x]
order = FIRST
family = LAGRANGE
[../]
[./disp_y]
order = FIRST
family = LAGRANGE
[../]
[./disp_z]
order = FIRST
family = LAGRANGE
[../]
[./temp]
order = FIRST
family = LAGRANGE
[../]
[]
[AuxVariables]
[./saved_x]
[../]
[./saved_y]
[../]
[./saved_z]
[../]
[./saved_t]
[../]
[]
[Modules/TensorMechanics/Master]
[./all]
volumetric_locking_correction = true
incremental = true
save_in = 'saved_x saved_y saved_z'
eigenstrain_names = thermal_expansion
strain = FINITE
decomposition_method = EigenSolution
extra_vector_tags = 'ref'
temperature = temp
[../]
[]
[Kernels]
[./heat]
type = HeatConduction
variable = temp
save_in = saved_t
extra_vector_tags = 'ref'
[../]
[]
[Functions]
[./pull]
type = PiecewiseLinear
x = '0 1 2'
y = '0 1 1'
scale_factor = 0.1
[../]
[]
[BCs]
[./bottom_x]
type = DirichletBC
variable = disp_x
boundary = bottom
value = 0.0
[../]
[./bottom_y]
type = DirichletBC
variable = disp_y
boundary = bottom
value = 0.0
[../]
[./bottom_z]
type = DirichletBC
variable = disp_z
boundary = bottom
value = 0.0
[../]
[./top_x]
type = DirichletBC
variable = disp_x
boundary = top
value = 0.0
[../]
[./top_y]
type = FunctionDirichletBC
variable = disp_y
boundary = top
function = pull
[../]
[./top_z]
type = DirichletBC
variable = disp_z
boundary = top
value = 0.0
[../]
[./bottom_temp]
type = DirichletBC
variable = temp
boundary = bottom
value = 10.0
[../]
[./top_temp]
type = DirichletBC
variable = temp
boundary = top
value = 20.0
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = 0
youngs_modulus = 1.0
poissons_ratio = 0.3
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
block = 0
[../]
[./thermal_expansion]
type = ComputeThermalExpansionEigenstrain
block = 0
eigenstrain_name = thermal_expansion
temperature = temp
thermal_expansion_coeff = 1e-5
stress_free_temperature = 0.0
[../]
[./heat1]
type = HeatConductionMaterial
block = 0
specific_heat = 1.0
thermal_conductivity = 1e-3 #Tuned to give temperature reference resid close to that of solidmech
[../]
[./density]
type = Density
block = 0
density = 1.0
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
nl_rel_tol = 1e-10
l_tol = 1e-3
l_max_its = 100
dt = 1.0
end_time = 2.0
[]
[Postprocessors]
[./res_calls]
type = PerfGraphData
section_name = "ReferenceResidualProblem::computeResidualInternal"
data_type = calls
[../]
[./elapsed]
type = PerfGraphData
section_name = "Root"
data_type = total
[../]
[]
[Outputs]
csv = true
[]
(modules/heat_transfer/test/tests/transient_heat/transient_heat.i)
[Mesh]
file = cube.e
[]
[Variables]
[./u]
order = FIRST
family = LAGRANGE
[../]
[]
[Kernels]
[./heat]
type = HeatConduction
variable = u
[../]
[./ie]
type = SpecificHeatConductionTimeDerivative
variable = u
[../]
[]
[BCs]
[./bottom]
type = DirichletBC
variable = u
boundary = 1
value = 0.0
[../]
[./top]
type = DirichletBC
variable = u
boundary = 2
value = 1.0
[../]
[]
[Materials]
[./constant]
type = HeatConductionMaterial
block = 1
thermal_conductivity = 1
specific_heat = 1
[../]
[./density]
type = GenericConstantMaterial
block = 1
prop_names = density
prop_values = 1
[../]
[]
[Executioner]
type = Transient
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
start_time = 0.0
num_steps = 5
dt = .1
[]
[Outputs]
exodus = true
[]
(modules/heat_transfer/test/tests/convective_flux_function/convective_flux_function.i)
# This is a test of the ConvectiveFluxFunction BC.
# There is a single 1x1 element with a prescribed temperature
# on the left side and a convective flux BC on the right side.
# The temperature on the left is 100, and the far-field temp is 200.
# The conductance of the body (conductivity * length) is 10
#
# If the conductance in the BC is also 10, the temperature on the
# right side of the solid element should be 150 because half of the
# temperature drop should occur over the body and half in the BC.
#
# The integrated flux is deltaT * conductance, or -50 * 10 = -500.
# The negative sign indicates that heat is going into the body.
#
# The conductance is defined multiple ways using this input, and
# as long as it evaluates to 10, the result described above will
# be obtained.
[Mesh]
type = GeneratedMesh
dim = 2
nx = 1
ny = 1
[]
[Problem]
extra_tag_vectors = 'bcs'
[]
[Variables]
[temp]
initial_condition = 100.0
[]
[]
[AuxVariables]
[flux]
[]
[]
[AuxKernels]
[flux]
type = TagVectorAux
variable = flux
v = temp
vector_tag = 'bcs'
execute_on = timestep_end
[]
[]
[Kernels]
[heat_conduction]
type = HeatConduction
variable = temp
[]
[]
[Materials]
[thermal]
type = HeatConductionMaterial
thermal_conductivity = 10.0
[]
[]
[BCs]
[left]
type = DirichletBC
variable = temp
boundary = left
value = 100.0
[]
[right]
type = ConvectiveFluxFunction
variable = temp
boundary = right
T_infinity = 200.0
coefficient = 10.0 #This will behave as described in the header of this file if this evaluates to 10
extra_vector_tags = 'bcs'
[]
[]
[Postprocessors]
[integrated_flux]
type = NodalSum
variable = flux
boundary = right
[]
[]
[Executioner]
type = Transient
start_time = 0.0
end_time = 1.0
dt = 1.0
nl_rel_tol=1e-12
[]
[Outputs]
csv = true
[]
(modules/heat_transfer/test/tests/recover/ad_recover.i)
[GlobalParams]
order = SECOND
family = LAGRANGE
[]
[Problem]
coord_type = RZ
[]
[Mesh]
file = recover_in.e
[]
[Variables]
[./temp]
initial_condition = 580.0
[../]
[]
[AuxVariables]
[./gap_cond]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./heat]
type = ADHeatConduction
variable = temp
[../]
[./heat_source]
type = ADMatHeatSource
material_property = volumetric_heat
variable = temp
scalar = 1e3
block = pellet_type_1
[../]
[]
[ThermalContact]
[./thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 5
secondary = 10
emissivity_primary = 0
emissivity_secondary = 0
quadrature = true
[../]
[]
[BCs]
[./outside]
type = DirichletBC
value = 580
boundary = '1 2 3'
variable = temp
[../]
[./edge]
type = DirichletBC
value = 700
boundary = 10
variable = temp
[../]
[]
[Materials]
[./volumetric_heat]
type = ADGenericFunctionMaterial
prop_names = 'volumetric_heat'
prop_values = 't'
[../]
[./thermal_3]
type = ADHeatConductionMaterial
block = 3
thermal_conductivity = 5
specific_heat = 12
[../]
[./thermal_1]
type = ADHeatConductionMaterial
block = 1
thermal_conductivity = 16.0
specific_heat = 330.0
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
petsc_options = '-snes_ksp_ew'
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package'
petsc_options_value = ' lu superlu_dist'
nl_rel_tol = 1e-9
nl_abs_tol = 1e-11
start_time = -200
n_startup_steps = 1
end_time = 1.02e5
num_steps = 10
dtmax = 2e6
dtmin = 1
[./TimeStepper]
type = IterationAdaptiveDT
dt = 2.0e2
optimal_iterations = 15
iteration_window = 2
[../]
[./Quadrature]
order = FIFTH
side_order = SEVENTH
[../]
[]
[Postprocessors]
[./ave_temp_interior]
type = SideAverageValue
boundary = 9
variable = temp
execute_on = 'initial linear'
[../]
[./avg_clad_temp]
type = SideAverageValue
boundary = 7
variable = temp
execute_on = 'initial timestep_end'
[../]
[./flux_from_clad]
type = ADSideDiffusiveFluxIntegral
variable = temp
boundary = 5
diffusivity = thermal_conductivity
[../]
[./_dt]
type = TimestepSize
[../]
[]
[Outputs]
exodus = true
[]
(modules/combined/test/tests/gap_heat_transfer_mortar/finite-2d-rz/finite.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD4
order = FIRST
name = 'finite'
[Mesh]
patch_size = 80
patch_update_strategy = auto
coord_type = RZ
[plank]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 0.6
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[]
[plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[]
[block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.61
xmax = 1.21
ymin = 7.7
ymax = 8.5
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[]
[block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[]
[combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[]
[block_rename]
type = RenameBlockGenerator
input = combined
old_block = '1 2'
new_block = 'plank block'
[]
[secondary]
input = block_rename
type = LowerDBlockFromSidesetGenerator
sidesets = 'block_left'
new_block_id = '30'
new_block_name = 'frictionless_secondary_subdomain'
[]
[primary]
input = secondary
type = LowerDBlockFromSidesetGenerator
sidesets = 'plank_right'
new_block_id = '20'
new_block_name = 'frictionless_primary_subdomain'
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Variables]
[disp_x]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[]
[disp_y]
order = ${order}
block = 'plank block'
scaling = ${fparse 2.0 / (E_plank + E_block)}
[]
[temp]
order = ${order}
block = 'plank block'
scaling = 1e-1
[]
[thermal_lm]
order = ${order}
block = 'frictionless_secondary_subdomain'
scaling = 1e-7
[]
[frictionless_normal_lm]
order = ${order}
block = 'frictionless_secondary_subdomain'
use_dual = true
[]
[]
[Modules/TensorMechanics/Master]
[action]
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx strain_yy strain_zz'
block = 'plank block'
use_automatic_differentiation = true
strain = FINITE
[]
[]
[Kernels]
[hc]
type = ADHeatConduction
variable = temp
use_displaced_mesh = true
block = 'plank block'
[]
[]
[UserObjects]
[weighted_gap_uo]
type = LMWeightedGapUserObject
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
lm_variable = frictionless_normal_lm
disp_x = disp_x
disp_y = disp_y
[]
[]
[Constraints]
[weighted_gap_lm]
type = ComputeWeightedGapLMMechanicalContact
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
variable = frictionless_normal_lm
disp_x = disp_x
disp_y = disp_y
use_displaced_mesh = true
weighted_gap_uo = weighted_gap_uo
[]
[normal_x]
type = NormalMortarMechanicalContact
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
variable = frictionless_normal_lm
secondary_variable = disp_x
component = x
use_displaced_mesh = true
compute_lm_residuals = false
weighted_gap_uo = weighted_gap_uo
[]
[normal_y]
type = NormalMortarMechanicalContact
primary_boundary = plank_right
secondary_boundary = block_left
primary_subdomain = frictionless_primary_subdomain
secondary_subdomain = frictionless_secondary_subdomain
variable = frictionless_normal_lm
secondary_variable = disp_y
component = y
use_displaced_mesh = true
compute_lm_residuals = false
weighted_gap_uo = weighted_gap_uo
[]
[thermal_contact]
type = GapConductanceConstraint
variable = thermal_lm
secondary_variable = temp
k = 1
use_displaced_mesh = true
primary_boundary = plank_right
primary_subdomain = frictionless_primary_subdomain
secondary_boundary = block_left
secondary_subdomain = frictionless_secondary_subdomain
displacements = 'disp_x disp_y'
[]
[]
[BCs]
[left_temp]
type = DirichletBC
variable = temp
boundary = 'plank_left'
value = 400
[]
[right_temp]
type = DirichletBC
variable = temp
boundary = 'block_right'
value = 300
[]
[left_x]
type = DirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
[]
[left_y]
type = DirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
[]
[right_x]
type = ADFunctionDirichletBC
variable = disp_x
boundary = block_right
function = '-0.04*sin(4*(t+1.5))+0.02'
preset = false
[]
[right_y]
type = ADFunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
preset = false
[]
[]
[Materials]
[plank]
type = ADComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[]
[block]
type = ADComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[]
[stress]
type = ADComputeFiniteStrainElasticStress
block = 'plank block'
[]
[heat_plank]
type = ADHeatConductionMaterial
block = plank
thermal_conductivity = 2
specific_heat = 1
[]
[heat_block]
type = ADHeatConductionMaterial
block = block
thermal_conductivity = 1
specific_heat = 1
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type -pc_factor_shift_type -pc_factor_shift_amount -snes_max_it'
petsc_options_value = 'lu NONZERO 1e-15 20'
end_time = 13.5
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'none'
[]
[Postprocessors]
[nl_its]
type = NumNonlinearIterations
[]
[total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[]
[l_its]
type = NumLinearIterations
[]
[total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[]
[contact]
type = ContactDOFSetSize
variable = frictionless_normal_lm
subdomain = frictionless_secondary_subdomain
[]
[avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[]
[avg_temp]
type = ElementAverageValue
variable = temp
block = 'block'
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[]
[avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[]
[max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[]
[min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[]
[]
[Outputs]
file_base = ${name}
[comp]
type = CSV
show = 'contact avg_temp'
[]
[out]
type = CSV
file_base = '${name}_out'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_mortar_action/modular_gap_heat_transfer_mortar_displaced_radiation_conduction_verbose.i)
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 2blk-gap.e
[]
[secondary]
type = LowerDBlockFromSidesetGenerator
sidesets = '101'
new_block_id = 10001
new_block_name = 'secondary_lower'
input = file
[]
[primary]
type = LowerDBlockFromSidesetGenerator
sidesets = '100'
new_block_id = 10000
new_block_name = 'primary_lower'
input = secondary
[]
allow_renumbering = false
[]
[Problem]
kernel_coverage_check = false
material_coverage_check = false
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
block = '1 2'
[]
[disp_x]
order = FIRST
family = LAGRANGE
block = '1 2'
[]
[disp_y]
order = FIRST
family = LAGRANGE
block = '1 2'
[]
[lm]
order = FIRST
family = LAGRANGE
block = 'secondary_lower'
[]
[]
[Materials]
[left]
type = ADHeatConductionMaterial
block = 1
thermal_conductivity = 0.01
specific_heat = 1
[]
[right]
type = ADHeatConductionMaterial
block = 2
thermal_conductivity = 0.005
specific_heat = 1
[]
[]
[Kernels]
[hc_displaced_block]
type = ADHeatConduction
variable = temp
use_displaced_mesh = true
block = '1'
[]
[hc_undisplaced_block]
type = ADHeatConduction
variable = temp
use_displaced_mesh = false
block = '2'
[]
[disp_x]
type = Diffusion
variable = disp_x
block = '1 2'
[]
[disp_y]
type = Diffusion
variable = disp_y
block = '1 2'
[]
[]
[UserObjects]
[radiation]
type = GapFluxModelRadiation
temperature = temp
boundary = 100
primary_emissivity = 1.0
secondary_emissivity = 1.0
use_displaced_mesh = true
[]
[conduction]
type = GapFluxModelConduction
temperature = temp
boundary = 100
gap_conductivity = 0.02
use_displaced_mesh = true
[]
[]
[Constraints]
[ced]
type = ModularGapConductanceConstraint
variable = lm
secondary_variable = temp
use_displaced_mesh = true
primary_boundary = 100
primary_subdomain = 10000
secondary_boundary = 101
secondary_subdomain = 10001
correct_edge_dropping = true
gap_flux_models = 'radiation conduction'
[]
[]
[BCs]
[left]
type = DirichletBC
variable = temp
boundary = 'left'
value = 100
[]
[right]
type = DirichletBC
variable = temp
boundary = 'right'
value = 0
[]
[left_disp_x]
type = DirichletBC
preset = false
variable = disp_x
boundary = 'left'
value = .1
[]
[right_disp_x]
type = DirichletBC
preset = false
variable = disp_x
boundary = 'right'
value = 0
[]
[bottom_disp_y]
type = DirichletBC
preset = false
variable = disp_y
boundary = 'bottom'
value = 0
[]
[]
[Preconditioning]
[fmp]
type = SMP
full = true
solve_type = 'NEWTON'
[]
[]
[Executioner]
type = Steady
nl_rel_tol = 1e-11
nl_abs_tol = 1.0e-10
[]
[VectorPostprocessors]
[NodalTemperature]
type = NodalValueSampler
sort_by = id
boundary = '100 101'
variable = 'temp'
[]
[]
[Outputs]
csv = true
[exodus]
type = Exodus
show = 'temp'
[]
[]
(modules/combined/test/tests/gap_heat_transfer_mortar/finite-2d-rz/finite_action_al.i)
E_block = 1e7
E_plank = 1e7
elem = QUAD4
order = FIRST
name = 'finite_al'
[Mesh]
patch_size = 80
patch_update_strategy = auto
coord_type = RZ
[plank]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 0.6
ymin = -10
ymax = 10
nx = 2
ny = 67
elem_type = ${elem}
boundary_name_prefix = plank
[]
[plank_id]
type = SubdomainIDGenerator
input = plank
subdomain_id = 1
[]
[block]
type = GeneratedMeshGenerator
dim = 2
xmin = 0.61
xmax = 1.21
ymin = 7.7
ymax = 8.5
nx = 3
ny = 4
elem_type = ${elem}
boundary_name_prefix = block
boundary_id_offset = 10
[]
[block_id]
type = SubdomainIDGenerator
input = block
subdomain_id = 2
[]
[combined]
type = MeshCollectionGenerator
inputs = 'plank_id block_id'
[]
[block_rename]
type = RenameBlockGenerator
input = combined
old_block = '1 2'
new_block = 'plank block'
[]
[]
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Problem]
type = AugmentedLagrangianContactFEProblem
maximum_lagrangian_update_iterations = 20
[]
[Variables]
[disp_x]
order = ${order}
block = 'plank block'
scaling = '${fparse 2.0 / (E_plank + E_block)}'
[]
[disp_y]
order = ${order}
block = 'plank block'
scaling = '${fparse 2.0 / (E_plank + E_block)}'
[]
[temp]
order = ${order}
block = 'plank block'
scaling = 1e-1
[]
[]
[AuxVariables]
[penalty_normal_pressure]
[]
[]
[AuxKernels]
[penalty_normal_pressure]
type = PenaltyMortarUserObjectAux
variable = penalty_normal_pressure
user_object = penalty_weightedgap_object_al_frictionless
contact_quantity = normal_pressure
boundary = 'block_left'
[]
[]
[Modules/TensorMechanics/Master]
[action]
generate_output = 'stress_xx stress_yy stress_zz vonmises_stress hydrostatic_stress strain_xx '
'strain_yy strain_zz'
block = 'plank block'
use_automatic_differentiation = true
strain = FINITE
[]
[]
[Kernels]
[hc]
type = ADHeatConduction
variable = temp
use_displaced_mesh = true
block = 'plank block'
[]
[]
[Contact]
[al_frictionless]
formulation = mortar_penalty
model = frictionless
primary = plank_right
secondary = block_left
penalty = 5e6
al_penetration_tolerance = 1e-7
penalty_multiplier = 50
[]
[]
[MortarGapHeatTransfer]
[mortar_heat_transfer]
temperature = temp
use_displaced_mesh = true
gap_flux_options = conduction
gap_conductivity = 1
boundary = plank_right
primary_boundary = plank_right
primary_subdomain = al_frictionless_primary_subdomain
secondary_boundary = block_left
secondary_subdomain = al_frictionless_secondary_subdomain
thermal_lm_scaling = 1e-7
gap_geometry_type = PLATE
[]
[]
[BCs]
[left_temp]
type = DirichletBC
variable = temp
boundary = 'plank_left'
value = 400
[]
[right_temp]
type = DirichletBC
variable = temp
boundary = 'block_right'
value = 300
[]
[left_x]
type = DirichletBC
variable = disp_x
boundary = plank_left
value = 0.0
[]
[left_y]
type = DirichletBC
variable = disp_y
boundary = plank_bottom
value = 0.0
[]
[right_x]
type = ADFunctionDirichletBC
variable = disp_x
boundary = block_right
function = '-0.04*sin(4*(t+1.5))+0.02'
preset = false
[]
[right_y]
type = ADFunctionDirichletBC
variable = disp_y
boundary = block_right
function = '-t'
preset = false
[]
[]
[Materials]
[plank]
type = ADComputeIsotropicElasticityTensor
block = 'plank'
poissons_ratio = 0.3
youngs_modulus = ${E_plank}
[]
[block]
type = ADComputeIsotropicElasticityTensor
block = 'block'
poissons_ratio = 0.3
youngs_modulus = ${E_block}
[]
[stress]
type = ADComputeFiniteStrainElasticStress
block = 'plank block'
[]
[heat_plank]
type = ADHeatConductionMaterial
block = plank
thermal_conductivity = 2
specific_heat = 1
[]
[heat_block]
type = ADHeatConductionMaterial
block = block
thermal_conductivity = 1
specific_heat = 1
[]
[]
[Executioner]
type = Transient
solve_type = 'NEWTON'
petsc_options = '-snes_converged_reason -ksp_converged_reason'
petsc_options_iname = '-pc_type'
petsc_options_value = 'lu'
end_time = 7.5
dt = 0.1
dtmin = 0.1
timestep_tolerance = 1e-6
line_search = 'none'
[]
[Postprocessors]
[nl_its]
type = NumNonlinearIterations
[]
[total_nl_its]
type = CumulativeValuePostprocessor
postprocessor = nl_its
[]
[l_its]
type = NumLinearIterations
[]
[total_l_its]
type = CumulativeValuePostprocessor
postprocessor = l_its
[]
[avg_hydro]
type = ElementAverageValue
variable = hydrostatic_stress
block = 'block'
[]
[avg_temp]
type = ElementAverageValue
variable = temp
block = 'block'
[]
[max_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
[]
[min_hydro]
type = ElementExtremeValue
variable = hydrostatic_stress
block = 'block'
value_type = min
[]
[avg_vonmises]
type = ElementAverageValue
variable = vonmises_stress
block = 'block'
[]
[max_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
[]
[min_vonmises]
type = ElementExtremeValue
variable = vonmises_stress
block = 'block'
value_type = min
[]
[]
[Outputs]
file_base = ${name}
exodus = true
[comp]
type = CSV
show = 'avg_temp'
[]
[out]
type = CSV
file_base = '${name}_out'
[]
[]
[Debug]
show_var_residual_norms = true
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_mortar_action/modular_gap_heat_transfer_mortar_displaced_radiation_conduction_action_lowerd_exists.i)
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
[file]
type = FileMeshGenerator
file = 2blk-gap.e
[]
[secondary]
type = LowerDBlockFromSidesetGenerator
sidesets = '101'
new_block_id = 10001
new_block_name = 'secondary_lower'
input = file
[]
[primary]
type = LowerDBlockFromSidesetGenerator
sidesets = '100'
new_block_id = 10000
new_block_name = 'primary_lower'
input = secondary
[]
allow_renumbering = false
[]
[Problem]
kernel_coverage_check = false
material_coverage_check = false
[]
[Variables]
[temp]
order = FIRST
family = LAGRANGE
block = '1 2'
[]
[disp_x]
order = FIRST
family = LAGRANGE
block = '1 2'
[]
[disp_y]
order = FIRST
family = LAGRANGE
block = '1 2'
[]
[]
[Materials]
[left]
type = ADHeatConductionMaterial
block = 1
thermal_conductivity = 0.01
specific_heat = 1
[]
[right]
type = ADHeatConductionMaterial
block = 2
thermal_conductivity = 0.005
specific_heat = 1
[]
[]
[Kernels]
[hc_displaced_block]
type = ADHeatConduction
variable = temp
use_displaced_mesh = true
block = '1'
[]
[hc_undisplaced_block]
type = ADHeatConduction
variable = temp
use_displaced_mesh = false
block = '2'
[]
[disp_x]
type = Diffusion
variable = disp_x
block = '1 2'
[]
[disp_y]
type = Diffusion
variable = disp_y
block = '1 2'
[]
[]
[MortarGapHeatTransfer]
[mortar_heat_transfer]
temperature = temp
primary_emissivity = 1.0
secondary_emissivity = 1.0
boundary = 100
use_displaced_mesh = true
gap_conductivity = 0.02
primary_boundary = 100
secondary_boundary = 101
# We already have mortar lower-dimensional domains and do not need the action
# to create them for us. It will reuse those and define variables and constraints on
# the existing appended meshes.
primary_subdomain = 'primary_lower'
secondary_subdomain = 'secondary_lower'
gap_flux_options = 'CONDUCTION RADIATION'
[]
[]
[BCs]
[left]
type = DirichletBC
variable = temp
boundary = 'left'
value = 100
[]
[right]
type = DirichletBC
variable = temp
boundary = 'right'
value = 0
[]
[left_disp_x]
type = DirichletBC
preset = false
variable = disp_x
boundary = 'left'
value = .1
[]
[right_disp_x]
type = DirichletBC
preset = false
variable = disp_x
boundary = 'right'
value = 0
[]
[bottom_disp_y]
type = DirichletBC
preset = false
variable = disp_y
boundary = 'bottom'
value = 0
[]
[]
[Preconditioning]
[fmp]
type = SMP
full = true
solve_type = 'NEWTON'
[]
[]
[Executioner]
type = Steady
nl_rel_tol = 1e-11
nl_abs_tol = 1.0e-10
[]
[VectorPostprocessors]
[NodalTemperature]
type = NodalValueSampler
sort_by = id
boundary = '100 101'
variable = 'temp'
[]
[]
[Outputs]
csv = true
[exodus]
type = Exodus
show = 'temp'
[]
[]
(modules/heat_transfer/tutorials/introduction/therm_step02a.i)
#
# Single block thermal input with a line value sampler
# https://mooseframework.inl.gov/modules/heat_transfer/tutorials/introduction/therm_step02.html
#
[Mesh]
[generated]
type = GeneratedMeshGenerator
dim = 2
nx = 10
ny = 10
xmax = 2
ymax = 1
[]
[]
[Variables]
[T]
[]
[]
[Kernels]
[heat_conduction]
type = HeatConduction
variable = T
[]
[]
[Materials]
[thermal]
type = HeatConductionMaterial
thermal_conductivity = 45.0
[]
[]
[BCs]
[t_left]
type = DirichletBC
variable = T
value = 300
boundary = 'left'
[]
[t_right]
type = FunctionDirichletBC
variable = T
function = '300+5*t'
boundary = 'right'
[]
[]
[Executioner]
type = Transient
end_time = 5
dt = 1
[]
[VectorPostprocessors]
[t_sampler]
type = LineValueSampler
variable = T
start_point = '0 0.5 0'
end_point = '2 0.5 0'
num_points = 20
sort_by = x
[]
[]
[Outputs]
exodus = true
[csv]
type = CSV
file_base = therm_step02a_out
execute_on = final
[]
[]
(modules/combined/test/tests/gap_heat_transfer_convex/gap_heat_transfer_convex_gap_offsets.i)
#The two blocks were moved apart by the value of 0.005 in the y-direction, respectively.
#This value was compensated by the gap offsets from both secondary and primary sides
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
temperature = temp
[]
[Mesh]
file = gap_heat_transfer_convex_gap_offsets.e
[]
[Functions]
[./disp]
type = PiecewiseLinear
x = '0 2.0'
y = '0 1.0'
[../]
[./temp]
type = PiecewiseLinear
x = '0 1'
y = '200 200'
[../]
[]
[Variables]
[./disp_x]
[../]
[./disp_y]
[../]
[./disp_z]
[../]
[./temp]
initial_condition = 100
[../]
[]
[AuxVariables]
[./primary_gap_offset]
[../]
[./secondary_gap_offset]
[../]
[./mapped_primary_gap_offset]
[../]
[]
[AuxKernels]
[./primary_gap_offset]
type = ConstantAux
variable = primary_gap_offset
value = -0.005
boundary = 2
[../]
[./mapped_primary_gap_offset]
type = GapValueAux
variable = mapped_primary_gap_offset
paired_variable = primary_gap_offset
boundary = 3
paired_boundary = 2
[../]
[./secondary_gap_offset]
type = ConstantAux
variable = secondary_gap_offset
value = -0.005
boundary = 3
[../]
[]
[ThermalContact]
[./thermal_contact]
type = GapHeatTransfer
variable = temp
primary = 2
secondary = 3
emissivity_primary = 0
emissivity_secondary = 0
secondary_gap_offset = secondary_gap_offset
mapped_primary_gap_offset = mapped_primary_gap_offset
[../]
[]
[Modules/TensorMechanics/Master/All]
volumetric_locking_correction = true
strain = FINITE
eigenstrain_names = eigenstrain
[]
[Kernels]
[./heat]
type = HeatConduction
variable = temp
[../]
[]
[BCs]
[./move_right]
type = FunctionDirichletBC
boundary = '3'
variable = disp_x
function = disp
[../]
[./fixed_x]
type = DirichletBC
boundary = '1'
variable = disp_x
value = 0
[../]
[./fixed_y]
type = DirichletBC
boundary = '1 2 3 4'
variable = disp_y
value = 0
[../]
[./fixed_z]
type = DirichletBC
boundary = '1 2 3 4'
variable = disp_z
value = 0
[../]
[./temp_bottom]
type = FunctionDirichletBC
boundary = 1
variable = temp
function = temp
[../]
[./temp_top]
type = DirichletBC
boundary = 4
variable = temp
value = 100
[../]
[]
[Materials]
[./elasticity_tensor]
type = ComputeIsotropicElasticityTensor
block = '1 2'
youngs_modulus = 1e6
poissons_ratio = 0.3
[../]
[./thermal_strain]
type = ComputeThermalExpansionEigenstrain
stress_free_temperature = 100
thermal_expansion_coeff = 0
eigenstrain_name = eigenstrain
[../]
[./stress]
type = ComputeFiniteStrainElasticStress
[../]
[./heat1]
type = HeatConductionMaterial
block = 1
specific_heat = 1.0
thermal_conductivity = 1.0
[../]
[./heat2]
type = HeatConductionMaterial
block = 2
specific_heat = 1.0
thermal_conductivity = 1.0
[../]
[./density]
type = Density
block = '1 2'
density = 1.0
[../]
[]
[Executioner]
type = Transient
solve_type = 'PJFNK'
start_time = 0.0
dt = 0.1
end_time = 2.0
[]
[Outputs]
exodus = true
[]