How to rotate the drum in the vertical direction?

Hello, everyone! I want to rotate the drum along the X-axis, but when I tried applying a rotational velocity in the X direction, it didn’t work. How should I go about doing this? The example I’m currently using is rating_drum_3d from the tutorial.

The dem rotating drum example is meant to be used when the wall velocity is tangential to the wall (rotation about the z-axis with your geometry). If you want to rotate about the x-axis, you need to treat the stl geometry as an internal surface. Please take a look at the dem mixer example. This only works for granular flow (the gas phase doesn’t see the moving geometry).

Thank you very much, Jeff. I tried it too, but I found that the results didn’t match normal physical behavior, and the particles would bounce in an unusual way.

rotating_drum.zip (35.6 MB)

It might also be possible to use a UDF and rotate the gravity vector.

Thank you very much, Charles. I’m wondering if this method aligns with actual physical mechanisms?

rotating_drum_2026-04-14T111540.690970.zip (13.1 MB)

First, I would encourage you to use the latest MFiX version instead of the 24.4 version. There were a few issues:

  1. You only need to rotate the drum, there is no need to add other walls on the sides.
  2. Adjust the center of rotation. I am assuming you want to rotate about the drum center.
  3. Make the MFiX box large enough so the rotating drum doesn’t intersect the box at any time. There are default walls along the MFiX box sides, and if the drum intersect the sides, particles will get pinched and bounce unphysically.
  4. I also added a VTK file series to show the rotating drum geometry.

Please see the attached setup and animation.

1 Like

Rotating the gravity vector is an approximation that works in some cases but doesn’t include the centrifugal and Coriolis (fictitious) body forces. If the rotation is fairly slow these are not significant but the approximation breaks down at higher RPM. In particular, when the Froude number Fr=gω²/R is small (<<1) the approximation is reasonable. But it’s probably better to actually rotate the drum as Jeff suggests.

Thank you so much, Jeff! I’ve managed to get it working. However, I’m currently running into an issue: I want to use reactionrates to store some grid data, such as the number of particles in the grid and their volume fractions. But I don’t seem to be able to output the grid data using output,

I see, Charles! So if we want the walls to remain stationary, we have to add centrifugal force and Coriolis force to the rotating gravitational vector.I understand now, Charles! So if we want a wall that doesn’t rotate, we have to add centrifugal force and the Coriolis force to the rotating gravitational vector.

right, unless the rotation is slow enough that these forces are not significant

I’m sorry to bother you again. I still haven’t figured out how to store data in the fluid mesh. Does anyone have any suggestions?

The fluid domain is larger than the drum so you won’t see anything if you just look at the outer faces. You can create a smaller region to output the cell data (say half of the domain in the x-direction) or do the clipping/slicing in Paraview (here showing void fraction):