Step 3
In this step, we make the flow problem heterogeneous. Above the pebble bed in a pebble-bed reactor is usually a cavity that is only filled with fluid (i.e., it has a porosity of 1). The interface between the cavity and the bed is modeled as a sharp discontinuity in both porosity and correlations (i.e., momentum and energy transfer; e.g., very small pressure drop in the cavity and much larger pressure drop in the bed).
Modifying the Geometry
We distinguish the two regions, cavity and bed, by assigning the elements in each to different blocks. This is accomplished in the mesh generation process.
Instead of using GeneratedMeshGenerator
, we use the CartesianMeshGenerator
.
[Mesh]
[gen]
type = CartesianMeshGenerator
dim = 2
dx = '${bed_radius}'
ix = '6'
dy = '${bed_height} ${cavity_height}'
iy = '40 2'
subdomain_id = '1 2'
[]
[]
(htgr/generic-pbr-tutorial/step3.i)Note that we added entries in subdomain_id
. The order of entries in the subdomain_id
parameter is:
(0,0) (1,0), (2,0), ... , (0,1), (1,1), ... (nx,ny)
where each (ix,iy)
is one entry that gives the subdomain (or synonymously block id) of zone located at grid coordinates ix
and iy
. The indexing goes from small to large coordinate values, so we fill the subdomain_id
from the left bottom to the right top.
For convenience, we label block 1 as bed and block 2 as cavity using the RenameBlockGenerator
:
[Mesh]
[rename_blocks]
type = RenameBlockGenerator
old_block = '1 2'
new_block = 'bed cavity'
input = gen
[]
[]
(htgr/generic-pbr-tutorial/step3.i)That allows us to use block names rather than ids in the block restrictions of the input file.
The geometry for Step 3 is depicted in Figure 1. The mesh can be generated by:
./pronghorn-opt -i step3.i --mesh-only
creating the file step3_in.e
that can be visualized using paraview.

Figure 1: Geometry for Step 3.