- boundary_namesThe boundaries to be deleted / kept
C++ Type:std::vector<BoundaryName>
Controllable:No
Description:The boundaries to be deleted / kept
- inputThe mesh we want to modify
C++ Type:MeshGeneratorName
Controllable:No
Description:The mesh we want to modify
BoundaryDeletionGenerator
Mesh generator which removes side sets
Input Parameters
- operationremoveWhether to remove or keep the listed boundaries
Default:remove
C++ Type:MooseEnum
Options:keep, remove
Controllable:No
Description:Whether to remove or keep the listed boundaries
Optional Parameters
- enableTrueSet the enabled status of the MooseObject.
Default:True
C++ Type:bool
Controllable:No
Description:Set the enabled status of the MooseObject.
- save_with_nameKeep the mesh from this mesh generator in memory with the name specified
C++ Type:std::string
Controllable:No
Description:Keep the mesh from this mesh generator in memory with the name specified
Advanced Parameters
- nemesisFalseWhether or not to output the mesh file in the nemesisformat (only if output = true)
Default:False
C++ Type:bool
Controllable:No
Description:Whether or not to output the mesh file in the nemesisformat (only if output = true)
- outputFalseWhether or not to output the mesh file after generating the mesh
Default:False
C++ Type:bool
Controllable:No
Description:Whether or not to output the mesh file after generating the mesh
- show_infoFalseWhether or not to show mesh info after generating the mesh (bounding box, element types, sidesets, nodesets, subdomains, etc)
Default:False
C++ Type:bool
Controllable:No
Description:Whether or not to show mesh info after generating the mesh (bounding box, element types, sidesets, nodesets, subdomains, etc)
Debugging Parameters
Input Files
- (test/tests/meshgenerators/mesh_diagnostics_generator/3D_missing_sideset.i)
- (test/tests/meshgenerators/mesh_diagnostics_generator/2D_missing_nodeset.i)
- (modules/navier_stokes/examples/flow-over-circle/mesh.i)
- (test/tests/meshgenerators/parsed_generate_nodeset/parsed_generate_nodeset_exterior_limited.i)
- (modules/navier_stokes/test/tests/finite_volume/ins/radiation_s2s/diff_heated_cavity_slabs_cht.i)
- (test/tests/meshgenerators/boundary_deletion_generator/boundary_deletion.i)
- (test/tests/meshgenerators/sidesets_from_points_generator/sidesets_ambiguity.i)
- (test/tests/meshgenerators/mesh_diagnostics_generator/2D_missing_sideset.i)
- (modules/heat_transfer/test/tests/radiation_transfer_action/radiative_transfer_no_action_linearfv_steady.i)
- (test/tests/meshgenerators/mesh_diagnostics_generator/3D_missing_nodeset.i)
- (test/tests/mesh/preparedness/test.i)
- (modules/navier_stokes/test/tests/finite_volume/ins/radiation_s2s/radiative_transfer_no_action_linearfv_simple.i)
- (modules/navier_stokes/test/tests/finite_volume/ins/natural_convection/linear_segregated/2d/diff_heated_cavity_s2s_rad.i)
- (test/tests/meshgenerators/parsed_generate_sideset/parsed_generate_sideset_exterior_limited.i)
(test/tests/meshgenerators/mesh_diagnostics_generator/3D_missing_sideset.i)
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 3
nx = 2
ny = 2
nz = 2
[]
[deletion]
type = BoundaryDeletionGenerator
input = gmg
boundary_names = 'right'
[]
[diag]
type = MeshDiagnosticsGenerator
input = deletion
check_for_watertight_sidesets = INFO
[]
[]
[Outputs]
exodus = true
[]
(test/tests/meshgenerators/mesh_diagnostics_generator/2D_missing_nodeset.i)
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 2
nx = 2
ny = 2
[]
[deletion]
type = BoundaryDeletionGenerator
input = gmg
boundary_names = 'right'
[]
[diag]
type = MeshDiagnosticsGenerator
input = deletion
check_for_watertight_nodesets = INFO
[]
[]
[Outputs]
exodus = true
[]
(modules/navier_stokes/examples/flow-over-circle/mesh.i)
[Mesh]
# ------------------------------------------
# Middle layer
# ------------------------------------------
[ccmg]
type = ConcentricCircleMeshGenerator
num_sectors = '${fparse refinement*2}'
radii = '${circle_radius} ${fparse 1.2*circle_radius}'
rings = '4 ${refinement} ${refinement}'
has_outer_square = on
pitch = ${pitch}
preserve_volumes = off
smoothing_max_it = 2
[]
[in_between]
type = SideSetsBetweenSubdomainsGenerator
input = ccmg
primary_block = 2
paired_block = 1
new_boundary = 'circle'
[]
[delete_circle]
type = BlockDeletionGenerator
input = in_between
block = '1'
[]
[final_ccmg]
type = RenameBlockGenerator
input = delete_circle
old_block = '2 3'
new_block = '0 0'
[]
[left]
type = GeneratedMeshGenerator
dim = 2
xmin = '${x_min}'
xmax = '${fparse -pitch/2}'
ymin = '${fparse -pitch/2}'
ymax = '${fparse pitch/2}'
nx = '${fparse refinement*2}'
ny = '${fparse refinement*4+2}'
[]
[right]
type = GeneratedMeshGenerator
dim = 2
xmin = '${fparse pitch/2}'
xmax = '${x_max}'
ymin = '${fparse -pitch/2}'
ymax = '${fparse pitch/2}'
nx = '${fparse refinement*40}'
ny = '${fparse refinement*4+2}'
[]
[combined_middle]
type = StitchedMeshGenerator
inputs = 'final_ccmg left right'
stitch_boundaries_pairs = 'left right; right left'
clear_stitched_boundary_ids = false
prevent_boundary_ids_overlap = true
merge_boundaries_with_same_name = true
[]
[middle_top_sideset]
input = combined_middle
type = ParsedGenerateSideset
combinatorial_geometry = 'y > ${fparse pitch/2-rundoff}'
normal = '0 1 0'
new_sideset_name = 'middle_top'
[]
[middle_bottom_sideset]
input = middle_top_sideset
type = ParsedGenerateSideset
combinatorial_geometry = 'y < ${fparse -pitch/2+rundoff}'
normal = '0 -1 0'
new_sideset_name = 'middle_bottom'
[]
# ------------------------------------------
# Top layer
# ------------------------------------------
[top_left_block]
type = GeneratedMeshGenerator
dim = 2
xmin = '${x_min}'
xmax = '${fparse -pitch/2}'
ymin = '${fparse pitch/2}'
ymax = '${y_max}'
nx = '${fparse refinement*2}'
ny = '${fparse refinement*2+1}'
[]
[top_middle_block]
type = GeneratedMeshGenerator
dim = 2
xmin = '${fparse -pitch/2}'
xmax = '${fparse pitch/2}'
ymin = '${fparse pitch/2}'
ymax = '${y_max}'
nx = '${fparse refinement*4+2}'
ny = '${fparse refinement*2+1}'
[]
[top_right_block]
type = GeneratedMeshGenerator
dim = 2
xmin = '${fparse pitch/2}'
xmax = '${x_max}'
ymin = '${fparse pitch/2}'
ymax = '${y_max}'
nx = '${fparse refinement*40}'
ny = '${fparse refinement*2+1}'
[]
[combined_top]
type = StitchedMeshGenerator
inputs = 'top_middle_block top_left_block top_right_block'
stitch_boundaries_pairs = 'left right; right left'
prevent_boundary_ids_overlap = true
merge_boundaries_with_same_name = true
[]
[top_bottom_sideset]
input = combined_top
type = ParsedGenerateSideset
combinatorial_geometry = 'y < ${fparse pitch/2+rundoff}'
normal = '0 -1 0'
new_sideset_name = 'top_bottom'
[]
[combined_middle_top]
type = StitchedMeshGenerator
inputs = 'top_bottom_sideset middle_bottom_sideset'
stitch_boundaries_pairs = 'top_bottom middle_top'
clear_stitched_boundary_ids = false
prevent_boundary_ids_overlap = true
merge_boundaries_with_same_name = true
[]
[create_fused_top_sideset]
input = combined_middle_top
type = ParsedGenerateSideset
combinatorial_geometry = 'y > ${fparse y_max-rundoff}'
normal = '0 1 0'
new_sideset_name = 'top_boundary'
[]
# ------------------------------------------
# Bottom layer
# ------------------------------------------
[bottom_left_block]
type = GeneratedMeshGenerator
dim = 2
xmin = '${x_min}'
xmax = '${fparse -pitch/2}'
ymin = '${y_min}'
ymax = '${fparse -pitch/2}'
nx = '${fparse refinement*2}'
ny = '${fparse refinement*2}'
[]
[bottom_middle_block]
type = GeneratedMeshGenerator
dim = 2
xmin = '${fparse -pitch/2}'
xmax = '${fparse pitch/2}'
ymin = '${y_min}'
ymax = '${fparse -pitch/2}'
nx = '${fparse refinement*4+2}'
ny = '${fparse refinement*2}'
[]
[bottom_right_block]
type = GeneratedMeshGenerator
dim = 2
xmin = '${fparse pitch/2}'
xmax = '${x_max}'
ymin = '${y_min}'
ymax = '${fparse -pitch/2}'
nx = '${fparse refinement*40}'
ny = '${fparse refinement*2}'
[]
[combined_bottom]
type = StitchedMeshGenerator
inputs = 'bottom_middle_block bottom_left_block bottom_right_block'
stitch_boundaries_pairs = 'left right; right left'
prevent_boundary_ids_overlap = true
merge_boundaries_with_same_name = true
[]
[bottom_top_sideset]
input = combined_bottom
type = ParsedGenerateSideset
combinatorial_geometry = 'y > ${fparse -pitch/2-rundoff}'
normal = '0 1 0'
new_sideset_name = 'bottom_top'
[]
[combined_final]
type = StitchedMeshGenerator
inputs = 'create_fused_top_sideset bottom_top_sideset'
stitch_boundaries_pairs = 'middle_bottom bottom_top'
clear_stitched_boundary_ids = false
prevent_boundary_ids_overlap = true
merge_boundaries_with_same_name = true
[]
[create_fused_bottom_sideset]
input = combined_final
type = ParsedGenerateSideset
combinatorial_geometry = 'y < ${fparse y_min+rundoff}'
normal = '0 -1 0'
new_sideset_name = 'bottom_boundary'
[]
# ------------------------------------------
# Left and right boundaries
# ------------------------------------------
[create_fused_left_sideset]
input = create_fused_bottom_sideset
type = ParsedGenerateSideset
combinatorial_geometry = 'x < ${fparse x_min+rundoff}'
normal = '-1 0 0'
new_sideset_name = 'left_boundary'
[]
[create_fused_right_sideset]
input = create_fused_left_sideset
type = ParsedGenerateSideset
combinatorial_geometry = 'x > ${fparse x_max-rundoff}'
normal = '1 0 0'
new_sideset_name = 'right_boundary'
[]
[sideset_removal]
input = create_fused_right_sideset
type = BoundaryDeletionGenerator
boundary_names = 'bottom top left right middle_bottom middle_top bottom_top top_bottom'
[]
[]
(test/tests/meshgenerators/parsed_generate_nodeset/parsed_generate_nodeset_exterior_limited.i)
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 3
nx = 2
ny = 3
nz = 2
xmax = 3
ymax = 3
zmax = 3
[]
[delete]
type = BoundaryDeletionGenerator
input = 'gmg'
boundary_names = 'top right left front back bottom'
[]
# Recreate it but using the exterior limited feature
[new_top]
type = ParsedGenerateNodeset
input = delete
expression = 'z > -1'
include_only_external_nodes = true
new_nodeset_name = exterior
[]
[]
(modules/navier_stokes/test/tests/finite_volume/ins/radiation_s2s/diff_heated_cavity_slabs_cht.i)
# Differentially heated cavity with conducting slabs on the left and right.
#
# Domain layout:
#
# T = 880 K fluid cavity T = 870 K
# | left slab | 0 < x < 1 | right slab |
# | -d < x < 0 | | 1 < x < 1+d |
#
# The prescribed temperatures are applied only to the OUTER slab faces.
# The left/right cavity surfaces use linear-FV CHT, and the top/bottom cavity
# walls are externally adiabatic.
#
# As written, this input solves the case without radiation. The radiation case
# activates the inactive objects below and sets
# Executioner/surface_radiation_object_name = gray_lambert, which passes the
# surface-to-surface radiation into CHTHandler. The conductive heat flux on the
# top/bottom walls is then balanced by LinearFVGrayLambertBC.
################################################################################
# MATERIAL PROPERTIES AND GEOMETRY
################################################################################
rho = 3279.0
T_0 = 875.0
T_hot = 880.0
T_cold = 870.0
mu = 1.0
k_fluid = 38.0
k_solid = 38.0
cp = 640.0
alpha = 3.26e-5
eps = 1.0
slab_thickness = 0.10
# Coarsest mesh on which SIMPLE converges for this problem; a 10x10 fluid mesh
# stalls with momentum residuals near 0.5.
n_slab_x = 4
n_fluid_x = 20
n_y = 20
rad_left = 'left_0 left_1 left_2 left_3 left_4'
rad_right = 'right_0 right_1 right_2 right_3 right_4'
rad_top = 'top_0 top_1 top_2 top_3 top_4'
rad_bottom = 'bottom_0 bottom_1 bottom_2 bottom_3 bottom_4'
rad_cht = '${rad_left} ${rad_right}'
rad_noncht = '${rad_top} ${rad_bottom}'
rad_all = '${rad_left} ${rad_right} ${rad_top} ${rad_bottom}'
walls = ${rad_all}
[GlobalParams]
rhie_chow_user_object = ins_rhie_chow_interpolator
advected_interp_method = upwind
u = vel_x
v = vel_y
[]
[Problem]
linear_sys_names = 'u_system v_system pressure_system energy_system solid_energy_system'
previous_nl_solution_required = true
[]
################################################################################
# GEOMETRY
################################################################################
[Mesh]
type = MeshGeneratorMesh
parallel_type = replicated
# A single generator gives a conforming mesh across both CHT interfaces.
[base]
type = CartesianMeshGenerator
dim = 2
dx = '${slab_thickness} 1.0 ${slab_thickness}'
ix = '${n_slab_x} ${n_fluid_x} ${n_slab_x}'
dy = '1.0'
iy = '${n_y}'
subdomain_id = '1 0 2'
[]
# Keep the fluid cavity at 0 <= x <= 1.
[shift]
type = TransformGenerator
input = base
transform = TRANSLATE
vector_value = '${fparse -slab_thickness} 0 0'
[]
[rename_blocks]
type = RenameBlockGenerator
input = shift
old_block = '0 1 2'
new_block = 'fluid left_solid right_solid'
[]
# Reserve left/right/top/bottom for the four surfaces of the cavity.
[rename_exterior]
type = RenameBoundaryGenerator
input = rename_blocks
old_boundary = 'left right bottom top'
new_boundary = 'left_outer right_outer whole_bottom whole_top'
[]
# Put the internal sidesets on fluid elements so gray_lambert can sample
# T_fluid on every surface in its boundary list.
[left_interface]
type = SideSetsBetweenSubdomainsGenerator
input = rename_exterior
primary_block = fluid
paired_block = left_solid
new_boundary = left
[]
[right_interface]
type = SideSetsBetweenSubdomainsGenerator
input = left_interface
primary_block = fluid
paired_block = right_solid
new_boundary = right
[]
# Re-create separate exterior horizontal sidesets for each block.
[cavity_horizontal]
type = SideSetsFromNormalsGenerator
input = right_interface
normals = '0 -1 0
0 1 0'
fixed_normal = true
included_subdomains = fluid
new_boundary = 'bottom top'
[]
[left_slab_horizontal]
type = SideSetsFromNormalsGenerator
input = cavity_horizontal
normals = '0 -1 0
0 1 0'
fixed_normal = true
included_subdomains = left_solid
new_boundary = 'left_solid_bottom left_solid_top'
[]
[right_slab_horizontal]
type = SideSetsFromNormalsGenerator
input = left_slab_horizontal
normals = '0 -1 0
0 1 0'
fixed_normal = true
included_subdomains = right_solid
new_boundary = 'right_solid_bottom right_solid_top'
[]
# Patch every radiating surface. This allows the wall temperature and
# radiative heat flux to vary along each side of the cavity.
[patch_left]
type = PatchSidesetGenerator
input = right_slab_horizontal
boundary = left
n_patches = 5
partitioner = centroid
centroid_partitioner_direction = y
[]
[patch_right]
type = PatchSidesetGenerator
input = patch_left
boundary = right
n_patches = 5
partitioner = centroid
centroid_partitioner_direction = y
[]
[patch_top]
type = PatchSidesetGenerator
input = patch_right
boundary = top
n_patches = 5
partitioner = centroid
centroid_partitioner_direction = x
[]
[patch_bottom]
type = PatchSidesetGenerator
input = patch_top
boundary = bottom
n_patches = 5
partitioner = centroid
centroid_partitioner_direction = x
[]
# PatchSidesetGenerator retains its parent sideset. Remove the parents so
# each face has only its patch boundary for radiation and CHT bookkeeping.
[delete_unpatched_parents]
type = BoundaryDeletionGenerator
input = patch_bottom
boundary_names = 'left right top bottom whole_top whole_bottom'
[]
final_generator = delete_unpatched_parents
[]
################################################################################
# USER OBJECTS: RHIE-CHOW AND SURFACE-TO-SURFACE RADIATION
################################################################################
[UserObjects]
# Activated for the radiation case
inactive = 'view_factor gray_lambert'
[ins_rhie_chow_interpolator]
type = RhieChowMassFlux
u = vel_x
v = vel_y
pressure = pressure
rho = ${rho}
p_diffusion_kernel = p_diffusion
block = fluid
[]
# The enclosure is convex and unobstructed. This deterministic view-factor
# object also avoids ray-orientation ambiguity on the internal CHT sidesets.
[view_factor]
type = UnobstructedPlanarViewFactor
boundary = ${rad_all}
normalize_view_factor = true
execute_on = INITIAL
[]
[gray_lambert]
type = ViewFactorObjectSurfaceRadiation
boundary = ${rad_all}
# There are no fixed-temperature or radiatively adiabatic surfaces here.
# All 20 surfaces obtain their current temperature from T_fluid.
emissivity = '${eps} ${eps} ${eps} ${eps} ${eps}
${eps} ${eps} ${eps} ${eps} ${eps}
${eps} ${eps} ${eps} ${eps} ${eps}
${eps} ${eps} ${eps} ${eps} ${eps}'
temperature = T_fluid
view_factor_object_name = view_factor
# Refreshes radiation during the SIMPLE/CHT Picard loop. The handler uses
# the most recently assembled radiation state (one fluid-energy solve lag).
execute_on = 'NONLINEAR TIMESTEP_END'
[]
[]
################################################################################
# VARIABLES
################################################################################
[Variables]
[vel_x]
type = MooseLinearVariableFVReal
solver_sys = u_system
block = fluid
[]
[vel_y]
type = MooseLinearVariableFVReal
solver_sys = v_system
block = fluid
[]
[pressure]
type = MooseLinearVariableFVReal
initial_condition = 0
solver_sys = pressure_system
block = fluid
[]
[T_fluid]
type = MooseLinearVariableFVReal
solver_sys = energy_system
initial_condition = ${T_0}
block = fluid
[]
# A single solid system/variable is used on the two disconnected slabs,
# as required by the current linear-FV CHTHandler.
[T_solid]
type = MooseLinearVariableFVReal
solver_sys = solid_energy_system
initial_condition = ${T_0}
block = 'left_solid right_solid'
[]
[]
[FVInterpolationMethods]
[upwind]
type = FVAdvectedUpwind
[]
[]
################################################################################
# LINEAR-FV EQUATIONS
################################################################################
[LinearFVKernels]
[u_advection_stress]
type = LinearWCNSFVMomentumFlux
variable = vel_x
advected_interp_method_name = upwind
mu = ${mu}
momentum_component = x
use_nonorthogonal_correction = false
[]
[u_pressure]
type = LinearFVMomentumPressure
variable = vel_x
pressure = pressure
momentum_component = x
[]
[u_buoyancy]
type = LinearFVMomentumBoussinesq
variable = vel_x
T_fluid = T_fluid
gravity = '0 -9.81 0'
rho = ${rho}
ref_temperature = ${T_0}
alpha_name = alpha_b
momentum_component = x
[]
[v_advection_stress]
type = LinearWCNSFVMomentumFlux
variable = vel_y
advected_interp_method_name = upwind
mu = ${mu}
momentum_component = y
use_nonorthogonal_correction = false
[]
[v_pressure]
type = LinearFVMomentumPressure
variable = vel_y
pressure = pressure
momentum_component = y
[]
[v_buoyancy]
type = LinearFVMomentumBoussinesq
variable = vel_y
T_fluid = T_fluid
gravity = '0 -9.81 0'
rho = ${rho}
ref_temperature = ${T_0}
alpha_name = alpha_b
momentum_component = y
[]
[p_diffusion]
type = LinearFVPressureCorrectionDiffusion
variable = pressure
diffusion_tensor = Ainv
use_nonorthogonal_correction = false
[]
[HbyA_divergence]
type = LinearFVDivergence
variable = pressure
face_flux = HbyA
force_boundary_execution = false
[]
[fluid_heat_advection]
type = LinearFVEnergyAdvection
variable = T_fluid
advected_quantity = temperature
cp = ${cp}
[]
[fluid_conduction]
type = LinearFVDiffusion
variable = T_fluid
diffusion_coeff = ${k_fluid}
use_nonorthogonal_correction = false
[]
# CHTHandler expects exactly one solid conduction kernel in the solid
# energy system, so this one kernel covers both slabs.
[solid_conduction]
type = LinearFVDiffusion
variable = T_solid
diffusion_coeff = ${k_solid}
use_nonorthogonal_correction = false
[]
[]
################################################################################
# LINEAR-FV BOUNDARY CONDITIONS
################################################################################
[LinearFVBCs]
# Activated for the radiation case
inactive = 'radiation_top_bottom'
[no_slip_u]
type = LinearFVAdvectionDiffusionFunctorDirichletBC
variable = vel_x
boundary = ${walls}
functor = 0
[]
[no_slip_v]
type = LinearFVAdvectionDiffusionFunctorDirichletBC
variable = vel_y
boundary = ${walls}
functor = 0
[]
[pressure_walls]
type = LinearFVPressureFluxBC
boundary = ${walls}
variable = pressure
HbyA_flux = HbyA
Ainv = Ainv
u = vel_x
v = vel_y
rho = ${rho}
[]
# Prescribe temperature only on the exterior faces of the slabs.
[left_outer_temperature]
type = LinearFVAdvectionDiffusionFunctorDirichletBC
variable = T_solid
boundary = left_outer
functor = ${T_hot}
[]
[right_outer_temperature]
type = LinearFVAdvectionDiffusionFunctorDirichletBC
variable = T_solid
boundary = right_outer
functor = ${T_cold}
[]
[insulated_slab_horizontal_faces]
type = LinearFVAdvectionDiffusionFunctorNeumannBC
variable = T_solid
boundary = 'left_solid_bottom left_solid_top right_solid_bottom right_solid_top'
functor = 0
[]
# Without radiation, the top/bottom cavity walls are adiabatic. The radiation
# case replaces this BC with radiation_top_bottom.
[adiabatic_top_bottom]
type = LinearFVAdvectionDiffusionFunctorNeumannBC
variable = T_fluid
boundary = ${rad_noncht}
functor = 0
[]
# Radiation is imposed directly only on the non-CHT top/bottom walls.
# Do not add these boundaries to adiabatic_boundary in gray_lambert:
# this BC makes their conductive flux balance their radiative flux.
[radiation_top_bottom]
type = LinearFVGrayLambertBC
variable = T_fluid
temperature_radiation = T_fluid
coeff_diffusion = ${k_fluid}
surface_radiation_object_name = gray_lambert
boundary = ${rad_noncht}
[]
# Neumann-Dirichlet CHT. Each patch needs its own pair because CHTHandler
# creates boundary-specific temperature and heat-flux functors.
# ---- left slab / fluid interface -----------------------------------------
[fluid_left_0]
type = LinearFVDirichletCHTBC
variable = T_fluid
boundary = left_0
functor = interface_temperature_to_fluid_left_0
[]
[solid_left_0]
type = LinearFVRobinCHTBC
variable = T_solid
boundary = left_0
h = 0
thermal_conductivity = ${k_solid}
incoming_flux = heat_flux_to_solid_left_0
surface_temperature = interface_temperature_to_solid_left_0
[]
[fluid_left_1]
type = LinearFVDirichletCHTBC
variable = T_fluid
boundary = left_1
functor = interface_temperature_to_fluid_left_1
[]
[solid_left_1]
type = LinearFVRobinCHTBC
variable = T_solid
boundary = left_1
h = 0
thermal_conductivity = ${k_solid}
incoming_flux = heat_flux_to_solid_left_1
surface_temperature = interface_temperature_to_solid_left_1
[]
[fluid_left_2]
type = LinearFVDirichletCHTBC
variable = T_fluid
boundary = left_2
functor = interface_temperature_to_fluid_left_2
[]
[solid_left_2]
type = LinearFVRobinCHTBC
variable = T_solid
boundary = left_2
h = 0
thermal_conductivity = ${k_solid}
incoming_flux = heat_flux_to_solid_left_2
surface_temperature = interface_temperature_to_solid_left_2
[]
[fluid_left_3]
type = LinearFVDirichletCHTBC
variable = T_fluid
boundary = left_3
functor = interface_temperature_to_fluid_left_3
[]
[solid_left_3]
type = LinearFVRobinCHTBC
variable = T_solid
boundary = left_3
h = 0
thermal_conductivity = ${k_solid}
incoming_flux = heat_flux_to_solid_left_3
surface_temperature = interface_temperature_to_solid_left_3
[]
[fluid_left_4]
type = LinearFVDirichletCHTBC
variable = T_fluid
boundary = left_4
functor = interface_temperature_to_fluid_left_4
[]
[solid_left_4]
type = LinearFVRobinCHTBC
variable = T_solid
boundary = left_4
h = 0
thermal_conductivity = ${k_solid}
incoming_flux = heat_flux_to_solid_left_4
surface_temperature = interface_temperature_to_solid_left_4
[]
# ---- right slab / fluid interface ----------------------------------------
[fluid_right_0]
type = LinearFVDirichletCHTBC
variable = T_fluid
boundary = right_0
functor = interface_temperature_to_fluid_right_0
[]
[solid_right_0]
type = LinearFVRobinCHTBC
variable = T_solid
boundary = right_0
h = 0
thermal_conductivity = ${k_solid}
incoming_flux = heat_flux_to_solid_right_0
surface_temperature = interface_temperature_to_solid_right_0
[]
[fluid_right_1]
type = LinearFVDirichletCHTBC
variable = T_fluid
boundary = right_1
functor = interface_temperature_to_fluid_right_1
[]
[solid_right_1]
type = LinearFVRobinCHTBC
variable = T_solid
boundary = right_1
h = 0
thermal_conductivity = ${k_solid}
incoming_flux = heat_flux_to_solid_right_1
surface_temperature = interface_temperature_to_solid_right_1
[]
[fluid_right_2]
type = LinearFVDirichletCHTBC
variable = T_fluid
boundary = right_2
functor = interface_temperature_to_fluid_right_2
[]
[solid_right_2]
type = LinearFVRobinCHTBC
variable = T_solid
boundary = right_2
h = 0
thermal_conductivity = ${k_solid}
incoming_flux = heat_flux_to_solid_right_2
surface_temperature = interface_temperature_to_solid_right_2
[]
[fluid_right_3]
type = LinearFVDirichletCHTBC
variable = T_fluid
boundary = right_3
functor = interface_temperature_to_fluid_right_3
[]
[solid_right_3]
type = LinearFVRobinCHTBC
variable = T_solid
boundary = right_3
h = 0
thermal_conductivity = ${k_solid}
incoming_flux = heat_flux_to_solid_right_3
surface_temperature = interface_temperature_to_solid_right_3
[]
[fluid_right_4]
type = LinearFVDirichletCHTBC
variable = T_fluid
boundary = right_4
functor = interface_temperature_to_fluid_right_4
[]
[solid_right_4]
type = LinearFVRobinCHTBC
variable = T_solid
boundary = right_4
h = 0
thermal_conductivity = ${k_solid}
incoming_flux = heat_flux_to_solid_right_4
surface_temperature = interface_temperature_to_solid_right_4
[]
[]
[FunctorMaterials]
[constant_fluid_functors]
type = GenericFunctorMaterial
# block = fluid
prop_names = 'cp alpha_b'
prop_values = '${cp} ${alpha}'
[]
[]
################################################################################
# DIAGNOSTICS
################################################################################
[VectorPostprocessors]
# Activated for the radiation case
inactive = 'surface_radiation'
[surface_radiation]
type = SurfaceRadiationVectorPostprocessor
surface_radiation_object_name = gray_lambert
information = 'temperature emissivity radiosity heat_flux_density'
execute_on = TIMESTEP_END
[]
[]
################################################################################
# EXECUTION / SOLVE
################################################################################
# CHTHandler requires one value per entry in rad_cht (10 entries here).
cht_relaxation = '0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3 0.3'
[Executioner]
type = SIMPLE
rhie_chow_user_object = ins_rhie_chow_interpolator
momentum_systems = 'u_system v_system'
pressure_system = pressure_system
energy_system = energy_system
solid_energy_system = solid_energy_system
momentum_l_abs_tol = 1e-14
pressure_l_abs_tol = 1e-14
energy_l_abs_tol = 1e-14
solid_energy_l_abs_tol = 1e-14
momentum_l_tol = 0
pressure_l_tol = 0
energy_l_tol = 0
solid_energy_l_tol = 0
momentum_equation_relaxation = 0.7
pressure_variable_relaxation = 0.3
energy_equation_relaxation = 0.9
num_iterations = 5000
# Tight enough that the gold files do not depend on the number of MPI ranks.
pressure_absolute_tolerance = 1e-11
momentum_absolute_tolerance = 1e-11
energy_absolute_tolerance = 1e-11
solid_energy_absolute_tolerance = 1e-11
# Activate CHT on every patched slab/cavity interface.
cht_interfaces = ${rad_cht}
cht_solid_flux_relaxation = ${cht_relaxation}
cht_fluid_flux_relaxation = ${cht_relaxation}
cht_solid_temperature_relaxation = ${cht_relaxation}
cht_fluid_temperature_relaxation = ${cht_relaxation}
cht_heat_flux_tolerance = 1e-4
max_cht_fpi = 10
print_fields = false
momentum_l_max_its = 300
pin_pressure = true
pressure_pin_value = 0.0
pressure_pin_point = '0.5 0.5 0.0'
momentum_petsc_options_iname = '-pc_type -pc_hypre_type'
momentum_petsc_options_value = 'hypre boomeramg'
pressure_petsc_options_iname = '-pc_type -pc_hypre_type'
pressure_petsc_options_value = 'hypre boomeramg'
energy_petsc_options_iname = '-pc_type -pc_hypre_type'
energy_petsc_options_value = 'hypre boomeramg'
solid_energy_petsc_options_iname = '-pc_type -pc_hypre_type'
solid_energy_petsc_options_value = 'hypre boomeramg'
continue_on_max_its = true
# Improves the numerical integration used by UnobstructedPlanarViewFactor.
[Quadrature]
order = SECOND
[]
[]
################################################################################
# OUTPUTS
################################################################################
[Outputs]
exodus = true
csv = true
execute_on = TIMESTEP_END
[]
(test/tests/meshgenerators/boundary_deletion_generator/boundary_deletion.i)
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 2
nx = 2
ny = 2
[]
[boundary_removal]
type = BoundaryDeletionGenerator
input = gmg
boundary_names = 'right top'
[]
allow_renumbering = false
[]
[Reporters/mesh_info]
type = MeshInfo
items = sidesets
sideset_items = elems
[]
[Outputs]
[out]
type = JSON
execute_system_information_on = none
[]
[]
[Problem]
solve = false
[]
[Executioner]
type = Steady
[]
(test/tests/meshgenerators/sidesets_from_points_generator/sidesets_ambiguity.i)
[GlobalParams]
prevent_boundary_ids_overlap = false
[]
[Mesh]
[region_2_gen]
type = CartesianMeshGenerator
dim = 2
dx = '0.065 0.13 0.305 0.17 0.196'
ix = ' 2 2 2 2 2'
dy = '0.85438 '
iy = '6'
subdomain_id = '68 68 68 68 68'
[]
[region_2_move]
type = TransformGenerator
transform = TRANSLATE
vector_value = '1.2 1.551 0'
input = region_2_gen
[]
[region_3_gen]
type = CartesianMeshGenerator
dim = 2
dx = '0.24 0.24 0.24 0.24 0.24'
ix = ' 2 2 2 2 2'
dy = '0.744166666666666 0.744166666666667 0.744166666666667'
iy = ' 2 2 2'
subdomain_id = '56 57 58 59 60
51 52 53 54 55
46 47 48 49 50'
[]
[region_3_move]
type = TransformGenerator
transform = TRANSLATE
vector_value = '0 2.40538 0'
input = region_3_gen
[]
[region_1_gen]
type = GeneratedMeshGenerator
dim = 2
nx = 10
ny = 6
xmin = 0
xmax = 0.26
ymin = 1.551
ymax = 1.851
subdomain_ids = '62 62 62 62 62 62 62 62 62 62
62 62 62 62 62 62 62 62 62 62
62 62 62 62 62 62 62 62 62 62
62 62 62 62 62 62 62 62 62 62
62 62 62 62 62 62 62 62 62 62
62 62 62 62 62 62 62 62 62 62'
[]
[region_1_extend_1]
type = FillBetweenSidesetsGenerator
input_mesh_1 = 'region_3_move'
input_mesh_2 = 'region_1_gen'
boundary_1 = '0'
boundary_2 = '2'
num_layers = 6
block_id= 61
use_quad_elements = true
keep_inputs = true
begin_side_boundary_id = '3'
end_side_boundary_id = '1'
[]
[region_1_extend_2]
type = FillBetweenSidesetsGenerator
input_mesh_1 = 'region_2_move'
input_mesh_2 = 'region_1_gen'
boundary_1 = 3
boundary_2 = 1
num_layers = 6
block_id= 69
use_quad_elements = true
keep_inputs = false
begin_side_boundary_id = '0'
end_side_boundary_id = '3'
input_boundary_1_id = '1'
input_boundary_2_id = '3'
[]
[region_2_2_gen]
type = CartesianMeshGenerator
dim = 2
dx = '0.065 0.13 0.305 0.17 0.196'
ix = ' 2 2 2 2 2'
dy = '0.85438 '
iy = '6'
subdomain_id = '68 68 68 68 68'
[]
[region_2_2_move]
type = TransformGenerator
transform = TRANSLATE
vector_value = '1.2 1.551 0'
input = region_2_2_gen
[]
[region_6_gen]
type = CartesianMeshGenerator
dim = 2
dx = '0.26 0.94 0.065 0.13 0.305 0.17 0.196'
ix = '10 6 2 2 2 2 2'
dy = '0.584 0.967'
iy = ' 4 6'
subdomain_id = '62 72 72 72 72 72 72
62 70 71 71 71 71 71'
[]
[stitch_1_2_6]
type = StitchedMeshGenerator
inputs = 'region_1_extend_1 region_1_extend_2 region_2_2_move region_6_gen'
stitch_boundaries_pairs = '1 3;
1 3;
0 0' # 0 0 will leave a split mesh
merge_boundaries_with_same_name = false
[]
[rename_boundary_stitch_1_2_6]
type = RenameBoundaryGenerator
input = stitch_1_2_6
old_boundary = '1'
new_boundary = '2'
[]
[region_4_gen]
type = CartesianMeshGenerator
dim = 2
dx = '0.065 0.13'
ix = ' 2 2 '
dy = '0.744166666666666 0.744166666666667 0.744166666666667'
iy = ' 2 2 2'
subdomain_id = '78 92
78 91
78 90'
[]
[region_4_move]
type = TransformGenerator
transform = TRANSLATE
vector_value = '1.2 2.40538 0'
input = region_4_gen
[]
[region_5_gen]
type = CartesianMeshGenerator
dim = 2
dx = '0.17 0.196'
ix = '2 2'
dy = '0.39 1.8425'
iy = '2 4'
subdomain_id = '100 104
100 104'
[]
[region_5_move]
type = TransformGenerator
transform = TRANSLATE
vector_value = '1.7 2.40538 0'
input = region_5_gen
[]
[region_5_extend]
type = FillBetweenSidesetsGenerator
input_mesh_1 = 'region_4_move'
input_mesh_2 = 'region_5_move'
boundary_1 = 1
boundary_2 = 3
num_layers = 2
block_id= 96
use_quad_elements = true
keep_inputs = true
begin_side_boundary_id = '0'
end_side_boundary_id = '2'
[]
[rename_boundary_region_5]
type = RenameBoundaryGenerator
input = region_5_extend
old_boundary = '0'
new_boundary = '3'
[]
[stitch_1_2_6_5]
type = StitchedMeshGenerator
inputs = 'rename_boundary_stitch_1_2_6 rename_boundary_region_5'
stitch_boundaries_pairs = '2 3'
merge_boundaries_with_same_name = false
[]
[region_7_gen]
type = CartesianMeshGenerator
dim = 2
dx = '0.24 0.24 0.24 0.24 0.24 0.065 0.13 0.305 0.17 0.196'
ix = ' 2 2 2 2 2 2 2 2 2 2'
dy = '0.744166666666667 0.744166666666667 0.744166666666667 0.744166666666667
0.744166666666667 0.744166666666667 0.744166666666666 0.744166666666666
0.744166666666666 0.458 0.86002'
iy = '2 2 2 2 2 2 2 2 2 2 4'
subdomain_id = '41 42 43 44 45 77 89 95 99 103
36 37 38 39 40 77 88 95 99 103
31 32 33 34 35 77 87 95 99 103
26 27 28 29 30 76 86 94 98 102
21 22 23 24 25 76 85 94 98 102
16 17 18 19 20 76 84 94 98 102
11 12 13 14 15 75 83 93 97 101
6 7 8 9 10 75 82 93 97 101
1 2 3 4 5 75 81 93 97 101
67 67 67 67 67 74 80 65 65 66
63 63 63 63 63 73 79 64 64 64'
[]
[region_7_move]
type = TransformGenerator
transform = TRANSLATE
vector_value = '0.0 4.63788 0'
input = region_7_gen
[]
[stitch]
type = StitchedMeshGenerator
inputs = 'stitch_1_2_6_5 region_7_move'
stitch_boundaries_pairs = '2 0'
merge_boundaries_with_same_name = false
[]
[rename_boundary_1]
type = BoundaryDeletionGenerator
input = stitch
boundary_names = '0 1 2 3'
[]
[rename_boundary_2]
type = SideSetsFromPointsGenerator
input = rename_boundary_1
new_boundary = '4'
# the point here is on the slit; ambiguous.
points = '2.066 1.551 0.'
[]
[]
(test/tests/meshgenerators/mesh_diagnostics_generator/2D_missing_sideset.i)
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 2
nx = 2
ny = 2
[]
[deletion]
type = BoundaryDeletionGenerator
input = gmg
boundary_names = 'right'
[]
[diag]
type = MeshDiagnosticsGenerator
input = deletion
check_for_watertight_sidesets = INFO
[]
[]
[Outputs]
exodus = true
[]
(modules/heat_transfer/test/tests/radiation_transfer_action/radiative_transfer_no_action_linearfv_steady.i)
[Problem]
kernel_coverage_check = false
linear_sys_names = 'energy_system'
[]
[Mesh]
type = MeshGeneratorMesh
[cmg]
type = CartesianMeshGenerator
dim = 2
dx = '1 1.3 1.9'
ix = '5 5 5'
dy = '2 1.2 0.9'
iy = '5 5 5'
subdomain_id = '0 1 0
4 5 2
0 3 0'
[]
[inner_bottom]
type = SideSetsBetweenSubdomainsGenerator
input = cmg
primary_block = 1
paired_block = 5
new_boundary = 'inner_bottom'
[]
[inner_left]
type = SideSetsBetweenSubdomainsGenerator
input = inner_bottom
primary_block = 4
paired_block = 5
new_boundary = 'inner_left'
[]
[inner_right]
type = SideSetsBetweenSubdomainsGenerator
input = inner_left
primary_block = 2
paired_block = 5
new_boundary = 'inner_right'
[]
[inner_top]
type = SideSetsBetweenSubdomainsGenerator
input = inner_right
primary_block = 3
paired_block = 5
new_boundary = 'inner_top'
[]
[rename]
type = RenameBlockGenerator
old_block = '1 2 3 4'
new_block = '0 0 0 0'
input = inner_top
[]
[split_inner_bottom]
type = PatchSidesetGenerator
boundary = 4
n_patches = 2
partitioner = centroid
centroid_partitioner_direction = x
input = rename
[]
[split_inner_left]
type = PatchSidesetGenerator
boundary = 5
n_patches = 2
partitioner = centroid
centroid_partitioner_direction = y
input = split_inner_bottom
[]
[split_inner_right]
type = PatchSidesetGenerator
boundary = 6
n_patches = 2
partitioner = centroid
centroid_partitioner_direction = y
input = split_inner_left
[]
[split_inner_top]
type = PatchSidesetGenerator
boundary = 7
n_patches = 3
partitioner = centroid
centroid_partitioner_direction = x
input = split_inner_right
[]
[delete_others]
type = BoundaryDeletionGenerator
input = 'split_inner_top'
boundary_names = 'inner_bottom inner_top inner_left inner_right'
[]
[delete_block5]
type = BlockDeletionGenerator
input = 'delete_others'
block = '5'
[]
[]
[Variables]
[temperature]
type = MooseLinearVariableFVReal
solver_sys = 'energy_system'
initial_condition = 400
[]
[]
[LinearFVKernels]
[temp_conduction]
type = LinearFVDiffusion
diffusion_coeff = 5.
variable = temperature
[]
[]
[UserObjects]
[gray_lambert]
type = ViewFactorObjectSurfaceRadiation
boundary = 'inner_bottom_0 inner_bottom_1
inner_left_0 inner_left_1
inner_right_0 inner_right_1
inner_top_0 inner_top_1 inner_top_2'
fixed_temperature_boundary = 'inner_bottom_0 inner_bottom_1'
fixed_boundary_temperatures = '1200 1200'
adiabatic_boundary = 'inner_top_0 inner_top_1 inner_top_2'
emissivity = '0.9 0.9
0.8 0.8
0.4 0.4
1 1 1'
temperature = temperature
view_factor_object_name = view_factor
execute_on = 'NONLINEAR'
[]
[view_factor]
type = UnobstructedPlanarViewFactor
boundary = 'inner_bottom_0 inner_bottom_1
inner_left_0 inner_left_1
inner_right_0 inner_right_1
inner_top_0 inner_top_1 inner_top_2'
normalize_view_factor = true
execute_on = 'INITIAL'
[]
[]
[LinearFVBCs]
[left]
type = LinearFVAdvectionDiffusionFunctorDirichletBC
variable = temperature
boundary = 'left'
functor = 600.
[]
[right]
type = LinearFVAdvectionDiffusionFunctorDirichletBC
variable = temperature
boundary = 'right'
functor = 300.
[]
[radiation]
type = LinearFVGrayLambertBC
variable = temperature
temperature_radiation = temperature
coeff_diffusion = 5.
surface_radiation_object_name = gray_lambert
boundary = 'inner_left_0 inner_left_1
inner_right_0 inner_right_1'
[]
[]
[Executioner]
type = Steady
petsc_options_iname = '-energy_system_pc_type -energy_system_pc_factor_shift_type -snes_linesearch_damping'
petsc_options_value = 'hypre boomeramg 0.8'
l_abs_tol = 1e-10
l_tol = 1e-10
multi_system_fixed_point=true
multi_system_fixed_point_convergence=linear
multi_system_fixed_point_relaxation_factor = 0.5
[Quadrature]
side_order = SECOND
[]
[]
[Convergence]
[linear]
type = IterationCountConvergence
max_iterations = 100
converge_at_max_iterations = true
[]
[]
[Outputs]
exodus = true
[]
(test/tests/meshgenerators/mesh_diagnostics_generator/3D_missing_nodeset.i)
[Mesh]
[gmg]
type = GeneratedMeshGenerator
dim = 3
nx = 2
ny = 2
nz = 2
[]
[deletion]
type = BoundaryDeletionGenerator
input = gmg
boundary_names = 'right'
[]
[diag]
type = MeshDiagnosticsGenerator
input = deletion
check_for_watertight_nodesets = INFO
[]
[]
[Outputs]
exodus = true
[]
(test/tests/mesh/preparedness/test.i)
[GlobalParams]
prevent_boundary_ids_overlap = false
[]
[Mesh]
[region_2_gen]
type = CartesianMeshGenerator
dim = 2
dx = '0.065 0.13 0.305 0.17 0.196'
ix = ' 2 2 2 2 2'
dy = '0.85438 '
iy = '6'
subdomain_id = '68 68 68 68 68'
[]
[region_2_move]
type = TransformGenerator
transform = TRANSLATE
vector_value = '1.2 1.551 0'
input = region_2_gen
[]
[region_3_gen]
type = CartesianMeshGenerator
dim = 2
dx = '0.24 0.24 0.24 0.24 0.24'
ix = ' 2 2 2 2 2'
dy = '0.744166666666666 0.744166666666667 0.744166666666667'
iy = ' 2 2 2'
subdomain_id = '56 57 58 59 60
51 52 53 54 55
46 47 48 49 50'
[]
[region_3_move]
type = TransformGenerator
transform = TRANSLATE
vector_value = '0 2.40538 0'
input = region_3_gen
[]
[region_1_gen]
type = GeneratedMeshGenerator
dim = 2
nx = 10
ny = 6
xmin = 0
xmax = 0.26
ymin = 1.551
ymax = 1.851
subdomain_ids = '62 62 62 62 62 62 62 62 62 62
62 62 62 62 62 62 62 62 62 62
62 62 62 62 62 62 62 62 62 62
62 62 62 62 62 62 62 62 62 62
62 62 62 62 62 62 62 62 62 62
62 62 62 62 62 62 62 62 62 62'
[]
[region_1_extend_1]
type = FillBetweenSidesetsGenerator
input_mesh_1 = 'region_3_move'
input_mesh_2 = 'region_1_gen'
boundary_1 = '0'
boundary_2 = '2'
num_layers = 6
block_id= 61
use_quad_elements = true
keep_inputs = true
begin_side_boundary_id = '3'
end_side_boundary_id = '1'
[]
[region_1_extend_2]
type = FillBetweenSidesetsGenerator
input_mesh_1 = 'region_2_move'
input_mesh_2 = 'region_1_gen'
boundary_1 = 3
boundary_2 = 1
num_layers = 6
block_id= 69
use_quad_elements = true
keep_inputs = false
begin_side_boundary_id = '0'
end_side_boundary_id = '3'
input_boundary_1_id = '1'
input_boundary_2_id = '3'
[]
[region_2_2_gen]
type = CartesianMeshGenerator
dim = 2
dx = '0.065 0.13 0.305 0.17 0.196'
ix = ' 2 2 2 2 2'
dy = '0.85438 '
iy = '6'
subdomain_id = '68 68 68 68 68'
[]
[region_2_2_move]
type = TransformGenerator
transform = TRANSLATE
vector_value = '1.2 1.551 0'
input = region_2_2_gen
[]
[region_6_gen]
type = CartesianMeshGenerator
dim = 2
dx = '0.26 0.94 0.065 0.13 0.305 0.17 0.196'
ix = '10 6 2 2 2 2 2'
dy = '0.584 0.967'
iy = ' 4 6'
subdomain_id = '62 72 72 72 72 72 72
62 70 71 71 71 71 71'
[]
[stitch_1_2_6]
type = StitchedMeshGenerator
inputs = 'region_1_extend_1 region_1_extend_2 region_2_2_move region_6_gen'
stitch_boundaries_pairs = '1 3;
1 3;
0 2'
merge_boundaries_with_same_name = false
[]
[rename_boundary_stitch_1_2_6]
type = RenameBoundaryGenerator
input = stitch_1_2_6
old_boundary = '1'
new_boundary = '2'
[]
[region_4_gen]
type = CartesianMeshGenerator
dim = 2
dx = '0.065 0.13'
ix = ' 2 2 '
dy = '0.744166666666666 0.744166666666667 0.744166666666667'
iy = ' 2 2 2'
subdomain_id = '78 92
78 91
78 90'
[]
[region_4_move]
type = TransformGenerator
transform = TRANSLATE
vector_value = '1.2 2.40538 0'
input = region_4_gen
[]
[region_5_gen]
type = CartesianMeshGenerator
dim = 2
dx = '0.17 0.196'
ix = '2 2'
dy = '0.39 1.8425'
iy = '2 4'
subdomain_id = '100 104
100 104'
[]
[region_5_move]
type = TransformGenerator
transform = TRANSLATE
vector_value = '1.7 2.40538 0'
input = region_5_gen
[]
[region_5_extend]
type = FillBetweenSidesetsGenerator
input_mesh_1 = 'region_4_move'
input_mesh_2 = 'region_5_move'
boundary_1 = 1
boundary_2 = 3
num_layers = 2
block_id= 96
use_quad_elements = true
keep_inputs = true
begin_side_boundary_id = '0'
end_side_boundary_id = '2'
[]
[rename_boundary_region_5]
type = RenameBoundaryGenerator
input = region_5_extend
old_boundary = '0'
new_boundary = '3'
[]
[stitch_1_2_6_5]
type = StitchedMeshGenerator
inputs = 'rename_boundary_stitch_1_2_6 rename_boundary_region_5'
stitch_boundaries_pairs = '2 3'
merge_boundaries_with_same_name = false
[]
[region_7_gen]
type = CartesianMeshGenerator
dim = 2
dx = '0.24 0.24 0.24 0.24 0.24 0.065 0.13 0.305 0.17 0.196'
ix = ' 2 2 2 2 2 2 2 2 2 2'
dy = '0.744166666666667 0.744166666666667 0.744166666666667 0.744166666666667
0.744166666666667 0.744166666666667 0.744166666666666 0.744166666666666
0.744166666666666 0.458 0.86002'
iy = '2 2 2 2 2 2 2 2 2 2 4'
subdomain_id = '41 42 43 44 45 77 89 95 99 103
36 37 38 39 40 77 88 95 99 103
31 32 33 34 35 77 87 95 99 103
26 27 28 29 30 76 86 94 98 102
21 22 23 24 25 76 85 94 98 102
16 17 18 19 20 76 84 94 98 102
11 12 13 14 15 75 83 93 97 101
6 7 8 9 10 75 82 93 97 101
1 2 3 4 5 75 81 93 97 101
67 67 67 67 67 74 80 65 65 66
63 63 63 63 63 73 79 64 64 64'
[]
[region_7_move]
type = TransformGenerator
transform = TRANSLATE
vector_value = '0.0 4.63788 0'
input = region_7_gen
[]
[stitch]
type = StitchedMeshGenerator
inputs = 'stitch_1_2_6_5 region_7_move'
stitch_boundaries_pairs = '2 0'
merge_boundaries_with_same_name = false
[]
[rename_boundary_1]
type = BoundaryDeletionGenerator
input = stitch
boundary_names = '0 1 2 3'
[]
[rename_boundary_2]
type = SideSetsFromPointsGenerator
input = rename_boundary_1
new_boundary = '2 4 1 3'
points = '1.2 0. 0.
2.066 1.551 0.
1.2 12.6534 0.
0. 1.551 0.'
[]
[rename_boundary_3]
type = RenameBoundaryGenerator
input = rename_boundary_2
new_boundary = 'rbottom ssright rtop ssleft'
old_boundary = '2 4 1 3'
[]
[rename_blocks]
type = RenameBlockGenerator
input = rename_boundary_3
old_block = '1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20
21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60
61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80
81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100
101 102 103 104'
new_block = 'pbedfuel001 pbedfuel002 pbedfuel003 pbedfuel004 pbedfuel005
pbedfuel006 pbedfuel007 pbedfuel008 pbedfuel009 pbedfuel010
pbedfuel011 pbedfuel012 pbedfuel013 pbedfuel014 pbedfuel015
pbedfuel016 pbedfuel017 pbedfuel018 pbedfuel019 pbedfuel020
pbedfuel021 pbedfuel022 pbedfuel023 pbedfuel024 pbedfuel025
pbedfuel026 pbedfuel027 pbedfuel028 pbedfuel029 pbedfuel030
pbedfuel031 pbedfuel032 pbedfuel033 pbedfuel034 pbedfuel035
pbedfuel036 pbedfuel037 pbedfuel038 pbedfuel039 pbedfuel040
pbedfuel041 pbedfuel042 pbedfuel043 pbedfuel044 pbedfuel045
pbedfuel046 pbedfuel047 pbedfuel048 pbedfuel049 pbedfuel050
pbedfuel051 pbedfuel052 pbedfuel053 pbedfuel054 pbedfuel055
pbedfuel056 pbedfuel057 pbedfuel058 pbedfuel059 pbedfuel060
consfuel061 dischfuel062 upref063 upref064 upref065 upref066
upcvt067 lwref068 outch069 lwrpln070 htleg071 lwref072 buffr073
buffr074 buffr075 buffr076 buffr077 buffr078 crds079 crds080
crds081 crds082 crds083 crds084 crds085 crds086 crds087 crds088
crds089 crds090 crds091 crds092 radrf093 radrf094 radrf095 radrf096
risr097 risr098 risr099 risr100 radrf101 radrf102 radrf103 radrf104'
[]
[]
[Variables]
[T_solid]
type = MooseVariableFVReal
initial_condition = 100
[]
[]
[FVKernels]
[energy_storage]
type = FVTimeKernel
variable = T_solid
[]
[solid_energy_diffusion_core]
type = FVAnisotropicDiffusion
variable = T_solid
coeff = 'effective_thermal_conductivity'
[]
[]
[FVBCs]
[side_set_bc1]
type = FVDirichletBC
variable = T_solid
value = '300'
boundary = 'rtop'
[]
[side_set_bc2]
type = FVDirichletBC
variable = T_solid
value = '600'
boundary = 'rbottom'
[]
[]
[Materials]
[all_channels_porosity]
type = ADGenericFunctorMaterial
prop_names = 'porosity'
prop_values = 0.5
[]
[solid_blocks_full_density_graphite]
type = ADGenericFunctorMaterial
prop_names = 'rho_s cp_s k_s '
prop_values = '1.0 2.0 3.0'
[]
[effective_solid_thermal_conductivity_solid_only]
type = ADGenericVectorFunctorMaterial
prop_names = 'effective_thermal_conductivity'
prop_values = 'k_s k_s k_s'
[]
[]
[Preconditioning]
[smp]
type = SMP
full = true
[]
[]
[Executioner]
type = Transient
solve_type = NEWTON
petsc_options_iname = '-pc_type -ksp_gmres_restart -pc_factor_shift_type'
petsc_options_value = 'lu 100 NONZERO'
# Tolerances.
nl_abs_tol = 1e-8
nl_rel_tol = 1e-9
line_search = none
nl_max_its = 15
[TimeStepper]
type = IterationAdaptiveDT
dt = 0.05
cutback_factor = 0.5
growth_factor = 2.00
optimal_iterations = 6
[]
# Steady state detection.
steady_state_detection = true
steady_state_tolerance = 1e-13
abort_on_solve_fail = true
num_steps = 1
[]
[Outputs]
exodus = true
print_linear_residuals = false
print_linear_converged_reason = false
print_nonlinear_converged_reason = false
[]
(modules/navier_stokes/test/tests/finite_volume/ins/radiation_s2s/radiative_transfer_no_action_linearfv_simple.i)
[Problem]
kernel_coverage_check = false
linear_sys_names = 'energy_system u_system v_system p_system'
[]
[Mesh]
type = MeshGeneratorMesh
[cmg]
type = CartesianMeshGenerator
dim = 2
dx = '1 1.3 1.9'
ix = '5 5 5'
dy = '2 1.2 0.9'
iy = '5 5 5'
subdomain_id = '0 1 0
4 5 2
0 3 0'
[]
[inner_bottom]
type = SideSetsBetweenSubdomainsGenerator
input = cmg
primary_block = 1
paired_block = 5
new_boundary = 'inner_bottom'
[]
[inner_left]
type = SideSetsBetweenSubdomainsGenerator
input = inner_bottom
primary_block = 4
paired_block = 5
new_boundary = 'inner_left'
[]
[inner_right]
type = SideSetsBetweenSubdomainsGenerator
input = inner_left
primary_block = 2
paired_block = 5
new_boundary = 'inner_right'
[]
[inner_top]
type = SideSetsBetweenSubdomainsGenerator
input = inner_right
primary_block = 3
paired_block = 5
new_boundary = 'inner_top'
[]
[rename]
type = RenameBlockGenerator
old_block = '1 2 3 4'
new_block = '0 0 0 0'
input = inner_top
[]
[split_inner_bottom]
type = PatchSidesetGenerator
boundary = 4
n_patches = 2
partitioner = centroid
centroid_partitioner_direction = x
input = rename
[]
[split_inner_left]
type = PatchSidesetGenerator
boundary = 5
n_patches = 2
partitioner = centroid
centroid_partitioner_direction = y
input = split_inner_bottom
[]
[split_inner_right]
type = PatchSidesetGenerator
boundary = 6
n_patches = 2
partitioner = centroid
centroid_partitioner_direction = y
input = split_inner_left
[]
[split_inner_top]
type = PatchSidesetGenerator
boundary = 7
n_patches = 3
partitioner = centroid
centroid_partitioner_direction = x
input = split_inner_right
[]
[delete_others]
type = BoundaryDeletionGenerator
input = 'split_inner_top'
boundary_names = 'inner_bottom inner_top inner_left inner_right'
[]
[delete_block5]
type = BlockDeletionGenerator
input = 'delete_others'
block = '5'
[]
[]
[Variables]
[temperature]
type = MooseLinearVariableFVReal
solver_sys = 'energy_system'
initial_condition = 400
[]
[vel_x]
type = MooseLinearVariableFVReal
solver_sys = 'u_system'
initial_condition = 0
[]
[vel_y]
type = MooseLinearVariableFVReal
solver_sys = 'v_system'
initial_condition = 0
[]
[pressure]
type = MooseLinearVariableFVReal
solver_sys = 'p_system'
initial_condition = 0
[]
[]
[UserObjects]
[rc]
type = RhieChowMassFlux
u = vel_x
v = vel_y
pressure = pressure
rho = 1
p_diffusion_kernel = p_diffusion
[]
[]
[LinearFVKernels]
[temp_conduction]
type = LinearFVDiffusion
diffusion_coeff = 5.
variable = temperature
[]
[p_diffusion]
type = LinearFVPressureCorrectionDiffusion
variable = pressure
diffusion_tensor = Ainv
use_nonorthogonal_correction = false
[]
[]
[UserObjects]
[gray_lambert]
type = ViewFactorObjectSurfaceRadiation
boundary = 'inner_bottom_0 inner_bottom_1
inner_left_0 inner_left_1
inner_right_0 inner_right_1
inner_top_0 inner_top_1 inner_top_2'
fixed_temperature_boundary = 'inner_bottom_0 inner_bottom_1'
fixed_boundary_temperatures = '1200 1200'
adiabatic_boundary = 'inner_top_0 inner_top_1 inner_top_2'
emissivity = '0.9 0.9
0.8 0.8
0.4 0.4
1 1 1'
temperature = temperature
view_factor_object_name = view_factor
execute_on = 'LINEAR TIMESTEP_BEGIN TIMESTEP_END NONLINEAR'
[]
[view_factor]
type = UnobstructedPlanarViewFactor
boundary = 'inner_bottom_0 inner_bottom_1
inner_left_0 inner_left_1
inner_right_0 inner_right_1
inner_top_0 inner_top_1 inner_top_2'
normalize_view_factor = true
execute_on = 'INITIAL'
[]
[]
[LinearFVBCs]
[left]
type = LinearFVAdvectionDiffusionFunctorDirichletBC
variable = temperature
boundary = 'left'
functor = 600.
[]
[right]
type = LinearFVAdvectionDiffusionFunctorDirichletBC
variable = temperature
boundary = 'right'
functor = 300.
[]
[radiation]
type = LinearFVGrayLambertBC
variable = temperature
temperature_radiation = temperature
coeff_diffusion = 5.
surface_radiation_object_name = gray_lambert
boundary = 'inner_left_0 inner_left_1
inner_right_0 inner_right_1'
[]
[]
[Executioner]
type = SIMPLE
num_iterations = 2000
should_solve_momentum = false
should_solve_pressure = false
energy_system = 'energy_system'
energy_l_abs_tol = 1e-11
energy_l_tol = 1e-11
energy_equation_relaxation = 0.8
energy_field_relaxation = 0.8
energy_absolute_tolerance = 1e-10
energy_petsc_options_iname = '-pc_type -pc_hypre_type'
energy_petsc_options_value = 'hypre boomeramg'
print_fields = false
continue_on_max_its = true
[Quadrature]
side_order = SECOND
[]
rhie_chow_user_object = 'rc'
momentum_systems = 'u_system v_system'
pressure_system = 'p_system'
[]
[Outputs]
exodus = true
[]
(modules/navier_stokes/test/tests/finite_volume/ins/natural_convection/linear_segregated/2d/diff_heated_cavity_s2s_rad.i)
################################################################################
# MATERIAL PROPERTIES
################################################################################
rho = 3279.
T_0 = 875.0
mu = 1.
k_cond = 38.0
cp = 640.
alpha = 3.26e-5
eps = 1.0
rad_left = 'left_0 left_1 left_2 left_3 left_4'
rad_right = 'right_0 right_1 right_2 right_3 right_4'
rad_top = 'top_0 top_1 top_2 top_3 top_4'
rad_bottom = 'bottom_0 bottom_1 bottom_2 bottom_3 bottom_4'
rad_fixed = '${rad_left} ${rad_right}'
rad_variable = '${rad_top} ${rad_bottom}'
rad_all = '${rad_left} ${rad_right} ${rad_top} ${rad_bottom}'
walls = ${rad_all}
[GlobalParams]
rhie_chow_user_object = 'ins_rhie_chow_interpolator'
advected_interp_method = 'upwind'
u = vel_x
v = vel_y
[]
[Problem]
linear_sys_names = 'u_system v_system pressure_system energy_system'
previous_nl_solution_required = true
[]
################################################################################
# GEOMETRY
################################################################################
[Mesh]
type = MeshGeneratorMesh
parallel_type = replicated
[gen]
type = GeneratedMeshGenerator
dim = 2
xmin = 0
xmax = 1
ymin = 0
ymax = 1
nx = 20
ny = 20
[]
[patch_left]
type = PatchSidesetGenerator
input = gen
boundary = left
n_patches = 5
partitioner = centroid
centroid_partitioner_direction = y
[]
[patch_right]
type = PatchSidesetGenerator
input = patch_left
boundary = right
n_patches = 5
partitioner = centroid
centroid_partitioner_direction = y
[]
[patch_top]
type = PatchSidesetGenerator
input = patch_right
boundary = top
n_patches = 5
partitioner = centroid
centroid_partitioner_direction = x
[]
[patch_bottom]
type = PatchSidesetGenerator
input = patch_top
boundary = bottom
n_patches = 5
partitioner = centroid
centroid_partitioner_direction = x
[]
[delete_original_sidesets]
type = BoundaryDeletionGenerator
input = patch_bottom
boundary_names = 'left right top bottom'
[]
[]
################################################################################
# EQUATIONS: VARIABLES, KERNELS & BCS
################################################################################
[UserObjects]
[ins_rhie_chow_interpolator]
type = RhieChowMassFlux
u = vel_x
v = vel_y
pressure = pressure
rho = ${rho}
p_diffusion_kernel = p_diffusion
[]
[view_factor_study]
type = ViewFactorRayStudy
boundary = ${rad_all}
execute_on = INITIAL
face_order = FOURTH
polar_quad_order = 12
azimuthal_quad_order = 4
warn_subdomain_hmax = false
[]
[view_factor]
type = RayTracingViewFactor
boundary = ${rad_all}
ray_study_name = view_factor_study
normalize_view_factor = true
execute_on = INITIAL
[]
[gray_lambert]
type = ViewFactorObjectSurfaceRadiation
boundary = ${rad_all}
fixed_temperature_boundary = ${rad_fixed}
fixed_boundary_temperatures = '880 880 880 880 880
870 870 870 870 870'
# Top and bottom are variable-temperature radiating surfaces.
adiabatic_boundary = ''
emissivity = '${eps} ${eps} ${eps} ${eps} ${eps}
${eps} ${eps} ${eps} ${eps} ${eps}
${eps} ${eps} ${eps} ${eps} ${eps}
${eps} ${eps} ${eps} ${eps} ${eps}'
temperature = T_fluid
view_factor_object_name = view_factor
# NONLINEAR updates the radiation solution between SIMPLE iterations.
execute_on = 'NONLINEAR'
[]
[]
[RayBCs]
[view_factor]
type = ViewFactorRayBC
boundary = ${rad_all}
[]
[]
[Variables]
[vel_x]
type = MooseLinearVariableFVReal
solver_sys = u_system
[]
[vel_y]
type = MooseLinearVariableFVReal
solver_sys = v_system
[]
[pressure]
type = MooseLinearVariableFVReal
initial_condition = 0
solver_sys = pressure_system
[]
[T_fluid]
type = MooseLinearVariableFVReal
solver_sys = energy_system
initial_condition = 875
[]
[]
[FVInterpolationMethods]
[upwind]
type = FVAdvectedUpwind
[]
[]
[LinearFVKernels]
[u_advection_stress]
type = LinearWCNSFVMomentumFlux
variable = vel_x
advected_interp_method_name = upwind
mu = ${mu}
momentum_component = 'x'
use_nonorthogonal_correction = false
[]
[u_pressure]
type = LinearFVMomentumPressure
variable = vel_x
pressure = pressure
momentum_component = 'x'
[]
[u_buoyancy]
type = LinearFVMomentumBoussinesq
variable = vel_x
T_fluid = T_fluid
gravity = '0 -9.8 0'
rho = ${rho}
ref_temperature = ${T_0}
alpha_name = ${alpha}
momentum_component = 'x'
[]
[v_advection_stress]
type = LinearWCNSFVMomentumFlux
variable = vel_y
advected_interp_method_name = upwind
mu = ${mu}
momentum_component = 'y'
use_nonorthogonal_correction = false
[]
[v_pressure]
type = LinearFVMomentumPressure
variable = vel_y
pressure = pressure
momentum_component = 'y'
[]
[v_buoyancy]
type = LinearFVMomentumBoussinesq
variable = vel_y
T_fluid = T_fluid
gravity = '0 -9.81 0'
rho = ${rho}
ref_temperature = ${T_0}
alpha_name = ${alpha}
momentum_component = 'y'
[]
[p_diffusion]
type = LinearFVPressureCorrectionDiffusion
variable = pressure
diffusion_tensor = Ainv
use_nonorthogonal_correction = false
[]
[HbyA_divergence]
type = LinearFVDivergence
variable = pressure
face_flux = HbyA
force_boundary_execution = false
[]
####### FLUID ENERGY EQUATION #######
[heat_advection]
type = LinearFVEnergyAdvection
variable = T_fluid
advected_quantity = temperature
cp = ${cp}
[]
[conduction]
type = LinearFVDiffusion
variable = T_fluid
diffusion_coeff = ${fparse k_cond}
[]
[]
[LinearFVBCs]
[no-slip-u]
type = LinearFVAdvectionDiffusionFunctorDirichletBC
variable = vel_x
boundary = ${walls}
functor = 0
[]
[no-slip-v]
type = LinearFVAdvectionDiffusionFunctorDirichletBC
variable = vel_y
boundary = ${walls}
functor = 0
[]
[T_cold]
type = LinearFVAdvectionDiffusionFunctorDirichletBC
variable = T_fluid
boundary = ${rad_right}
functor = 870.0
[]
[T_hot]
type = LinearFVAdvectionDiffusionFunctorDirichletBC
variable = T_fluid
boundary = ${rad_left}
functor = 880.0
[]
[radiation_top_bottom]
type = LinearFVGrayLambertBC
variable = T_fluid
temperature_radiation = T_fluid
coeff_diffusion = ${k_cond}
surface_radiation_object_name = gray_lambert
boundary = ${rad_variable}
[]
[pressure]
type = LinearFVPressureFluxBC
boundary = ${walls}
variable = pressure
HbyA_flux = HbyA
Ainv = Ainv
u = vel_x
v = vel_y
rho = ${rho}
[]
[]
[FunctorMaterials]
[constant_functors]
type = GenericFunctorMaterial
prop_names = 'cp alpha_b'
prop_values = '${cp} ${alpha}'
[]
[]
################################################################################
# EXECUTION / SOLVE
################################################################################
[Executioner]
type = SIMPLE
momentum_l_abs_tol = 1e-14
pressure_l_abs_tol = 1e-14
energy_l_abs_tol = 1e-14
momentum_l_tol = 0
pressure_l_tol = 0
energy_l_tol = 0
rhie_chow_user_object = 'ins_rhie_chow_interpolator'
momentum_systems = 'u_system v_system'
pressure_system = 'pressure_system'
energy_system = 'energy_system'
momentum_equation_relaxation = 0.7
pressure_variable_relaxation = 0.3
energy_equation_relaxation = 0.9
num_iterations = 1500
# Tight enough that the gold file does not depend on the number of MPI ranks.
pressure_absolute_tolerance = 1e-11
momentum_absolute_tolerance = 1e-11
energy_absolute_tolerance = 1e-11
print_fields = false
momentum_l_max_its = 300
pin_pressure = true
pressure_pin_value = 0.0
pressure_pin_point = '0.5 0.0 0.0'
momentum_petsc_options_iname = '-pc_type -pc_hypre_type'
momentum_petsc_options_value = 'hypre boomeramg'
pressure_petsc_options_iname = '-pc_type -pc_hypre_type'
pressure_petsc_options_value = 'hypre boomeramg'
energy_petsc_options_iname = '-pc_type -pc_hypre_type'
energy_petsc_options_value = 'hypre boomeramg'
continue_on_max_its = true
[]
################################################################################
# SIMULATION OUTPUTS
################################################################################
[Outputs]
exodus = true
[]
(test/tests/meshgenerators/parsed_generate_sideset/parsed_generate_sideset_exterior_limited.i)
# This input is meant to be combined with parsed_generate_sideset.i
[Mesh]
# Delete top
[delete]
type = BoundaryDeletionGenerator
input = 'sideset'
boundary_names = 'top'
[]
# Recreate it but using the exterior limited feature
[new_top]
type = ParsedGenerateSideset
input = delete
# all qualify
combinatorial_geometry = 'z < 1e6'
normal = '0 1 0'
new_sideset_name = top
[]
[]