Update ReadMe.md

This commit is contained in:
Hamidreza Norouzi 2023-02-20 12:29:22 +03:30 committed by GitHub
parent 3bcfc31fd2
commit aa149bcef7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 99 additions and 45 deletions

View File

@ -1,20 +1,43 @@
# Problem Definition
The problem is to simulate a Rotating Drum with **6** Baffles with the diameter **0.24m** and the length **0.1m** rotating at **15 rad/s**. This Rotating Drum is filled with **20000** Particles.The timestep for integration is **0.00001 s**. There are 2 types of Particles in this Rotating Drum:
* **12500** Particles with **4 mm** diameter
* **7500** Particles with **5mm** diameter
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 beining 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>
<img src="https://github.com/PhasicFlow/phasicFlow/blob/media/media/MixedparticlesRDB.png", width: 400px>
<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/MixedparticlesRDB.png", width=800px>
</div>
</body>
</html>
## Setting up the Case
As it has been explained in the previous Cases, these Tutorials are based on text-based scripts. There are three parts in this case to study `caseSetup`, `setting` and `stl`.
# 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, coordinates of Insertion and radius of Insertion.
An example for the Right Layer Region of insertion of Particles is shown below.
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
@ -40,18 +63,15 @@ layerrightregion
}
}
```
Then in the `sphereShape` the diameter and the material of our Particles are defined.
```C++
// names of shapes
names (lightSphere heavySphere);
// diameter of shapes (m)
diameters (0.004 0.005);
// material names for shapes
materials (lightMat heavyMat);
```
In this Case we have two types of Particle with 4mm and 5mm diameters.
At the end of `caseSetup`, the interaction between the particles and the Shell of Rotating Drum is defined. You can see the Coefficients of the Interactions between the particles and shell of Rotating Drum in `interaction`. Because we have 3 kind of interactions between these Particles and the Drum, we need to define a 3*3 Matrix.
## 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
@ -88,30 +108,63 @@ At the end of `caseSetup`, the interaction between the particles and the Shell o
```
## Settings
### Geometry
In the Settings folder the Specifications of our Rotating Drum and the information of rotating axis are brought. In this case we use two solid cylinders to keep our rotating drum isolated. This is to prevent particles, from being thrown out.
For example the codes for the rear cylinder is brought below.
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++
/*This is a Cylinder Wall at the rear of cylinder */
CylinderRear1
surfaces
{
// 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;
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 `velocity` of this Rotating Drum is defined. Also in purpose to settle down Particles after they were inserted we use a `startTime` and `endTime` function. This shows the start time of rotation.
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
{
@ -130,9 +183,10 @@ rotatingAxisMotionInfo
}
}
```
## Starting Simulation
To start Simulation we have to create our Particles at first.
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.
## 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.