toteBlender for v-1.0

This commit is contained in:
Hamidreza 2025-03-11 17:20:42 +03:30
parent 389e42ee1f
commit 23783b7db9
17 changed files with 662 additions and 779 deletions

View File

@ -0,0 +1,304 @@
# Tote Blender simulation (v-1.0)
## Problem Definition
The problem is to simulate a double pedestal tote blender (mixer) with the diameter **0.03 m** and **0.1 m** respectively, the length **0.3 m**, rotating at **28 rpm**. This blender is filled with **24000** particles. The timestep for integration is **0.00002 s**. There is one type of particle in this blender. Particles are positioned before the start of simulation to fill the blender.
* **24000** particles with **5 mm** diameter are positioned, in order, and let to be settled under gravity. After settling particles, this blender starts to rotate at t=**1s**.
<html>
<body>
<div align="center"><b>
a view of the tote-blender while rotating
</div></b>
<div align="center">
<img src="https://github.com/PhasicFlow/phasicFlow/blob/media/media/Tote-blender.gif", width=700px>
</div>
<div align="center"><i>
particles are colored according to their velocity
</div></i>
</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 files are stored into two folders: `caseSetup`, `setting` (see the above folders). Unlike the previous cases, this case does not have the `stl` file and the surfaces are defined based on the built-in utilities in phasicFlow. See next the section for more information on how we can setup the geometry and its rotation.
## Geometry
### Defining rotation axis
In file `settings/geometryDict` the information of rotating axis and speed of rotation are defined. The rotation of this blender starts at time=**0.5 s** and ends at time=**9.5 s**.
```C++
// information for rotatingAxis motion model
rotatingAxis
{
axisOfRotation
{
p1 (-0.1 0.0 0.15); // first point for the axis of rotation
p2 ( 0.1 0.0 0.15); // second point for the axis of rotation
omega 1.5708; // rotation speed ==> 15 rad/s
// Start time of Geometry Rotating (s)
startTime 0.5;
// End time of Geometry Rotating (s)
endTime 9.5;
}
}
```
### Surfaces
In `settings/geometryDict` file, the surfaces and motion component of each surface are defined to form a rotating tote-blender. The geometry is composed of top and bottom cylinders, top and bottom cones, a cylindrical shell and top and bottom Gates.
```C++
surfaces
{
topGate
{
// type of wall
type cylinderWall;
// begin point of cylinder axis
p1 (0.0 0.0 0.3);
// end point of cylinder axis
p2 (0.0 0.0 0.301);
// radius at p1
radius1 0.03;
// radius at p2
radius2 0.0001;
// material of wall
material solidProperty;
// motion component name
motion axisOfRotation;
}
topCylinder
{
type cylinderWall;
p1 (0.0 0.0 0.28);
p2 (0.0 0.0 0.3);
radius1 0.03;
radius2 0.03;
resolution 36;
material solidProperty;
motion axisOfRotation;
}
coneShelltop
{
type cylinderWall;
p1 (0.0 0.0 0.2);
p2 (0.0 0.0 0.28);
radius1 0.1;
radius2 0.03;
resolution 36;
material solidProperty;
motion axisOfRotation;
}
cylinderShell
{
type cylinderWall;
p1 (0.0 0.0 0.1);
p2 (0.0 0.0 0.2);
radius1 0.1;
radius2 0.1;
resolution 36;
material solidProperty;
motion axisOfRotation;
}
coneShelldown
{
type cylinderWall;
p1 (0.0 0.0 0.02);
p2 (0.0 0.0 0.1);
radius1 0.03;
radius2 0.1;
resolution 36;
material solidProperty;
motion axisOfRotation;
}
bottomCylinder
{
type cylinderWall;
p1 (0.0 0.0 0.0);
p2 (0.0 0.0 0.02);
radius1 0.03;
radius2 0.03;
resolution 36;
material solidProperty;
motion axisOfRotation;
}
exitGate
{
type cylinderWall;
p1 (0.0 0.0 -0.001);
p2 (0.0 0.0 0.0);
radius1 0.03;
radius2 0.0001;
resolution 36;
material solidProperty;
motion axisOfRotation;
}
}
```
## Defining particles
### Diameter and material of spheres
In the `caseSetup/shapes` the diameter and the material name of the particles are defined.
<div align="center">
in <b>caseSetup/shapes</b> file
</div>
```C++
// name of shapes
names (sphere1);
// diameter of shapes (m)
diameters (0.005);
// material name for shapes
materials (solidProperty);
```
### Particle positioning before start of simulation
Particles are positioned before the start of simulation. The positioning can be ordered or random. Here we use ordered positioning. 24000 particles are positioned in a cylinderical region inside the tote-blender.
<div align="center">
in <b>settings/particlesDict</b> file
</div>
```C++
// positions particles
positionParticles
{
// ordered positioning
method positionOrdered;
// maximum number of particles in the simulation
maxNumberOfParticles 25001;
// perform initial sorting based on morton code?
mortonSorting Yes;
// cylinderical region for positioning particles
cylinder
{
p1 (0.0 0.0 0.09);
p2 (0.0 0.0 0.21);
radius 0.09;
}
positionOrderedInfo
{
// minimum space between centers of particles
diameter 0.005;
// number of particles in the simulation
numPoints 24000;
// axis order for filling the space with particles
axisOrder (x y z);
}
}
```
## Interaction between particles
In `caseSetup/interaction` file, material names and properties and interaction parameters are defined. Since we are defining 1 material type in the simulation, the interaction matrix is 1x1 (interactions are symmetric).
```C++
// a list of materials names
materials (solidProperty);
// density of materials [kg/m3]
densities (1000.0);
contactListType sortedContactList;
model
{
contactForceModel nonLinearNonLimited;
rollingFrictionModel normal;
/*
Property (solidProperty-solidProperty);
*/
// Young modulus [Pa]
Yeff (1.0e6);
// Shear modulus [Pa]
Geff (0.8e6);
// Poisson's ratio [-]
nu (0.25);
// coefficient of normal restitution
en (0.7);
// dynamic friction
mu (0.3);
// rolling friction
mur (0.1);
}
```
# Performing Simulation and previewing the results
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 stored in ./VTK folder.

