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