Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Tutorials #78

Open
wants to merge 4 commits into
base: main
Choose a base branch
from
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
5 changes: 5 additions & 0 deletions .gitignore
Original file line number Diff line number Diff line change
Expand Up @@ -53,3 +53,8 @@ test*/**
**/[0-9]*.[0-9][0-9][0-9][0-9][0-9][0-9][0-9]
**/[0-9]*.[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9]
**/VTK
utilities/postprocessPhasicFlow/includeMask.hpp
utilities/postprocessPhasicFlow/ProcessField.hpp
utilities/postprocessPhasicFlow/ProcessField.hpp
*.hpp
*.cpp
192 changes: 192 additions & 0 deletions tutorials/sphereGranFlow/RotatingDrumWithBaffles/ReadMe.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,192 @@
# Problem Definition
The problem is to simulate a rotating drum with the diameter **0.24 m**, the length **0.1 m** and **6** Baffles, rotating at **15 rpm**. This drum is filled with **20000** Particles.The timestep for integration is **0.00001 s**. There are 2 types of Particles in this drum each are being inserted during simulation to fill the drum.
* **12500** Particles with **4 mm** diameter, at the rate of 12500 particles/s for 1 sec.
* **7500** Particles with **5mm** diameter, at the rate of 7500 particles/s for 1 sec.

<html>
<body>
<div align="center"><b>
a view of the drum while rotating
</div></b>
<div align="center">
<img src="https://github.com/PhasicFlow/phasicFlow/blob/media/media/rotatingDrumBffl.gif", width=700px>
</div>
</body>
</html>

# Setting up the Case
As it has been explained in the previous cases, the simulation case setup is based on text-based scripts. Here, the simulation case setup are sotred in three folders: `caseSetup`, `setting` and `stl` (see the above folders).

## Defining small and large particles
Then in the `caseSetup/sphereShape` the diameter and the material name of the particles are defined. Two sizes are defined: 4 and 5 mm.
```C++
// names of shapes
names (smallSphere largeSphere);
// diameter of shapes (m)
diameters (0.004 0.005);
// material names for shapes
materials (lightMat heavyMat);
```


## Particle Insertion
In this case we have two region for inserting our particles. In the both region we define rate of insertion, start and end time of insertion, information for the volume of the space throught which particles are being inserted. The insertion phase in the simulation is performed between times 0 and 1 seconds.
For example, for the insertion region for inserting light particles is shown below.

<div align="center">
in <b>caseSetup/particleInsertion</b> file
</div>


```C++
// Right Layer Region
layerrightregion
{
// type of insertion region
type cylinderRegion;
// insertion rate (particles/s)
rate 12500;
// Start time of LightParticles insertion (s)
startTime 0;
// End time of LightParticles insertion (s)
endTime 1;
// Time Interval of LightParticles insertion (s)
interval 0.025;

cylinderRegionInfo
{
// Coordinates of cylinderRegion (m,m,m)
p2 (-0.15 0.25 0.05);
p1 (-0.15 0.24 0.05);
// radius of cylinder (m)
radius 0.035;
}
}
```
## Interaction between particles and walls
In `caseSetup/interaction` file, material names and properties and interaction parameters are defined: interaction between the particles and the shell of rotating drum. Since we are defining 3 materials for simulation, the interaction matrix is 3x3, while we are only required to enter upper-triangle elements (interactions are symetric).

```C++
// a list of materials names
materials (lightMat heavyMat wallMat);
// density of materials [kg/m3]
densities (1000 1500 2500);

/*
Property (lightMat-lightMat lightMat-heavyMat lightMat-wallMat
heavyMat-heavyMat heavyMat-wallMat
wallMat-wallMat );
*/
// Young modulus [Pa]
Yeff (1.0e6 1.0e6 1.0e6
1.0e6 1.0e6
1.0e6);
// Shear modulus [Pa]
Geff (0.8e6 0.8e6 0.8e6
0.8e6 0.8e6
0.8e6);
// Poisson's ratio [-]
nu (0.25 0.25 0.25
0.25 0.25
0.25);
// coefficient of normal restitution
en (0.97 0.97 0.85
0.97 0.85
1.00);
// coefficient of tangential restitution
et (1.0 1.0 1.0
1.0 1.0
1.0);
// dynamic friction
mu (0.65 0.65 0.35
0.65 0.35
0.35);
// rolling friction
mur (0.1 0.1 0.1
0.1 0.1
0.1);
```
## Settings
### Geometry
In the `settings/geometryDict` file, the geometry and axis of rotation is defined for the drum. The geometry is composed of a body, front and rear ends.