View File

@ -0,0 +1,49 @@
/* -------------------------------*- C++ -*--------------------------------- *\
| phasicFlow File |
| copyright: www.cemf.ir |
\* ------------------------------------------------------------------------- */
objectName interaction;
objectType dicrionary;
fileFormat ASCII;
/*---------------------------------------------------------------------------*/
materials (solidProperty); // a list of materials names
densities (1000.0); // density of materials [kg/m3]
contactListType sortedContactList;
model
{
contactForceModel nonLinearNonLimited;
rollingFrictionModel normal;
/*
Property (solidProperty-solidProperty)
*/
Yeff (1.0e6); // Young modulus [Pa]
Geff (0.8e6); // Shear modulus [Pa]
nu (0.25); // Poisson's ratio [-]
en (0.7); // coefficient of normal restitution
mu (0.3); // dynamic friction
mur (0.1); // rolling friction
}
contactSearch
{
method NBS;
updateInterval 10;
sizeRatio 1.1;
cellExtent 0.55;
adjustableBox Yes;
}

View File

@ -7,11 +7,8 @@ objectType sphereShape;
fileFormat ASCII;
/*---------------------------------------------------------------------------*/
// name of shapes
names (sphere1);
names (sphere1); // name of shapes
// diameter of shapes (m)
diameters (0.005);
diameters (0.005); // diameter of shapes (m)
// material name for shapes
materials (solidProperty);
materials (solidProperty); // material name for shapes

View File

@ -0,0 +1,50 @@
/* -------------------------------*- C++ -*--------------------------------- *\
| phasicFlow File |
| copyright: www.cemf.ir |
\* ------------------------------------------------------------------------- */
objectName domainDict;
objectType dictionary;
fileFormat ASCII;
/*---------------------------------------------------------------------------*/
// Simulation domain: every particles that goes outside this domain will be deleted
globalBox
{
min (-0.3 -0.3 -0.3); // lower corner point of the box
max ( 0.5 0.5 0.5); // upper corner point of the box
}
boundaries
{
left
{
type exit;
}
right
{
type exit;
}
bottom
{
type exit;
}
top
{
type exit;
}
rear
{
type exit;
}
front
{
type exit;
}
}

