- has_outer_squareFalseIt determines if meshes for a outer square are added to concentric circle meshes.
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:It determines if meshes for a outer square are added to concentric circle meshes.
- num_sectorsnum_sectors % 2 = 0, num_sectors > 0Number of azimuthal sectors in each quadrant'num_sectors' must be an even number.
C++ Type:unsigned int
Unit:(no unit assumed)
Controllable:No
Description:num_sectors % 2 = 0, num_sectors > 0Number of azimuthal sectors in each quadrant'num_sectors' must be an even number.
- preserve_volumesFalseVolume of concentric circles can be preserved using this function.
Default:False
C++ Type:bool
Unit:(no unit assumed)
Controllable:No
Description:Volume of concentric circles can be preserved using this function.
- radiiRadii of major concentric circles
C++ Type:std::vector<double>
Unit:(no unit assumed)
Controllable:No
Description:Radii of major concentric circles
- ringsNumber of rings in each circle or in the enclosing square
C++ Type:std::vector<unsigned int>
Unit:(no unit assumed)
Controllable:No
Description:Number of rings in each circle or in the enclosing square
ConcentricCircleMeshGenerator
This ConcentricCircleMeshGenerator source code is to generate concentric circle meshes.
Overview
The ConcentricCircleMeshGenerator
object is used to generate a 2D mesh for concentric circles. Users can refine the mesh by providing a high number of rings for each specified concentric circle region or a high number of sectors in each quadrant. The test, concentric_circle_mesh_generator.i, explains the use of the ConcentricCircleMeshGenerator
object. To execute the test, only generating a 2D mesh:
~/projects/moose/test/moose_test-opt -i concentric_circle_mesh_generator.i --mesh-only
To execute the test with the engineering and mathematical physics solvers:
~/projects/moose/test/moose_test-opt -i concentric_circle_mesh2.i
Be aware: ConcentricCircleMeshGenerator
only works with Replicated meshes.
More Information
ConcentricCircleMeshGenerator
works by creating the first quadrant, called "top_right." An input parameter, called "portion", controls which portion of mesh would be generated. Any other one-fourth portions of circles are generated by rotating the "top_right" portion. Half portions are generated by stitching two different one-fourth portions depending on users' preference.
Users must provide the input parameters, such as:
number of azimuthal sectors in a quadrant
list of radii: specific locations of radii of concentric circles
list of rings: numbers of rings for concentric circles
inner mesh fraction: ratio of the length of the inner square to the radius of the innermost circle mesh
whether the volume for concentric circles should be preserved or not (true/false)
iteration number: number of iterations for Laplace smoothing
Users can choose if the mesh for the enclosing square is added to the concentric circle mesh or not. A portion can be specified, however, it is not required. The default setting generates the full concentric circles.
Developer Information
If one needs to enhance ConcentricCircleMeshGenerator,
Laplace smoothing has to be constrained to the center circle. Efficient algorithms for adding nodes and elements, including the connectivity, may be needed. They can be found in ConcentricCircleMeshGenerator.C
.
Example Syntax
[Mesh]
[./ccmg]
type = ConcentricCircleMeshGenerator
num_sectors = 6
radii = '0.2546 0.3368 0.3600 0.3818 0.3923 0.4025 0.4110 0.4750'
rings = '5 3 2 1 1 1 1 3 5'
has_outer_square = on
pitch = 1.42063
#portion = left_half
preserve_volumes = off
smoothing_max_it = 3
[]
[]
(test/tests/meshgenerators/concentric_circle_mesh_generator/concentric_circle_mesh_generator.i)Input Parameters
- pitch0The enclosing square can be added to the completed concentric circle mesh.Elements are quad meshes.
Default:0
C++ Type:double
Unit:(no unit assumed)
Controllable:No
Description:The enclosing square can be added to the completed concentric circle mesh.Elements are quad meshes.
- portionfullControl of which part of mesh is created
Default:full
C++ Type:MooseEnum
Unit:(no unit assumed)
Options:full, top_right, top_left, bottom_left, bottom_right, right_half, left_half, top_half, bottom_half
Controllable:No
Description:Control of which part of mesh is created
- smoothing_max_it1Number of Laplacian smoothing iterations
Default:1
C++ Type:unsigned int
Unit:(no unit assumed)
Controllable:No
Description:Number of Laplacian smoothing iterations
Optional Parameters
- 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: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
Unit:(no unit assumed)
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
Unit:(no unit assumed)
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
Unit:(no unit assumed)
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
Unit:(no unit assumed)
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
- (modules/navier_stokes/examples/flow-over-circle/mesh.i)
- (modules/optimization/test/tests/simp/2d_twoconstraints.i)
- (modules/reactor/test/tests/meshgenerators/reporting_id/cartesian_id/core_reporting_id.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_mortar/large_gap_heat_transfer_test_cylinder_mortar.i)
- (test/tests/meshgenerators/concentric_circle_mesh_generator/concentric_circle_mesh2.i)
- (test/tests/meshgenerators/xy_mesh_line_cutter/err_multi_block_cut.i)
- (test/tests/meshgenerators/plane_id_mesh_generator/plane_id_pin3d.i)
- (modules/reactor/test/tests/meshgenerators/reporting_id/cartesian_id/assembly_reporting_id.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_mortar/large_gap_heat_transfer_test_cylinder.i)
- (modules/optimization/test/tests/simp/2d.i)
- (modules/reactor/test/tests/meshgenerators/reporting_id/cartesian_id/core_zigzag_reporting_id.i)
- (modules/heat_transfer/test/tests/directional_flux_bc/2d.i)
- (modules/optimization/test/tests/executioners/constrained/shape_optimization/forward.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_mortar/large_gap_heat_transfer_test_cylinder_mortar_error.i)
- (test/tests/meshgenerators/xy_delaunay_generator/xydelaunay_from_2d.i)
- (test/tests/userobjects/nearest_point_layered_average/nearest_radius_layered_average.i)
- (test/tests/meshgenerators/concentric_circle_mesh_generator/concentric_circle_mesh_generator.i)
- (modules/combined/examples/stochastic/graphite_ring_thermomechanics.i)
- (test/tests/meshgenerators/cyclic/cyclic.i)
- (test/tests/meshgenerators/xy_mesh_line_cutter/multi_block_cut.i)
- (modules/heat_transfer/test/tests/gap_heat_transfer_balance/large_gap_heat_transfer_test_cylinder.i)
- (modules/heat_transfer/test/tests/thermal_materials/2d.i)
- (test/tests/userobjects/nearest_point_layered_average/radius_points_from_uo.i)
- (tutorials/tutorial04_meshing/app/test/tests/adv_examples/quarter_circle_connect.i)
(test/tests/meshgenerators/concentric_circle_mesh_generator/concentric_circle_mesh_generator.i)
[Mesh]
[./ccmg]
type = ConcentricCircleMeshGenerator
num_sectors = 6
radii = '0.2546 0.3368 0.3600 0.3818 0.3923 0.4025 0.4110 0.4750'
rings = '5 3 2 1 1 1 1 3 5'
has_outer_square = on
pitch = 1.42063
#portion = left_half
preserve_volumes = off
smoothing_max_it = 3
[]
[]
[Outputs]
exodus = true
[]
portion
Default:full
C++ Type:MooseEnum
Unit:(no unit assumed)
Options:full, top_right, top_left, bottom_left, bottom_right, right_half, left_half, top_half, bottom_half
Controllable:No
Description:Control of which part of mesh is created
(test/tests/meshgenerators/concentric_circle_mesh_generator/concentric_circle_mesh_generator.i)
[Mesh]
[./ccmg]
type = ConcentricCircleMeshGenerator
num_sectors = 6
radii = '0.2546 0.3368 0.3600 0.3818 0.3923 0.4025 0.4110 0.4750'
rings = '5 3 2 1 1 1 1 3 5'
has_outer_square = on
pitch = 1.42063
#portion = left_half
preserve_volumes = off
smoothing_max_it = 3
[]
[]
[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]
type = BlockDeletionGenerator
input = in_between
block = '1'
[]
[final_ccmg]
type = RenameBlockGenerator
input = delete
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'
[]
[]
(modules/optimization/test/tests/simp/2d_twoconstraints.i)
cost_frac = 0.3
vol_frac = 0.2
[Mesh]
[planet]
type = ConcentricCircleMeshGenerator
has_outer_square = false
radii = 1
num_sectors = 10
rings = 2
preserve_volumes = false
[]
[moon]
type = ConcentricCircleMeshGenerator
has_outer_square = false
radii = 0.5
num_sectors = 8
rings = 2
preserve_volumes = false
[]
[combine]
type = CombinerGenerator
inputs = 'planet moon'
positions = '0 0 0 -1.5 -0.5 0'
[]
[]
[AuxVariables]
[mat_den]
family = MONOMIAL
order = CONSTANT
initial_condition = 0.1
[]
[Dc]
family = MONOMIAL
order = CONSTANT
initial_condition = -1.0
[]
[Cc]
family = MONOMIAL
order = CONSTANT
initial_condition = -1.0
[]
[Cost]
family = MONOMIAL
order = CONSTANT
initial_condition = 1.0
[]
[]
[Variables]
[u]
[]
[v]
[]
[]
[Kernels]
[diff_u]
type = Diffusion
variable = u
[]
[dt_u]
type = TimeDerivative
variable = u
[]
[diff_v]
type = Diffusion
variable = v
[]
[dt_v]
type = TimeDerivative
variable = v
[]
[]
[Materials]
[thermal_cond]
type = GenericFunctionMaterial
prop_values = '-1.4*abs(y)-2.7*abs(x)'
prop_names = thermal_cond
outputs = 'exodus'
[]
[thermal_compliance_sensitivity]
type = GenericFunctionMaterial
prop_values = '-3*abs(y)-1.5*abs(x)'
prop_names = thermal_sensitivity
outputs = 'exodus'
[]
[cost_sensitivity]
type = GenericFunctionMaterial
prop_values = '-0.3*y*y-0.5*abs(x*y)'
prop_names = cost_sensitivity
outputs = 'exodus'
[]
[cost_sensitivity_parsed]
type = DerivativeParsedMaterial
expression = "if(mat_den<0.2,1.0,0.5)"
coupled_variables = 'mat_den'
property_name = cost_sensitivity_parsed
[]
[cc]
type = CostSensitivity
design_density = mat_den
cost = cost_sensitivity_parsed
outputs = 'exodus'
declare_suffix = 'for_testing'
[]
[]
[BCs]
[flux_u]
type = DirichletBC
variable = u
boundary = outer
value = 3.0
[]
[flux_v]
type = DirichletBC
variable = v
boundary = outer
value = 7.0
[]
[]
[UserObjects]
[rad_avg]
type = RadialAverage
radius = 0.1
weights = linear
prop_name = thermal_sensitivity
execute_on = TIMESTEP_END
force_preaux = true
[]
[rad_avg_cost]
type = RadialAverage
radius = 1.2
weights = linear
prop_name = cost_sensitivity
execute_on = TIMESTEP_END
force_preaux = true
[]
[update]
type = DensityUpdateTwoConstraints
density_sensitivity = Dc
cost_density_sensitivity = Cc
cost = Cost
cost_fraction = ${cost_frac}
design_density = mat_den
volume_fraction = ${vol_frac}
bisection_lower_bound = 0
bisection_upper_bound = 1.0e16
relative_tolerance = 1.0e-3
bisection_move = 0.15
execute_on = TIMESTEP_BEGIN
[]
[calc_sense]
type = SensitivityFilter
density_sensitivity = Dc
design_density = mat_den
filter_UO = rad_avg
execute_on = TIMESTEP_END
force_postaux = true
[]
[calc_sense_cost]
type = SensitivityFilter
density_sensitivity = Cc
design_density = mat_den
filter_UO = rad_avg_cost
execute_on = TIMESTEP_END
force_postaux = true
[]
[]
[Executioner]
type = Transient
dt = 0.1
num_steps = 3
nl_rel_tol = 1e-04
[]
[Outputs]
exodus = true
[]
(modules/reactor/test/tests/meshgenerators/reporting_id/cartesian_id/core_reporting_id.i)
[Mesh]
[pin1]
type = ConcentricCircleMeshGenerator
num_sectors = 2
radii = '0.4 0.5'
rings = '1 1 1'
has_outer_square = on
pitch = 1.26
preserve_volumes = yes
smoothing_max_it = 3
[]
[pin2]
type = ConcentricCircleMeshGenerator
num_sectors = 2
radii = '0.3 0.4'
rings = '1 1 1'
has_outer_square = on
pitch = 1.26
preserve_volumes = yes
smoothing_max_it = 3
[]
[assembly1]
type = CartesianIDPatternedMeshGenerator
inputs = 'pin1 pin2'
pattern = ' 1 0 1 0;
0 1 0 1;
1 0 1 0;
0 1 0 1'
assign_type = 'cell'
id_name = 'pin_id'
[]
[assembly2]
type = CartesianIDPatternedMeshGenerator
inputs = 'pin1 pin2'
pattern = ' 0 1 1 0;
1 0 0 1;
1 0 0 1;
0 1 1 0'
assign_type = 'cell'
id_name = 'pin_id'
[]
[core]
type = CartesianIDPatternedMeshGenerator
inputs = 'assembly1 assembly2'
pattern = '0 1;
1 0'
assign_type = 'cell'
id_name = 'assembly_id'
[]
[]
[Executioner]
type = Steady
[]
[Problem]
solve = false
[]
[Outputs]
[out]
type = Exodus
execute_on = timestep_end
output_extra_element_ids = true
extra_element_ids_to_output = 'pin_id assembly_id'
[]
[]
(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
[]
(test/tests/meshgenerators/concentric_circle_mesh_generator/concentric_circle_mesh2.i)
[Mesh]
[ccmg]
type = ConcentricCircleMeshGenerator
num_sectors = 6
radii = '0.2546 0.3368 0.3600 0.3818 0.3923 0.4025 0.4110 0.4750'
rings = '5 3 2 1 1 1 1 3 5'
has_outer_square = on
pitch = 1.42063
#portion = left_half
preserve_volumes = off
smoothing_max_it = 3
[]
[]
[AuxVariables]
[winding_order]
order = CONSTANT
family = MONOMIAL
[]
[]
[AuxKernels]
[winding_order]
type = WindingOrder
variable = winding_order
[]
[]
[Variables]
[u]
[]
[]
[Kernels]
[diff]
type = Diffusion
variable = u
[]
[]
[BCs]
[left]
type = DirichletBC
variable = u
boundary = left
value = 0
[]
[right]
type = DirichletBC
variable = u
boundary = right
value = 1
[]
[]
[Postprocessors]
[min_winding_order]
type = ElementExtremeValue
value_type = min
variable = winding_order
[]
[max_winding_order]
type = ElementExtremeValue
value_type = max
variable = winding_order
[]
[]
[Executioner]
type = Steady
[]
[Outputs]
exodus = true
csv = true
hide = winding_order
[]
(test/tests/meshgenerators/xy_mesh_line_cutter/err_multi_block_cut.i)
[Mesh]
[ccmg]
type = ConcentricCircleMeshGenerator
num_sectors = 6
radii = '1 2 4 6'
rings = '1 2 2 3 2'
has_outer_square = on
pitch = 15
preserve_volumes = false
smoothing_max_it = 3
[]
[rename]
type = RenameBlockGenerator
input = ccmg
old_block = '1 2'
new_block = 'center center_trimmer_tri'
[]
[mlc]
type = XYMeshLineCutter
input = rename
cut_line_params = '1 -2 0'
new_boundary_id = 20
input_mesh_external_boundary_id = 1
[]
[]
(test/tests/meshgenerators/plane_id_mesh_generator/plane_id_pin3d.i)
[Mesh]
[pin2d]
type = ConcentricCircleMeshGenerator
num_sectors = 2
radii = '0.4 0.5'
rings = '1 1 1'
has_outer_square = on
pitch = 1.26
preserve_volumes = yes
smoothing_max_it = 3
[]
[pin3d]
type = AdvancedExtruderGenerator
input = 'pin2d'
heights = '5.0 5.0 5.0'
direction = '0 0 1'
num_layers = '2 2 2'
[]
[pin3d_id]
type = PlaneIDMeshGenerator
input = 'pin3d'
plane_coordinates = '0.0 5.0 10.0 15.0'
num_ids_per_plane = ' 1 2 1'
plane_axis = 'z'
id_name = 'plane_id'
[]
[]
[Executioner]
type = Steady
[]
[Problem]
solve = false
[]
[AuxVariables]
[plane_id]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[set_plane_id]
type = ExtraElementIDAux
variable = plane_id
extra_id_name = plane_id
[]
[]
[Outputs]
exodus = true
execute_on = timestep_end
[]
(modules/reactor/test/tests/meshgenerators/reporting_id/cartesian_id/assembly_reporting_id.i)
[Mesh]
[pin1]
type = ConcentricCircleMeshGenerator
num_sectors = 2
radii = '0.4 0.5'
rings = '1 1 1'
has_outer_square = on
pitch = 1.26
preserve_volumes = yes
smoothing_max_it = 3
[]
[pin2]
type = ConcentricCircleMeshGenerator
num_sectors = 2
radii = '0.3 0.4'
rings = '1 1 1'
has_outer_square = on
pitch = 1.26
preserve_volumes = yes
smoothing_max_it = 3
[]
[assembly]
type = CartesianIDPatternedMeshGenerator
inputs = 'pin1 pin2'
pattern = ' 1 0 1 0;
0 1 0 1;
1 0 1 0;
0 1 0 1'
assign_type = 'cell'
id_name = 'pin_id'
[]
[]
[Executioner]
type = Steady
[]
[Problem]
solve = false
[]
[AuxVariables]
[pin_id]
family = MONOMIAL
order = CONSTANT
[]
[]
[AuxKernels]
[set_pin_id]
type = ExtraElementIDAux
variable = pin_id
extra_id_name = pin_id
[]
[]
[Outputs]
exodus = true
execute_on = timestep_end
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_mortar/large_gap_heat_transfer_test_cylinder.i)
rpv_core_gap_size = 0.15
core_outer_radius = 2
rpv_inner_radius = '${fparse 2 + rpv_core_gap_size}'
rpv_outer_radius = '${fparse 2.5 + rpv_core_gap_size}'
rpv_outer_htc = 10 # W/m^2/K
rpv_outer_Tinf = 300 # K
core_blocks = '1'
rpv_blocks = '3'
[Mesh]
[core_gap_rpv]
type = ConcentricCircleMeshGenerator
num_sectors = 10
radii = '${core_outer_radius} ${rpv_inner_radius} ${rpv_outer_radius}'
rings = '2 1 2'
has_outer_square = false
preserve_volumes = true
portion = full
[]
[rename_core_bdy]
type = SideSetsBetweenSubdomainsGenerator
input = core_gap_rpv
primary_block = 1
paired_block = 2
new_boundary = 'core_outer'
[]
[rename_inner_rpv_bdy]
type = SideSetsBetweenSubdomainsGenerator
input = rename_core_bdy
primary_block = 3
paired_block = 2
new_boundary = 'rpv_inner'
[]
[2d_mesh]
type = BlockDeletionGenerator
input = rename_inner_rpv_bdy
block = 2
[]
allow_renumbering = false
[]
[Variables]
[Tsolid]
initial_condition = 500
[]
[]
[Kernels]
[heat_source]
type = CoupledForce
variable = Tsolid
block = '${core_blocks}'
v = power_density
[]
[heat_conduction]
type = HeatConduction
variable = Tsolid
[]
[]
[BCs]
[RPV_out_BC] # k \nabla T = h (T- T_inf) at RPV outer boundary
type = ConvectiveFluxFunction # (Robin BC)
variable = Tsolid
boundary = 'outer' # outer RPV
coefficient = ${rpv_outer_htc}
T_infinity = ${rpv_outer_Tinf}
[]
[]
[ThermalContact]
[RPV_gap]
type = GapHeatTransfer
gap_geometry_type = 'CYLINDER'
emissivity_primary = 0.8
emissivity_secondary = 0.8
variable = Tsolid
primary = 'core_outer'
secondary = 'rpv_inner'
gap_conductivity = 0.1
quadrature = true
cylinder_axis_point_1 = '0 0 0'
cylinder_axis_point_2 = '0 0 5'
[]
[]
[AuxVariables]
[power_density]
block = '${core_blocks}'
initial_condition = 50e3
[]
[]
[Materials]
[simple_mat]
type = HeatConductionMaterial
thermal_conductivity = 34.6 # W/m/K
[]
[]
[Postprocessors]
[Tcore_avg]
type = ElementAverageValue
variable = Tsolid
block = '${core_blocks}'
[]
[Tcore_max]
type = ElementExtremeValue
value_type = max
variable = Tsolid
block = '${core_blocks}'
[]
[Tcore_min]
type = ElementExtremeValue
value_type = min
variable = Tsolid
block = '${core_blocks}'
[]
[Trpv_avg]
type = ElementAverageValue
variable = Tsolid
block = '${rpv_blocks}'
[]
[Trpv_max]
type = ElementExtremeValue
value_type = max
variable = Tsolid
block = '${rpv_blocks}'
[]
[Trpv_min]
type = ElementExtremeValue
value_type = min
variable = Tsolid
block = '${rpv_blocks}'
[]
[ptot]
type = ElementIntegralVariablePostprocessor
variable = power_density
block = '${core_blocks}'
[]
[rpv_convective_out]
type = ConvectiveHeatTransferSideIntegral
T_solid = Tsolid
boundary = 'outer' # outer RVP
T_fluid = ${rpv_outer_Tinf}
htc = ${rpv_outer_htc}
[]
[heat_balance] # should be equal to 0 upon convergence
type = ParsedPostprocessor
expression = '(rpv_convective_out - ptot) / ptot'
pp_names = 'rpv_convective_out ptot'
[]
[]
[VectorPostprocessors]
[NodalTemperature]
type = NodalValueSampler
sort_by = id
boundary = 'rpv_inner core_outer'
variable = Tsolid
[]
[]
[Executioner]
type = Steady
automatic_scaling = true
compute_scaling_once = false
petsc_options_iname = '-pc_type -pc_hypre_type -ksp_gmres_restart '
petsc_options_value = 'hypre boomeramg 100'
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
l_max_its = 100
[Quadrature]
side_order = seventh
[]
line_search = none
[]
[Outputs]
exodus = false
csv = true
[]
(modules/optimization/test/tests/simp/2d.i)
vol_frac = 0.2
[Mesh]
[planet]
type = ConcentricCircleMeshGenerator
has_outer_square = false
radii = 1
num_sectors = 10
rings = 2
preserve_volumes = false
[]
[moon]
type = ConcentricCircleMeshGenerator
has_outer_square = false
radii = 0.5
num_sectors = 8
rings = 2
preserve_volumes = false
[]
[combine]
type = CombinerGenerator
inputs = 'planet moon'
positions = '0 0 0 -1.5 -0.5 0'
[]
[]
[AuxVariables]
[mat_den]
family = MONOMIAL
order = CONSTANT
initial_condition = 0.1
[]
[Dc]
family = MONOMIAL
order = CONSTANT
initial_condition = -1.0
[]
[]
[Variables]
[u]
[]
[v]
[]
[]
[Kernels]
[diff_u]
type = Diffusion
variable = u
[]
[dt_u]
type = TimeDerivative
variable = u
[]
[diff_v]
type = Diffusion
variable = v
[]
[dt_v]
type = TimeDerivative
variable = v
[]
[]
[Materials]
[thermal_cond]
type = GenericFunctionMaterial
prop_values = '-1.4*abs(y)-2.7*abs(x)'
prop_names = thermal_cond
outputs = 'exodus'
[]
[thermal_compliance_sensitivity]
type = GenericFunctionMaterial
prop_values = '-3*abs(y)-1.5*abs(x)'
prop_names = thermal_sensitivity
outputs = 'exodus'
[]
[]
[BCs]
[flux_u]
type = DirichletBC
variable = u
boundary = outer
value = 3.0
[]
[flux_v]
type = DirichletBC
variable = v
boundary = outer
value = 7.0
[]
[]
[UserObjects]
[rad_avg]
type = RadialAverage
radius = 0.1
weights = linear
prop_name = thermal_sensitivity
execute_on = TIMESTEP_END
force_preaux = true
[]
[update]
type = DensityUpdate
density_sensitivity = Dc
design_density = mat_den
volume_fraction = ${vol_frac}
execute_on = TIMESTEP_BEGIN
[]
[calc_sense]
type = SensitivityFilter
density_sensitivity = Dc
design_density = mat_den
filter_UO = rad_avg
execute_on = TIMESTEP_END
force_postaux = true
[]
[]
[Executioner]
type = Transient
dt = 0.1
num_steps = 15
nl_rel_tol = 1e-04
[]
[Outputs]
exodus = true
[]
(modules/reactor/test/tests/meshgenerators/reporting_id/cartesian_id/core_zigzag_reporting_id.i)
[Mesh]
[pin1]
type = ConcentricCircleMeshGenerator
num_sectors = 2
radii = '0.4 0.5'
rings = '1 1 1'
has_outer_square = on
pitch = 1.26
preserve_volumes = yes
smoothing_max_it = 3
[]
[pin2]
type = ConcentricCircleMeshGenerator
num_sectors = 2
radii = '0.3 0.4'
rings = '1 1 1'
has_outer_square = on
pitch = 1.26
preserve_volumes = yes
smoothing_max_it = 3
[]
[pin_dummy]
type = RenameBlockGenerator
input = 'pin1'
old_block = '1 2 3'
new_block = '9999 9999 9999'
[]
[assembly1]
type = CartesianIDPatternedMeshGenerator
inputs = 'pin1 pin2'
pattern = ' 1 0 1 0;
0 1 0 1;
1 0 1 0;
0 1 0 1'
assign_type = 'cell'
id_name = 'pin_id'
[]
[assembly2]
type = CartesianIDPatternedMeshGenerator
inputs = 'pin1 pin2'
pattern = ' 0 1 1 0;
1 0 0 1;
1 0 0 1;
0 1 1 0'
assign_type = 'cell'
id_name = 'pin_id'
[]
[assembly_dummy]
type = CartesianIDPatternedMeshGenerator
inputs = 'pin_dummy'
pattern = ' 0 0 0 0;
0 0 0 0;
0 0 0 0;
0 0 0 0'
assign_type = 'cell'
id_name = 'pin_id'
[]
[core_base]
type = CartesianIDPatternedMeshGenerator
inputs = 'assembly1 assembly2 assembly_dummy'
pattern = '0 1;
2 0'
assign_type = 'cell'
id_name = 'assembly_id'
exclude_id = 'assembly_dummy'
[]
[core]
type = BlockDeletionGenerator
input = 'core_base'
block = 9999 # dummy
new_boundary = 'zagged'
[]
final_generator = core
[]
[Executioner]
type = Steady
[]
[Problem]
solve = false
[]
[Outputs]
[out]
type = Exodus
execute_on = timestep_end
output_extra_element_ids = true
extra_element_ids_to_output = 'pin_id assembly_id'
[]
[]
(modules/heat_transfer/test/tests/directional_flux_bc/2d.i)
[Mesh]
[planet]
type = ConcentricCircleMeshGenerator
has_outer_square = false
radii = 1
num_sectors = 10
rings = 2
preserve_volumes = false
[]
[moon]
type = ConcentricCircleMeshGenerator
has_outer_square = false
radii = 0.5
num_sectors = 8
rings = 2
preserve_volumes = false
[]
[combine]
type = CombinerGenerator
inputs = 'planet moon'
positions = '0 0 0 -1.5 -0.5 0'
[]
[]
[GlobalParams]
illumination_flux = '1 1 0'
[]
[Variables]
[u]
[]
[v]
[]
[]
[Kernels]
[diff_u]
type = Diffusion
variable = u
[]
[dt_u]
type = TimeDerivative
variable = u
[]
[diff_v]
type = Diffusion
variable = v
[]
[dt_v]
type = TimeDerivative
variable = v
[]
[]
[BCs]
[flux_u]
type = DirectionalFluxBC
variable = u
boundary = outer
[]
[flux_v]
type = DirectionalFluxBC
variable = v
boundary = outer
self_shadow_uo = shadow
[]
[]
[Postprocessors]
[ave_v_all]
type = SideAverageValue
variable = v
boundary = outer
[]
[ave_v_exposed]
type = ExposedSideAverageValue
variable = v
boundary = outer
self_shadow_uo = shadow
[]
[]
[UserObjects]
[shadow]
type = SelfShadowSideUserObject
boundary = outer
execute_on = INITIAL
[]
[]
[Executioner]
type = Transient
dt = 0.1
num_steps = 2
[]
[Outputs]
exodus = true
[]
(modules/optimization/test/tests/executioners/constrained/shape_optimization/forward.i)
# This test is documented as an example for ConstrainedShapeOptimization. This
# test should not be changed without updating the documentation.
inner_radius = 6
outer_radius = 10
volume_constraint = 200
[GlobalParams]
displacements = 'disp_x disp_y'
[]
[Mesh]
[mesh]
type = ConcentricCircleMeshGenerator
has_outer_square = no
num_sectors = 16
radii = '${inner_radius} ${outer_radius}'
rings = '16 16'
preserve_volumes = false
[]
[inner_radius]
type = SideSetsBetweenSubdomainsGenerator
input = mesh
new_boundary = inner
primary_block = 2
paired_block = 1
[]
[delete]
type = BlockDeletionGenerator
input = inner_radius
block = 1
[]
[gather_all]
type = BoundingBoxNodeSetGenerator
input = delete
bottom_left = '-100 -100 -100'
top_right = '100 100 100'
new_boundary = total
[]
[combine]
type = SideSetsFromBoundingBoxGenerator
input = gather_all
bottom_left = '-100 -100 -100'
top_right = '100 100 100'
boundaries_old = 'inner outer'
boundary_new = moving
[]
[]
[Variables]
[disp_x]
[]
[disp_y]
[]
[T]
[]
[]
[AuxVariables]
[dist_between]
[AuxKernel]
type = NearestNodeDistanceAux
variable = dist_between
paired_boundary = moving
boundary = total
block = 2
use_displaced_mesh = false
execute_on = "INITIAL"
[]
[]
[]
[Kernels]
[disp_x]
type = MatDiffusion
variable = disp_x
use_displaced_mesh = false
diffusivity = diff_coef
[]
[disp_y]
type = MatDiffusion
variable = disp_y
use_displaced_mesh = false
diffusivity = diff_coef
[]
# run physics of interest on deformed mesh
[Diffusion]
type = FunctionDiffusion
variable = T
use_displaced_mesh = true
[]
[Source]
type = BodyForce
variable = T
value = 1
use_displaced_mesh = true
[]
[]
[Materials]
# perserve elements near the boundary
[diff_coef]
type = ParsedMaterial
coupled_variables = 'dist_between'
expression = '1/(dist_between+0.5)'
property_name = 'diff_coef'
[]
[h]
type = ADGenericFunctionMaterial
prop_names = h
prop_values = h
[]
# convection type boundary condition
[convection_bc]
type = ADParsedMaterial
coupled_variables = "T"
expression = "h*(100-T)"
material_property_names = "h"
property_name = convection
[]
[]
[Functions]
[r1_x]
type = ParsedOptimizationFunction
expression = 'r1 * cos((atan(y/x)))'
param_symbol_names = 'r0 r1'
param_vector_name = 'params/radii'
[]
[r1_y]
type = ParsedOptimizationFunction
expression = 'r1 * sin((atan(y/x)))'
param_symbol_names = 'r0 r1'
param_vector_name = 'params/radii'
[]
[r0_x]
type = ParsedOptimizationFunction
expression = 'r0 * cos((atan(y/x)))'
param_symbol_names = 'r0 r1'
param_vector_name = 'params/radii'
[]
[r0_y]
type = ParsedOptimizationFunction
expression = 'r0 * sin((atan(y/x)))'
param_symbol_names = 'r0 r1'
param_vector_name = 'params/radii'
[]
[h]
type = ParsedOptimizationFunction
# r0+${inner_radius} is the true current inner radius
expression = '10 /(pi * (r0+${inner_radius})^3)'
param_symbol_names = 'r0 r1'
param_vector_name = 'params/radii'
[]
[eq_grad_r0]
type = ParsedOptimizationFunction
expression = '-2 * pi * (r0 + ${inner_radius})'
param_symbol_names = 'r0 r1'
param_vector_name = 'params/radii'
[]
[eq_grad_r1]
type = ParsedOptimizationFunction
# r1+${outer_radius} is the true current outer radius
expression = '2 * pi * (r1+${outer_radius})'
param_symbol_names = 'r0 r1'
param_vector_name = 'params/radii'
[]
[]
[BCs]
[diffuse_r1_x]
type = ADFunctionDirichletBC
variable = disp_x
boundary = 'outer'
function = r1_x
preset = false
[]
[diffuse_r1_y]
type = ADFunctionDirichletBC
variable = disp_y
boundary = 'outer'
function = r1_y
preset = false
[]
[diffuse_r0_x]
type = ADFunctionDirichletBC
variable = disp_x
boundary = 'inner'
function = r0_x
preset = false
[]
[diffuse_r0_y]
type = ADFunctionDirichletBC
variable = disp_y
boundary = 'inner'
function = r0_y
preset = false
[]
# run physics on deformed mesh
[convection]
type = ADMatNeumannBC
variable = T
boundary = inner
boundary_material = convection
use_displaced_mesh = true
value = 1
[]
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Reporters]
[params]
type = ConstantReporter
real_vector_names = 'radii'
real_vector_values = '0 0'
dof_id_type_vector_names = 'num_params'
dof_id_type_vector_values = '2'
[]
[]
[Postprocessors]
[current_volume]
type = VolumePostprocessor
use_displaced_mesh = true
[]
# objective function
[objective]
type = NodalExtremeValue
variable = T
[]
[eq_constraint]
type = ParsedPostprocessor
pp_names = current_volume
expression = 'current_volume - ${volume_constraint}'
[]
[func_r0]
type = FunctionValuePostprocessor
function = eq_grad_r0
[]
[func_r1]
type = FunctionValuePostprocessor
function = eq_grad_r1
[]
[]
[VectorPostprocessors]
# convert "Real" postprocessors to vectors
[vol_constraint]
type = VectorOfPostprocessors
postprocessors = 'eq_constraint'
force_postaux = true
[]
[eq_grad]
type = VectorOfPostprocessors
postprocessors = 'func_r0 func_r1'
force_postaux = true
[]
[]
[Executioner]
type = Steady
solve_type = 'NEWTON'
petsc_options_iname = '-pc_type -pc_factor_shift_type'
petsc_options_value = 'lu NONZERO'
line_search = none
nl_rel_tol = 1e-8
nl_abs_tol = 1e-8
[]
[Outputs]
console = false
[]
(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
[]
(test/tests/meshgenerators/xy_delaunay_generator/xydelaunay_from_2d.i)
[Mesh]
[outer_bdy]
# Avoid squares here to make diagonal selection more well-defined
type = ConcentricCircleMeshGenerator
num_sectors = 4
radii = '0.5'
rings = '3'
has_outer_square = false
preserve_volumes = false
[]
[triang]
type = XYDelaunayGenerator
boundary = 'outer_bdy'
refine_boundary = true
desired_area = 0.01
[]
parallel_type = replicated # for ConcentricCircleMeshGenerator
[]
(test/tests/userobjects/nearest_point_layered_average/nearest_radius_layered_average.i)
# This input tests the NearestRadiusLayeredAverage object by taking the average
# of layered rings and using the variable u(x,y,x) = r + z, where r sqrt(x^2 + y^2)
# Given a ring of inner and outer radii r1 and r2, respectively, and of height z1 and z2,
# the analytical solution is given by:
# avg(r1,r2,z1,z2) = 2/3 * (r1^2 + r1*r2 + r2^2) / (r1 + r2) + (z1 + z2) / 2
# Convergence to these values as num_sectors is increased is verified.
[Mesh]
[./ccmg]
type = ConcentricCircleMeshGenerator
num_sectors = 8
radii = '0.1 0.2 0.3 0.4 0.5'
rings = '2 2 2 2 2'
has_outer_square = false
preserve_volumes = true
smoothing_max_it = 3
[]
[./extruder]
type = MeshExtruderGenerator
input = ccmg
extrusion_vector = '0 0 1'
num_layers = 4
[]
[]
[Variables]
[./u]
[../]
[]
[AuxVariables]
[./ring_average]
order = CONSTANT
family = MONOMIAL
[../]
[]
[Kernels]
[./reac]
type = Reaction
variable = u
[../]
[./forcing]
type = BodyForce
variable = u
function = func
[../]
[]
[Functions]
[func]
type = ParsedFunction
expression = 'sqrt(x * x + y * y) + z'
[]
[]
[AuxKernels]
[./np_layered_average]
type = SpatialUserObjectAux
variable = ring_average
execute_on = timestep_end
user_object = nrla
[../]
[]
[UserObjects]
[./nrla]
type = NearestRadiusLayeredAverage
direction = z
num_layers = 2
points = '0.05 0 0
0.15 0 0
0.25 0 0
0.35 0 0
0.45 0 0'
variable = u
[../]
[]
[Executioner]
type = Steady
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
exodus = true
[]
(test/tests/meshgenerators/concentric_circle_mesh_generator/concentric_circle_mesh_generator.i)
[Mesh]
[./ccmg]
type = ConcentricCircleMeshGenerator
num_sectors = 6
radii = '0.2546 0.3368 0.3600 0.3818 0.3923 0.4025 0.4110 0.4750'
rings = '5 3 2 1 1 1 1 3 5'
has_outer_square = on
pitch = 1.42063
#portion = left_half
preserve_volumes = off
smoothing_max_it = 3
[]
[]
[Outputs]
exodus = true
[]
(modules/combined/examples/stochastic/graphite_ring_thermomechanics.i)
# Generate 1/4 of a 2-ring disk and extrude it by half to obtain
# 1/8 of a 3D tube. Mirror boundary conditions will exist on the
# cut portions.
[Mesh]
[disk]
type = ConcentricCircleMeshGenerator
num_sectors = 10
radii = '1.0 1.1 1.2'
rings = '1 1 1'
has_outer_square = false
preserve_volumes = false
portion = top_right
[]
[ring]
type = BlockDeletionGenerator
input = disk
block = 1
new_boundary = 'inner'
[]
[cylinder]
type = MeshExtruderGenerator
input = ring
extrusion_vector = '0 0 1.5'
num_layers = 15
bottom_sideset = 'back'
top_sideset = 'front'
[]
[]
[Variables]
[T]
initial_condition = 300
[]
[disp_x]
[]
[disp_y]
[]
[disp_z]
[]
[]
[Kernels]
[hc]
type = HeatConduction
variable = T
[]
[TensorMechanics]
displacements = 'disp_x disp_y disp_z'
[]
[]
[BCs]
[temp_inner]
type = FunctionNeumannBC
variable = T
boundary = 'inner'
function = surface_source
[]
[temp_front]
type = ConvectiveHeatFluxBC
variable = T
boundary = 'front'
T_infinity = 300
heat_transfer_coefficient = 10
[]
[temp_outer]
type = ConvectiveHeatFluxBC
variable = T
boundary = 'outer'
T_infinity = 300
heat_transfer_coefficient = 10
[]
# mirror boundary conditions.
[disp_x]
type = DirichletBC
variable = disp_x
boundary = 'left'
value = 0.0
[]
[disp_y]
type = DirichletBC
variable = disp_y
boundary = 'bottom'
value = 0.0
[]
[disp_z]
type = DirichletBC
variable = disp_z
boundary = 'back'
value = 0.0
[]
[]
[Materials]
[cond_inner]
type = GenericConstantMaterial
block = 2
prop_names = thermal_conductivity
prop_values = 25
[]
[cond_outer]
type = GenericConstantMaterial
block = 3
prop_names = thermal_conductivity
prop_values = 100
[]
[elasticity_tensor_inner]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 2.1e5
poissons_ratio = 0.3
block = 2
[]
[elasticity_tensor_outer]
type = ComputeIsotropicElasticityTensor
youngs_modulus = 3.1e5
poissons_ratio = 0.2
block = 3
[]
[thermal_strain_inner]
type = ComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 2e-6
temperature = T
stress_free_temperature = 300
eigenstrain_name = eigenstrain_inner
block = 2
[]
[thermal_strain_outer]
type = ComputeThermalExpansionEigenstrain
thermal_expansion_coeff = 1e-6
temperature = T
stress_free_temperature = 300
eigenstrain_name = eigenstrain_outer
block = 3
[]
[strain_inner] #We use small deformation mechanics
type = ComputeSmallStrain
displacements = 'disp_x disp_y disp_z'
eigenstrain_names = 'eigenstrain_inner'
block = 2
[]
[strain_outer] #We use small deformation mechanics
type = ComputeSmallStrain
displacements = 'disp_x disp_y disp_z'
eigenstrain_names = 'eigenstrain_outer'
block = 3
[]
[stress] #We use linear elasticity
type = ComputeLinearElasticStress
[]
[]
[Functions]
[surface_source]
type = ParsedFunction
expression = 'Q_t*pi/2.0/3.0 * cos(pi/3.0*z)'
symbol_names = 'Q_t'
symbol_values = heat_source
[]
[]
[Executioner]
type = Steady
#Preconditioned JFNK (default)
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_hypre_type -ksp_gmres_restart'
petsc_options_value = 'hypre boomeramg 101'
l_max_its = 30
nl_max_its = 100
nl_abs_tol = 1e-9
l_tol = 1e-04
[]
[Preconditioning]
[SMP]
type = SMP
full = true
[]
[]
[Controls]
[stochastic]
type = SamplerReceiver
[]
[]
[VectorPostprocessors]
[temp_center]
type = LineValueSampler
variable = T
start_point = '1 0 0'
end_point = '1.2 0 0'
num_points = 11
sort_by = 'x'
[]
[temp_end]
type = LineValueSampler
variable = T
start_point = '1 0 1.5'
end_point = '1.2 0 1.5'
num_points = 11
sort_by = 'x'
[]
[dispx_center]
type = LineValueSampler
variable = disp_x
start_point = '1 0 0'
end_point = '1.2 0 0'
num_points = 11
sort_by = 'x'
[]
[dispx_end]
type = LineValueSampler
variable = disp_x
start_point = '1 0 1.5'
end_point = '1.2 0 1.5'
num_points = 11
sort_by = 'x'
[]
[dispz_end]
type = LineValueSampler
variable = disp_z
start_point = '1 0 1.5'
end_point = '1.2 0 1.5'
num_points = 11
sort_by = 'x'
[]
[]
[Postprocessors]
[heat_source]
type = FunctionValuePostprocessor
function = 1
scale_factor = 10000
execute_on = linear
[]
[temp_center_inner]
type = PointValue
variable = T
point = '1 0 0'
[]
[temp_center_outer]
type = PointValue
variable = T
point = '1.2 0 0'
[]
[temp_end_inner]
type = PointValue
variable = T
point = '1 0 1.5'
[]
[temp_end_outer]
type = PointValue
variable = T
point = '1.2 0 1.5'
[]
[dispx_center_inner]
type = PointValue
variable = disp_x
point = '1 0 0'
[]
[dispx_center_outer]
type = PointValue
variable = disp_x
point = '1.2 0 0'
[]
[dispx_end_inner]
type = PointValue
variable = disp_x
point = '1 0 1.5'
[]
[dispx_end_outer]
type = PointValue
variable = disp_x
point = '1.2 0 1.5'
[]
[dispz_inner]
type = PointValue
variable = disp_z
point = '1 0 1.5'
[]
[dispz_outer]
type = PointValue
variable = disp_z
point = '1.2 0 1.5'
[]
[]
[Outputs]
exodus = false
csv = false
[]
(test/tests/meshgenerators/cyclic/cyclic.i)
[Mesh]
[ccmg]
type = ConcentricCircleMeshGenerator
num_sectors = 6
radii = '0.2546 0.3368'
rings = '4 3 4'
has_outer_square = on
pitch = 1
preserve_volumes = off
smoothing_max_it = 3
[]
[rename_left]
type = RenameBoundaryGenerator
input = ccmg
old_boundary = 'left'
new_boundary = '101'
[]
[left]
type = CartesianMeshGenerator
dim = 2
dx = '5'
dy = '1'
ix = '100'
iy = '16'
[]
[move_it]
type = TransformGenerator
input = left
transform = translate
vector_value = '-5.5 -0.5 0'
[]
[rename_middle]
type = RenameBoundaryGenerator
input = move_it
old_boundary = 'right'
new_boundary = '102'
[]
[stitch]
type = StitchedMeshGenerator
inputs = 'rename_left rename_middle'
stitch_boundaries_pairs = '101 102'
[]
[in_between]
type = SideSetsBetweenSubdomainsGenerator
input = stitch
primary_block = 2
paired_block = 1
new_boundary = 'no_circle'
[]
[delete]
type = BlockDeletionGenerator
input = in_between
block = '1'
[]
[create_fused_top_sideset_l]
input = delete
type = ParsedGenerateSideset
combinatorial_geometry = 'y > 0.49'
normal = '0 1 0'
new_sideset_name = 103
[]
[top_left_block]
type = GeneratedMeshGenerator
xmin = -5.5
xmax = -0.5
ymin = 0.5
ymax = ${fparse 0.5 + 2. / 16.}
nx = 100
ny = 2
dim = 2
[]
[rename_top_left_block]
input = top_left_block
type = RenameBlockGenerator
old_block = '0'
new_block = '100'
[]
[rename_middle_2]
input = rename_top_left_block
type = RenameBoundaryGenerator
old_boundary = 'right'
new_boundary = '104'
[]
[top_middle_block]
type = GeneratedMeshGenerator
xmin = -0.5
xmax = 0.5
ymin = 0.5
ymax = ${fparse 0.5 + 2. / 16.}
nx = 16
ny = 2
dim = 2
[]
[rename_top_middle_block]
input = top_middle_block
type = RenameBlockGenerator
old_block = '0'
new_block = '101'
[]
[rename_left_2]
input = rename_top_middle_block
type = RenameBoundaryGenerator
old_boundary = 'left'
new_boundary = '105'
[]
[stitch_2]
inputs = 'rename_middle_2 rename_left_2'
type = StitchedMeshGenerator
stitch_boundaries_pairs = '104 105'
[]
[create_fused_bottom_sideset]
input = stitch_2
type = ParsedGenerateSideset
combinatorial_geometry = 'y < 0.51'
normal = '0 -1 0'
new_sideset_name = 106
[]
[stitch_3]
inputs = 'create_fused_top_sideset_l create_fused_bottom_sideset'
type = StitchedMeshGenerator
stitch_boundaries_pairs = '103 106'
[]
[rename_extension]
type = RenameBoundaryGenerator
input = no_slip_bottom
old_boundary = 'extension'
new_boundary = '111'
[]
[extension]
type = CartesianMeshGenerator
dim = 2
dx = '5'
dy = '1'
ix = '100'
iy = '16'
[]
[move_it_2]
type = TransformGenerator
input = extension
transform = translate
vector_value = '5.5 -0.5 0'
[]
[stitch_4]
inputs = 'rename_middle rename_extension'
type = StitchedMeshGenerator
stitch_boundaries_pairs = '102 111'
[]
[create_fused_top_sideset_r]
input = stitch_4
type = ParsedGenerateSideset
combinatorial_geometry = 'y > .49'
normal = '0 1 0'
new_sideset_name = 113
[]
[top_right_block]
type = GeneratedMeshGenerator
xmin = 0.5
xmax = 5.5
ymin = 0.5
ymax = ${fparse 0.5 + 2. / 16.}
nx = 100
ny = 2
dim = 2
[]
[rename_top_right_block]
input = top_right_block
type = RenameBlockGenerator
old_block = 'top_right_block'
new_block = '110'
[]
[rename_extension_2]
input = rename_top_right_block
type = RenameBoundaryGenerator
old_boundary = 'rename_extension'
new_boundary = '115'
[]
[stitch_5]
inputs = 'rename_middle_2 rename_extension_2'
type = StitchedMeshGenerator
stitch_boundaries_pairs = '104 115'
[]
[stitch_6]
inputs = 'create_fused_bottom_sideset create_fused_top_sideset_r'
type = StitchedMeshGenerator
stitch_boundaries_pairs = '106 113'
[]
[no_slip_top]
input = stitch_6
type = ParsedGenerateSideset
combinatorial_geometry = 'y > .615'
normal = '0 1 0'
new_sideset_name = 'no_slip_top'
[]
[no_slip_bottom]
input = no_slip_top
type = ParsedGenerateSideset
combinatorial_geometry = 'y < -0.49'
normal = '0 -1 0'
new_sideset_name = 'no_slip_bottom'
[]
[inlet]
input = no_slip_bottom
type = ParsedGenerateSideset
combinatorial_geometry = 'x > 5.49'
normal = '1 0 0'
new_sideset_name = 'inlet'
[]
[outlet]
input = inlet
type = ParsedGenerateSideset
combinatorial_geometry = 'x < -5.49'
normal = '-1 0 0'
new_sideset_name = 'outlet'
[]
[]
(test/tests/meshgenerators/xy_mesh_line_cutter/multi_block_cut.i)
[Mesh]
[ccmg]
type = ConcentricCircleMeshGenerator
num_sectors = 6
radii = '1 2 4 6'
rings = '1 2 2 3 2'
has_outer_square = on
pitch = 15
preserve_volumes = false
smoothing_max_it = 3
[]
[ext]
type = RenameBoundaryGenerator
input = ccmg
old_boundary = '1 2 3 4'
new_boundary = '100 100 100 100'
[]
[interface12]
type = SideSetsBetweenSubdomainsGenerator
input = ext
primary_block = '1'
paired_block = '2'
new_boundary = '12'
[]
[interface23]
type = SideSetsBetweenSubdomainsGenerator
input = interface12
primary_block = '2'
paired_block = '3'
new_boundary = '23'
[]
[interface34]
type = SideSetsBetweenSubdomainsGenerator
input = interface23
primary_block = '3'
paired_block = '4'
new_boundary = '34'
[]
[interface45]
type = SideSetsBetweenSubdomainsGenerator
input = interface34
primary_block = '4'
paired_block = '5'
new_boundary = '45'
[]
[mlc]
type = XYMeshLineCutter
input = interface45
cut_line_params = '1 -2 2'
new_boundary_id = 20
input_mesh_external_boundary_id = 100
[]
[]
(modules/heat_transfer/test/tests/gap_heat_transfer_balance/large_gap_heat_transfer_test_cylinder.i)
rpv_core_gap_size = 0.15
core_outer_radius = 2
rpv_inner_radius = ${fparse 2 + rpv_core_gap_size}
rpv_outer_radius = ${fparse 2.5 + rpv_core_gap_size}
rpv_outer_htc = 10 # W/m^2/K
rpv_outer_Tinf = 300 # K
core_blocks = '1'
rpv_blocks = '3'
[Mesh]
[core_gap_rpv]
type = ConcentricCircleMeshGenerator
num_sectors = 10
radii = '${core_outer_radius} ${rpv_inner_radius} ${rpv_outer_radius}'
rings = '2 1 2'
has_outer_square = false
preserve_volumes = true
portion = full
[]
[rename_core_bdy]
type = SideSetsBetweenSubdomainsGenerator
input = core_gap_rpv
primary_block = 1
paired_block = 2
new_boundary = 'core_outer'
[]
[rename_inner_rpv_bdy]
type = SideSetsBetweenSubdomainsGenerator
input = rename_core_bdy
primary_block = 3
paired_block = 2
new_boundary = 'rpv_inner'
[]
[2d_mesh]
type = BlockDeletionGenerator
input = rename_inner_rpv_bdy
block = 2
[]
[]
[Variables]
[Tsolid]
initial_condition = 500
[]
[]
[Kernels]
[heat_source]
type = CoupledForce
variable = Tsolid
block = '${core_blocks}'
v = power_density
[]
[heat_conduction]
type = HeatConduction
variable = Tsolid
[]
[]
[BCs]
[RPV_out_BC] # k \nabla T = h (T- T_inf) at RPV outer boundary
type = ConvectiveFluxFunction # (Robin BC)
variable = Tsolid
boundary = 'outer' # outer RPV
coefficient = ${rpv_outer_htc}
T_infinity = ${rpv_outer_Tinf}
[]
[]
[ThermalContact]
[RPV_gap]
type = GapHeatTransfer
gap_geometry_type = 'CYLINDER'
emissivity_primary = 0.8
emissivity_secondary = 0.8
variable = Tsolid
primary = 'core_outer'
secondary = 'rpv_inner'
gap_conductivity = 0.1
quadrature = true
cylinder_axis_point_1 = '0 0 0'
cylinder_axis_point_2 = '0 0 5'
[]
[]
[AuxVariables]
[power_density]
block = '${core_blocks}'
initial_condition = 50e3
[]
[]
[Materials]
[simple_mat]
type = HeatConductionMaterial
thermal_conductivity = 34.6 # W/m/K
[]
[]
[Postprocessors]
[Tcore_avg]
type = ElementAverageValue
variable = Tsolid
block = '${core_blocks}'
[]
[Tcore_max]
type = ElementExtremeValue
value_type = max
variable = Tsolid
block = '${core_blocks}'
[]
[Tcore_min]
type = ElementExtremeValue
value_type = min
variable = Tsolid
block = '${core_blocks}'
[]
[Trpv_avg]
type = ElementAverageValue
variable = Tsolid
block = '${rpv_blocks}'
[]
[Trpv_max]
type = ElementExtremeValue
value_type = max
variable = Tsolid
block = '${rpv_blocks}'
[]
[Trpv_min]
type = ElementExtremeValue
value_type = min
variable = Tsolid
block = '${rpv_blocks}'
[]
[ptot]
type = ElementIntegralVariablePostprocessor
variable = power_density
block = '${core_blocks}'
[]
[rpv_convective_out]
type = ConvectiveHeatTransferSideIntegral
T_solid = Tsolid
boundary = 'outer' # outer RVP
T_fluid = ${rpv_outer_Tinf}
htc = ${rpv_outer_htc}
[]
[heat_balance] # should be equal to 0 upon convergence
type = ParsedPostprocessor
expression = '(rpv_convective_out - ptot) / ptot'
pp_names = 'rpv_convective_out ptot'
[]
[]
[Executioner]
type = Steady
automatic_scaling = true
compute_scaling_once = false
petsc_options_iname = '-pc_type -pc_hypre_type -ksp_gmres_restart '
petsc_options_value = 'hypre boomeramg 100'
nl_rel_tol = 1e-10
nl_abs_tol = 1e-10
l_max_its = 100
[Quadrature]
side_order = seventh
[]
line_search = none
[]
[Outputs]
exodus = false
csv = true
[]
(modules/heat_transfer/test/tests/thermal_materials/2d.i)
power = 2.0
rho0 = 0.0
rho1 = 1.0
TC0 = 1.0e-16
TC1 = 1.0
[Mesh]
[planet]
type = ConcentricCircleMeshGenerator
has_outer_square = false
radii = 1
num_sectors = 10
rings = 2
preserve_volumes = false
[]
[moon]
type = ConcentricCircleMeshGenerator
has_outer_square = false
radii = 0.5
num_sectors = 8
rings = 2
preserve_volumes = false
[]
[combine]
type = CombinerGenerator
inputs = 'planet moon'
positions = '0 0 0 -1.5 -0.5 0'
[]
[]
[GlobalParams]
illumination_flux = '1 1 0'
[]
[AuxVariables]
[mat_den]
family = MONOMIAL
order = CONSTANT
initial_condition = 0.1
[]
[]
[Variables]
[u]
[]
[v]
[]
[]
[Kernels]
[diff_u]
type = Diffusion
variable = u
[]
[dt_u]
type = TimeDerivative
variable = u
[]
[diff_v]
type = Diffusion
variable = v
[]
[dt_v]
type = TimeDerivative
variable = v
[]
[]
[Materials]
[thermal_compliance]
type = ThermalCompliance
temperature = u
thermal_conductivity = thermal_cond
outputs = 'exodus'
[]
[thermal_cond]
type = DerivativeParsedMaterial
expression = "A1:=(${TC0}-${TC1})/(${rho0}^${power}-${rho1}^${power}); "
"B1:=${TC0}-A1*${rho0}^${power}; TC1:=A1*mat_den^${power}+B1; TC1"
coupled_variables = 'mat_den'
property_name = thermal_cond
outputs = 'exodus'
[]
[thermal_compliance_sensitivity]
type = ThermalSensitivity
design_density = mat_den
thermal_conductivity = thermal_cond
temperature = u
outputs = 'exodus'
[]
[]
[BCs]
[flux_u]
type = DirectionalFluxBC
variable = u
boundary = outer
[]
[flux_v]
type = DirectionalFluxBC
variable = v
boundary = outer
self_shadow_uo = shadow
[]
[]
[Postprocessors]
[ave_v_all]
type = SideAverageValue
variable = v
boundary = outer
[]
[ave_v_exposed]
type = ExposedSideAverageValue
variable = v
boundary = outer
self_shadow_uo = shadow
[]
[]
[UserObjects]
[shadow]
type = SelfShadowSideUserObject
boundary = outer
execute_on = INITIAL
[]
[]
[Executioner]
type = Transient
dt = 0.1
num_steps = 1
[]
[Outputs]
exodus = true
[]
(test/tests/userobjects/nearest_point_layered_average/radius_points_from_uo.i)
[Mesh]
[ccmg]
type = ConcentricCircleMeshGenerator
num_sectors = 8
radii = '0.1 0.2 0.3 0.4 0.5'
rings = '2 2 2 2 2'
has_outer_square = false
preserve_volumes = true
smoothing_max_it = 3
[]
[extruder]
type = MeshExtruderGenerator
input = ccmg
extrusion_vector = '0 0 1'
num_layers = 4
[]
[]
[Variables]
[u]
[]
[]
[AuxVariables]
[ring_average]
order = CONSTANT
family = MONOMIAL
[]
[]
[Kernels]
[reac]
type = Reaction
variable = u
[]
[forcing]
type = BodyForce
variable = u
function = func
[]
[]
[Functions]
[func]
type = ParsedFunction
expression = 'sqrt(x * x + y * y) + z'
[]
[]
[AuxKernels]
[np_layered_average]
type = SpatialUserObjectAux
variable = ring_average
execute_on = timestep_end
user_object = nrla
[]
[]
[UserObjects]
[nrla]
type = NearestRadiusLayeredAverage
direction = z
num_layers = 2
points = '0.05 0 0
0.15 0 0
0.25 0 0
0.35 0 0
0.45 0 0'
variable = u
[]
[]
[VectorPostprocessors]
# getting the points from the user object itself is here exactly equivalent to the points
# provided in the 'spatial_manually_provided' vector postprocessor
[spatial_from_uo]
type = SpatialUserObjectVectorPostprocessor
userobject = nrla
[]
[spatial_manually_provided]
type = SpatialUserObjectVectorPostprocessor
userobject = nrla
points = '0.05 0 0.25
0.05 0 0.75
0.15 0 0.25
0.15 0 0.75
0.25 0 0.25
0.25 0 0.75
0.35 0 0.25
0.35 0 0.75
0.45 0 0.25
0.45 0 0.75'
[]
[]
[Executioner]
type = Steady
solve_type = 'PJFNK'
petsc_options_iname = '-pc_type -pc_hypre_type'
petsc_options_value = 'hypre boomeramg'
[]
[Outputs]
csv = true
exodus = true
execute_on = final
[]
(tutorials/tutorial04_meshing/app/test/tests/adv_examples/quarter_circle_connect.i)
l_lat = 5 # length of a lattice edge
l_fuel = 3 # length of the fuel channel (including round end)
r_fuel = 0.5 # radius of the round end
[Mesh]
[Corner_bottom_left_1]
type = ConcentricCircleMeshGenerator
num_sectors = 8
radii = '${fparse r_fuel} ${fparse r_fuel}'
rings = '1 1'
has_outer_square = off
pitch = 2
portion = top_right
preserve_volumes = off
[]
[Corner_bottom_left_2]
type = BlockDeletionGenerator
input = Corner_bottom_left_1
block = '2'
new_boundary = 'curve_1'
[]
[Corner_top_right_1]
type = ConcentricCircleMeshGenerator
num_sectors = 8
radii = ${fparse r_fuel}
rings = '1 1'
has_outer_square = on
pitch = 2
portion = bottom_left
preserve_volumes = off
[]
[Corner_top_right_2]
type = BlockDeletionGenerator
input = Corner_top_right_1
block = '2'
new_boundary = 'curve_2'
[]
[Corner_top_right_3]
type = TransformGenerator
transform = TRANSLATE
vector_value = '${fparse (l_lat-l_fuel)/2+r_fuel} ${fparse (l_lat-l_fuel)/2+r_fuel} 0'
input = Corner_top_right_2
[]
[connect_two_circles]
type = FillBetweenSidesetsGenerator
input_mesh_1 = 'Corner_bottom_left_2'
input_mesh_2 = 'Corner_top_right_3'
boundary_1 = 'curve_1'
boundary_2 = 'curve_2'
num_layers = 8
keep_inputs = true
use_quad_elements = true
block_id = 200
[]
[]