toteblender is Updated.

This commit is contained in:
ramin1728 2025-03-07 00:26:31 +03:30
parent 08d0d62d37
commit e5c11cfea3
9 changed files with 135 additions and 174 deletions

View File

@ -1,5 +1,5 @@
# Problem Definition # Problem Definition (v-1.0)
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. The problem is to simulate a double pedestal blender (mixer) with diameters of 0.03 m and 0.1 m, length of 0.3 m, rotating at 28 rpm. This mixer is filled with 24000 particles. The integration time step is 0.00001 s. There is one type of particle in this mixer. Particles are positioned to fill the mixer before the simulation starts.
* **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**. * **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> <html>
@ -17,7 +17,7 @@ The problem is to simulate a double pedestal tote blender (mixer) with the diame
</html> </html>
# Setting up the Case # 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. As explained in the previous cases, the simulation case setup is based on text-based scripts. Here, the simulation case setup files are stored in two folders: `caseSetup`, `setting` (see the folders above). Unlike the previous cases, this case does not have a `stl` file and the surfaces are defined based on the built-in utilities in phasicFlow. See the next section for more information on how to set up the geometry and its rotation.
## Geometry ## Geometry
@ -26,7 +26,7 @@ In file `settings/geometryDict` the information of rotating axis and speed of ro
```C++ ```C++
// information for rotatingAxisMotion motion model // information for rotatingAxisMotion motion model
rotatingAxisMotionInfo rotatingAxisInfo
{ {
axisOfRotation axisOfRotation
{ {
@ -245,10 +245,10 @@ surfaces
## Defining particles ## Defining particles
### Diameter and material of spheres ### Diameter and material of spheres
In the `caseSetup/sphereShape` the diameter and the material name of the particles are defined. In the `caseSetup/shapes` the diameter and the material name of the particles are defined.
<div align="center"> <div align="center">
in <b>caseSetup/sphereShape</b> file in <b>caseSetup/shapes</b> file
</div> </div>
```C++ ```C++
@ -273,24 +273,11 @@ in <b>settings/particlesDict</b> file
positionParticles positionParticles
{ {
// ordered positioning // ordered positioning
method positionOrdered; method ordered;
// perform initial sorting based on morton code
// maximum number of particles in the simulation
maxNumberOfParticles 25001;
// perform initial sorting based on morton code?
mortonSorting Yes; mortonSorting Yes;
orderedInfo
// 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 // minimum space between centers of particles
diameter 0.005; diameter 0.005;
@ -300,6 +287,17 @@ positionParticles
// axis order for filling the space with particles // axis order for filling the space with particles
axisOrder (x y z); axisOrder (x y z);
} }
regionType cylinder; // other options: box 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
}
} }
``` ```
@ -336,9 +334,6 @@ model
// coefficient of normal restitution // coefficient of normal restitution
en (0.7); en (0.7);
// coefficient of tangential restitution
et (1.0);
// dynamic friction // dynamic friction
mu (0.3); mu (0.3);
@ -350,7 +345,7 @@ model
# Performing Simulation and previewing the results # Performing Simulation and previewing the results
To perform simulations, enter the following commands one after another in the terminal. To perform simulations, enter the following commands one after another in the terminal.
Enter `$ particlesPhasicFlow` command to create the initial fields for particles. Enter `particlesPhasicFlow` command to create the initial fields for particles.
Enter `$ geometryPhasicFlow` command to create the geometry. Enter `geometryPhasicFlow` command to create the geometry.
At last, enter `$ sphereGranFlow` command to start the simulation. 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. After finishing the simulation, you can use `pFlowtoVTK` to convert the results into vtk format stored in ./VTK folder.

View File

@ -6,30 +6,30 @@ objectName interaction;
objectType dicrionary; objectType dicrionary;
fileFormat ASCII; fileFormat ASCII;
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
materials (solidProperty); // a list of materials names materials (solidProperty); // a list of materials names
densities (1000.0); // density of materials [kg/m3] densities (1000.0); // density of materials [kg/m3]
contactListType sortedContactList; contactListType sortedContactList;
contactSearch contactSearch
{ {
method NBS; // method for broad search method NBS; // method for broad search
updateInterval 10; updateInterval 10;
sizeRatio 1.1; sizeRatio 1.1;
cellExtent 0.55; cellExtent 0.55;
adjustableBox Yes; adjustableBox Yes;
} }
model model
{ {
contactForceModel nonLinearNonLimited; contactForceModel nonLinearNonLimited;
rollingFrictionModel normal; rollingFrictionModel normal;
/* /*
Property (solidProperty-solidProperty) Property (solidProperty-solidProperty)
@ -39,14 +39,12 @@ model
Geff (0.8e6); // Shear modulus [Pa] Geff (0.8e6); // Shear modulus [Pa]
nu (0.25); // Poisson's ratio [-] nu (0.25); // Poisson's ratio [-]
en (0.7); // coefficient of normal restitution en (0.7); // coefficient of normal restitution
et (1.0); // coefficient of tangential restitution mu (0.3); // dynamic friction
mu (0.3); // dynamic friction mur (0.1); // rolling friction
mur (0.1); // rolling friction
} }

View File

@ -6,8 +6,7 @@ objectName particleInsertion;
objectType dicrionary; objectType dicrionary;
fileFormat ASCII; fileFormat ASCII;
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
active No; // is insertion active -> Yes or No active No; // is insertion active -> Yes or No
collisionCheck No; // is checked -> Yes or No

View File

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

View File

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

View File

@ -6,35 +6,19 @@ objectName domainDict;
objectType dictionary; objectType dictionary;
fileFormat ASCII; fileFormat ASCII;
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
globalBox // Simulation domain: every particles that goes outside this domain will be deleted // 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 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 max (0.5 0.5 0.5); // upper corner point of the box
}
decomposition
{
direction z;
} }
boundaries 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 left
{ {
type exit; // other options: periodic, reflective type exit; // other options: periodic, reflective
} }
right right

View File

@ -12,15 +12,15 @@ rotatingAxisInfo // information for rotatingAxis
{ {
axisOfRotation axisOfRotation
{ {
p1 (-0.1 0.0 0.15); // first point for the axis of rotation 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 p2 (0.1 0.0 0.15); // second point for the axis of rotation
omega 1.5708; // rotation speed ==> 15 rad/s omega 1.5708; // rotation speed ==> 15 rad/s
startTime 0.5; // Start time of Geometry Rotating (s) startTime 0.5; // Start time of Geometry Rotating (s)
endTime 9.5; // End time of Geometry Rotating (s) endTime 9.5; // End time of Geometry Rotating (s)
} }
} }
@ -28,132 +28,132 @@ surfaces
{ {
topGate topGate
{ {
type cylinderWall; // type of wall type cylinderWall; // type of wall
p1 (0.0 0.0 0.3); // begin point of cylinder axis p1 (0.0 0.0 0.3); // begin point of cylinder axis
p2 (0.0 0.0 0.301); // end point of cylinder axis p2 (0.0 0.0 0.301); // end point of cylinder axis
radius1 0.03; // radius at p1 radius1 0.03; // radius at p1
radius2 0.0001; // radius at p2 radius2 0.0001; // radius at p2
material solidProperty; // material of wall material solidProperty; // material of wall
motion axisOfRotation; // motion component name motion axisOfRotation; // motion component name
} }
topCylinder topCylinder
{ {
type cylinderWall; // type of the wall type cylinderWall; // type of the wall
p1 (0.0 0.0 0.28); // begin point of cylinder axis p1 (0.0 0.0 0.28); // begin point of cylinder axis
p2 (0.0 0.0 0.3); // end point of cylinder axis p2 (0.0 0.0 0.3); // end point of cylinder axis
radius1 0.03; // radius at p1 radius1 0.03; // radius at p1
radius2 0.03; // radius at p2 radius2 0.03; // radius at p2
resolution 36; // number of divisions resolution 36; // number of divisions
material solidProperty; // material name of this wall material solidProperty; // material name of this wall
motion axisOfRotation; // motion component name motion axisOfRotation; // motion component name
} }
coneShelltop coneShelltop
{ {
type cylinderWall; // type of the wall type cylinderWall; // type of the wall
p1 (0.0 0.0 0.2); // begin point of cylinder axis p1 (0.0 0.0 0.2); // begin point of cylinder axis
p2 (0.0 0.0 0.28); // end point of cylinder axis p2 (0.0 0.0 0.28); // end point of cylinder axis
radius1 0.1; // radius at p1 radius1 0.1; // radius at p1
radius2 0.03; // radius at p2 radius2 0.03; // radius at p2
resolution 36; // number of divisions resolution 36; // number of divisions
material solidProperty; // material name of this wall material solidProperty; // material name of this wall
motion axisOfRotation; // motion component name motion axisOfRotation; // motion component name
} }
cylinderShell cylinderShell
{ {
type cylinderWall; // type of the wall type cylinderWall; // type of the wall
p1 (0.0 0.0 0.1); // begin point of cylinder axis p1 (0.0 0.0 0.1); // begin point of cylinder axis
p2 (0.0 0.0 0.2); // end point of cylinder axis p2 (0.0 0.0 0.2); // end point of cylinder axis
radius1 0.1; // radius at p1 radius1 0.1; // radius at p1
radius2 0.1; // radius at p2 radius2 0.1; // radius at p2
resolution 36; // number of divisions resolution 36; // number of divisions
material solidProperty; // material name of this wall material solidProperty; // material name of this wall
motion axisOfRotation; // motion component name motion axisOfRotation; // motion component name
} }
coneShelldown coneShelldown
{ {
type cylinderWall; // type of the wall type cylinderWall; // type of the wall
p1 (0.0 0.0 0.02); // begin point of cylinder axis p1 (0.0 0.0 0.02); // begin point of cylinder axis
p2 (0.0 0.0 0.1); // end point of cylinder axis p2 (0.0 0.0 0.1); // end point of cylinder axis
radius1 0.03; // radius at p1 radius1 0.03; // radius at p1
radius2 0.1; // radius at p2 radius2 0.1; // radius at p2
resolution 36; // number of divisions resolution 36; // number of divisions
material solidProperty; // material name of this wall material solidProperty; // material name of this wall
motion axisOfRotation; // motion component name motion axisOfRotation; // motion component name
} }
bottomCylinder bottomCylinder
{ {
type cylinderWall; // type of the wall type cylinderWall; // type of the wall
p1 (0.0 0.0 0.0); // begin point of cylinder axis p1 (0.0 0.0 0.0); // begin point of cylinder axis
p2 (0.0 0.0 0.02); // end point of cylinder axis p2 (0.0 0.0 0.02); // end point of cylinder axis
radius1 0.03; // radius at p1 radius1 0.03; // radius at p1
radius2 0.03; // radius at p2 radius2 0.03; // radius at p2
resolution 36; // number of divisions resolution 36; // number of divisions
material solidProperty; // material name of this wall material solidProperty; // material name of this wall
motion axisOfRotation; // motion component name motion axisOfRotation; // motion component name
} }
exitGate exitGate
{ {
type cylinderWall; // type of the wall type cylinderWall; // type of the wall
p1 (0.0 0.0 -0.001); // begin point of cylinder axis p1 (0.0 0.0 -0.001); // begin point of cylinder axis
p2 (0.0 0.0 0.0); // end point of cylinder axis p2 (0.0 0.0 0.0); // end point of cylinder axis
radius1 0.03; // radius at p1 radius1 0.03; // radius at p1
radius2 0.0001; // radius at p2 radius2 0.0001; // radius at p2
resolution 36; // number of divisions resolution 36; // number of divisions
material solidProperty; // material name of this wall material solidProperty; // material name of this wall
motion axisOfRotation; // motion component name motion axisOfRotation; // motion component name
} }
} }

View File

@ -31,15 +31,15 @@ setFields
{ {
shapeAssigne shapeAssigne
{ {
selector stridedRange; // other options: box, cylinder, sphere, randomPoints selector stridedRange; // other options: box, cylinder, sphere, randomPoints
stridedRangeInfo stridedRangeInfo
{ {
begin 0; // begin index of points begin 0; // begin index of points
end 24000; // end index of points end 24000; // end index of points
stride 3; // stride for selector stride 3; // stride for selector
} }
fieldValue // fields that the selector is applied to fieldValue // fields that the selector is applied to
@ -53,27 +53,27 @@ setFields
positionParticles // positions particles positionParticles // positions particles
{ {
method ordered; // ordered positioning method ordered; // other options: random and empty
mortonSorting Yes; // perform initial sorting based on morton code? mortonSorting Yes; // perform initial sorting based on morton code?
orderedInfo orderedInfo
{ {
diameter 0.005; // minimum space between centers of particles diameter 0.005; // minimum space between centers of particles
numPoints 24000; // number of particles in the simulation numPoints 24000; // number of particles in the simulation
axisOrder (x y z); // axis order for filling the space with particles axisOrder (x y z); // axis order for filling the space with particles
} }
regionType cylinder; // other options: cylinder and sphere regionType cylinder; // other options: box and sphere
cylinderInfo // cylinder for positioning particles cylinderInfo // cylinder for positioning particles
{ {
p1 (0.0 0.0 0.09); // Coordinates of bottom cylinderRegion (m,m,m) 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) p2 (0.0 0.0 0.21); // Coordinates of top cylinderRegion (m,m,m)
radius 0.09; // radius of cylinder radius 0.09; // radius of cylinder
} }
} }

View File

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