View File

@ -0,0 +1,160 @@
/* -------------------------------*- C++ -*--------------------------------- *\
| phasicFlow File |
| copyright: www.cemf.ir |
\* ------------------------------------------------------------------------- */
objectName geometryDict;
objectType dictionary;
fileFormat ASCII;
/*---------------------------------------------------------------------------*/
motionModel rotatingAxis;
rotatingAxisInfo
{
axisOfRotation
{
p1 (-0.1 0.0 0.15);
p2 ( 0.1 0.0 0.15);
omega 1.5708;
startTime 0.5;
endTime 9.5;
}
}
surfaces
{
topGate
{
type cylinderWall; // type of wall
p1 (0.0 0.0 0.3); // begin point of cylinder axis
p2 (0.0 0.0 0.301); // end point of cylinder axis
radius1 0.03; // radius at p1
radius2 0.0001; // radius at p2
material solidProperty; // material of wall
motion axisOfRotation;
}
topCylinder
{
type cylinderWall;
p1 (0.0 0.0 0.28);
p2 (0.0 0.0 0.3);
radius1 0.03;
radius2 0.03;
resolution 36;
material solidProperty;
motion axisOfRotation;
}
coneShelltop
{
type cylinderWall;
p1 (0.0 0.0 0.2);
p2 (0.0 0.0 0.28);
radius1 0.1;
radius2 0.03;
resolution 36;
material solidProperty;
motion axisOfRotation;
}
cylinderShell
{
type cylinderWall;
p1 (0.0 0.0 0.1);
p2 (0.0 0.0 0.2);
radius1 0.1;
radius2 0.1;
resolution 36;
material solidProperty;
motion axisOfRotation;
}
coneShelldown
{
type cylinderWall;
p1 (0.0 0.0 0.02);
p2 (0.0 0.0 0.1);
radius1 0.03;
radius2 0.1;
resolution 36;
material solidProperty;
motion axisOfRotation;
}
bottomCylinder
{
type cylinderWall;
p1 (0.0 0.0 0.0);
p2 (0.0 0.0 0.02);
radius1 0.03;
radius2 0.03;
resolution 36;
material solidProperty;
motion axisOfRotation;
}
exitGate
{
type cylinderWall;
p1 (0.0 0.0 -0.001);
p2 (0.0 0.0 0.0);
radius1 0.03;
radius2 0.0001;
resolution 36;
material solidProperty;
motion axisOfRotation;
}
}

View File

@ -0,0 +1,58 @@
/* -------------------------------*- C++ -*--------------------------------- *\
| phasicFlow File |
| copyright: www.cemf.ir |
\* ------------------------------------------------------------------------- */
objectName particlesDict;
objectType dictionary;
fileFormat ASCII;
/*---------------------------------------------------------------------------*/
setFields
{
/*
Default value for fields defined for particles
These fields should always be defined for simulations with
spherical particles.
*/
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 sphere1; // name of the particle shape
}
selectors
{}
}
positionParticles
{
method ordered; // ordered positioning
mortonSorting Yes; // perform initial sorting based on morton code?
orderedInfo
{
diameter 0.005; // minimum space between centers of particles
numPoints 24000; // number of particles in the simulation
axisOrder (x y z); // axis order for filling the space with particles
}
regionType cylinder; // other options: cylinder and sphere
cylinderInfo
{
p1 (0.0 0.0 0.09);
p2 (0.0 0.0 0.21);
radius 0.09; // radius of cylinder
}
}

View File

@ -0,0 +1,35 @@
/* -------------------------------*- C++ -*--------------------------------- *\
| phasicFlow File |
| copyright: www.cemf.ir |
\* ------------------------------------------------------------------------- */
objectName settingsDict;
objectType dictionary;
fileFormat ASCII;
/*---------------------------------------------------------------------------*/
run toteBlender;
dt 0.00002; // time step for integration (s)
startTime 0; // start time for simulation
endTime 10; // end time for simulation
saveInterval 0.05; // time interval for saving the simulation
timePrecision 4; // maximum number of digits for time folder
g (0 0 -9.8); // gravity vector (m/s2)
// include/exclude fields for saving on disk
includeObjects (diameter);
excludeObjects (rVelocity.dy1 pStructPosition.dy1 pStructVelocity.dy1);
integrationMethod AdamsBashforth2;
writeFormat ascii;
timersReport Yes;
timersReportInterval 0.05;

