From c02027f5d26ec0504321f2c9adaa649895a861eb Mon Sep 17 00:00:00 2001 From: ramin1728 Date: Sat, 28 Dec 2024 14:58:28 +0330 Subject: [PATCH] updated V1.0 V-blender --- .../V-blender/caseSetup/interaction | 79 ++++++--------- .../V-blender/caseSetup/particleInsertion | 89 ++++++++--------- .../caseSetup/{sphereShape => shapes} | 10 +- .../V-blender/settings/domainDict | 64 +++++++++++++ .../V-blender/settings/geometryDict | 60 +++++------- .../V-blender/settings/particlesDict | 95 ++++++++++++------- .../V-blender/settings/settingsDict | 42 +++----- 7 files changed, 235 insertions(+), 204 deletions(-) rename tutorials/sphereGranFlow/V-blender/caseSetup/{sphereShape => shapes} (68%) create mode 100755 tutorials/sphereGranFlow/V-blender/settings/domainDict diff --git a/tutorials/sphereGranFlow/V-blender/caseSetup/interaction b/tutorials/sphereGranFlow/V-blender/caseSetup/interaction index 709fe23e..1e9b4447 100644 --- a/tutorials/sphereGranFlow/V-blender/caseSetup/interaction +++ b/tutorials/sphereGranFlow/V-blender/caseSetup/interaction @@ -6,70 +6,49 @@ objectName interaction; objectType dicrionary; fileFormat ASCII; /*---------------------------------------------------------------------------*/ +materials (wallMat lightMat); // a list of materials names -// a list of materials names -materials (wallMat lightMat); - -// density of materials [kg/m3] -densities (1000 1000); +densities (1000 1000); // density of materials [kg/m3] contactListType sortedContactList; +contactSearch +{ + method NBS; // method for broad search + + updateInterval 10; + + sizeRatio 1.1; + + cellExtent 0.55; + + adjustableBox Yes; +} + model { - contactForceModel nonLinearNonLimited; - rollingFrictionModel normal; + contactForceModel nonLinearNonLimited; - // Young modulus [Pa] + rollingFrictionModel normal; + + Yeff (1.0e6 1.0e6 - 1.0e6); + 1.0e6); // Young modulus [Pa] - // Shear modulus [Pa] Geff (0.8e6 0.8e6 - 0.8e6); + 0.8e6); // Shear modulus [Pa] - // Poisson's ratio [-] - nu (0.25 0.25 - 0.25); + nu (0.25 0.25 + 0.25); // Poisson's ratio [-] - // coefficient of normal restitution - en (0.97 0.85 - 0.97); + en (0.97 0.85 + 0.97); // coefficient of normal restitution - // dynamic friction - mu (0.65 0.35 - 0.65); + mu (0.65 0.35 + 0.65); // dynamic friction - // rolling friction - mur (0.1 0.1 - 0.1); + mur (0.1 0.1 + 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; - } - -} diff --git a/tutorials/sphereGranFlow/V-blender/caseSetup/particleInsertion b/tutorials/sphereGranFlow/V-blender/caseSetup/particleInsertion index 682830c5..a26ff8ac 100644 --- a/tutorials/sphereGranFlow/V-blender/caseSetup/particleInsertion +++ b/tutorials/sphereGranFlow/V-blender/caseSetup/particleInsertion @@ -6,97 +6,86 @@ objectName particleInsertion; objectType dicrionary; fileFormat ASCII; /*---------------------------------------------------------------------------*/ +active Yes; // is insertion active -> Yes or No -// is insertion active? -active yes; - -// not implemented for yes -collisionCheck No; +checkForCollision No; // is checked -> Yes or No /* -two layers of particles are packed one-by-one using tho insertion steps. + Two layers of particles are packed one-by-one using tho insertion steps */ rightregion { - // type of insertion region - type cylinderRegion; + timeControl simulationTime; + + regionType cylinder; // type of insertion region - // insertion rate (particles/s) - rate 10000; + rate 10000; // Particles Insertion Rate (particles/s) - // start time of small particles insertion (s) - startTime 0.0; + startTime 0.0; // start time of small particles insertion (s) - // end time of small particles insertion (s) - endTime 1; + endTime 1; // end time of small particles insertion (s) - // time interval of small particles insertion (s) - interval 0.025; + insertionInterval 0.025; // time interval of small particles insertion (s) - cylinderRegionInfo + cylinderInfo { - // radius of cylinder (m) - radius 0.1; - - // coordinates of center of both ends of the insertion cylinder on - // the right side of the V-blender (m,m,m) + /* coordinates of center of both ends of the insertion + + cylinder on the right side of the V-blender (m,m,m) */ + p1 (0.0950615 0.12 0.5011585); + p2 (0.1150615 0.12 0.4811585); + + radius 0.1; // radius of cylinder (m) } setFields { - // initial velocity of inserted particles - velocity realx3 (1.2 0.0 -1.2); + velocity realx3 (1.2 0.0 -1.2); // initial velocity of inserted particles } mixture { - // first layer of inserted particles - smallSphere 1; - + smallSphere 1; // first layer of inserted particles } } leftregion { - // type of insertion region - type cylinderRegion; + timeControl simulationTime; - // insertion rate (particles/s) - rate 10000; + regionType cylinder; // type of insertion region - // start time of large particles insertion (s) - startTime 1.5; + rate 10000; // Particles Insertion Rate (particles/s) - // end time of large particles insertion (s) - endTime 2.5; + startTime 1.5; // start time of large particles insertion (s) - // time interval of large particles insertion (s) - interval 0.025; + endTime 2.5; // end time of large particles insertion (s) + + insertionInterval 0.025; // time interval of large particles insertion (s) - cylinderRegionInfo + cylinderInfo { - // radius of cylinder (m) - radius 0.1; - - // coordinates of center of both ends of the insertion cylinder on - // the left side of the V-blender (m,m,m) - p1 ( 0.7562545 0.12 0.50079); - p2 ( 0.7362545 0.12 0.48079); + /* coordinates of center of both ends of the insertion + + cylinder on the left side of the V-blender (m,m,m) */ + + p1 ( 0.7562545 0.12 0.50079); + + p2 ( 0.7362545 0.12 0.48079); + + radius 0.1; // radius of cylinder (m) } setFields { - // initial velocity of inserted particles - velocity realx3 (-1.2 0.0 -1.2); + velocity realx3 (-1.2 0.0 -1.2); // initial velocity of inserted particles } mixture { - // second layer of inserted particles - largeSphere 1; - + largeSphere 1; // second layer of inserted particles } } diff --git a/tutorials/sphereGranFlow/V-blender/caseSetup/sphereShape b/tutorials/sphereGranFlow/V-blender/caseSetup/shapes similarity index 68% rename from tutorials/sphereGranFlow/V-blender/caseSetup/sphereShape rename to tutorials/sphereGranFlow/V-blender/caseSetup/shapes index 71a9880d..85ad682a 100644 --- a/tutorials/sphereGranFlow/V-blender/caseSetup/sphereShape +++ b/tutorials/sphereGranFlow/V-blender/caseSetup/shapes @@ -6,12 +6,8 @@ objectName sphereDict; objectType sphereShape; fileFormat ASCII; /*---------------------------------------------------------------------------*/ +names (smallSphere largeSphere); // names of particles -// names of particles -names (smallSphere largeSphere); +diameters (0.01 0.0101); // diameter of particles -// diameter of particles -diameters (0.01 0.0101); - -// material names for particles -materials (lightMat lightMat); +materials (lightMat lightMat); // material names for particles diff --git a/tutorials/sphereGranFlow/V-blender/settings/domainDict b/tutorials/sphereGranFlow/V-blender/settings/domainDict new file mode 100755 index 00000000..8595d381 --- /dev/null +++ b/tutorials/sphereGranFlow/V-blender/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.1 -0.4 0); // lower corner point of the box + + max (0.86 0.6 0.6); // 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/V-blender/settings/geometryDict b/tutorials/sphereGranFlow/V-blender/settings/geometryDict index bbb9bfea..a1f42d1a 100644 --- a/tutorials/sphereGranFlow/V-blender/settings/geometryDict +++ b/tutorials/sphereGranFlow/V-blender/settings/geometryDict @@ -6,49 +6,37 @@ objectName geometryDict; objectType dictionary; fileFormat ASCII; /*---------------------------------------------------------------------------*/ +motionModel rotatingAxis; // motion model: rotating object around an axis -// motion model: rotating object around an axis -motionModel rotatingAxisMotion; +rotatingAxisInfo // information for rotatingAxis motion model +{ + rotAxis + { + p1 (0.128228 0.116446 0.297901); // first point for the axis of rotation + + p2 (0.722596 0.116459 0.297901); // second point for the axis of rotation + + omega 3.14; // rotation speed (rad/s) + + startTime 3; // start time of rotation + + endTime 10; // end time of rotation + } +} surfaces { - body - { - // type of the wall - type stlWall; + { + type stlWall; // type of the wall - // file name in stl folder - file body.stl; + file body.stl; // file name in stl folder - // material name of this wall - material wallMat; + material wallMat; // material name of this wall - // motion component name - motion rotAxis; - } - - -} - -// information for rotatingAxisMotion motion model -rotatingAxisMotionInfo -{ - rotAxis - { - // first point for the axis of rotation - p1 (0.128228 0.116446 0.297901); - - // second point for the axis of rotation - p2 (0.722596 0.116459 0.297901); - - // rotation speed (rad/s) - omega 3.14; - - // start time of rotation - startTime 3; - - // end time of rotation - endTime 10; + motion otAxis; // motion component name } } + + + diff --git a/tutorials/sphereGranFlow/V-blender/settings/particlesDict b/tutorials/sphereGranFlow/V-blender/settings/particlesDict index b00e2252..87a433c5 100644 --- a/tutorials/sphereGranFlow/V-blender/settings/particlesDict +++ b/tutorials/sphereGranFlow/V-blender/settings/particlesDict @@ -6,43 +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. - */ + /* + Default value for fields defined for 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 smallSphere; - } + These fields should always be defined for simulations with - selectors - {} + 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 + } + + 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 { - // no particle is initially in the simulation - method empty; - - // maximum number of particles in the simulation - maxNumberOfParticles 25000; - // perform initial sorting based on morton code? - mortonSorting Yes; -} + method ordered; // ordered positioning + + mortonSorting Yes; // perform initial sorting based on morton code? + + orderedInfo + { + diameter 0.0101; // minimum space between centers of particles + + numPoints 25000; // 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 + + 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 + } +} \ No newline at end of file diff --git a/tutorials/sphereGranFlow/V-blender/settings/settingsDict b/tutorials/sphereGranFlow/V-blender/settings/settingsDict index 4dab1980..916b4e53 100644 --- a/tutorials/sphereGranFlow/V-blender/settings/settingsDict +++ b/tutorials/sphereGranFlow/V-blender/settings/settingsDict @@ -6,45 +6,29 @@ objectName settingsDict; objectType dictionary; fileFormat ASCII; /*---------------------------------------------------------------------------*/ - run rotatingVblender; -// time step for integration (s) -dt 0.00001; +dt 0.00001; // time step for integration (s) -// start time for simulation -startTime 0; +startTime 0; // start time for simulation -// end time for simulation -endTime 10; +endTime 10; // end time for simulation -// time interval for saving the simulation -saveInterval 0.05; +saveInterval 0.05; // time interval for saving the simulation -// maximum number of digits for time folder -timePrecision 6; +timePrecision 6; // maximum number of digits for time folder -// gravity vector (m/s2) -g (0 0 -9.8); +g (0 0 -9.8); // gravity vector (m/s2) -/* - Simulation domain - every particles that goes outside this domain is deleted. -*/ +includeObjects (diameter); // save necessary (i.e., required) data on disk -domain -{ - min (-0.1 -0.4 0); - max (0.86 0.6 0.6); -} +// exclude unnecessary data from saving on disk +excludeObjects (rVelocity.dy1 pStructPosition.dy1 pStructVelocity.dy1); -// integration method -integrationMethod AdamsBashforth2; +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.01; +timersReportInterval 0.01; // time interval for reporting timers