Questions about Cartesian cut-cell mesh settings for a narrow cylindrical fluidized bed

Please inclu Hello everyone,
d4.mfx (10.5 KB)

I am working on a cold-flow bubbling fluidized bed simulation using MFiX-TFM with Cartesian cut-cell geometry. The experimental bed is a narrow vertical cylinder with an inner diameter of 0.06 m and a height of 1.4 m. The initial packed bed height is about 0.16 m. The particle diameter range is approximately 0.35–1.0 mm.

I have several questions about the computational domain, geometry setup, mesh resolution, cut-cell tolerances, and wall boundary conditions.


1. Computational domain size in X and Z directions

For a cylindrical bed with radius 0.03 m, should the computational domain in the X and Z directions be exactly:

X: -0.03 to 0.03 mZ: -0.03 to 0.03 m

or should it be slightly larger than the cylinder radius, for example:

X: -0.033 to 0.033 mZ: -0.033 to 0.033 m

I am not sure whether the domain boundary should coincide with the cylinder surface or whether a small clearance is recommended for Cartesian cut-cell meshing.

2. Which geometry setup is recommended?

I am considering two possible ways to define the cylindrical wall:

Option A: Use an STL cylinder and define the wall as a Cartesian grid boundary condition using the imported STL surface.

Option B: Use a built-in procedural or primitive cylinder directly inside MFiX.

For a simple cylindrical fluidized bed, which approach is generally more robust for Cartesian cut-cell meshing?

Also, when using the STL geometry, I saw the “Select facets (STL)” option in the boundary condition panel. Should I check inside?


3. Mesh resolution for particles of 0.35–1.0 mm

The particle diameter range is 0.35–1.0 mm. For a bed diameter of 0.06 m, I have tried different background mesh resolutions in X and Z. For example:

20 × 400 × 2016 × 328 × 1630 × 328 × 30

However, the cut-cell mesh sometimes produces small cells or high-aspect-ratio cells near the cylindrical wall, and this can lead to local high velocities or convergence issues.

For this type of narrow cylindrical bubbling bed, what mesh resolution would you recommend in the radial directions and height direction?

Should I aim for a mesh size close to several particle diameters, or should I mainly avoid very small cut cells near the wall?


4. Cut-cell tolerance settings

I have tested different values for the cut-cell mesher tolerances, such as:

Small cell toleranceSmall area toleranceSnap tolerance in X/Y/ZNormal distance tolerance

Sometimes increasing the small cell tolerance and snap tolerance removes bad small cells and improves the mesh. However, in some cases the cylinder shape appears slightly distorted, for example the top or bottom circular edge looks truncated or flattened.

Could you please explain why changing these tolerance values sometimes changes the apparent geometry shape, while in other cases it does not?

Could you suggest a reasonable high-quality starting set of cut-cell tolerance parameters for this geometry?

For example, would the following be reasonable, or too aggressive?

Small cell tolerance: 0.05Small area tolerance: 0.05Snap tolerance X/Y/Z: 0.05–0.10Normal distance tolerance: 0.0

I would like to remove problematic tiny cut cells without significantly distorting the cylindrical wall.

5. Wall boundary condition for a smooth and narrow experimental bed

My experimental cylindrical pipe wall is relatively smooth, and the bed is narrow. I am concerned that a no-slip wall condition may strongly affect bed expansion and bubble behavior.

In the Cartesian-grid STL wall boundary condition, I can define the wall as CG_PSW, but I am not sure whether partial-slip or free-slip settings are available in this case.

Can a Cartesian-grid STL wall be set as partial-slip or free-slip for the solids phase? If not, what is the recommended wall boundary condition for a smooth acrylic or glass narrow fluidized bed?

Would using a no-slip wall condition likely suppress particle motion near the wall and affect the predicted bed expansion height?


Thank you very much for your help and suggestions.de project files - Main menu/Submit bug report - attach zip file here.

1. Computational domain size in X and Z directions

For a cylinder in the y-direction, I personally like to make the domain slightly larger in the x and z direction (say x and z from -0.033 to 0.033 if the radius is 0.03), and have the cylinder geometry extend past the y domain. So if your y domain goes from y=0 to y=1.4, have the cylinder go from y=-0.05 to 1.45. This will give you a cleaner intersection for the inlet and outlet BCs. Then use regular planes for the BCs at y=0 and y=ymax (running through the entire cross section x=xmin to xmax and z=zmin to zmax).

2. Which geometry setup is recommended?

I recommend using the procedural geometry. This will give you a clean STL file and give you full control on the resolution. The primitive geometry you used in the attached file has very thin triangles and a low circumferential resolution that is not good for meshing:

In the region pane, you need to keep the “Select facets (STL)” box checked and you also need to select at least one geometry pool so you have a non-zero number of selected facets (see bottom of the pane).

3. Mesh resolution for particles of 0.35–1.0 mm

I don’t understand what you mean by this mesh resolution:

For TFM, the rule of thumb is to have a grid spacing around 10 times the particle diameter, or smaller if you can afford it.

4. Cut-cell tolerance settings

The effect of these tolerances is highly dependent on the geometry and gris spacing. It typically requires trial and error to see what works best. A good starting point is

Small cell tolerance: 0.01 to 0.05. Larger values will eliminate more small cut cells, but this could create large “notches” in the geometry (small cut cells are removed from computation).
Snap tolerance X/Y/Z: 0.02 to 0.05. Increasing this value automatically reduces the number of small cells. It doesn’t create notches but smooths out sharp corners.
Normal distance tolerance: 0.01 to 0.02. used to avoid division by zero when there are some bad cut cells.
Facet angle tolerance: 0.1. If you have an STL file with elongated triangles, you can set it to zero, but it is best to use a clean STL file instead of playing with this tolerance.
Dot product tolerance: start with the default of 0.001. If you see holes in the geometry (and your geometry is clean), try to increase and decrease this tolerance by an order of magnitude to see if it helps.

5. Wall boundary condition for a smooth and narrow experimental bed

You can use partial slip, but I would recommend starting with no slip wall as partial slip requires additional inputs that are not usually known and typically need to be tuned.