View File

@ -1,356 +0,0 @@
# Problem Definition
The problem is to simulate a double pedestal tote blender (mixer) with the diameter **0.03 m** and **0.1 m** respectively, the length **0.3 m**, rotating at **28 rpm**. This blender is filled with **24000** particles. The timestep for integration is **0.00001 s**. There is one type of particle in this blender. Particles are positioned before start of simulation to fill the blender.
* **24000** particles with **5 mm** diameter are positioned, in order, and let to be settled under gravity. After settling particles, this blender starts to rotate at t=**1s**.
<html>
<body>
<div align="center"><b>
a view of the tote-blender while rotating
</div></b>
<div align="center">
<img src="https://github.com/PhasicFlow/phasicFlow/blob/media/media/Tote-blender.gif", width=700px>
</div>
<div align="center"><i>
particles are colored according to their velocity
</div></i>
</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 files are stored into two folders: `caseSetup`, `setting` (see the above folders). Unlike the previous cases, this case does not have the `stl` file and the surfaces are defined based on the built-in utilities in phasicFlow. See next the section for more information on how we can setup the geometry and its rotation.
## Geometry
### Defining rotation axis
In file `settings/geometryDict` the information of rotating axis and speed of rotation are defined. The rotation of this blender starts at time=**0.5 s** and ends at time=**9.5 s**.
```C++
// information for rotatingAxisMotion motion model
rotatingAxisMotionInfo
{
axisOfRotation
{
p1 (-0.1 0.0 0.15); // first point for the axis of rotation
p2 ( 0.1 0.0 0.15); // second point for the axis of rotation
omega 1.5708; // rotation speed ==> 15 rad/s
// Start time of Geometry Rotating (s)
startTime 0.5;
// End time of Geometry Rotating (s)
endTime 9.5;
}
}
```
### Surfaces
In `settings/geometryDict` file, the surfaces and motion component of each surface are defined to form a rotating tote-blender. The geometry is composed of top and bottom cylinders, top and bottom cones, a cylindrical shell and top and bottom Gates.
```C++
surfaces
{
topGate
{
// type of wall
type cylinderWall;
// begin point of cylinder axis
p1 (0.0 0.0 0.3);
// end point of cylinder axis
p2 (0.0 0.0 0.301);
// radius at p1
radius1 0.03;
// radius at p2
radius2 0.0001;
// material of wall
material solidProperty;
// motion component name
motion axisOfRotation;
}
topCylinder
{
// type of the wall
type cylinderWall;
// begin point of cylinder axis
p1 (0.0 0.0 0.28);
// end point of cylinder axis
p2 (0.0 0.0 0.3);
// radius at p1
radius1 0.03;
// radius at p2
radius2 0.03;
// number of divisions
resolution 36;
// material name of this wall
material solidProperty;
// motion component name
motion axisOfRotation;
}
coneShelltop
{
// type of the wall
type cylinderWall;
// begin point of cylinder axis
p1 (0.0 0.0 0.2);
// end point of cylinder axis
p2 (0.0 0.0 0.28);
// radius at p1
radius1 0.1;
// radius at p2
radius2 0.03;
// number of divisions
resolution 36;
// material name of this wall
material solidProperty;
// motion component name
motion axisOfRotation;
}
cylinderShell
{
// type of the wall
type cylinderWall;
// begin point of cylinder axis
p1 (0.0 0.0 0.1);
// end point of cylinder axis
p2 (0.0 0.0 0.2);
// radius at p1
radius1 0.1;
// radius at p2
radius2 0.1;
// number of divisions
resolution 36;
// material name of this wall
material solidProperty;
// motion component name
motion axisOfRotation;
}
coneShelldown
{
// type of the wall
type cylinderWall;
// begin point of cylinder axis
p1 (0.0 0.0 0.02);
// end point of cylinder axis
p2 (0.0 0.0 0.1);
// radius at p1
radius1 0.03;
// radius at p2
radius2 0.1;
// number of divisions
resolution 36;
// material name of this wall
material solidProperty;
// motion component name
motion axisOfRotation;
}
bottomCylinder
{
// type of the wall
type cylinderWall;
// begin point of cylinder axis
p1 (0.0 0.0 0.0);
// end point of cylinder axis
p2 (0.0 0.0 0.02);
// radius at p1
radius1 0.03;
// radius at p2
radius2 0.03;
// number of divisions
resolution 36;
// material name of this wall
material solidProperty;
// motion component name
motion axisOfRotation;
}
exitGate
{
// type of the wall
type cylinderWall;
// begin point of cylinder axis
p1 (0.0 0.0 -0.001);
// end point of cylinder axis
p2 (0.0 0.0 0.0);
// radius at p1
radius1 0.03;
// radius at p2
radius2 0.0001;
// number of divisions
resolution 36;
// material name of this wall
material solidProperty;
// motion component name
motion axisOfRotation;
}
}
```
## Defining particles
### Diameter and material of spheres
In the `caseSetup/sphereShape` the diameter and the material name of the particles are defined.
<div align="center">
in <b>caseSetup/sphereShape</b> file
</div>
```C++
// name of shapes
names (sphere1);
// diameter of shapes (m)
diameters (0.005);
// material name for shapes
materials (solidProperty);
```
### Particle positioning before start of simulation
Particles are positioned before the start of simulation. The positioning can be ordered or random. Here we use ordered positioning. 24000 particles are positioned in a cylinderical region inside the tote-blender.
<div align="center">
in <b>settings/particlesDict</b> file
</div>
```C++
// positions particles
positionParticles
{
// ordered positioning
method positionOrdered;
// maximum number of particles in the simulation
maxNumberOfParticles 25001;
// perform initial sorting based on morton code?
mortonSorting Yes;
// cylinderical region for positioning particles
cylinder
{
p1 (0.0 0.0 0.09);
p2 (0.0 0.0 0.21);
radius 0.09;
}
positionOrderedInfo
{
// minimum space between centers of particles
diameter 0.005;
// number of particles in the simulation
numPoints 24000;
// axis order for filling the space with particles
axisOrder (x y z);
}
}
```
## Interaction between particles
In `caseSetup/interaction` file, material names and properties and interaction parameters are defined. Since we are defining 1 material type in the simulation, the interaction matrix is 1x1 (interactions are symmetric).
```C++
// a list of materials names
materials (solidProperty);
// density of materials [kg/m3]
densities (1000.0);
contactListType sortedContactList;
model
{
contactForceModel nonLinearNonLimited;
rollingFrictionModel normal;
/*
Property (solidProperty-solidProperty);
*/
// Young modulus [Pa]
Yeff (1.0e6);
// Shear modulus [Pa]
Geff (0.8e6);
// Poisson's ratio [-]
nu (0.25);
// coefficient of normal restitution
en (0.7);
// coefficient of tangential restitution
et (1.0);
// dynamic friction
mu (0.3);
// rolling friction
mur (0.1);
}
```
# Performing Simulation and previewing the results
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 stored in ./VTK folder.

