From 23783b7db9dafb4c99379486d1b6085e90e50763 Mon Sep 17 00:00:00 2001 From: Hamidreza Date: Tue, 11 Mar 2025 17:20:42 +0330 Subject: [PATCH] toteBlender for v-1.0 --- .../sphereGranFlow/toteBlender/ReadMe.md | 304 +++++++++++++++ .../toteBlender/caseSetup/interaction | 49 +++ .../caseSetup/shapes} | 15 +- .../cleanThisCase | 0 .../{toteblender => toteBlender}/runThisCase | 0 .../toteBlender/settings/domainDict | 50 +++ .../toteBlender/settings/geometryDict | 160 ++++++++ .../toteBlender/settings/particlesDict | 58 +++ .../toteBlender/settings/settingsDict | 35 ++ .../sphereGranFlow/toteblender/ReadMe.md | 356 ------------------ .../toteblender/caseSetup/interaction | 52 --- .../toteblender/caseSetup/particleInsertion | 13 - .../toteblender/caseSetup/shapes | 13 - .../toteblender/settings/domainDict | 64 ---- .../toteblender/settings/geometryDict | 159 -------- .../toteblender/settings/particlesDict | 79 ---- .../toteblender/settings/settingsDict | 34 -- 17 files changed, 662 insertions(+), 779 deletions(-) create mode 100644 tutorials/sphereGranFlow/toteBlender/ReadMe.md create mode 100644 tutorials/sphereGranFlow/toteBlender/caseSetup/interaction rename tutorials/sphereGranFlow/{toteblender/caseSetup/sphereShape => toteBlender/caseSetup/shapes} (62%) rename tutorials/sphereGranFlow/{toteblender => toteBlender}/cleanThisCase (100%) mode change 100644 => 100755 rename tutorials/sphereGranFlow/{toteblender => toteBlender}/runThisCase (100%) mode change 100644 => 100755 create mode 100755 tutorials/sphereGranFlow/toteBlender/settings/domainDict create mode 100644 tutorials/sphereGranFlow/toteBlender/settings/geometryDict create mode 100644 tutorials/sphereGranFlow/toteBlender/settings/particlesDict create mode 100644 tutorials/sphereGranFlow/toteBlender/settings/settingsDict delete mode 100644 tutorials/sphereGranFlow/toteblender/ReadMe.md delete mode 100644 tutorials/sphereGranFlow/toteblender/caseSetup/interaction delete mode 100644 tutorials/sphereGranFlow/toteblender/caseSetup/particleInsertion delete mode 100644 tutorials/sphereGranFlow/toteblender/caseSetup/shapes delete mode 100755 tutorials/sphereGranFlow/toteblender/settings/domainDict delete mode 100644 tutorials/sphereGranFlow/toteblender/settings/geometryDict delete mode 100644 tutorials/sphereGranFlow/toteblender/settings/particlesDict delete mode 100644 tutorials/sphereGranFlow/toteblender/settings/settingsDict diff --git a/tutorials/sphereGranFlow/toteBlender/ReadMe.md b/tutorials/sphereGranFlow/toteBlender/ReadMe.md new file mode 100644 index 00000000..de1a367c --- /dev/null +++ b/tutorials/sphereGranFlow/toteBlender/ReadMe.md @@ -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**. + + + +
+ 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 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. + +
+in caseSetup/shapes file +
+ +```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. + +
+in settings/particlesDict file +
+ +```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. diff --git a/tutorials/sphereGranFlow/toteBlender/caseSetup/interaction b/tutorials/sphereGranFlow/toteBlender/caseSetup/interaction new file mode 100644 index 00000000..58862397 --- /dev/null +++ b/tutorials/sphereGranFlow/toteBlender/caseSetup/interaction @@ -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; +} diff --git a/tutorials/sphereGranFlow/toteblender/caseSetup/sphereShape b/tutorials/sphereGranFlow/toteBlender/caseSetup/shapes similarity index 62% rename from tutorials/sphereGranFlow/toteblender/caseSetup/sphereShape rename to tutorials/sphereGranFlow/toteBlender/caseSetup/shapes index d895b1ee..bb207f33 100644 --- a/tutorials/sphereGranFlow/toteblender/caseSetup/sphereShape +++ b/tutorials/sphereGranFlow/toteBlender/caseSetup/shapes @@ -2,16 +2,13 @@ | phasicFlow File | | copyright: www.cemf.ir | \* ------------------------------------------------------------------------- */ -objectName sphereDict; -objectType sphereShape; -fileFormat ASCII; +objectName sphereDict; +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); \ No newline at end of file +materials (solidProperty); // material name for shapes diff --git a/tutorials/sphereGranFlow/toteblender/cleanThisCase b/tutorials/sphereGranFlow/toteBlender/cleanThisCase old mode 100644 new mode 100755 similarity index 100% rename from tutorials/sphereGranFlow/toteblender/cleanThisCase rename to tutorials/sphereGranFlow/toteBlender/cleanThisCase diff --git a/tutorials/sphereGranFlow/toteblender/runThisCase b/tutorials/sphereGranFlow/toteBlender/runThisCase old mode 100644 new mode 100755 similarity index 100% rename from tutorials/sphereGranFlow/toteblender/runThisCase rename to tutorials/sphereGranFlow/toteBlender/runThisCase diff --git a/tutorials/sphereGranFlow/toteBlender/settings/domainDict b/tutorials/sphereGranFlow/toteBlender/settings/domainDict new file mode 100755 index 00000000..282d63bf --- /dev/null +++ b/tutorials/sphereGranFlow/toteBlender/settings/domainDict @@ -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; + } +} diff --git a/tutorials/sphereGranFlow/toteBlender/settings/geometryDict b/tutorials/sphereGranFlow/toteBlender/settings/geometryDict new file mode 100644 index 00000000..420815eb --- /dev/null +++ b/tutorials/sphereGranFlow/toteBlender/settings/geometryDict @@ -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; + } +} diff --git a/tutorials/sphereGranFlow/toteBlender/settings/particlesDict b/tutorials/sphereGranFlow/toteBlender/settings/particlesDict new file mode 100644 index 00000000..ebb66d3d --- /dev/null +++ b/tutorials/sphereGranFlow/toteBlender/settings/particlesDict @@ -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 + } +} diff --git a/tutorials/sphereGranFlow/toteBlender/settings/settingsDict b/tutorials/sphereGranFlow/toteBlender/settings/settingsDict new file mode 100644 index 00000000..46a7218b --- /dev/null +++ b/tutorials/sphereGranFlow/toteBlender/settings/settingsDict @@ -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; diff --git a/tutorials/sphereGranFlow/toteblender/ReadMe.md b/tutorials/sphereGranFlow/toteblender/ReadMe.md deleted file mode 100644 index 7b13e340..00000000 --- a/tutorials/sphereGranFlow/toteblender/ReadMe.md +++ /dev/null @@ -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**. - - - -
- 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 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. - -
-in caseSetup/sphereShape file -
- -```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. - -
-in settings/particlesDict file -
- -```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. diff --git a/tutorials/sphereGranFlow/toteblender/caseSetup/interaction b/tutorials/sphereGranFlow/toteblender/caseSetup/interaction deleted file mode 100644 index 203a501b..00000000 --- a/tutorials/sphereGranFlow/toteblender/caseSetup/interaction +++ /dev/null @@ -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 -} - diff --git a/tutorials/sphereGranFlow/toteblender/caseSetup/particleInsertion b/tutorials/sphereGranFlow/toteblender/caseSetup/particleInsertion deleted file mode 100644 index cabe23da..00000000 --- a/tutorials/sphereGranFlow/toteblender/caseSetup/particleInsertion +++ /dev/null @@ -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 - - diff --git a/tutorials/sphereGranFlow/toteblender/caseSetup/shapes b/tutorials/sphereGranFlow/toteblender/caseSetup/shapes deleted file mode 100644 index 5e154455..00000000 --- a/tutorials/sphereGranFlow/toteblender/caseSetup/shapes +++ /dev/null @@ -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 \ No newline at end of file diff --git a/tutorials/sphereGranFlow/toteblender/settings/domainDict b/tutorials/sphereGranFlow/toteblender/settings/domainDict deleted file mode 100755 index ac9b1774..00000000 --- a/tutorials/sphereGranFlow/toteblender/settings/domainDict +++ /dev/null @@ -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 - } -} diff --git a/tutorials/sphereGranFlow/toteblender/settings/geometryDict b/tutorials/sphereGranFlow/toteblender/settings/geometryDict deleted file mode 100644 index 37a7b1db..00000000 --- a/tutorials/sphereGranFlow/toteblender/settings/geometryDict +++ /dev/null @@ -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 - } -} diff --git a/tutorials/sphereGranFlow/toteblender/settings/particlesDict b/tutorials/sphereGranFlow/toteblender/settings/particlesDict deleted file mode 100644 index 01fecb85..00000000 --- a/tutorials/sphereGranFlow/toteblender/settings/particlesDict +++ /dev/null @@ -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 - } -} diff --git a/tutorials/sphereGranFlow/toteblender/settings/settingsDict b/tutorials/sphereGranFlow/toteblender/settings/settingsDict deleted file mode 100644 index 0977f56b..00000000 --- a/tutorials/sphereGranFlow/toteblender/settings/settingsDict +++ /dev/null @@ -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