diff --git a/tutorials/sphereGranFlow/layeredSiloFilling/caseSetup/interaction b/tutorials/sphereGranFlow/layeredSiloFilling/caseSetup/interaction old mode 100755 new mode 100644 index de2272e8..2c2eac9e --- a/tutorials/sphereGranFlow/layeredSiloFilling/caseSetup/interaction +++ b/tutorials/sphereGranFlow/layeredSiloFilling/caseSetup/interaction @@ -6,15 +6,29 @@ objectName interaction; objectType dicrionary; fileFormat ASCII; /*---------------------------------------------------------------------------*/ +materials (lightMat heavyMat wallMat); // a list of materials names -materials (lightMat heavyMat wallMat); // a list of materials names -densities (1000 1500.0 2500); // density of materials [kg/m3] +densities (1000 1500.0 2500); // density of materials [kg/m3] contactListType sortedContactList; +contactSearch +{ + method NBS; // method for broad search particle-particle + + updateInterval 10; + + sizeRatio 1.1; + + cellExtent 0.55; + + adjustableBox Yes; +} + model { contactForceModel nonLinearLimited; + rollingFrictionModel normal; /* @@ -23,51 +37,33 @@ model wallMat-wallMat ); */ - Yeff (1.0e6 1.0e6 1.0e6 // Young modulus [Pa] + Yeff (1.0e6 1.0e6 1.0e6 // Young modulus [Pa] 1.0e6 1.0e6 1.0e6); - Geff (0.8e6 0.8e6 0.8e6 // Shear modulus [Pa] + Geff (0.8e6 0.8e6 0.8e6 // Shear modulus [Pa] 0.8e6 0.8e6 0.8e6); - nu (0.25 0.25 0.25 // Poisson's ratio [-] + nu (0.25 0.25 0.25 // Poisson's ratio [-] 0.25 0.25 0.25); - en (0.97 0.97 0.85 // coefficient of normal restitution + en (0.97 0.97 0.85 // coefficient of normal restitution 0.97 0.85 1.00); - et (1.0 1.0 1.0 // coefficient of tangential restitution + et (1.0 1.0 1.0 // coefficient of tangential restitution 1.0 1.0 1.0); - mu (0.65 0.65 0.35 // dynamic friction + mu (0.65 0.65 0.35 // dynamic friction 0.65 0.35 0.35); - mur (0.1 0.1 0.1 // rolling friction + mur (0.1 0.1 0.1 // rolling friction 0.1 0.1 0.1); } -contactSearch -{ - method NBS; // method for broad search particle-particle - wallMapping cellMapping; // method for broad search particle-wall - - NBSInfo - { - updateFrequency 10; // each 20 timesteps, update neighbor list - sizeRatio 1.1; // bounding box size to particle diameter (max) - } - - cellMappingInfo - { - updateFrequency 10; // each 20 timesteps, update neighbor list - cellExtent 0.6; // bounding box for particle-wall search (> 0.5) - } - -} \ No newline at end of file diff --git a/tutorials/sphereGranFlow/layeredSiloFilling/caseSetup/particleInsertion b/tutorials/sphereGranFlow/layeredSiloFilling/caseSetup/particleInsertion old mode 100755 new mode 100644 index ff00abb0..860280e8 --- a/tutorials/sphereGranFlow/layeredSiloFilling/caseSetup/particleInsertion +++ b/tutorials/sphereGranFlow/layeredSiloFilling/caseSetup/particleInsertion @@ -6,147 +6,47 @@ objectName particleInsertion; objectType dicrionary; fileFormat ASCII; /*---------------------------------------------------------------------------*/ +active yes; // is insertion active -> yes or no -active yes; // is insertion active? - -collisionCheck No; // not implemented for yes +checkForCollision No; // is checked -> yes or no /* -five layers of particles are packed one-by-one using 5 insertion steps. + one layers of particles are packed */ layer0 -{ - type cylinderRegion; // type of insertion region - rate 15000; // insertion rate (particles/s) - startTime 0; // (s) - endTime 0.5; // (s) - interval 0.025; //s +{ + timeControl simulationTime; - cylinderRegionInfo + regionType cylinder; // type of insertion region + + rate 15000; // insertion rate (particles/s) + + startTime 0; // (s) + + endTime 0.5; // (s) + + insertionInterval 0.025; // s + + cylinderInfo { - radius 0.09; // radius of cylinder (m) - p1 ( 0.0 0.0 0.1 ); // (m,m,m) - p2 ( 0.0 0.0 0.11); // (m,m,m) + radius 0.09; // radius of cylinder (m) + + p1 ( 0.0 0.0 0.1 ); // (m,m,m) + + p2 ( 0.0 0.0 0.11); // (m,m,m) } setFields { - velocity realx3 (0.0 0.0 -0.6); // initial velocity of inserted particles + velocity realx3 (0.0 0.0 -0.6); // initial velocity of inserted particles } mixture { - lightSphere 1; // mixture composition of inserted particles - + lightSphere 1; // mixture composition of inserted particles } } -layer1 -{ - type cylinderRegion; - rate 15000; // (particles/s) - startTime 0.7; // (s) - endTime 1.2; // (s) - interval 0.025; //s - cylinderRegionInfo - { - radius 0.09; - p1 ( 0.0 0.0 0.16 ); // (m,m,m) - p2 ( 0.0 0.0 0.17); // (m,m,m) - } - - setFields - { - velocity realx3 (0.0 0.0 -0.6); - } - - mixture - { - heavySphere 1; // only heavySphere - - } -} - -layer2 -{ - type cylinderRegion; - rate 15000; // (particles/s) - startTime 1.4; // (s) - endTime 1.9; // (s) - interval 0.025; //s - - cylinderRegionInfo - { - radius 0.09; - p1 ( 0.0 0.0 0.2 ); // (m,m,m) - p2 ( 0.0 0.0 0.21); // (m,m,m) - } - - setFields - { - velocity realx3 (0.0 0.0 -0.6); - } - - mixture - { - lightSphere 1; // only lightSphere - - } -} - -layer3 -{ - type cylinderRegion; - rate 15000; // (particles/s) - startTime 2.1; // (s) - endTime 2.6; // (s) - interval 0.025; //s - - cylinderRegionInfo - { - radius 0.09; - p1 ( 0.0 0.0 0.28 ); // (m,m,m) - p2 ( 0.0 0.0 0.29); // (m,m,m) - } - - setFields - { - velocity realx3 (0.0 0.0 -0.6); - } - - mixture - { - heavySphere 1; - - } -} - -layer4 -{ - type cylinderRegion; - rate 15000; // (particles/s) - startTime 2.8; // (s) - endTime 3.3; // (s) - interval 0.025; //s - - cylinderRegionInfo - { - radius 0.09; - p1 ( 0.0 0.0 0.37 ); // (m,m,m) - p2 ( 0.0 0.0 0.38); // (m,m,m) - } - - setFields - { - velocity realx3 (0.0 0.0 -0.6); - } - - mixture - { - lightSphere 1; - - } -} diff --git a/tutorials/sphereGranFlow/layeredSiloFilling/caseSetup/shapes b/tutorials/sphereGranFlow/layeredSiloFilling/caseSetup/shapes new file mode 100644 index 00000000..04cda25c --- /dev/null +++ b/tutorials/sphereGranFlow/layeredSiloFilling/caseSetup/shapes @@ -0,0 +1,13 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ +objectName sphereDict; +objectType sphereShape; +fileFormat ASCII; +/*---------------------------------------------------------------------------*/ +names (lightSphere heavySphere); // names of shapes + +diameters (0.007 0.007); // diameter of shapes + +materials (lightMat heavyMat); // material names for shapes diff --git a/tutorials/sphereGranFlow/layeredSiloFilling/cleanThisCase b/tutorials/sphereGranFlow/layeredSiloFilling/cleanThisCase old mode 100755 new mode 100644 diff --git a/tutorials/sphereGranFlow/layeredSiloFilling/runThisCase b/tutorials/sphereGranFlow/layeredSiloFilling/runThisCase old mode 100755 new mode 100644 diff --git a/tutorials/sphereGranFlow/layeredSiloFilling/settings/domainDict b/tutorials/sphereGranFlow/layeredSiloFilling/settings/domainDict new file mode 100644 index 00000000..3ff734a8 --- /dev/null +++ b/tutorials/sphereGranFlow/layeredSiloFilling/settings/domainDict @@ -0,0 +1,58 @@ +/* -------------------------------*- 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.11 -0.11 -0.11); + + max ( 0.11 0.11 0.41); +} + +boundaries +{ + // 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 + neighborListUpdateInterval 30; + + // Determines how often do you want to update the new changes in the boundary + updateInterval 10; + + // The distance from the boundary plane within which particles are marked to be in the boundary list + neighborLength 0.004; + + 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 + } +} \ No newline at end of file diff --git a/tutorials/sphereGranFlow/layeredSiloFilling/settings/geometryDict b/tutorials/sphereGranFlow/layeredSiloFilling/settings/geometryDict index fa71f7ba..dcdd281e 100644 --- a/tutorials/sphereGranFlow/layeredSiloFilling/settings/geometryDict +++ b/tutorials/sphereGranFlow/layeredSiloFilling/settings/geometryDict @@ -6,47 +6,67 @@ objectName geometryDict; objectType dictionary; fileFormat ASCII; /*---------------------------------------------------------------------------*/ +motionModel stationary; // motion model can be rotatingAxis or stationary or vibrating -// motion model: all surfaces are fixed -motionModel fixedWall; +stationaryInfo +{ + +} surfaces { - cylinderShell { - type cylinderWall; // type of the wall - p1 (0.0 0.0 0.0); // begin point of cylinder axis - p2 (0.0 0.0 0.4); // end point of cylinder axis - radius1 0.1; // radius at p1 - radius2 0.1; // radius at p2 - resolution 36; // number of divisions - material wallMat; // material name of this wall + type cylinderWall; // type of the wall + + p1 (0.0 0.0 0.0); // begin point of cylinder axis + + p2 (0.0 0.0 0.4); // end point of cylinder axis + + radius1 0.1; // radius at p1 + + radius2 0.1; // radius at p2 + + resolution 36; // number of divisions + + material wallMat; // material name of this wall } coneShell { - type cylinderWall; // type of the wall - p1 (0.0 0.0 -0.1); // begin point of cylinder axis - p2 (0.0 0.0 0.0); // end point of cylinder axis - radius1 0.02; // radius at p1 - radius2 0.1; // radius at p2 - resolution 36; // number of divisions - material wallMat; // material name of this wall + type cylinderWall; // type of the wall + + p1 (0.0 0.0 -0.1); // begin point of cylinder axis + + p2 (0.0 0.0 0.0); // end point of cylinder axis + + radius1 0.02; // radius at p1 + + radius2 0.1; // radius at p2 + + resolution 36; // number of divisions + + material wallMat; // material name of this wall } /* - This is a plane wall at the exit of silo + This is a plane wall at the exit of silo */ + exitGate { - type planeWall; - p1 (-0.02 -0.02 -0.1); - p2 ( 0.02 -0.02 -0.1); - p3 ( 0.02 0.02 -0.1); - p4 (-0.02 0.02 -0.1); - material wallMat; + type planeWall; // type of the wall + + p1 (-0.02 -0.02 -0.1); // first point of the wall + + p2 ( 0.02 -0.02 -0.1); // second point of the wall + + p3 ( 0.02 0.02 -0.1); // third point of the wall + + p4 (-0.02 0.02 -0.1); // fourth point of the wall + + material wallMat; // material name of the wall } - } + diff --git a/tutorials/sphereGranFlow/layeredSiloFilling/settings/particlesDict b/tutorials/sphereGranFlow/layeredSiloFilling/settings/particlesDict index 83a1e367..ec788fbe 100644 --- a/tutorials/sphereGranFlow/layeredSiloFilling/settings/particlesDict +++ b/tutorials/sphereGranFlow/layeredSiloFilling/settings/particlesDict @@ -6,27 +6,39 @@ 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 lightSphere; // name of the particle shape + 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 lightSphere; // name of the particle shape } selectors {} } -// positions particles -positionParticles +positionParticles // positions particles { - method empty; // creates the required fields with zero particles (empty). + method empty; // other options: ordered and random - maxNumberOfParticles 50000; // maximum number of particles in the simulation - mortonSorting Yes; // perform initial sorting based on morton code? + regionType box; // other options: cylinder and sphere + boxInfo // box region for positioning particles + { + min (-0.08 -0.08 0.015); // lower corner point of the box + + max ( 0.08 0.08 0.098); // upper corner point of the box + } } diff --git a/tutorials/sphereGranFlow/layeredSiloFilling/settings/settingsDict b/tutorials/sphereGranFlow/layeredSiloFilling/settings/settingsDict index 6f19dd6e..d1d09442 100644 --- a/tutorials/sphereGranFlow/layeredSiloFilling/settings/settingsDict +++ b/tutorials/sphereGranFlow/layeredSiloFilling/settings/settingsDict @@ -6,35 +6,29 @@ objectName settingsDict; objectType dictionary; fileFormat ASCII; /*---------------------------------------------------------------------------*/ - run layerdSiloFilling; -dt 0.00001; // time step for integration (s) +dt 0.00001; // time step for integration (s) -startTime 0; // start time for simulation +startTime 0.0; // start time for simulation -endTime 5; // end time for simulation +endTime 5.0; // end time for simulation -saveInterval 0.05; // time interval for saving the simulation +saveInterval 0.05; // time interval for saving the simulation -timePrecision 6; // maximum number of digits for time folder +timePrecision 6; // 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) -/* - Simulation domain - every particles that goes outside this domain is deleted. -*/ -domain -{ - min (-0.1 -0.1 -0.1); - max ( 0.1 0.1 0.40); -} +// save necessary (i.e., required) data on disk +includeObjects (diameter); +// exclude unnecessary data from saving on disk +excludeObjects (rVelocity.dy1 pStructPosition.dy1 pStructVelocity.dy1); -integrationMethod AdamsBashforth3; // integration method +integrationMethod AdamsBashforth2; // integration method -writeFormat ascii; +writeFormat ascii; // data writting format (ascii or binary) -timersReport Yes; // report timers? +timersReport Yes; // report timers -timersReportInterval 0.01; // time interval for reporting timers +timersReportInterval 0.01; // time interval for reporting timers