View File

@ -1,52 +0,0 @@
/* -------------------------------*- C++ -*--------------------------------- *\
| phasicFlow File |
| copyright: www.cemf.ir |
\* ------------------------------------------------------------------------- */
objectName interaction;
objectType dicrionary;
fileFormat ASCII;
/*---------------------------------------------------------------------------*/
materials (solidProperty); // a list of materials names
densities (1000.0); // density of materials [kg/m3]
contactListType sortedContactList;
contactSearch
{
method NBS; // method for broad search
updateInterval 10;
sizeRatio 1.1;
cellExtent 0.55;
adjustableBox Yes;
}
model
{
contactForceModel nonLinearNonLimited;
rollingFrictionModel normal;
/*
Property (solidProperty-solidProperty)
*/
Yeff (1.0e6); // Young modulus [Pa]
Geff (0.8e6); // Shear modulus [Pa]
nu (0.25); // Poisson's ratio [-]
en (0.7); // coefficient of normal restitution
et (1.0); // coefficient of tangential restitution
mu (0.3); // dynamic friction
mur (0.1); // rolling friction
}

View File

@ -1,13 +0,0 @@
/* -------------------------------*- C++ -*--------------------------------- *\
| phasicFlow File |
| copyright: www.cemf.ir |
\* ------------------------------------------------------------------------- */
objectName particleInsertion;
objectType dicrionary;
fileFormat ASCII;
/*---------------------------------------------------------------------------*/
active No; // is insertion active -> Yes or No
collisionCheck No; // is checked -> Yes or No

