From 888343c6557f38bc5d341e96b80736b63e40783d Mon Sep 17 00:00:00 2001 From: Ramin Khodabandeh Date: Sun, 19 May 2024 20:50:00 +0430 Subject: [PATCH 1/4] Tutorial binarySystemOfParticles are modified based on version 1.x --- .../caseSetup/interaction | 54 +++++----- .../caseSetup/particleInsertion | 7 +- .../caseSetup/{sphereShape => shapes} | 8 +- .../binarySystemOfParticles/cleanThisCase | 0 .../binarySystemOfParticles/runThisCase | 0 .../settings/domainDict | 65 ++++++++++++ .../settings/geometryDict | 100 +++++++++++------- .../settings/particlesDict | 89 +++++++++------- .../settings/settingsDict | 35 +++--- 9 files changed, 224 insertions(+), 134 deletions(-) mode change 100755 => 100644 tutorials/sphereGranFlow/binarySystemOfParticles/caseSetup/interaction mode change 100755 => 100644 tutorials/sphereGranFlow/binarySystemOfParticles/caseSetup/particleInsertion rename tutorials/sphereGranFlow/binarySystemOfParticles/caseSetup/{sphereShape => shapes} (68%) mode change 100755 => 100644 mode change 100755 => 100644 tutorials/sphereGranFlow/binarySystemOfParticles/cleanThisCase mode change 100755 => 100644 tutorials/sphereGranFlow/binarySystemOfParticles/runThisCase create mode 100644 tutorials/sphereGranFlow/binarySystemOfParticles/settings/domainDict diff --git a/tutorials/sphereGranFlow/binarySystemOfParticles/caseSetup/interaction b/tutorials/sphereGranFlow/binarySystemOfParticles/caseSetup/interaction old mode 100755 new mode 100644 index 79aef8f9..9910a2fb --- a/tutorials/sphereGranFlow/binarySystemOfParticles/caseSetup/interaction +++ b/tutorials/sphereGranFlow/binarySystemOfParticles/caseSetup/interaction @@ -6,49 +6,47 @@ objectName interaction; objectType dicrionary; fileFormat ASCII; /*---------------------------------------------------------------------------*/ +materials (prop1); // a list of materials names +densities (1000.0); // density of materials [kg/m3] -materials (prop1); // a list of materials names -densities (1000.0); // density of materials [kg/m3] +contactListType sortedContactList; -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; - Yeff (1.0e6); // Young modulus [Pa] + // Property (solid-solid Properties) - 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 multiGridNBS; // method for broad search particle-particle - wallMapping multiGridMapping; // method for broad search particle-wall - multiGridNBSInfo - { - updateFrequency 10; // each 10 timesteps, update neighbor list - sizeRatio 1.1; // bounding box size to particle diameter (max) - } - - multiGridMappingInfo - { - updateFrequency 10; // each 10 timesteps, update neighbor list - cellExtent 0.6; // bounding box for particle-wall search (> 0.5) - } - -} diff --git a/tutorials/sphereGranFlow/binarySystemOfParticles/caseSetup/particleInsertion b/tutorials/sphereGranFlow/binarySystemOfParticles/caseSetup/particleInsertion old mode 100755 new mode 100644 index dbbc4709..3629d63f --- a/tutorials/sphereGranFlow/binarySystemOfParticles/caseSetup/particleInsertion +++ b/tutorials/sphereGranFlow/binarySystemOfParticles/caseSetup/particleInsertion @@ -6,10 +6,9 @@ objectName particleInsertion; objectType dicrionary; fileFormat ASCII; /*---------------------------------------------------------------------------*/ +active No; // is insertion active -> yes or no + +collisionCheck No; // is checked -> yes or no -active no; // is insertion active? - -collisionCheck No; // not implemented for yes - diff --git a/tutorials/sphereGranFlow/binarySystemOfParticles/caseSetup/sphereShape b/tutorials/sphereGranFlow/binarySystemOfParticles/caseSetup/shapes old mode 100755 new mode 100644 similarity index 68% rename from tutorials/sphereGranFlow/binarySystemOfParticles/caseSetup/sphereShape rename to tutorials/sphereGranFlow/binarySystemOfParticles/caseSetup/shapes index ffe420d8..625afe3a --- a/tutorials/sphereGranFlow/binarySystemOfParticles/caseSetup/sphereShape +++ b/tutorials/sphereGranFlow/binarySystemOfParticles/caseSetup/shapes @@ -6,7 +6,9 @@ objectName sphereDict; objectType sphereShape; fileFormat ASCII; /*---------------------------------------------------------------------------*/ +names (smallSphere largeSphere); // names of shapes -names (smallSphere largeSphere); // names of shapes -diameters (0.003 0.005); // diameter of shapes -materials (prop1 prop1); // material names for shapes +diameters (0.003 0.005); // diameter of shapes + +materials (prop1 prop1); // material names for shapes + \ No newline at end of file diff --git a/tutorials/sphereGranFlow/binarySystemOfParticles/cleanThisCase b/tutorials/sphereGranFlow/binarySystemOfParticles/cleanThisCase old mode 100755 new mode 100644 diff --git a/tutorials/sphereGranFlow/binarySystemOfParticles/runThisCase b/tutorials/sphereGranFlow/binarySystemOfParticles/runThisCase old mode 100755 new mode 100644 diff --git a/tutorials/sphereGranFlow/binarySystemOfParticles/settings/domainDict b/tutorials/sphereGranFlow/binarySystemOfParticles/settings/domainDict new file mode 100644 index 00000000..c2344fc8 --- /dev/null +++ b/tutorials/sphereGranFlow/binarySystemOfParticles/settings/domainDict @@ -0,0 +1,65 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ +objectName domainDict; +objectType dictionary; +fileFormat ASCII; +/*---------------------------------------------------------------------------*/ +globalBox +{ + min (-0.12 -0.12 0); + max (0.12 0.12 0.1); +} + +decomposition +{ + direction z; + +} + +boundaries +{ + // 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 50; + + // 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; + } + + bottom + { + type exit; + } + + top + { + type exit; + } + + rear + { + type exit; + } + + front + { + type exit; + } +} \ No newline at end of file diff --git a/tutorials/sphereGranFlow/binarySystemOfParticles/settings/geometryDict b/tutorials/sphereGranFlow/binarySystemOfParticles/settings/geometryDict index 46d4025b..8f5b0697 100644 --- a/tutorials/sphereGranFlow/binarySystemOfParticles/settings/geometryDict +++ b/tutorials/sphereGranFlow/binarySystemOfParticles/settings/geometryDict @@ -6,66 +6,86 @@ 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 (0.0 0.0 0.0); // first point for the axis of rotation + + p2 (0.0 0.0 1.0); // second point for the axis of rotation + + omega 1.214; // rotation speed (rad/s) + } +} surfaces { /* - A cylinder with begin and end radii 0.12 m and axis points at (0 0 0) - and (0 0 0.1) + A cylinder with begin and end radii 0.12 m and axis points at (0 0 0) and (0 0 0.1) */ + cylinder { - type cylinderWall; // type of the wall - p1 (0.0 0.0 0.0); // begin point of cylinder axis - p2 (0.0 0.0 0.1); // end point of cylinder axis - radius1 0.12; // radius at p1 - radius2 0.12; // radius at p2 - resolution 24; // number of divisions - material prop1; // material name of this wall - motion rotAxis; // motion component name + type cylinderWall; // type of the wall + + p1 (0.0 0.0 0.0); // begin point of cylinder axis + + p2 (0.0 0.0 0.1); // end point of cylinder axis + + radius1 0.12; // radius at p1 + + radius2 0.12; // radius at p2 + + resolution 24; // number of divisions + + material prop1; // material name of this wall + + motion rotAxis; // motion component name } /* - This is a plane wall at the rear end of cylinder + This is a plane wall at the rear end of cylinder */ + wall1 { - type planeWall; // type of the wall - p1 (-0.12 -0.12 0.0); // first point of the wall - p2 ( 0.12 -0.12 0.0); // second point - p3 ( 0.12 0.12 0.0); // third point - p4 (-0.12 0.12 0.0); // fourth point - material prop1; // material name of the wall - motion rotAxis; // motion component name + type planeWall; // type of the wall + + p1 (-0.12 -0.12 0.0); // first point of the wall + + p2 ( 0.12 -0.12 0.0); // second point of the wall + + p3 ( 0.12 0.12 0.0); // third point of the wall + + p4 (-0.12 0.12 0.0); // fourth point of the wall + + material prop1; // material name of the wall + + motion rotAxis; // motion component name } /* - This is a plane wall at the front end of cylinder + This is a plane wall at the front end of cylinder */ + wall2 { - type planeWall; - p1 (-0.12 -0.12 0.1); - p2 ( 0.12 -0.12 0.1); - p3 ( 0.12 0.12 0.1); - p4 (-0.12 0.12 0.1); - material prop1; - motion rotAxis; + type planeWall; // type of the wall + + p1 (-0.12 -0.12 0.1); // first point of the wall + + p2 ( 0.12 -0.12 0.1); // second point of the wall + + p3 ( 0.12 0.12 0.1); // third point of the wall + + p4 (-0.12 0.12 0.1); // fourth point of the wall + + material prop1; // material name of the wall + + motion rotAxis; // motion component name } - - } -// information for rotatingAxisMotion motion model -rotatingAxisMotionInfo -{ - rotAxis - { - p1 (0.0 0.0 0.0); // first point for the axis of rotation - p2 (0.0 0.0 1.0); // second point for the axis of rotation - omega 1.214; // rotation speed (rad/s) - } -} \ No newline at end of file + diff --git a/tutorials/sphereGranFlow/binarySystemOfParticles/settings/particlesDict b/tutorials/sphereGranFlow/binarySystemOfParticles/settings/particlesDict index 089d8f96..114256e7 100644 --- a/tutorials/sphereGranFlow/binarySystemOfParticles/settings/particlesDict +++ b/tutorials/sphereGranFlow/binarySystemOfParticles/settings/particlesDict @@ -6,64 +6,73 @@ objectName particlesDict; objectType dictionary; fileFormat ASCII; /*---------------------------------------------------------------------------*/ - -// positions particles -positionParticles -{ - method positionOrdered; // ordered positioning - - maxNumberOfParticles 30001; // maximum number of particles in the simulation - mortonSorting Yes; // perform initial sorting based on morton code? - - cylinder // cylinder region for positioning particles - { - p1 (0.0 0.0 0.003); // begin point of cylinder axis - p2 (0.0 0.0 0.097); // end point of cylinder axis - radius 0.117; // radius of cylinder - } - - positionOrderedInfo - { - diameter 0.005; // minimum space between centers of particles - numPoints 30000; // number of particles in the simulation - axisOrder (z x y); // axis order for filling the space with particles - } -} - setFields { /* - Default value for fields defined for particles - These fields should always be defined for simulations with - spherical particles.*/ + 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 smallSphere; // 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 smallSphere; // name of the particle shape } selectors { shapeAssigne { - selector selectRange; // type of point selector - selectRangeInfo + selector stridedRange; // type of point selector + + stridedRangeInfo { - begin 0; // begin index of points - end 30000; // end index of points - stride 3; // stride for selector + begin 0; // begin index of points + + end 30000; // end index of points + + stride 3; // stride for selector } - fieldValue // fields that the selector is applied to + + fieldValue // fields that the selector is applied to { - /* - sets shapeName of the selected points to largeSphere*/ - shapeName word largeSphere; + shapeName word largeSphere; // sets shapeName of the selected points to largeSphere } } } } +positionParticles // positions particles +{ + method ordered; // can be ordered or random or empty + + orderedInfo + { + diameter 0.005; // diameter of particles + + numPoints 30000; // number of particles in the simulation + + axisOrder (z x y); // axis order for filling the space with particles + } + + maxNumberOfParticles 30001; // maximum number of particles in the simulation + + regionType cylinder; // can be box or cylinder or sphere + + cylinderInfo // cylinder region for positioning particles + { + p1 (0.0 0.0 0.003); // begin point of cylinder axis + + p2 (0.0 0.0 0.097); // end point of cylinder axis + + radius 0.117; // radius of cylinder + } +} + diff --git a/tutorials/sphereGranFlow/binarySystemOfParticles/settings/settingsDict b/tutorials/sphereGranFlow/binarySystemOfParticles/settings/settingsDict index 3df9af04..873b4f3c 100644 --- a/tutorials/sphereGranFlow/binarySystemOfParticles/settings/settingsDict +++ b/tutorials/sphereGranFlow/binarySystemOfParticles/settings/settingsDict @@ -6,36 +6,33 @@ objectName settingsDict; objectType dictionary; fileFormat ASCII; /*---------------------------------------------------------------------------*/ - - run binarySystemofParticles; -dt 0.00001; // time step for integration (s) +dt 0.00001; // time step for integration (s) -startTime 0; // start time for simulation +startTime 0; // start time for simulation -endTime 10; // end time for simulation +endTime 10; // end time for simulation -saveInterval 0.1; // time interval for saving the simulation +saveInterval 0.1; // 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) /* - 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.12 -0.12 0); - max (0.12 0.12 0.1); -} -integrationMethod AdamsBashforth2; // integration method +// save necessary (i.e., required) data on disk +includeObjects (diameter); +// exclude unnecessary data from saving on disk +excludeObjects (rVelocity.dy1 pStructPosition.dy1 pStructVelocity.dy1); -writeFormat ascii; +integrationMethod AdamsBashforth2; // integration method -timersReport Yes; // report timers? +writeFormat ascii; // data writting format (ascii or binary) -timersReportInterval 0.01; // time interval for reporting timers +timersReport Yes; // report timers + +timersReportInterval 0.01; // time interval for reporting timers From 74833ce6a6dfdf5b4d760e1d94892911b49a898f Mon Sep 17 00:00:00 2001 From: Ramin Khodabandeh Date: Tue, 21 May 2024 13:30:16 +0430 Subject: [PATCH 2/4] This toturial has been modified for version 1.x of phasicFlow. --- .../settings/domainDict | 20 +++++++++---------- .../settings/geometryDict | 2 +- .../settings/settingsDict | 4 ---- 3 files changed, 10 insertions(+), 16 deletions(-) diff --git a/tutorials/sphereGranFlow/binarySystemOfParticles/settings/domainDict b/tutorials/sphereGranFlow/binarySystemOfParticles/settings/domainDict index c2344fc8..77dea711 100644 --- a/tutorials/sphereGranFlow/binarySystemOfParticles/settings/domainDict +++ b/tutorials/sphereGranFlow/binarySystemOfParticles/settings/domainDict @@ -6,16 +6,16 @@ objectName domainDict; objectType dictionary; fileFormat ASCII; /*---------------------------------------------------------------------------*/ -globalBox +globalBox // Simulation domain: every particles that goes outside this domain will be deleted { min (-0.12 -0.12 0); + max (0.12 0.12 0.1); } decomposition { direction z; - } boundaries @@ -25,12 +25,10 @@ boundaries // of all boundaries in the simulation domain? neighborListUpdateInterval 50; - // How often do you want to update the new changes in the - // boundary + // 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. + // The distance from the boundary plane within which particles are marked to be in the boundary list neighborLength 0.004; left @@ -40,26 +38,26 @@ boundaries right { - type exit; + type exit; // other options: periodict, reflective } bottom { - type exit; + type exit; // other options: periodict, reflective } top { - type exit; + type exit; // other options: periodict, reflective } rear { - type exit; + type exit; // other options: periodict, reflective } front { - type exit; + type exit; // other options: periodict, reflective } } \ No newline at end of file diff --git a/tutorials/sphereGranFlow/binarySystemOfParticles/settings/geometryDict b/tutorials/sphereGranFlow/binarySystemOfParticles/settings/geometryDict index 8f5b0697..df536ef1 100644 --- a/tutorials/sphereGranFlow/binarySystemOfParticles/settings/geometryDict +++ b/tutorials/sphereGranFlow/binarySystemOfParticles/settings/geometryDict @@ -8,7 +8,7 @@ fileFormat ASCII; /*---------------------------------------------------------------------------*/ motionModel rotatingAxis; // motion model can be rotatingAxis or stationary or vibrating -rotatingAxisInfo // information for rotatingAxisMotion motion model +rotatingAxisInfo // information for rotatingAxis motion model { rotAxis { diff --git a/tutorials/sphereGranFlow/binarySystemOfParticles/settings/settingsDict b/tutorials/sphereGranFlow/binarySystemOfParticles/settings/settingsDict index 873b4f3c..595daae5 100644 --- a/tutorials/sphereGranFlow/binarySystemOfParticles/settings/settingsDict +++ b/tutorials/sphereGranFlow/binarySystemOfParticles/settings/settingsDict @@ -20,10 +20,6 @@ timePrecision 6; // maximum number of digits for time f g (0 -9.8 0); // gravity vector (m/s2) -/* - Simulation domain every particles that goes outside this domain is deleted -*/ - // save necessary (i.e., required) data on disk includeObjects (diameter); // exclude unnecessary data from saving on disk From afa790b04de834232ac967b7dea3a33ecc8997c2 Mon Sep 17 00:00:00 2001 From: Ramin Khodabandeh Date: Tue, 21 May 2024 16:59:15 +0430 Subject: [PATCH 3/4] binarySystemOfParticles --- .../caseSetup/interaction | 4 ++-- .../settings/domainDict | 18 +++++++++--------- .../settings/geometryDict | 4 ---- .../settings/particlesDict | 10 ++++------ 4 files changed, 15 insertions(+), 21 deletions(-) diff --git a/tutorials/sphereGranFlow/binarySystemOfParticles/caseSetup/interaction b/tutorials/sphereGranFlow/binarySystemOfParticles/caseSetup/interaction index 9910a2fb..9e154f4c 100644 --- a/tutorials/sphereGranFlow/binarySystemOfParticles/caseSetup/interaction +++ b/tutorials/sphereGranFlow/binarySystemOfParticles/caseSetup/interaction @@ -6,7 +6,7 @@ objectName interaction; objectType dicrionary; fileFormat ASCII; /*---------------------------------------------------------------------------*/ -materials (prop1); // a list of materials names +materials (prop1); // properties of material densities (1000.0); // density of materials [kg/m3] @@ -15,7 +15,7 @@ contactListType sortedContactList; contactSearch { - method NBS; // method for broad search particle-particle + method NBS; // method for broad search updateInterval 10; diff --git a/tutorials/sphereGranFlow/binarySystemOfParticles/settings/domainDict b/tutorials/sphereGranFlow/binarySystemOfParticles/settings/domainDict index 77dea711..f4679bbb 100644 --- a/tutorials/sphereGranFlow/binarySystemOfParticles/settings/domainDict +++ b/tutorials/sphereGranFlow/binarySystemOfParticles/settings/domainDict @@ -20,12 +20,12 @@ decomposition boundaries { - // How often (how many iterations) do you want to + // 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? + // of all boundaries in the simulation domain neighborListUpdateInterval 50; - // How often do you want to update the new changes in the boundary + // 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 @@ -33,31 +33,31 @@ boundaries left { - type exit; // other options: periodict, reflective + type exit; // other options: periodict, reflective } right { - type exit; // other options: periodict, reflective + type exit; // other options: periodict, reflective } bottom { - type exit; // other options: periodict, reflective + type exit; // other options: periodict, reflective } top { - type exit; // other options: periodict, reflective + type exit; // other options: periodict, reflective } rear { - type exit; // other options: periodict, reflective + type exit; // other options: periodict, reflective } front { - type exit; // other options: periodict, reflective + type exit; // other options: periodict, reflective } } \ No newline at end of file diff --git a/tutorials/sphereGranFlow/binarySystemOfParticles/settings/geometryDict b/tutorials/sphereGranFlow/binarySystemOfParticles/settings/geometryDict index df536ef1..6dfadd8b 100644 --- a/tutorials/sphereGranFlow/binarySystemOfParticles/settings/geometryDict +++ b/tutorials/sphereGranFlow/binarySystemOfParticles/settings/geometryDict @@ -22,10 +22,6 @@ rotatingAxisInfo // information for rotatingAxis motion mo surfaces { - /* - A cylinder with begin and end radii 0.12 m and axis points at (0 0 0) and (0 0 0.1) - */ - cylinder { type cylinderWall; // type of the wall diff --git a/tutorials/sphereGranFlow/binarySystemOfParticles/settings/particlesDict b/tutorials/sphereGranFlow/binarySystemOfParticles/settings/particlesDict index 114256e7..384c17c3 100644 --- a/tutorials/sphereGranFlow/binarySystemOfParticles/settings/particlesDict +++ b/tutorials/sphereGranFlow/binarySystemOfParticles/settings/particlesDict @@ -29,7 +29,7 @@ setFields { shapeAssigne { - selector stridedRange; // type of point selector + selector stridedRange; // other options: box, cylinder, sphere, randomPoints stridedRangeInfo { @@ -50,7 +50,7 @@ setFields positionParticles // positions particles { - method ordered; // can be ordered or random or empty + method ordered; // other options: random and empty orderedInfo { @@ -60,12 +60,10 @@ positionParticles // positions particles axisOrder (z x y); // axis order for filling the space with particles } - - maxNumberOfParticles 30001; // maximum number of particles in the simulation - regionType cylinder; // can be box or cylinder or sphere + regionType cylinder; // other options: box and sphere - cylinderInfo // cylinder region for positioning particles + cylinderInfo // cylinder information for positioning particles { p1 (0.0 0.0 0.003); // begin point of cylinder axis From 5e56671c054951670926f67cb900d01eb66bddcb Mon Sep 17 00:00:00 2001 From: Ramin Khodabandeh Date: Tue, 21 May 2024 19:43:58 +0430 Subject: [PATCH 4/4] layeredSiloFilling tutorial is updated for phasicFlow version 1.x. --- .../layeredSiloFilling/caseSetup/interaction | 50 +++--- .../caseSetup/particleInsertion | 146 +++--------------- .../layeredSiloFilling/caseSetup/shapes | 13 ++ .../layeredSiloFilling/cleanThisCase | 0 .../layeredSiloFilling/runThisCase | 0 .../layeredSiloFilling/settings/domainDict | 58 +++++++ .../layeredSiloFilling/settings/geometryDict | 70 ++++++--- .../layeredSiloFilling/settings/particlesDict | 32 ++-- .../layeredSiloFilling/settings/settingsDict | 34 ++-- 9 files changed, 198 insertions(+), 205 deletions(-) mode change 100755 => 100644 tutorials/sphereGranFlow/layeredSiloFilling/caseSetup/interaction mode change 100755 => 100644 tutorials/sphereGranFlow/layeredSiloFilling/caseSetup/particleInsertion create mode 100644 tutorials/sphereGranFlow/layeredSiloFilling/caseSetup/shapes mode change 100755 => 100644 tutorials/sphereGranFlow/layeredSiloFilling/cleanThisCase mode change 100755 => 100644 tutorials/sphereGranFlow/layeredSiloFilling/runThisCase create mode 100644 tutorials/sphereGranFlow/layeredSiloFilling/settings/domainDict 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