diff --git a/tutorials/sphereGranFlow/toteblender/caseSetup/interaction b/tutorials/sphereGranFlow/toteblender/caseSetup/interaction old mode 100644 new mode 100755 index 36ff43c5..be2d14da --- a/tutorials/sphereGranFlow/toteblender/caseSetup/interaction +++ b/tutorials/sphereGranFlow/toteblender/caseSetup/interaction @@ -6,72 +6,48 @@ objectName interaction; objectType dicrionary; fileFormat ASCII; /*---------------------------------------------------------------------------*/ +materials (solidProperty); // a list of materials names -// a list of materials names -materials (solidProperty); - -// density of materials [kg/m3] -densities (1000.0); +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 Yes; +} + model { contactForceModel nonLinearNonLimited; - - rollingFrictionModel normal; + + rollingFrictionModel normal; - /* - Property (solidProperty-solidProperty); - */ + // Property (solidProperty-solidProperty) - // Young modulus [Pa] - Yeff (1.0e6); + Yeff (1.0e6); // Young modulus [Pa] - // Shear modulus [Pa] - Geff (0.8e6); - - // Poisson's ratio [-] - nu (0.25); - - // coefficient of normal restitution - en (0.7); + Geff (0.8e6); // Shear modulus [Pa] - // coefficient of tangential restitution - et (1.0); + nu (0.25); // Poisson's ratio [-] - // dynamic friction - mu (0.3); + en (0.7); // coefficient of normal restitution - // rolling friction - mur (0.1); + et (1.0); // coefficient of tangential restitution + + mu (0.3); // dynamic friction + + mur (0.1); // rolling friction } -contactSearch -{ - // method for broad search particle-particle - method NBS; - // method for broad search particle-wall - wallMapping cellMapping; - NBSInfo - { - // each 20 timesteps, update neighbor list - updateFrequency 20; - - // bounding box size to particle diameter (max) - sizeRatio 1.1; - } - - cellMappingInfo - { - // each 20 timesteps, update neighbor list - updateFrequency 20; - - // bounding box for particle-wall search (> 0.5) - cellExtent 0.7; - } - -} \ No newline at end of file diff --git a/tutorials/sphereGranFlow/toteblender/caseSetup/particleInsertion b/tutorials/sphereGranFlow/toteblender/caseSetup/particleInsertion old mode 100644 new mode 100755 index d8e3f87f..381954b3 --- a/tutorials/sphereGranFlow/toteblender/caseSetup/particleInsertion +++ b/tutorials/sphereGranFlow/toteblender/caseSetup/particleInsertion @@ -6,11 +6,17 @@ objectName particleInsertion; objectType dicrionary; fileFormat ASCII; /*---------------------------------------------------------------------------*/ +active No; // is insertion active -> yes or no + +collisionCheck No; // is checked -> yes or no + + + + + + + + -// is insertion active? -active no; - -// not implemented for yes -collisionCheck No; diff --git a/tutorials/sphereGranFlow/toteblender/caseSetup/sphereShape b/tutorials/sphereGranFlow/toteblender/caseSetup/shapes old mode 100644 new mode 100755 similarity index 73% rename from tutorials/sphereGranFlow/toteblender/caseSetup/sphereShape rename to tutorials/sphereGranFlow/toteblender/caseSetup/shapes index d895b1ee..46abb66f --- a/tutorials/sphereGranFlow/toteblender/caseSetup/sphereShape +++ b/tutorials/sphereGranFlow/toteblender/caseSetup/shapes @@ -6,12 +6,15 @@ objectName sphereDict; objectType sphereShape; fileFormat ASCII; /*---------------------------------------------------------------------------*/ +names (sphere1); // name of shapes + +diameters (0.005); // diameter of shapes (m) + +materials (solidProperty); // material name for shapes + + + + -// name of shapes -names (sphere1); -// diameter of shapes (m) -diameters (0.005); -// material name for shapes -materials (solidProperty); \ No newline at end of file diff --git a/tutorials/sphereGranFlow/toteblender/settings/domainDict b/tutorials/sphereGranFlow/toteblender/settings/domainDict new file mode 100755 index 00000000..c29d8309 --- /dev/null +++ b/tutorials/sphereGranFlow/toteblender/settings/domainDict @@ -0,0 +1,65 @@ +/* -------------------------------*- 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); + + max (0.5 0.5 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 0.0001; + + // 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 + } +} + + + + + + + diff --git a/tutorials/sphereGranFlow/toteblender/settings/geometryDict b/tutorials/sphereGranFlow/toteblender/settings/geometryDict old mode 100644 new mode 100755 index 9fbd80b3..196d9cf2 --- a/tutorials/sphereGranFlow/toteblender/settings/geometryDict +++ b/tutorials/sphereGranFlow/toteblender/settings/geometryDict @@ -6,217 +6,162 @@ objectName geometryDict; objectType dictionary; fileFormat ASCII; /*---------------------------------------------------------------------------*/ - -// motion model: rotating object around an axis -motionModel rotatingAxisMotion; - -// information for rotatingAxisMotion motion model -rotatingAxisMotionInfo +motionModel rotatingAxis; // motion model can be rotatingAxis or stationary or vibrating + +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 - - // Start time of Geometry Rotating (s) - startTime 0.5; - - // End time of Geometry Rotating (s) - endTime 9.5; + 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 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; + type cylinderWall; // other options: cuboidWall and planeWall + + 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 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; + type cylinderWall; // other options: cuboidWall and planeWall + + 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 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; + type cylinderWall; // other options: cuboidWall and planeWall + + 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 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; + type cylinderWall; // other options: cuboidWall and planeWall + + 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 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; + type cylinderWall; // other options: cuboidWall and planeWall + + 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 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; + type cylinderWall; // other options: cuboidWall and planeWall + + 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 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; - } - + type cylinderWall; // other options: cuboidWall and planeWall + + 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 old mode 100644 new mode 100755 index c0e1b189..1b899655 --- a/tutorials/sphereGranFlow/toteblender/settings/particlesDict +++ b/tutorials/sphereGranFlow/toteblender/settings/particlesDict @@ -6,7 +6,6 @@ objectName particlesDict; objectType dictionary; fileFormat ASCII; /*---------------------------------------------------------------------------*/ - setFields { /* @@ -14,58 +13,51 @@ setFields These fields should always be defined for simulations with spherical particles. */ + defaultValue - { - // linear velocity (m/s) - velocity realx3 (0 0 0); - - // linear acceleration (m/s2) - acceleration realx3 (0 0 0); - - // rotational velocity (rad/s) - rVelocity realx3 (0 0 0); - - // name of the particle shape - shapeName word sphere1; + { + 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 {} } - -// positions particles -positionParticles + +positionParticles // positions particles { - // ordered positioning - method positionOrdered; + method ordered; // other options: random and empty - // maximum number of particles in the simulation - maxNumberOfParticles 25001; - - // perform initial sorting based on morton code? - mortonSorting Yes; - - // cylinder for positioning particles - cylinder + orderedInfo { - // Coordinates of top cylinderRegion (m,m,m) - p1 (0.0 0.0 0.09); - p2 (0.0 0.0 0.21); - - // radius of cylinder - radius 0.09; + diameter 0.005; // diameter of particles + + numPoints 24000; // number of particles in the simulation + + axisOrder (x y z); // axis order for filling the space with particles } - positionOrderedInfo - { - // minimum space between centers of particles - diameter 0.005; - - // number of particles in the simulation - numPoints 24000; + maxNumberOfParticles 25001; // maximum number of particles in the simulation + + regionType cylinder; // other options: box and sphere - // axis order for filling the space with particles - axisOrder (x y z); - } + cylinderInfo // cylinder for positioning particles + { + p1 (0.0 0.0 0.09); // Coordinates of top cylinderRegion (m,m,m) + + p2 (0.0 0.0 0.21); // Coordinates of bottom cylinderRegion (m,m,m) + + radius 0.09; // radius of cylinder + } } + + + + + diff --git a/tutorials/sphereGranFlow/toteblender/settings/settingsDict b/tutorials/sphereGranFlow/toteblender/settings/settingsDict old mode 100644 new mode 100755 index 224eb9a3..d269da37 --- a/tutorials/sphereGranFlow/toteblender/settings/settingsDict +++ b/tutorials/sphereGranFlow/toteblender/settings/settingsDict @@ -6,42 +6,34 @@ objectName settingsDict; objectType dictionary;; fileFormat ASCII; /*---------------------------------------------------------------------------*/ +run toteBlender; -run toteBlender; +dt 0.00004; // time step for integration(s) -// time step for integration (s) -dt 0.00004; +startTime 0.0; // start time for simulation -// start time for simulation -startTime 0; +endTime 10.0; // end time for simulation -// end time for simulation -endTime 10; +saveInterval 0.05; // time interval for saving the simulation -// time interval for saving the simulation -saveInterval 0.05; +timePrecision 3; // maximum number of digits for time folder + +g (0 0 -9.8); // gravity vector (m/s2) -// maximum number of digits for time folder -timePrecision 3; +// save necessary (i.e., required) data on disk +includeObjects (diameter); +// exclude unnecessary data from saving on disk +excludeObjects (rVelocity.dy1 pStructPosition.dy1 pStructVelocity.dy1); -// gravity vector (m/s2) -g (0 0 -9.8); +integrationMethod AdamsBashforth2; // integration method + +writeFormat ascii; // data writting format (ascii or binary) + +timersReport Yes; // report timers + +timersReportInterval 0.02; // time interval for reporting timers -/* Simulation domain */ -/* every particles that goes outside this domain is deleted. */ -domain -{ - min (-0.3 -0.3 -0.3); - max (0.5 0.5 0.5); -} -// integration method -integrationMethod AdamsMoulton4; -writeFormat ascii; -// report timers? -timersReport Yes; -// time interval for reporting timers -timersReportInterval 0.02; \ No newline at end of file