diff --git a/tutorials/sphereGranFlow/RotaryAirLockValve/ReadMe.md b/tutorials/sphereGranFlow/RotaryAirLockValve/ReadMe.md
index ebc287b0..eb7fbbbe 100644
--- a/tutorials/sphereGranFlow/RotaryAirLockValve/ReadMe.md
+++ b/tutorials/sphereGranFlow/RotaryAirLockValve/ReadMe.md
@@ -3,6 +3,7 @@ The problem is to simulate a Rotary Air-Lock Valve. The external diameter of rot
* **28000** particles with **5 mm** diameter are inserted into the valve with the rate of **4000 particles/s**.
* The rotor starts its ortation at t = 1.25 s at the rate of 2.1 rad/s.
+
diff --git a/tutorials/sphereGranFlow/RotaryAirLockValve/caseSetup/interaction b/tutorials/sphereGranFlow/RotaryAirLockValve/caseSetup/interaction
index 35fbdeab..da09e5e1 100644
--- a/tutorials/sphereGranFlow/RotaryAirLockValve/caseSetup/interaction
+++ b/tutorials/sphereGranFlow/RotaryAirLockValve/caseSetup/interaction
@@ -6,78 +6,56 @@ objectName interaction;
objectType dicrionary;
fileFormat ASCII;
/*---------------------------------------------------------------------------*/
+materials (sphereMat wallMat); // a list of materials names
-// a list of materials names
-materials (sphereMat wallMat);
-
-// density of materials [kg/m3]
-densities (1000 2500);
+densities (1000 2500); // 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;
+ rollingFrictionModel normal;
/*
- Property (sphereMat-sphereMat sphereMat-wallMat
- wallMat-wallMat);
+ Property (sphereMat-sphereMat sphereMat-wallMat
+
+ wallMat-wallMat);
*/
- // Young modulus [Pa]
- Yeff (1.0e6 1.0e6
+ Yeff (1.0e6 1.0e6 // Young modulus [Pa]
1.0e6);
- // Shear modulus [Pa]
- Geff (0.8e6 0.8e6
+ Geff (0.8e6 0.8e6 // Shear modulus [Pa]
0.8e6);
- // Poisson's ratio [-]
- nu (0.25 0.25
- 0.25);
+ nu (0.25 0.25 // Poisson's ratio [-]
+ 0.25);
- // coefficient of normal restitution
- en (0.7 0.8
- 1.0);
+ en (0.7 0.8 // coefficient of normal restitution
+ 1.0);
- // coefficient of tangential restitution
- et (1.0 1.0
- 1.0);
+ et (1.0 1.0 // coefficient of tangential restitution
+ 1.0);
- // dynamic friction
- mu (0.3 0.35
- 0.35);
+ mu (0.3 0.35 // dynamic friction
+ 0.35);
- // rolling friction
- mur (0.1 0.1
- 0.1);
+ mur (0.1 0.1 // rolling friction
+ 0.1);
}
-contactSearch
-{
- // method for broad search particle-particle
- method NBS;
-
- // method for broad search particle-wall
- wallMapping cellMapping;
-
- NBSInfo
- {
- // each 10 timesteps, update neighbor list
- updateFrequency 10;
-
- // bounding box size to particle diameter (max)
- sizeRatio 1.1;
- }
-
- cellMappingInfo
- {
- // each 20 timesteps, update neighbor list
- updateFrequency 10;
-
- // bounding box for particle-wall search (> 0.5)
- cellExtent 0.6;
- }
-}
\ No newline at end of file
diff --git a/tutorials/sphereGranFlow/RotaryAirLockValve/caseSetup/particleInsertion b/tutorials/sphereGranFlow/RotaryAirLockValve/caseSetup/particleInsertion
index 024c9ca2..e3b74af1 100644
--- a/tutorials/sphereGranFlow/RotaryAirLockValve/caseSetup/particleInsertion
+++ b/tutorials/sphereGranFlow/RotaryAirLockValve/caseSetup/particleInsertion
@@ -6,45 +6,38 @@ objectName particleInsertion;
objectType dicrionary;
fileFormat ASCII;
/*---------------------------------------------------------------------------*/
+active yes; // is insertion active -> yes or no
-// is insertion active?
-active yes;
-
-// not implemented for yes
-collisionCheck No;
+checkForCollision No; // is checked -> yes or no
/*
-one region is considered for inserting particles.
+ one region is considered for inserting particles.
*/
+
topRegion
{
+ regionType box; // type of insertion region
- // type of insertion region
- type boxRegion;
-
- // insertion rate (particles/s)
- rate 4000;
-
- // Start time of Particles insertion (s)
- startTime 0;
-
- // End time of Particles insertion (s)
- endTime 7;
-
- // Time Interval between each insertion (s)
- interval 0.025;
-
- // Coordinates of BoxRegion (m,m,m)
- boxRegionInfo
+ timeControl simulationTime;
+
+ rate 4000; // insertion rate (particles/s)
+
+ startTime 0; // Start time of Particles insertion (s)
+
+ endTime 7; // End time of Particles insertion (s)
+
+ insertionInterval 0.025; // Time Interval between each insertion (s)
+
+ boxInfo // Coordinates of BoxRegion (m,m,m)
{
- min ( 0.48 0.58 0.01 ); // (m,m,m)
- max ( 0.64 0.59 0.05 ); // (m,m,m)
+ min ( 0.48 0.58 0.01 ); // (m,m,m)
+
+ max ( 0.64 0.59 0.05 ); // (m,m,m)
}
setFields
{
- // initial velocity of inserted particles
- velocity realx3 (0.0 -0.6 0.0);
+ velocity realx3 (0.0 -0.6 0.0); // initial velocity of inserted particles
}
mixture
diff --git a/tutorials/sphereGranFlow/RotaryAirLockValve/caseSetup/shapes b/tutorials/sphereGranFlow/RotaryAirLockValve/caseSetup/shapes
new file mode 100644
index 00000000..a5e990d0
--- /dev/null
+++ b/tutorials/sphereGranFlow/RotaryAirLockValve/caseSetup/shapes
@@ -0,0 +1,13 @@
+/* -------------------------------*- C++ -*--------------------------------- *\
+| phasicFlow File |
+| copyright: www.cemf.ir |
+\* ------------------------------------------------------------------------- */
+objectName particleInsertion;
+objectType dicrionary;
+fileFormat ASCII;
+/*---------------------------------------------------------------------------*/
+names (sphere); // names of shapes
+
+diameters (0.005); // diameter of shapes
+
+materials (sphereMat); // material names for shapes
diff --git a/tutorials/sphereGranFlow/RotaryAirLockValve/settings/domainDict b/tutorials/sphereGranFlow/RotaryAirLockValve/settings/domainDict
new file mode 100755
index 00000000..f494d822
--- /dev/null
+++ b/tutorials/sphereGranFlow/RotaryAirLockValve/settings/domainDict
@@ -0,0 +1,64 @@
+/* -------------------------------*- 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.397538 0.178212 0.00);
+
+ max (0.725537 0.600214 0.06);
+}
+
+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: periodict, 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/RotaryAirLockValve/settings/geometryDict b/tutorials/sphereGranFlow/RotaryAirLockValve/settings/geometryDict
index 9ca8c025..8d1a515e 100644
--- a/tutorials/sphereGranFlow/RotaryAirLockValve/settings/geometryDict
+++ b/tutorials/sphereGranFlow/RotaryAirLockValve/settings/geometryDict
@@ -6,30 +6,21 @@ objectName geometryDict;
objectType dictionary;
fileFormat ASCII;
/*---------------------------------------------------------------------------*/
+motionModel rotatingAxis; // motion model: rotating object around an axis
-// motion model: rotating object around an axis
-motionModel rotatingAxisMotion;
-
-// information for rotatingAxisMotion motion model
-rotatingAxisMotionInfo
+rotatingAxisInfo // information for rotatingAxisMotion motion model
{
rotAxis
{
-
- // first point for the axis of rotation
- p1 (0.561547 0.372714 0.000);
-
- // second point for the axis of rotation
- p2 (0.561547 0.372714 0.010);
-
- // rotation speed (rad/s)
- omega 2.1;
-
- // Start time of Geometry Rotating (s)
- startTime 1.25;
+ p1 (0.561547 0.372714 0.000); // first point for the axis of rotation
- // End time of Geometry Rotating (s)
- endTime 7;
+ p2 (0.561547 0.372714 0.010); // second point for the axis of rotation
+
+ omega 2.1; // rotation speed (rad/s)
+
+ startTime 1.25; // Start time of Geometry Rotating (s)
+
+ endTime 7; // End time of Geometry Rotating (s)
}
}
@@ -37,30 +28,24 @@ surfaces
{
gear
{
- // type of the wall
- type stlWall;
+ type stlWall; // type of the wall
- // file name in stl folder
- file gear.stl;
+ file gear.stl; // file name in stl folder
- // material name of this wall
- material wallMat;
+ material wallMat; // material name of this wall
- // motion component name
- motion rotAxis;
+ motion rotAxis; // motion component name
}
-surfaces
+
+ surfaces
{
- // type of the wall
- type stlWall;
+ type stlWall; // type of the wall
- // file name in stl folder
- file surfaces.stl;
+ file surfaces.stl; // file name in stl folder
- // material name of this wall
- material wallMat;
+ material wallMat; // material name of this wall
- // motion component name
- motion none;
+ motion none; // motion component name
+ }
}
diff --git a/tutorials/sphereGranFlow/RotaryAirLockValve/settings/particlesDict b/tutorials/sphereGranFlow/RotaryAirLockValve/settings/particlesDict
index 792c7410..9d35b6f7 100644
--- a/tutorials/sphereGranFlow/RotaryAirLockValve/settings/particlesDict
+++ b/tutorials/sphereGranFlow/RotaryAirLockValve/settings/particlesDict
@@ -2,42 +2,73 @@
| phasicFlow File |
| copyright: www.cemf.ir |
\* ------------------------------------------------------------------------- */
-objectName geometryDict;
+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
{
- // linear velocity (m/s)
- velocity realx3 (0 0 0);
+ velocity realx3 (0 0 0); // linear velocity (m/s)
- // linear acceleration (m/s2)
- acceleration realx3 (0 0 0);
+ acceleration realx3 (0 0 0); // linear acceleration (m/s2)
- // rotational velocity (rad/s)
- rVelocity realx3 (0 0 0);
+ rVelocity realx3 (0 0 0); // rotational velocity (rad/s)
- // name of the particle shape
- shapeName word sphere;
+ shapeName word sphere; // name of the particle shape
}
selectors
- {}
+ {
+ shapeAssigne
+ {
+ selector stridedRange; // other options: box, cylinder, sphere, randomPoints
+
+ stridedRangeInfo
+ {
+ begin 0; // begin index of points
+
+ end 50000; // end index of points
+
+ stride 3; // stride for selector
+ }
+
+ fieldValue // fields that the selector is applied to
+ {
+ shapeName word sphere; // sets shapeName of the selected points to largeSphere
+ }
+ }
+ }
}
-// positions particles
-positionParticles
+positionParticles // positions particles
{
+ method ordered; // other options: random and empty
- // creates the required fields with zero particles (empty).
- method empty;
+ orderedInfo
+ {
+ diameter 0.005; // diameter of particles
- // maximum number of particles in the simulation
- maxNumberOfParticles 50000;
+ numPoints 50000; // number of particles in the simulation
- // perform initial sorting based on morton code?
- mortonSorting Yes;
+ axisOrder (z x y); // axis order for filling the space with particles
+ }
+
+ regionType cylinder; // other options: box and sphere
+
+ cylinderInfo // cylinder information for positioning particles
+ {
+ p1 (0.0 0.0 0.003); // begin point of cylinder axis
+
+ p2 (0.0 0.0 0.22); // end point of cylinder axis
+
+ radius 0.117; // radius of cylinder
+ }
}
diff --git a/tutorials/sphereGranFlow/RotaryAirLockValve/settings/settingsDict b/tutorials/sphereGranFlow/RotaryAirLockValve/settings/settingsDict
index d4165910..d14f56b0 100644
--- a/tutorials/sphereGranFlow/RotaryAirLockValve/settings/settingsDict
+++ b/tutorials/sphereGranFlow/RotaryAirLockValve/settings/settingsDict
@@ -6,43 +6,34 @@ objectName geometryDict;
objectType dictionary;
fileFormat ASCII;
/*---------------------------------------------------------------------------*/
-
run rotatingValve;
-// time step for integration (s)
-dt 0.00001;
+dt 0.00001; // time step for integration (s)
-// start time for simulation
-startTime 0;
+startTime 0; // start time for simulation
-// end time for simulation
-endTime 7;
+endTime 7; // end time for simulation
-// time interval for saving the simulation
-saveInterval 0.05;
+saveInterval 0.05; // time interval for saving the simulation
-// maximum number of digits for time folder
-timePrecision 6;
+timePrecision 6; // maximum number of digits for time folder
-// gravity vector (m/s2)
-g (0 -9.8 0);
+g (0 -9.8 0); // gravity vector (m/s2)
/*
- Simulation domain every particles that goes outside this domain is deleted.
+ Simulation domain every particles that goes outside this domain is deleted
*/
-domain
-{
- min (0.397538 0.178212 0.00);
- max (0.725537 0.600214 0.06);
-}
+includeObjects (diameter); // save necessary (i.e., required) data on disk
-// integration method
-integrationMethod AdamsBashforth3;
+// exclude unnecessary data from saving on disk
+excludeObjects (rVelocity.dy1 pStructPosition.dy1 pStructVelocity.dy1);
-// report timers?
-timersReport Yes;
+integrationMethod AdamsBashforth2; // integration method
-// time interval for reporting timers
-timersReportInterval 0.01;
+writeFormat ascii; // data writting format (ascii or binary)
+
+timersReport Yes; // report timers: Yes or No
+
+timersReportInterval 0.01; // time interval for reporting timers