- boundaryThe list of boundary IDs from the mesh where this object applies
C++ Type:std::vector<BoundaryName>
Unit:(no unit assumed)
Controllable:No
Description:The list of boundary IDs from the mesh where this object applies
- temperatureThe name of the temperature variable
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:The name of the temperature variable
GapFluxModelConduction
Gap flux model for varying gap conductance using a coupled variable for temperature
Description
GapFluxModelConduction
computes a conductive heat flux across a gap following the existing implementation of radiation physics. It is used by ModularGapConductanceConstraint.md.
The user is required to select the appropriate gap_geometry_type
parameter (PLATE, CYLINDER, or SPHERE) for the model geometry in ModularGapConductanceConstraint.md. Two-dimensional Cartesian geometries are not restricted to be in or parallel to the X-Y coordinate plane.
Input Parameters
- prop_getter_suffixAn optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
C++ Type:MaterialPropertyName
Unit:(no unit assumed)
Controllable:No
Description:An optional suffix parameter that can be appended to any attempt to retrieve/get material properties. The suffix will be prepended with a '_' character.
- use_interpolated_stateFalseFor the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:For the old and older state use projected material properties interpolated at the quadrature points. To set up projection use the ProjectedStatefulMaterialStorageAction.
Optional Parameters
- allow_duplicate_execution_on_initialFalseIn the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable).
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:In the case where this UserObject is depended upon by an initial condition, allow it to be executed twice during the initial setup (once before the IC and again after mesh adaptivity (if applicable).
- control_tagsAdds user-defined labels for accessing object parameters via control logic.
C++ Type:std::vector<std::string>
Unit:(no unit assumed)
Controllable:No
Description:Adds user-defined labels for accessing object parameters via control logic.
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Unit:(no unit assumed)
Controllable:Yes
Description:Set the enabled status of the MooseObject.
- execution_order_group0Execution order groups are executed in increasing order (e.g., the lowest number is executed first). Note that negative group numbers may be used to execute groups before the default (0) group. Please refer to the user object documentation for ordering of user object execution within a group.
Default:0
C++ Type:int
Unit:(no unit assumed)
Controllable:No
Description:Execution order groups are executed in increasing order (e.g., the lowest number is executed first). Note that negative group numbers may be used to execute groups before the default (0) group. Please refer to the user object documentation for ordering of user object execution within a group.
- force_postauxFalseForces the UserObject to be executed in POSTAUX
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Forces the UserObject to be executed in POSTAUX
- force_preauxFalseForces the UserObject to be executed in PREAUX
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Forces the UserObject to be executed in PREAUX
- force_preicFalseForces the UserObject to be executed in PREIC during initial setup
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Forces the UserObject to be executed in PREIC during initial setup
- implicitTrueDetermines whether this object is calculated using an implicit or explicit form
Default:True
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Determines whether this object is calculated using an implicit or explicit form
- use_displaced_meshTrueWhether 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:True
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.
Advanced Parameters
- gap_conductivity1Gap conductivity value
Default:1
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:Gap conductivity value
- gap_conductivity_functionThermal conductivity of the gap material as a function. Multiplied by gap_conductivity.
C++ Type:FunctionName
Unit:(no unit assumed)
Controllable:No
Description:Thermal conductivity of the gap material as a function. Multiplied by gap_conductivity.
- gap_conductivity_function_variableVariable to be used in the gap_conductivity_function in place of time
C++ Type:std::vector<VariableName>
Unit:(no unit assumed)
Controllable:No
Description:Variable to be used in the gap_conductivity_function in place of time
- min_gap1e-06A minimum gap (denominator) size
Default:1e-06
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:A minimum gap (denominator) size
- min_gap_order0Order of the Taylor expansion below min_gap for GapFluxModelConductionBase
Default:0
C++ Type:unsigned int
Unit:(no unit assumed)
Controllable:No
Description:Order of the Taylor expansion below min_gap for GapFluxModelConductionBase
Gap Conductive Flux Parameters
Input Files
- (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_mortar/modular_gap_heat_transfer_mortar_displaced_conduction_function.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_mortar/modular_gap_heat_transfer_mortar_displaced_radiation_conduction_separate.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_mortar.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_mortar/large_gap_heat_transfer_test_sphere_mortar_error.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_mortar/gap_heat_transfer_sphere3D_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_mortar/large_gap_heat_transfer_test_cylinder_mortar_error.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_mortar_action/modular_gap_heat_transfer_mortar_displaced_radiation_conduction_action_existing_UOs.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_mortar/modular_gap_heat_transfer_mortar_displaced_radiation_conduction.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/3d-mortar-projection-tolerancing/test.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_mortar_action/modular_gap_heat_transfer_mortar_displaced_conduction_UOs_function.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_mortar/gap_heat_transfer_3D_mortar.i)
References
No citations exist within this document.(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_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/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/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_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/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/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/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_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_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/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/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/3d-mortar-projection-tolerancing/test.i)
stress_free_temperature = 300
thermal_expansion_coeff = 6.66e-6
[Problem]
type = FEProblem
[]
[GlobalParams]
displacements = 'disp_x disp_y disp_z'
temperature = T_K
[]
[Mesh]
patch_update_strategy = iteration
use_displaced_mesh = true
patch_size = 40
[ori]
type = FileMeshGenerator
file = 'test.msh'
[]
[]
[Variables]
[disp_x]
block = 'pellet_inner pellet_outer'
[]
[disp_y]
block = 'pellet_inner pellet_outer'
[]
[disp_z]
block = 'pellet_inner pellet_outer'
[]
[T_K]
[InitialCondition]
type = ConstantIC
value = 300.0
[]
[]
[lm_pellet]
block = 'pellet_secondary_subdomain'
[]
[]
[Kernels]
[solid_x]
type = ADStressDivergenceTensors
variable = disp_x
component = 0
block = 'pellet_inner pellet_outer'
use_displaced_mesh = false
[]
[solid_y]
type = ADStressDivergenceTensors
variable = disp_y
component = 1
block = 'pellet_inner pellet_outer'
use_displaced_mesh = false
[]
[solid_z]
type = ADStressDivergenceTensors
variable = disp_z
component = 2
block = 'pellet_inner pellet_outer'
use_displaced_mesh = false
[]
[timeder]
type = ADHeatConductionTimeDerivative
variable = 'T_K'
density_name = density
specific_heat = specific_heat
block = 'pellet_inner pellet_outer'
use_displaced_mesh = true
[]
[diff]
type = ADHeatConduction
variable = 'T_K'
thermal_conductivity = thermal_conductivity
block = 'pellet_inner pellet_outer'
use_displaced_mesh = true
[]
[heatsource]
type = ADMatHeatSource
variable = 'T_K'
material_property = radial_source
block = 'pellet_inner pellet_outer'
use_displaced_mesh = true
[]
[]
[Debug]
show_var_residual_norms = TRUE
[]
[BCs]
[mirror_z]
type = ADDirichletBC
variable = disp_z
boundary = 'mirror_innerp mirror_outerp'
value = 0
[]
[mirror_x]
type = ADDirichletBC
variable = disp_x
boundary = 'mirror_innerp mirror_outerp'
value = 0
[]
[mirror_y]
type = ADDirichletBC
variable = disp_y
boundary = 'mirror_innerp mirror_outerp'
value = 0
[]
[]
[Materials]
[pellet_properties]
type = ADGenericConstantMaterial
prop_names = 'density thermal_conductivity specific_heat'
prop_values = '3.3112e3 34 1.2217e3'
block = 'pellet_inner pellet_outer'
[]
[pulse_shape_linear]
type = ADGenericFunctionMaterial
prop_values = '5e10*max(11455*(t)/7,1e-9)'
prop_names = 'radial_source'
output_properties = 'radial_source'
block = 'pellet_inner pellet_outer'
use_displaced_mesh = false
[]
[strain]
type = ADComputeSmallStrain
displacements = 'disp_x disp_y disp_z'
eigenstrain_names = eigenstrain #nameS!
block = 'pellet_inner pellet_outer'
[]
[thermal_strain]
type = ADComputeThermalExpansionEigenstrain
stress_free_temperature = ${stress_free_temperature}
thermal_expansion_coeff = ${thermal_expansion_coeff}
eigenstrain_name = eigenstrain
block = 'pellet_inner pellet_outer'
[]
[elasticity]
type = ADComputeIsotropicElasticityTensor
youngs_modulus = 3.306e11
poissons_ratio = 0.329
[]
[stress]
type = ADComputeLinearElasticStress
block = 'pellet_inner pellet_outer'
[]
[]
[Contact]
[pellet]
primary = void_pellet_0
secondary = void_pellet_1
model = frictionless
formulation = mortar
c_normal = 1e6
correct_edge_dropping = true
[]
[]
[UserObjects]
[conduction]
type = GapFluxModelConduction
temperature = T_K
boundary = 'void_pellet_0 void_pellet_1'
gap_conductivity = 0.4
use_displaced_mesh = true
[]
[rad_pellet]
type = GapFluxModelRadiation
temperature = T_K
boundary = void_pellet_0
primary_emissivity = 0.37
secondary_emissivity = 0.37
use_displaced_mesh = true
[]
[]
[Constraints]
[gap_pellet]
type = ModularGapConductanceConstraint
variable = lm_pellet
secondary_variable = T_K
primary_boundary = 'void_pellet_0'
primary_subdomain = pellet_primary_subdomain
secondary_boundary = 'void_pellet_1'
secondary_subdomain = pellet_secondary_subdomain
gap_flux_models = 'conduction rad_pellet' #closed_pellet
gap_geometry_type = 'CYLINDER'
cylinder_axis_point_1 = '0 0 0'
cylinder_axis_point_2 = '0 0 1'
use_displaced_mesh = true
quadrature = SECOND
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -pc_factor_mat_solver_package -pc_factor_shift_type'
petsc_options_value = 'lu superlu_dist NONZERO'
automatic_scaling = true
line_search = none
ignore_variables_for_autoscaling = 'pellet_normal_lm'
compute_scaling_once = true
scaling_group_variables = 'disp_x disp_y disp_z; T_K'
nl_rel_tol = 1e-50
nl_abs_tol = 1e-8
nl_max_its = 20
dtmin = 1e-3
dt = 1e-3
start_time = 0e-3
end_time = 1
[]
[Outputs]
[exodus]
type = Exodus
file_base = constMat
[]
print_linear_residuals = false
[]
(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/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
[]
[]