View File

@ -1,13 +0,0 @@
/* -------------------------------*- C++ -*--------------------------------- *\
| phasicFlow File |
| copyright: www.cemf.ir |
\* ------------------------------------------------------------------------- */
objectName sphereDict;
objectType sphereShape;
fileFormat ASCII;
/*---------------------------------------------------------------------------*/
names (sphere1); // name of shapes
diameters (0.005); // diameter of shapes (m)
materials (solidProperty); // material name for shapes

View File

@ -1,64 +0,0 @@
/* -------------------------------*- C++ -*--------------------------------- *\
| phasicFlow File |
| copyright: www.cemf.ir |
\* ------------------------------------------------------------------------- */
objectName domainDict;
objectType dictionary;
fileFormat ASCII;
/*---------------------------------------------------------------------------*/
globalBox // Simulation domain: every particles that goes outside this domain will be deleted
{
min (-0.3 -0.3 -0.3); // lower corner point of the box
max (0.5 0.5 0.5); // upper corner point of the box
}
decomposition
{
direction z;
}
boundaries
{
neighborListUpdateInterval 50; /* Determines how often (how many iterations) do you want to
rebuild the list of particles in the neighbor list
of all boundaries in the simulation domain */
updateInterval 10; // Determines how often do you want to update the new changes in the boundary
neighborLength 0.004; // The distance from the boundary plane within which particles are marked to be in the boundary list
left
{
type exit; // other options: periodic, reflective
}
right
{
type exit; // other options: periodict, reflective
}
bottom
{
type exit; // other options: periodict, reflective
}
top
{
type exit; // other options: periodict, reflective
}
rear
{
type exit; // other options: periodict, reflective
}
front
{
type exit; // other options: periodict, reflective
}
}

View File

@ -1,159 +0,0 @@
/* -------------------------------*- C++ -*--------------------------------- *\
| phasicFlow File |
| copyright: www.cemf.ir |
\* ------------------------------------------------------------------------- */
objectName geometryDict;
objectType dictionary;
fileFormat ASCII;
/*---------------------------------------------------------------------------*/
motionModel rotatingAxis; // motion model: rotating object around an axis
rotatingAxisInfo // information for rotatingAxisMotion motion model
{
axisOfRotation
{
p1 (-0.1 0.0 0.15); // first point for the axis of rotation
p2 ( 0.1 0.0 0.15); // second point for the axis of rotation
omega 1.5708; // rotation speed ==> 15 rad/s
startTime 0.5; // Start time of Geometry Rotating (s)
endTime 9.5; // End time of Geometry Rotating (s)
}
}
surfaces
{
topGate
{
type cylinderWall; // type of wall
p1 (0.0 0.0 0.3); // begin point of cylinder axis
p2 (0.0 0.0 0.301); // end point of cylinder axis
radius1 0.03; // radius at p1
radius2 0.0001; // radius at p2
material solidProperty; // material of wall
motion axisOfRotation; // motion component name
}
topCylinder
{
type cylinderWall; // type of the wall
p1 (0.0 0.0 0.28); // begin point of cylinder axis
p2 (0.0 0.0 0.3); // end point of cylinder axis
radius1 0.03; // radius at p1
radius2 0.03; // radius at p2
resolution 36; // number of divisions
material solidProperty; // material name of this wall
motion axisOfRotation; // motion component name
}
coneShelltop
{
type cylinderWall; // type of the wall
p1 (0.0 0.0 0.2); // begin point of cylinder axis
p2 (0.0 0.0 0.28); // end point of cylinder axis
radius1 0.1; // radius at p1
radius2 0.03; // radius at p2
resolution 36; // number of divisions
material solidProperty; // material name of this wall
motion axisOfRotation; // motion component name
}
cylinderShell
{
type cylinderWall; // type of the wall
p1 (0.0 0.0 0.1); // begin point of cylinder axis
p2 (0.0 0.0 0.2); // end point of cylinder axis
radius1 0.1; // radius at p1
radius2 0.1; // radius at p2
resolution 36; // number of divisions
material solidProperty; // material name of this wall
motion axisOfRotation; // motion component name
}
coneShelldown
{
type cylinderWall; // type of the wall
p1 (0.0 0.0 0.02); // begin point of cylinder axis
p2 (0.0 0.0 0.1); // end point of cylinder axis
radius1 0.03; // radius at p1
radius2 0.1; // radius at p2
resolution 36; // number of divisions
material solidProperty; // material name of this wall
motion axisOfRotation; // motion component name
}
bottomCylinder
{
type cylinderWall; // type of the wall
p1 (0.0 0.0 0.0); // begin point of cylinder axis
p2 (0.0 0.0 0.02); // end point of cylinder axis
radius1 0.03; // radius at p1
radius2 0.03; // radius at p2
resolution 36; // number of divisions
material solidProperty; // material name of this wall
motion axisOfRotation; // motion component name
}
exitGate
{
type cylinderWall; // type of the wall
p1 (0.0 0.0 -0.001); // begin point of cylinder axis
p2 (0.0 0.0 0.0); // end point of cylinder axis
radius1 0.03; // radius at p1
radius2 0.0001; // radius at p2
resolution 36; // number of divisions
material solidProperty; // material name of this wall
motion axisOfRotation; // motion component name
}
}

