How to set a DEM wall for a layered fluidized bed

Hi friends, we want to study a layered fluidized bed using CFD-DEM (attached figure). In this way, we will need to set a DEM wall (not the same as “bc_po_apply_to_des” that is available in MFiX-DEM, because it is not a pressure outlet boundary). Do you have any ideas to set this? Thank you very much!

It’s a bit complicated but doable, please see attached. I used an internal surface, but the trick is this only works with STL files, and I am using the moveable geometry framework that requires UDF. Here the geometry is not moving but I still need to do some initialization in usr0.f.

You will need to build the solver before running. This is set with SMS meshing workflow and the new 21.2 release.

Layered_FB.mfx (17.7 KB)
usr0.f (3.1 KB)

Hi Jeff, thank you very much for this. It is great!

Also, I asked someone else and they gave me some suggestions to add some lines in calc_collision_wall_mod.f to add a virtual DEM wall. This also works well.
Here are the udfs added:

By the way, I can not login with my original email address since July 29 for some reason. So I can not reply here at that time. Today, I changed my email address and was able to post this.

Hi Jeff,

Thank you very much for your case set for the layered fluidized bed last year. Now, I realized that starting from this case, we should be able to simulate a vibrated fluidized bed with the moving stl, which has been discussed in the forum before but not perfectly solved (Vibrating Lower Boundary – How to Implement? and Moving mesh capabilities?).

Layered_FB.mfx (13.4 KB)
usr_mod.f (773 Bytes)
usr0.f (2.8 KB)
usr1_des.f (2.5 KB)
I built the udfs as attached, and add vibration by calling Translate_STL(is_1_group_id, WALL_VIB) in usr1_des.f, where is_1_group_id is the stl at a vertical position of 0.2 m and WALL_VIB is a local variable used for the vibrating displacement. I have tried a frequency of 10 Hz and an amplitude 5 mm, which should be strong enough to make the particles move. However, I didn’t see any particles motions. Actually, I also tried even larger vibration amplitude, but none shows movements of particles or visually the movement of the vibrating layer. Could you help me look into this? Thank you very much!

I would also like to call @julia.hartig @ebreard6 because they may be also interested in this.

Hi Qiang,

The issue is you have an integer division:

WALL_VIB(2) = 5/1000*sin(2*Pi*10*time)

The 5/1000 will evaluate to 0 because it converts the fraction to an integer. This is a dangerous Fortran quirk. A general suggestion is to print out the velocity on the screen if it doesn’t behave as expected. This can be fixed with

WALL_VIB(2) = 5.0D0/1000.0D0*sin(2*Pi*10*time)

This will evaluate the fraction to 0.005

Hi Jeff @jeff.dietiker thank you very much for your reply. It works! The stl geometry (at a location of 0.2 m) is vibrating very well.
However, I noticed a new problem, as seen in the attached video: some particles can fall below the vibrating plate, which is unexpected. Is it possible to solve this?

Please try to increase the spring stiffness (particle-wall) from 100 N/m to 1000 or 10000 N/m see if it helps.

Hi Jeff,
Great thanks! It solves the problem by increasing the spring stiffness for particle-wall interaction.
Best,
Qiang

Hi Jeff,
test.zip (7.5 KB)
Thanks very much for your earlier help on the setting of this simulation case. Following your suggestions, I was able to vibrate a bottom plate. However, in a real vibrated fluidized bed, besides the bottom plate, the sidewalls should be also vibrating. To also make the sidewalls (left, right, front, back walls) vibrate, I have tried two directions: (1) add one more stl file and make it a movable internal surface and (2) follow the Conveyor belts case to impose a tangential velocity to walls. However, for both directions, I have problems with setting normals for stls. Could you help me look into this? Attached is the case with vibrating the bottom plate only. Thank you very much!

Hi Jeff @jeff.dietiker

After trails, I think I was finally able to vibrate the entire system by (1) using a movable internal surface at the bottom to model the vibration of the distributor and (2) by imposing a tangential velocity to walls to model the vibration of sidewalls. Attached are my case file and udfs. However, I have met a problem that the fluid vtk files have irregular cells near the walls, which I think could influence the correctness of the imposed tangential velocity to walls. Is there a way to solve this?

test.zip (17.7 MB)

You may need to increase the snapping tolerance. Have you tried to just use a large box as the moveable stl instead? This will take care of distributor and all side walls at once.

Hi Jeff,

Thanks for your advice to increase the snapping tolerance. I will try to see if it can help to avoid these irregular cells near the walls.

For “use a large box as the moveable stl instead”, I didn’t try this yet, but it should be the best method if it can work. For this, I have a question: can a movable stl also be used as a no-slip wall?

The moveable stl will only be seen by the particles. You will still have the regular wall boundaries that will act as no-slip walls for the gas phase.

I see, thanks very much, Jeff.

Is “11” a random choice or is there a rule to follow?

11 is fairly arbitrary. It must not be a BC ID that is already in use.

All right, thank you. Uh, I have another question: does WALL_VIB(2) refer to the coordinate position of the moving stl in the y-direction or the speed of moveing stl (vector)?

The argument WALL_VIB in CALL Translate_STL(is_1_group_id, WALL_VIB)is the coordinates vector (x,y,z components), so here what you defined asWALL_VIB(2)` is the y-coordinate.

I see, thank you very much!!