phasicFlow/tutorials/sphereGranFlow/rotatingDrumMedium
Hamidreza 7c3b90a22d tutorials-1 after diameter->distance 2025-04-25 14:17:09 +03:30
..
caseSetup tutorials-1 after diameter->distance 2025-04-25 14:17:09 +03:30
settings tutorials-1 after diameter->distance 2025-04-25 14:17:09 +03:30
README.md tutorials-1 after diameter->distance 2025-04-25 14:17:09 +03:30
cleanThisCase rutatingDrumMedium added 2022-09-05 23:21:19 +04:30
runThisCase rutatingDrumMedium added 2022-09-05 23:21:19 +04:30

README.md

Simulating a Medium-Scale Rotating Drum (v-1.0)

Problem Definition

This tutorial demonstrates the simulation of a medium-sized rotating drum with a diameter of 0.24 m and a length of 0.36 m. The drum is filled with 250,000 spherical glass beads with a diameter of 3 mm. The drum rotates at a constant speed, and the simulation captures the flow behavior and mixing of the particles.

A view of the rotating drum simulation

Setting up the Case

PhasicFlow simulation case setup is based on text-based scripts provided in two folders located in the simulation case folder: settings and caseSetup. All commands should be entered in the terminal while the current working directory is the simulation case folder.

Creating Particles

In the file settings/particlesDict, two dictionaries, positionParticles and setFields, define how particles are positioned and what field values they have initially.

The positionParticles dictionary specifies the ordered positioning method to place 250,000 particles within a cylindrical region:

positionParticles
{
    method ordered;                // other options: random and empty
    
    orderedInfo
    {
        distance   0.003;          // minimum distance between particles centers
        numPoints  250000;         // number of particles in the simulation 
        axisOrder  (z y x);        // axis order for filling the space with particles
    }

    regionType cylinder;           // other options: box and sphere  
    
    cylinderInfo
    {
        p1 (0.0 0.0 0.003);        // begin point of cylinder axis
        p2 (0.0 0.0 0.357);        // end point of cylinder axis
        radius     0.117;          // radius of cylinder 
    }
}

The setFields dictionary defines the initial values for particle fields:

setFields
{
    defaultValue 
    {
        velocity        realx3  (0 0 0);   // linear velocity (m/s)
        acceleration    realx3  (0 0 0);   // linear acceleration (m/s2)
        rVelocity       realx3  (0 0 0);   // rotational velocity (rad/s)
        shapeName       word    glassBead; // name of the particle shape 
    }
}

To create the particles based on these settings, enter the following command in the terminal:

> particlesPhasicFlow

Creating Geometry

In the file settings/geometryDict, you can find information for creating the rotating drum geometry. The simulation uses the rotatingAxis motion model to define rotation around a fixed axis.

The surfaces of the drum are defined in the surfaces dictionary, including the cylindrical shell and end walls.

To create the geometry based on these settings, enter the following command in the terminal:

> geometryPhasicFlow

Defining Properties and Interactions

In the file caseSetup/shapes, the particle shape, diameter, and material are defined:

names       (glassBead);    // names of shapes 
diameters       (0.003);    // diameter of shapes 
materials    (glassMat);    // material names for shapes

In the file caseSetup/interaction, the material properties and interaction models are defined:

materials     (glassMat wallMat);  // a list of materials names
densities     (2500.0 2500);       // density of materials [kg/m3]

model
{
    contactForceModel    nonLinearLimited;
    rollingFrictionModel           normal;
    
    /*
       Property (glassMat-glassMat      glassMat-wallMat
                                        wallMat-wallMat);
    */

    Yeff (1.0e6  1.0e6  
                 1.0e6);          // Young modulus [Pa]
   
    Geff (0.8e6  0.8e6  
                 0.8e6);          // Shear modulus [Pa]

    nu   (0.25   0.25  
                 0.25);           // Poisson's ratio [-]

    en   (0.97   0.85   
                 1.00);           // coefficient of normal restitution

    mu   (0.65   0.65   
                 0.65);           // dynamic friction 

    mur  (0.1    0.1    
                 0.1);            // rolling friction
}

The contact search settings are also defined in this file, including the method, update interval, and other parameters.

Running the Simulation

To run the simulation, follow these steps in order:

  1. Create the initial particle fields:

    > particlesPhasicFlow
    
  2. Create the geometry:

    > geometryPhasicFlow
    
  3. Start the simulation:

    > sphereGranFlow
    

The simulation will run according to the settings defined in settings/settingsDict, including the time step, start/end times, and gravity vector.

Post-Processing

After the simulation is complete, you can visualize the results using ParaView. To convert the simulation results to VTK format, use the following command:

> pFlowToVTK --binary

This will create VTK files in the VTK/ folder that can be opened in ParaView for visualization and analysis.