View File

@ -1,79 +0,0 @@
/* -------------------------------*- C++ -*--------------------------------- *\
| phasicFlow File |
| copyright: www.cemf.ir |
\* ------------------------------------------------------------------------- */
objectName particlesDict;
objectType dictionary;
fileFormat ASCII;
/*---------------------------------------------------------------------------*/
setFields
{
/*
Default value for fields defined for particles
These fields should always be defined for simulations with
spherical particles.
*/
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 sphere1; // name of the particle shape
}
selectors
{
shapeAssigne
{
selector stridedRange; // other options: box, cylinder, sphere, randomPoints
stridedRangeInfo
{
begin 0; // begin index of points
end 24000; // end index of points
stride 3; // stride for selector
}
fieldValue // fields that the selector is applied to
{
shapeName word sphere1; // sets shapeName of the selected points to largeSphere
}
}
}
}
positionParticles // positions particles
{
method ordered; // ordered positioning
mortonSorting Yes; // perform initial sorting based on morton code?
orderedInfo
{
diameter 0.005; // minimum space between centers of particles
numPoints 24000; // number of particles in the simulation
axisOrder (x y z); // axis order for filling the space with particles
}
regionType cylinder; // other options: cylinder and sphere
cylinderInfo // cylinder for positioning particles
{
p1 (0.0 0.0 0.09); // Coordinates of bottom cylinderRegion (m,m,m)
p2 (0.0 0.0 0.21); // Coordinates of top cylinderRegion (m,m,m)
radius 0.09; // radius of cylinder
}
}

View File

@ -1,34 +0,0 @@
/* -------------------------------*- C++ -*--------------------------------- *\
| phasicFlow File |
| copyright: www.cemf.ir |
\* ------------------------------------------------------------------------- */
objectName settingsDict;
objectType dictionary;
fileFormat ASCII;
/*---------------------------------------------------------------------------*/
run toteblender;
dt 0.00004; // time step for integration (s)
startTime 0; // start time for simulation
endTime 10; // end time for simulation
saveInterval 0.05; // time interval for saving the simulation
timePrecision 3; // maximum number of digits for time folder
g (0 0 -9.8); // gravity vector (m/s2)
includeObjects (diameter); // save necessary (i.e., required) data on disk
// exclude unnecessary data from saving on disk
excludeObjects (rVelocity.dy1 pStructPosition.dy1 pStructVelocity.dy1);
integrationMethod AdamsBashforth2; // integration method
writeFormat ascii; // data writting format (ascii or binary)
timersReport Yes; // report timers (Yes or No)
timersReportInterval 0.02; // time interval for reporting timers