From 5d67ae270c5807f6b9fd0da6e6225698d8f4830a Mon Sep 17 00:00:00 2001 From: PhasicFlow <113092888+PhasicFlow@users.noreply.github.com> Date: Thu, 20 Apr 2023 16:10:23 +0330 Subject: [PATCH] Update ReadMe.md --- .../sphereGranFlow/toteblender/ReadMe.md | 233 +++++++++--------- 1 file changed, 123 insertions(+), 110 deletions(-) diff --git a/tutorials/sphereGranFlow/toteblender/ReadMe.md b/tutorials/sphereGranFlow/toteblender/ReadMe.md index 203f7ae0..7b13e340 100644 --- a/tutorials/sphereGranFlow/toteblender/ReadMe.md +++ b/tutorials/sphereGranFlow/toteblender/ReadMe.md @@ -1,6 +1,6 @@ # Problem Definition -The problem is to simulate a double pedestal tote blender 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 that are being inserted during simulation to fill the blender. -* **24000** particles with **5 mm** diameter, at the rate of 24000 particles/s for 1 sec. ŮŽAfter settling particles, this blender starts to rotate at t=**1s**. For better and faster performace in simulations where the number of particles is very large, the format of the files is saved as **ASCII**. +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**. @@ -8,117 +8,46 @@ The problem is to simulate a double pedestal tote blender with the diameter **0. a view of the tote-blender while rotating
- +
+
+ particles are colored according to their velocity +
# 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 two folders: `caseSetup`, `setting`. (see the above folders). Unlike the previous cases, this case does not have the `stl` file. and the geometry is described in the `geometryDict` file. +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. -## Defining particles -Then in the `caseSetup/sphereShape` the diameter and the material name of the particles are defined. -```C++ -// name of shapes -names (sphere1); +## Geometry -// diameter of shapes (m) -diameters (0.005); - -// material name for shapes -materials (solidProperty); -``` -## Particle Insertion -In this case we have a region for ordering particles. These particles are placed in this blender. For example the script for the inserted particles is shown below. - -
-in caseSetup/particleInsertion file -
+### 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++ -// positions particles -positionParticles +// information for rotatingAxisMotion motion model +rotatingAxisMotionInfo { - // ordered positioning - method positionOrdered; - - // maximum number of particles in the simulation - maxNumberOfParticles 25001; - - // perform initial sorting based on morton code? - mortonSorting Yes; - - // cylinder for positioning particles - cylinder + axisOfRotation { - // Coordinates of top cylinderRegion (m,m,m) - p1 (0.0 0.0 0.09); + 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.0 0.0 0.21); + omega 1.5708; // rotation speed ==> 15 rad/s - // radius of cylinder - radius 0.09; - } - - positionOrderedInfo - { - // minimum space between centers of particles - diameter 0.005; + // Start time of Geometry Rotating (s) + startTime 0.5; - // number of particles in the simulation - numPoints 24000; - - // axis order for filling the space with particles - axisOrder (x y z); + // End time of Geometry Rotating (s) + endTime 9.5; } } ``` - ## Interaction between particles - In `caseSetup/interaction` file, material names and properties and interaction parameters are defined: interaction between the particles of Tote Blender. Since we are defining 1 material for simulation, the interaction matrix is 1x1 (interactions are symetric). -```C++ - // a list of materials names -materials (solidProperty); -// density of materials [kg/m3] -densities (1000.0); -contactListType sortedContactList; +### 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. -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); -} -``` -## Settings -### Geometry -In the `settings/geometryDict` file, the geometry and axis of rotation is defined for the blender. The geometry is composed of a cylinder inlet and outlet, cone shell top and down, a cylinder shell and enter and exit Gate. ```C++ surfaces { @@ -313,31 +242,115 @@ surfaces } ``` -### Rotating Axis Info -In this part of `geometryDict` the information of rotating axis and speed of rotation are defined. Unlike the previous cases, the rotation of this blender starts at time=**0 s**. + +## Defining particles +### Diameter and material of spheres +In the `caseSetup/sphereShape` the diameter and the material name of the particles are defined. + +
+in caseSetup/sphereShape file +
+ ```C++ -// information for rotatingAxisMotion motion model -rotatingAxisMotionInfo +// 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. + +
+in settings/particlesDict file +
+ +```C++ +// positions particles +positionParticles { - axisOfRotation + // 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.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 + 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; - 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; + // number of particles in the simulation + numPoints 24000; + + // axis order for filling the space with particles + axisOrder (x y z); } } ``` -## Performing Simulation + + ## 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. +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. \ No newline at end of file +After finishing the simulation, you can use `$ pFlowtoVTK` to convert the results into vtk format stored in ./VTK folder.