```C++
surfaces
{
body
{
// type of the wall
type stlWall;
// file name in stl folder
file Body.stl;
// material name of this wall
material wallMat;
// motion component name
motion rotAxis;
}
/* This is a Cylinder Wall at the rear of cylinder */
rearEnd
{
// type of the wall
type cylinderWall;
// first point for the axis of rotation
p1 (-0.1974 0.2269 -0.001);
// second point for the axis of rotation
p2 (-0.1974 0.2269 0.0);
// Radius of p1
radius1 0.0001;
// Radius of p2
radius2 0.12;
// material name of the wall
material wallMat;
// motion component name
motion rotAxis;
}
/* This a cylinder Wall at the front of Cylinder */
frontEnd
{
// type of the wall
type cylinderWall;
// first point for the axis of rotation
p1 (-0.1974 0.2269 0.0989);
// second point for the axis of rotation
p2 (-0.1974 0.2269 0.0990);
// Radius of p1
radius1 0.0001;
// Radius of p2
radius2 0.12;
// material name of the wall
material wallMat;
// motion component name
motion rotAxis;
}
}
```
### Rotating Axis Info
In this part of `geometryDict` the information of rotating axis and speed of rotation are defined. The start of rotation is at 2 s. The first 2 seconds of simulation is for allowing particles to settle donw in the drum.

```C++
rotatingAxisMotionInfo
{
rotAxis
{
// first point for the axis of rotation
p1 (-0.1974 0.2269 0);
// second point for the axis of rotation
p2 (-0.1974 0.2269 0.1);
// rotation speed (rad/s) => 15 rpm
omega 2.38733;
// Start time of Geometry Rotating
startTime 2;
// End time of Geometry Rotating
endTime 9.5;
}
}
```
## Performing Simulation
To perform simulations, enter the following commands one after another in the terminal.

Enter `$ particlesPhasicFlow` command to create the initial fields for particles.
Enter `$ geometryPhasicFlow` command to create the Geometry.
At last, enter `$ sphereGranFlow` command to start the simulation.
After finishing the simulation, you can use `$ pFlowtoVTK` to convert the results into vtk format storred in ./VTK folder.
10 changes: 0 additions & 10 deletions tutorials/sphereGranFlow/RotatingDrumWithBaffles/ReadMe.txt

This file was deleted.

Original file line number Diff line number Diff line change
Expand Up @@ -60,7 +60,7 @@ contactSearch

NBSInfo
{
// each 20 timesteps, update neighbor list
// each 20 timesteps, update neighbor list
updateFrequency 10;
// bounding box size to particle diameter (max)
sizeRatio 1.1;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -47,7 +47,7 @@ Two layers of particles are packed one-by-one using 1 insertion steps.
mixture
{
// mixture composition of inserted particles
lightSphere 1;
smallSphere 1;
}
}
// Left Layer Region
Expand Down Expand Up @@ -79,7 +79,7 @@ Two layers of particles are packed one-by-one using 1 insertion steps.

mixture
{
heavySphere 1; // only heavySphere
largeSphere 1; // only heavySphere

}
}
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ objectName sphereDict;
objectType sphereShape;
/*---------------------------------------------------------------------------*/
// names of shapes
names (lightSphere heavySphere);
names (smallSphere largeSphere);
// diameter of shapes (m)
diameters (0.004 0.005);
// material names for shapes
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,66 +13,66 @@ surfaces
{
body
{
// type of the wall
// type of the wall
type stlWall;
// file name in stl folder
// file name in stl folder
file Body.stl;
// material name of this wall
// material name of this wall
material wallMat;
// motion component name
// motion component name
motion rotAxis;
}
/* This is a Cylinder Wall at the rear of cylinder */
CylinderRear1
rearEnd
{
// type of the wall
// type of the wall
type cylinderWall;
// first point for the axis of rotation
// first point for the axis of rotation
p1 (-0.1974 0.2269 -0.001);
// second point for the axis of rotation
// second point for the axis of rotation
p2 (-0.1974 0.2269 0.0);
// Radius of p1
// Radius of p1
radius1 0.0001;
// Radius of p2
// Radius of p2
radius2 0.12;
// material name of the wall
// material name of the wall
material wallMat;
// motion component name
// motion component name
motion rotAxis;
}
/* This a cylinder Wall at the front of Cylinder */
CylinderFront2
frontEnd
{
// type of the wall
// type of the wall
type cylinderWall;
// first point for the axis of rotation
// first point for the axis of rotation
p1 (-0.1974 0.2269 0.0989);
// second point for the axis of rotation
// second point for the axis of rotation
p2 (-0.1974 0.2269 0.0990);
// Radius of p1
// Radius of p1
radius1 0.0001;
// Radius of p2
// Radius of p2
radius2 0.12;
// material name of the wall
// material name of the wall
material wallMat;
// motion component name
// motion component name
motion rotAxis;
}
}
// information for rotatingAxisMotion motion model
// information for rotatingAxisMotion motion model
rotatingAxisMotionInfo
{
rotAxis
{
// first point for the axis of rotation
// first point for the axis of rotation
p1 (-0.1974 0.2269 0);
// second point for the axis of rotation
// second point for the axis of rotation
p2 (-0.1974 0.2269 0.1);
// rotation speed (rad/s) => 15 rpm
// rotation speed (rad/s) => 15 rpm
omega 2.38733;
// Start time of Geometry Rotating
// Start time of Geometry Rotating
startTime 2;
// End time of Geometry Rotating
// End time of Geometry Rotating
endTime 9.5;
}
}
Original file line number Diff line number Diff line change
Expand Up @@ -16,7 +16,7 @@ setFields
// rotational velocity (rad/s)
rotVelocity realx3 (0 0 0);
// name of the particle shape
shapeName word lightSphere;
shapeName word smallSphere;
}

selectors
Expand Down
Loading