diff --git a/tutorials/sphereGranFlow/toteblender/caseSetup/interaction b/tutorials/sphereGranFlow/toteblender/caseSetup/interaction index 36ff43c5..203a501b 100644 --- a/tutorials/sphereGranFlow/toteblender/caseSetup/interaction +++ b/tutorials/sphereGranFlow/toteblender/caseSetup/interaction @@ -6,72 +6,47 @@ 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; -model -{ - contactForceModel nonLinearNonLimited; - - rollingFrictionModel normal; - - /* - Property (solidProperty-solidProperty); - */ - - // Young modulus [Pa] - Yeff (1.0e6); - - // Shear modulus [Pa] - Geff (0.8e6); - - // Poisson's ratio [-] - nu (0.25); - - // coefficient of normal restitution - en (0.7); - - // coefficient of tangential restitution - et (1.0); - - // dynamic friction - mu (0.3); - - // rolling friction - mur (0.1); -} - contactSearch { + method NBS; // method for broad search + + updateInterval 10; - // method for broad search particle-particle - method NBS; + sizeRatio 1.1; - // method for broad search particle-wall - wallMapping cellMapping; + cellExtent 0.55; - NBSInfo - { - // each 20 timesteps, update neighbor list - updateFrequency 20; + adjustableBox Yes; +} + +model +{ + contactForceModel nonLinearNonLimited; + + rollingFrictionModel normal; - // bounding box size to particle diameter (max) - sizeRatio 1.1; - } + /* + Property (solidProperty-solidProperty) + */ + + Yeff (1.0e6); // Young modulus [Pa] - cellMappingInfo - { - // each 20 timesteps, update neighbor list - updateFrequency 20; - - // bounding box for particle-wall search (> 0.5) - cellExtent 0.7; - } + Geff (0.8e6); // Shear modulus [Pa] + + nu (0.25); // Poisson's ratio [-] + + en (0.7); // coefficient of normal restitution + + et (1.0); // coefficient of tangential restitution + + mu (0.3); // dynamic friction + + mur (0.1); // rolling friction +} -} \ No newline at end of file diff --git a/tutorials/sphereGranFlow/toteblender/caseSetup/particleInsertion b/tutorials/sphereGranFlow/toteblender/caseSetup/particleInsertion index d8e3f87f..cabe23da 100644 --- a/tutorials/sphereGranFlow/toteblender/caseSetup/particleInsertion +++ b/tutorials/sphereGranFlow/toteblender/caseSetup/particleInsertion @@ -6,11 +6,8 @@ objectName particleInsertion; objectType dicrionary; fileFormat ASCII; /*---------------------------------------------------------------------------*/ +active No; // is insertion active -> Yes or No -// is insertion active? -active no; - -// not implemented for yes -collisionCheck No; +collisionCheck No; // is checked -> Yes or No diff --git a/tutorials/sphereGranFlow/toteblender/caseSetup/shapes b/tutorials/sphereGranFlow/toteblender/caseSetup/shapes new file mode 100644 index 00000000..5e154455 --- /dev/null +++ b/tutorials/sphereGranFlow/toteblender/caseSetup/shapes @@ -0,0 +1,13 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ +objectName sphereDict; +objectType sphereShape; +fileFormat ASCII; +/*---------------------------------------------------------------------------*/ +names (sphere1); // name of shapes + +diameters (0.005); // diameter of shapes (m) + +materials (solidProperty); // material name for shapes \ 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..ac9b1774 --- /dev/null +++ b/tutorials/sphereGranFlow/toteblender/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.3 -0.3 -0.3); // lower corner point of the box + + max (0.5 0.5 0.5); // upper corner point of the box +} + +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: periodic, 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 index 9fbd80b3..37a7b1db 100644 --- a/tutorials/sphereGranFlow/toteblender/settings/geometryDict +++ b/tutorials/sphereGranFlow/toteblender/settings/geometryDict @@ -6,217 +6,154 @@ 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 { 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 + 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 + omega 1.5708; // rotation speed ==> 15 rad/s + + startTime 0.5; // Start time of Geometry Rotating (s) - // Start time of Geometry Rotating (s) - startTime 0.5; - - // End time of Geometry Rotating (s) - endTime 9.5; + endTime 9.5; // End time of Geometry Rotating (s) } } surfaces { - topGate { - // type of wall - type cylinderWall; + type cylinderWall; // type of wall - // begin point of cylinder axis - p1 (0.0 0.0 0.3); + p1 (0.0 0.0 0.3); // begin point of cylinder axis - // end point of cylinder axis - p2 (0.0 0.0 0.301); + p2 (0.0 0.0 0.301); // end point of cylinder axis - // radius at p1 - radius1 0.03; + radius1 0.03; // radius at p1 - // radius at p2 - radius2 0.0001; + radius2 0.0001; // radius at p2 - // material of wall - material solidProperty; + material solidProperty; // material of wall - // motion component name - motion axisOfRotation; + motion axisOfRotation; // motion component name } topCylinder { - // type of the wall - type cylinderWall; + type cylinderWall; // type of the wall + + p1 (0.0 0.0 0.28); // begin point of cylinder axis - // begin point of cylinder axis - p1 (0.0 0.0 0.28); + 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 - // end point of cylinder axis - p2 (0.0 0.0 0.3); + material solidProperty; // material name of this wall - // 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; + motion axisOfRotation; // motion component name } coneShelltop { - // type of the wall - type cylinderWall; + type cylinderWall; // type of the wall - // begin point of cylinder axis - p1 (0.0 0.0 0.2); + p1 (0.0 0.0 0.2); // begin point of cylinder axis - // end point of cylinder axis - p2 (0.0 0.0 0.28); + p2 (0.0 0.0 0.28); // end point of cylinder axis - // 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; + 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; + type cylinderWall; // type of the wall + + p1 (0.0 0.0 0.1); // begin point of cylinder axis - // 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; + 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 cylinderWall; // type of the wall - // type of the wall - type cylinderWall; + p1 (0.0 0.0 0.02); // begin point of cylinder axis + + p2 (0.0 0.0 0.1); // end point of cylinder axis - // begin point of cylinder axis - p1 (0.0 0.0 0.02); + radius1 0.03; // radius at p1 - // 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; + 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; + type cylinderWall; // type of the wall - // begin point of cylinder axis - p1 (0.0 0.0 0.0); + p1 (0.0 0.0 0.0); // begin point of cylinder axis + + p2 (0.0 0.0 0.02); // end point of cylinder axis - // 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; + 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 cylinderWall; // type of the wall - // type of the wall - type cylinderWall; + p1 (0.0 0.0 -0.001); // begin point of cylinder axis + + p2 (0.0 0.0 0.0); // end point of cylinder axis - // 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; - } + 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 index c0e1b189..01fecb85 100644 --- a/tutorials/sphereGranFlow/toteblender/settings/particlesDict +++ b/tutorials/sphereGranFlow/toteblender/settings/particlesDict @@ -6,66 +6,74 @@ 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. + + 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 - {} + { + shapeAssigne + { + selector stridedRange; // other options: box, cylinder, sphere, randomPoints + + stridedRangeInfo + { + begin 0; // begin index of points + + end 24000; // end index of points + + stride 3; // stride for selector + } + + fieldValue // fields that the selector is applied to + { + shapeName word sphere1; // sets shapeName of the selected points to largeSphere + } + } + } } -// positions particles -positionParticles +positionParticles // positions particles { - // ordered positioning - method positionOrdered; + + method ordered; // ordered positioning - // maximum number of particles in the simulation - maxNumberOfParticles 25001; - - // perform initial sorting based on morton code? - mortonSorting Yes; - - // cylinder for positioning particles - cylinder - { - // 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; - } + mortonSorting Yes; // perform initial sorting based on morton code? - positionOrderedInfo + orderedInfo { - // minimum space between centers of particles - diameter 0.005; - - // number of particles in the simulation - numPoints 24000; + diameter 0.005; // minimum space between centers of particles + + numPoints 24000; // number of particles in the simulation + + axisOrder (x y z); // axis order for filling the space with particles + } + + regionType cylinder; // other options: cylinder 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 bottom cylinderRegion (m,m,m) + + p2 (0.0 0.0 0.21); // Coordinates of top cylinderRegion (m,m,m) + + radius 0.09; // radius of cylinder } } diff --git a/tutorials/sphereGranFlow/toteblender/settings/settingsDict b/tutorials/sphereGranFlow/toteblender/settings/settingsDict index 224eb9a3..0977f56b 100644 --- a/tutorials/sphereGranFlow/toteblender/settings/settingsDict +++ b/tutorials/sphereGranFlow/toteblender/settings/settingsDict @@ -3,45 +3,32 @@ | copyright: www.cemf.ir | \* ------------------------------------------------------------------------- */ objectName settingsDict; -objectType dictionary;; -fileFormat ASCII; +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; // start time for simulation -// start time for simulation -startTime 0; +endTime 10; // 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 -// maximum number of digits for time folder -timePrecision 3; +g (0 0 -9.8); // gravity vector (m/s2) -// gravity vector (m/s2) -g (0 0 -9.8); +includeObjects (diameter); // save necessary (i.e., required) data on disk -/* 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); -} +// exclude unnecessary data from saving on disk +excludeObjects (rVelocity.dy1 pStructPosition.dy1 pStructVelocity.dy1); -// integration method -integrationMethod AdamsMoulton4; +integrationMethod AdamsBashforth2; // integration method -writeFormat ascii; +writeFormat ascii; // data writting format (ascii or binary) -// report timers? -timersReport Yes; +timersReport Yes; // report timers (Yes or No) -// time interval for reporting timers -timersReportInterval 0.02; \ No newline at end of file +timersReportInterval 0.02; // time interval for reporting timers