diff --git a/tutorials/sphereGranFlow/screwConveyor/caseSetup/interaction b/tutorials/sphereGranFlow/screwConveyor/caseSetup/interaction index 3aed0a68..dc886cf2 100755 --- a/tutorials/sphereGranFlow/screwConveyor/caseSetup/interaction +++ b/tutorials/sphereGranFlow/screwConveyor/caseSetup/interaction @@ -6,49 +6,46 @@ objectName interaction; objectType dicrionary; fileFormat ASCII; /*---------------------------------------------------------------------------*/ +materials (prop1); // a list of materials names -materials (prop1); // a list of materials names densities (1000.0); // 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 No; +} + model { contactForceModel nonLinearNonLimited; - rollingFrictionModel normal; - Yeff (1.0e6); // Young modulus [Pa] + rollingFrictionModel normal; - Geff (0.8e6); // Shear modulus [Pa] + Yeff (1.0e6); // Young modulus [Pa] - nu (0.25); // Poisson's ratio [-] + Geff (0.8e6); // Shear modulus [Pa] - en (0.7); // coefficient of normal restitution + nu (0.25); // Poisson's ratio [-] - et (1.0); // coefficient of tangential restitution + en (0.7); // coefficient of normal restitution - mu (0.3); // dynamic friction + et (1.0); // coefficient of tangential restitution - mur (0.1); // rolling friction - + mu (0.3); // dynamic friction + + mur (0.1); // rolling friction } -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) - } - -} diff --git a/tutorials/sphereGranFlow/screwConveyor/caseSetup/particleInsertion b/tutorials/sphereGranFlow/screwConveyor/caseSetup/particleInsertion index bab05611..0ce73440 100755 --- a/tutorials/sphereGranFlow/screwConveyor/caseSetup/particleInsertion +++ b/tutorials/sphereGranFlow/screwConveyor/caseSetup/particleInsertion @@ -6,11 +6,9 @@ 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. @@ -18,29 +16,42 @@ five layers of particles are packed one-by-one using 5 insertion steps. layer0 { - type cylinderRegion; // type of insertion region - rate 5000; // insertion rate (particles/s) - startTime 0; // (s) - endTime 100; // (s) - interval 0.03; //s + regionType cylinder; // type of insertion region - cylinderRegionInfo + cylinderInfo { - radius 0.09; // radius of cylinder (m) - p1 (0.22 0.73 0.25); // (m,m,m) - p2 (0.22 0.742 0.25); // (m,m,m) + // coordinates of center of both ends of the insertion cylinder on + // the right side of the screwConveyor(m,m,m) + + p1 (0.22 0.73 0.25); // (m,m,m) + + p2 (0.22 0.742 0.25); // (m,m,m) + + radius 0.09; // radius of cylinder (m) } + + timeControl simulationTime; + + insertionInterval 0.03; // seconds + + rate 5000; // insertion rate (particles/s) + + startTime 0.0; // seconds + + endTime 100.0; // seconds setFields { - velocity realx3 (0.0 -0.6 -0); // initial velocity of inserted particles + velocity realx3 (0.0 -0.6 -0); // initial velocity of inserted particles } mixture { - sphere1 1; // mixture composition of inserted particles - + sphere1 1; // mixture composition of inserted particles } } + + + diff --git a/tutorials/sphereGranFlow/screwConveyor/caseSetup/sphereShape b/tutorials/sphereGranFlow/screwConveyor/caseSetup/shapes similarity index 74% rename from tutorials/sphereGranFlow/screwConveyor/caseSetup/sphereShape rename to tutorials/sphereGranFlow/screwConveyor/caseSetup/shapes index 03599409..35cbe47b 100755 --- a/tutorials/sphereGranFlow/screwConveyor/caseSetup/sphereShape +++ b/tutorials/sphereGranFlow/screwConveyor/caseSetup/shapes @@ -6,7 +6,10 @@ objectName sphereDict; objectType sphereShape; fileFormat ASCII; /*---------------------------------------------------------------------------*/ +names (sphere1); // names of shapes + +diameters (0.01); // diameter of shapes + +materials (prop1); // material names for shapes + -names (sphere1); // names of shapes -diameters (0.01); // diameter of shapes -materials (prop1); // material names for shapes diff --git a/tutorials/sphereGranFlow/screwConveyor/settings/domainDict b/tutorials/sphereGranFlow/screwConveyor/settings/domainDict new file mode 100755 index 00000000..fe351678 --- /dev/null +++ b/tutorials/sphereGranFlow/screwConveyor/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.0 -0.06 0.001); + + max (1.2 1 0.5); +} + +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 10; + + // Determines how often do you want to update the new changes in the boundary + updateInterval 1; + + // The distance from the boundary plane within which particles are marked to be in the boundary list + neighborLength 0.01; + + 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/screwConveyor/settings/geometryDict b/tutorials/sphereGranFlow/screwConveyor/settings/geometryDict old mode 100644 new mode 100755 index 1d339289..eaa329a8 --- a/tutorials/sphereGranFlow/screwConveyor/settings/geometryDict +++ b/tutorials/sphereGranFlow/screwConveyor/settings/geometryDict @@ -6,40 +6,50 @@ objectName geometryDict; objectType dictionary; fileFormat ASCII; /*---------------------------------------------------------------------------*/ +motionModel rotatingAxis; // motion model can be rotatingAxis or stationary or vibrating -// motion model: rotating object around an axis -motionModel rotatingAxisMotion; +rotatingAxisInfo // information for rotatingAxisMotion motion model +{ + rotAxis + { + p1 (1.09635 0.2010556 0.22313511); // first point for the axis of rotation + + p2 (0.0957492 0.201556 0.22313511); // second point for the axis of rotation + + omega 3; // rotation speed (rad/s) + + startTime 5; // start time of rotation + + endTime 30; // end time of rotation + } +} surfaces { helix { - type stlWall; // type of the wall - file helix.stl; // file name in stl folder - material prop1; // material name of this wall - motion rotAxis; // motion component name + type stlWall; // type of the wall + + file helix.stl; // file name in stl folder + + material prop1; // material name of this wall + + motion rotAxis; // motion component name } shell { - type stlWall; // type of the wall - file shell.stl; // file name in stl folder - material prop1; // material name of this wall - motion none; // motion component name - } + type stlWall; // type of the wall -} + file shell.stl; // file name in stl folder + material prop1; // material name of this wall -rotatingAxisMotionInfo -{ - rotAxis - { - p1 (1.09635 0.2010556 0.22313511); // first point for the axis of rotation - p2 (0.0957492 0.201556 0.22313511); // second point for the axis of rotation - omega 3; // rotation speed (rad/s) - startTime 5; - endTime 30; + motion none; // motion component name } } + + + + diff --git a/tutorials/sphereGranFlow/screwConveyor/settings/particlesDict b/tutorials/sphereGranFlow/screwConveyor/settings/particlesDict old mode 100644 new mode 100755 index f5c954f1..e3b224e1 --- a/tutorials/sphereGranFlow/screwConveyor/settings/particlesDict +++ b/tutorials/sphereGranFlow/screwConveyor/settings/particlesDict @@ -6,35 +6,38 @@ objectName particlesDict; objectType dictionary; fileFormat ASCII; /*---------------------------------------------------------------------------*/ - - -// positions particles -positionParticles -{ - method empty; // creates the required fields with zero particles (empty). - - maxNumberOfParticles 50000; // maximum number of particles in the simulation - mortonSorting Yes; // perform initial sorting based on morton - -} - setFields { 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 sphere1; + shapeName word sphere1; // name of the particle shape } selectors {} } + +positionParticles // positions particles +{ + method empty; // other options: ordered and random + + maxNumberOfParticles 50000; // maximum number of particles in the simulation + + regionType box; // other options: cylinder and sphere + + boxInfo // box for positioning particles + { + min (-0.1 -0.08 0.015); // lower corner point of the box + + max (0.1 0.0 0.098); // upper corner point of the box + } +} + + + diff --git a/tutorials/sphereGranFlow/screwConveyor/settings/settingsDict b/tutorials/sphereGranFlow/screwConveyor/settings/settingsDict old mode 100644 new mode 100755 index 410fcd2b..56bc4451 --- a/tutorials/sphereGranFlow/screwConveyor/settings/settingsDict +++ b/tutorials/sphereGranFlow/screwConveyor/settings/settingsDict @@ -6,33 +6,31 @@ objectName settingsDict; objectType dictionary; fileFormat ASCII; /*---------------------------------------------------------------------------*/ +run screwConveyor; -run layerdSiloFilling; +dt 0.0001; // time step for integration (s) -dt 0.0001; // time step for integration (s) +startTime 0.0; // start time for simulation -startTime 0; // start time for simulation +endTime 20.0; // end time for simulation -endTime 20; // 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 -9.8 0); // gravity vector (m/s2) -g (0 -9.8 0); // gravity vector (m/s2) +// save necessary (i.e., required) data on disk +includeObjects (diameter); +// exclude unnecessary data from saving on disk +excludeObjects (rVelocity.dy1 pStructPosition.dy1 pStructVelocity.dy1); -/* - Simulation domain - every particles that goes outside this domain is deleted. -*/ -domain -{ - min (0.0 -0.06 0.001); - max (1.2 1 0.5); -} +integrationMethod AdamsBashforth2; // integration method -integrationMethod AdamsBashforth3; // integration method +writeFormat ascii; // data writting format (ascii or binary) + +timersReport Yes; // report timers + +timersReportInterval 0.01; // time interval for reporting timers -timersReport Yes; // report timers? -timersReportInterval 0.01; // time interval for reporting timers