From 0613b15c930fc7dc3198caa858a23f31bf4a014b Mon Sep 17 00:00:00 2001 From: wanqing0421 Date: Sun, 16 Mar 2025 00:56:31 +0800 Subject: [PATCH] init commit of rotatingDrum --- .../caseSetup/interaction | 60 +++++++++++++ .../rotatingDrum_1mParticles/caseSetup/shapes | 15 ++++ .../rotatingDrum_1mParticles/cleanThisCase | 7 ++ .../rotatingDrum_1mParticles/runThisCase | 21 +++++ .../settings/domainDict | 50 +++++++++++ .../settings/geometryDict | 86 +++++++++++++++++++ .../settings/particlesDict | 47 ++++++++++ .../settings/settingsDict | 34 ++++++++ .../caseSetup/interaction | 60 +++++++++++++ .../caseSetup/shapes | 15 ++++ .../rotatingDrum_250kParticles/cleanThisCase | 7 ++ .../rotatingDrum_250kParticles/runThisCase | 21 +++++ .../settings/domainDict | 50 +++++++++++ .../settings/geometryDict | 86 +++++++++++++++++++ .../settings/particlesDict | 47 ++++++++++ .../settings/settingsDict | 34 ++++++++ .../caseSetup/interaction | 60 +++++++++++++ .../rotatingDrum_2mParticles/caseSetup/shapes | 15 ++++ .../rotatingDrum_2mParticles/cleanThisCase | 7 ++ .../rotatingDrum_2mParticles/runThisCase | 21 +++++ .../settings/domainDict | 50 +++++++++++ .../settings/geometryDict | 86 +++++++++++++++++++ .../settings/particlesDict | 47 ++++++++++ .../settings/settingsDict | 34 ++++++++ .../caseSetup/interaction | 60 +++++++++++++ .../rotatingDrum_4mParticles/caseSetup/shapes | 15 ++++ .../rotatingDrum_4mParticles/cleanThisCase | 7 ++ .../rotatingDrum_4mParticles/runThisCase | 21 +++++ .../settings/domainDict | 50 +++++++++++ .../settings/geometryDict | 86 +++++++++++++++++++ .../settings/particlesDict | 47 ++++++++++ .../settings/settingsDict | 34 ++++++++ .../caseSetup/interaction | 60 +++++++++++++ .../caseSetup/shapes | 15 ++++ .../rotatingDrum_500kParticles/cleanThisCase | 7 ++ .../rotatingDrum_500kParticles/runThisCase | 21 +++++ .../settings/domainDict | 50 +++++++++++ .../settings/geometryDict | 86 +++++++++++++++++++ .../settings/particlesDict | 47 ++++++++++ .../settings/settingsDict | 34 ++++++++ .../caseSetup/interaction | 60 +++++++++++++ .../rotatingDrum_6mParticles/caseSetup/shapes | 15 ++++ .../rotatingDrum_6mParticles/cleanThisCase | 7 ++ .../rotatingDrum_6mParticles/runThisCase | 21 +++++ .../settings/domainDict | 50 +++++++++++ .../settings/geometryDict | 86 +++++++++++++++++++ .../settings/particlesDict | 47 ++++++++++ .../settings/settingsDict | 34 ++++++++ 48 files changed, 1920 insertions(+) create mode 100644 benchmarks/rotatingDrum_1mParticles/caseSetup/interaction create mode 100644 benchmarks/rotatingDrum_1mParticles/caseSetup/shapes create mode 100755 benchmarks/rotatingDrum_1mParticles/cleanThisCase create mode 100755 benchmarks/rotatingDrum_1mParticles/runThisCase create mode 100644 benchmarks/rotatingDrum_1mParticles/settings/domainDict create mode 100644 benchmarks/rotatingDrum_1mParticles/settings/geometryDict create mode 100644 benchmarks/rotatingDrum_1mParticles/settings/particlesDict create mode 100644 benchmarks/rotatingDrum_1mParticles/settings/settingsDict create mode 100644 benchmarks/rotatingDrum_250kParticles/caseSetup/interaction create mode 100644 benchmarks/rotatingDrum_250kParticles/caseSetup/shapes create mode 100755 benchmarks/rotatingDrum_250kParticles/cleanThisCase create mode 100755 benchmarks/rotatingDrum_250kParticles/runThisCase create mode 100644 benchmarks/rotatingDrum_250kParticles/settings/domainDict create mode 100644 benchmarks/rotatingDrum_250kParticles/settings/geometryDict create mode 100644 benchmarks/rotatingDrum_250kParticles/settings/particlesDict create mode 100644 benchmarks/rotatingDrum_250kParticles/settings/settingsDict create mode 100644 benchmarks/rotatingDrum_2mParticles/caseSetup/interaction create mode 100644 benchmarks/rotatingDrum_2mParticles/caseSetup/shapes create mode 100755 benchmarks/rotatingDrum_2mParticles/cleanThisCase create mode 100755 benchmarks/rotatingDrum_2mParticles/runThisCase create mode 100644 benchmarks/rotatingDrum_2mParticles/settings/domainDict create mode 100644 benchmarks/rotatingDrum_2mParticles/settings/geometryDict create mode 100644 benchmarks/rotatingDrum_2mParticles/settings/particlesDict create mode 100644 benchmarks/rotatingDrum_2mParticles/settings/settingsDict create mode 100644 benchmarks/rotatingDrum_4mParticles/caseSetup/interaction create mode 100644 benchmarks/rotatingDrum_4mParticles/caseSetup/shapes create mode 100755 benchmarks/rotatingDrum_4mParticles/cleanThisCase create mode 100755 benchmarks/rotatingDrum_4mParticles/runThisCase create mode 100644 benchmarks/rotatingDrum_4mParticles/settings/domainDict create mode 100644 benchmarks/rotatingDrum_4mParticles/settings/geometryDict create mode 100644 benchmarks/rotatingDrum_4mParticles/settings/particlesDict create mode 100644 benchmarks/rotatingDrum_4mParticles/settings/settingsDict create mode 100644 benchmarks/rotatingDrum_500kParticles/caseSetup/interaction create mode 100644 benchmarks/rotatingDrum_500kParticles/caseSetup/shapes create mode 100755 benchmarks/rotatingDrum_500kParticles/cleanThisCase create mode 100755 benchmarks/rotatingDrum_500kParticles/runThisCase create mode 100644 benchmarks/rotatingDrum_500kParticles/settings/domainDict create mode 100644 benchmarks/rotatingDrum_500kParticles/settings/geometryDict create mode 100644 benchmarks/rotatingDrum_500kParticles/settings/particlesDict create mode 100644 benchmarks/rotatingDrum_500kParticles/settings/settingsDict create mode 100644 benchmarks/rotatingDrum_6mParticles/caseSetup/interaction create mode 100644 benchmarks/rotatingDrum_6mParticles/caseSetup/shapes create mode 100755 benchmarks/rotatingDrum_6mParticles/cleanThisCase create mode 100755 benchmarks/rotatingDrum_6mParticles/runThisCase create mode 100644 benchmarks/rotatingDrum_6mParticles/settings/domainDict create mode 100644 benchmarks/rotatingDrum_6mParticles/settings/geometryDict create mode 100644 benchmarks/rotatingDrum_6mParticles/settings/particlesDict create mode 100644 benchmarks/rotatingDrum_6mParticles/settings/settingsDict diff --git a/benchmarks/rotatingDrum_1mParticles/caseSetup/interaction b/benchmarks/rotatingDrum_1mParticles/caseSetup/interaction new file mode 100644 index 00000000..4ef2c32f --- /dev/null +++ b/benchmarks/rotatingDrum_1mParticles/caseSetup/interaction @@ -0,0 +1,60 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ + +objectName interaction; +objectType dictionary; +fileFormat ASCII; + +/*---------------------------------------------------------------------------*/ + +materials (glassMat wallMat); // a list of materials names + +densities (2500.0 2500); // density of materials [kg/m3] + +contactListType sortedContactList; + +contactSearch +{ + method NBS; + + updateInterval 20; + + sizeRatio 1.1; + + cellExtent 0.55; + + adjustableBox Yes; +} + +model +{ + contactForceModel nonLinearLimited; + + rollingFrictionModel normal; + + /* + Property (glassMat-glassMat glassMat-wallMat + wallMat-wallMat); + */ + + Yeff (1.0e6 1.0e6 + 1.0e6); // Young modulus [Pa] + + Geff (0.8e6 0.8e6 + 0.8e6); // Shear modulus [Pa] + + nu (0.25 0.25 + 0.25); // Poisson's ratio [-] + + en (0.97 0.85 + 1.00); // coefficient of normal restitution + + mu (0.65 0.65 + 0.65); // dynamic friction + + mur (0.1 0.1 + 0.1); // rolling friction +} + diff --git a/benchmarks/rotatingDrum_1mParticles/caseSetup/shapes b/benchmarks/rotatingDrum_1mParticles/caseSetup/shapes new file mode 100644 index 00000000..c2302c64 --- /dev/null +++ b/benchmarks/rotatingDrum_1mParticles/caseSetup/shapes @@ -0,0 +1,15 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ + +objectName shapes; +objectType dictionary; +fileFormat ASCII; +/*---------------------------------------------------------------------------*/ + +names (glassBead); // names of shapes + +diameters (0.004); // diameter of shapes + +materials (glassMat); // material names for shapes diff --git a/benchmarks/rotatingDrum_1mParticles/cleanThisCase b/benchmarks/rotatingDrum_1mParticles/cleanThisCase new file mode 100755 index 00000000..8a0ab919 --- /dev/null +++ b/benchmarks/rotatingDrum_1mParticles/cleanThisCase @@ -0,0 +1,7 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # Run from this directory + +ls | grep -P "^(([0-9]+\.?[0-9]*)|(\.[0-9]+))$" | xargs -d"\n" rm -rf +rm -rf VTK + +#------------------------------------------------------------------------------ diff --git a/benchmarks/rotatingDrum_1mParticles/runThisCase b/benchmarks/rotatingDrum_1mParticles/runThisCase new file mode 100755 index 00000000..c48d71fe --- /dev/null +++ b/benchmarks/rotatingDrum_1mParticles/runThisCase @@ -0,0 +1,21 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # Run from this directory +echo "\n<--------------------------------------------------------------------->" +echo "1) Creating particles" +echo "<--------------------------------------------------------------------->\n" +particlesPhasicFlow + +echo "\n<--------------------------------------------------------------------->" +echo "2) Creating geometry" +echo "<--------------------------------------------------------------------->\n" +geometryPhasicFlow + +echo "\n<--------------------------------------------------------------------->" +echo "3) Running the case" +echo "<--------------------------------------------------------------------->\n" +sphereGranFlow + + + + +#------------------------------------------------------------------------------ diff --git a/benchmarks/rotatingDrum_1mParticles/settings/domainDict b/benchmarks/rotatingDrum_1mParticles/settings/domainDict new file mode 100644 index 00000000..ec704467 --- /dev/null +++ b/benchmarks/rotatingDrum_1mParticles/settings/domainDict @@ -0,0 +1,50 @@ +/* -------------------------------*- 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.2 -0.2 0.0); + max ( 0.2 0.2 0.8); +} + +boundaries +{ + neighborListUpdateInterval 200; + + updateInterval 20; + + left + { + type exit; // other options: periodic, reflective + } + + right + { + type exit; // other options: periodic, reflective + } + + bottom + { + type exit; // other options: periodic, reflective + } + + top + { + type exit; // other options: periodic, reflective + } + + rear + { + type exit; // other options: periodic, reflective + } + + front + { + type exit; // other options: periodic, reflective + } +} diff --git a/benchmarks/rotatingDrum_1mParticles/settings/geometryDict b/benchmarks/rotatingDrum_1mParticles/settings/geometryDict new file mode 100644 index 00000000..72cc32f6 --- /dev/null +++ b/benchmarks/rotatingDrum_1mParticles/settings/geometryDict @@ -0,0 +1,86 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ + +objectName geometryDict; +objectType dictionary; +fileFormat ASCII; + +motionModel rotatingAxis; // motion model: rotating object around an axis + +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.256; // rotation speed (rad/s) => 12 rpm + } +} + +surfaces +{ + 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.8); // end point of cylinder axis + + radius1 0.2; // radius at p1 + + radius2 0.2; // radius at p2 + + resolution 24; // number of divisions + + material wallMat; // material name of this wall + + motion rotAxis; // motion component name + } + + /* + This is a plane wall at the rear end of cylinder + */ + + wall1 + { + type planeWall; // type of the wall + + p1 (-0.2 -0.2 0.0); // first point of the wall + + p2 ( 0.2 -0.2 0.0); // second point + + p3 ( 0.2 0.2 0.0); // third point + + p4 (-0.2 0.2 0.0); // fourth point + + material wallMat; // material name of the wall + + motion rotAxis; // motion component name + } + + /* + This is a plane wall at the front end of cylinder + */ + + wall2 + { + type planeWall; // type of the wall + + p1 (-0.2 -0.2 0.8); // first point of the wall + + p2 ( 0.2 -0.2 0.8); // second point + + p3 ( 0.2 0.2 0.8); // third point + + p4 (-0.2 0.2 0.8); // fourth point + + material wallMat; // material name of the wall + + motion rotAxis; // motion component name + } +} diff --git a/benchmarks/rotatingDrum_1mParticles/settings/particlesDict b/benchmarks/rotatingDrum_1mParticles/settings/particlesDict new file mode 100644 index 00000000..ca799fff --- /dev/null +++ b/benchmarks/rotatingDrum_1mParticles/settings/particlesDict @@ -0,0 +1,47 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ + +objectName particlesDict; +objectType dictionary; +fileFormat ASCII; + +setFields +{ + defaultValue + { + velocity realx3 (0 0 0); // linear velocity (m/s) + acceleration realx3 (0 0 0); // linear acceleration (m/s2) + rotVelocity realx3 (0 0 0); // rotational velocity (rad/s) + shapeName word glassBead; // name of the particle shape + } + + selectors + {} +} + +positionParticles +{ + method ordered; + + orderedInfo + { + diameter 0.004; // minimum space between centers of particles + + numPoints 1000000; // number of particles in the simulation + + axisOrder (z x y); // axis order for filling the space with particles + } + + regionType cylinder; // other options: box and sphere + + cylinderInfo // cylinder for positioning particles + { + p1 (0.0 0.0 0.01); // lower corner point of the box + + p2 (0.0 0.0 0.79); // upper corner point of the box + + radius 0.195; // radius of cylinder + } +} diff --git a/benchmarks/rotatingDrum_1mParticles/settings/settingsDict b/benchmarks/rotatingDrum_1mParticles/settings/settingsDict new file mode 100644 index 00000000..e98fa06a --- /dev/null +++ b/benchmarks/rotatingDrum_1mParticles/settings/settingsDict @@ -0,0 +1,34 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ +objectName settingsDict; +objectType dictionary; +fileFormat ASCII; +/*---------------------------------------------------------------------------*/ +run rotatingDrum_1mParticles; + +dt 0.00001; // time step for integration (s) + +startTime 0; // start time for simulation + +endTime 4; // end time for simulation + +saveInterval 0.2; // time interval for saving the simulation + +timePrecision 5; // maximum number of digits for time folder + +g (0 -9.8 0); // gravity vector (m/s2) + +includeObjects (diameter); // save necessary (i.e., required) data on disk + +// exclude unnecessary data from saving on disk +excludeObjects (rVelocity.dy1 pStructPosition.dy1 pStructVelocity.dy1); + +integrationMethod AdamsBashforth2; // integration method + +writeFormat binary; // data writting format (ascii or binary) + +timersReport Yes; + +timersReportInterval 0.01; diff --git a/benchmarks/rotatingDrum_250kParticles/caseSetup/interaction b/benchmarks/rotatingDrum_250kParticles/caseSetup/interaction new file mode 100644 index 00000000..4ef2c32f --- /dev/null +++ b/benchmarks/rotatingDrum_250kParticles/caseSetup/interaction @@ -0,0 +1,60 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ + +objectName interaction; +objectType dictionary; +fileFormat ASCII; + +/*---------------------------------------------------------------------------*/ + +materials (glassMat wallMat); // a list of materials names + +densities (2500.0 2500); // density of materials [kg/m3] + +contactListType sortedContactList; + +contactSearch +{ + method NBS; + + updateInterval 20; + + sizeRatio 1.1; + + cellExtent 0.55; + + adjustableBox Yes; +} + +model +{ + contactForceModel nonLinearLimited; + + rollingFrictionModel normal; + + /* + Property (glassMat-glassMat glassMat-wallMat + wallMat-wallMat); + */ + + Yeff (1.0e6 1.0e6 + 1.0e6); // Young modulus [Pa] + + Geff (0.8e6 0.8e6 + 0.8e6); // Shear modulus [Pa] + + nu (0.25 0.25 + 0.25); // Poisson's ratio [-] + + en (0.97 0.85 + 1.00); // coefficient of normal restitution + + mu (0.65 0.65 + 0.65); // dynamic friction + + mur (0.1 0.1 + 0.1); // rolling friction +} + diff --git a/benchmarks/rotatingDrum_250kParticles/caseSetup/shapes b/benchmarks/rotatingDrum_250kParticles/caseSetup/shapes new file mode 100644 index 00000000..b8aadc13 --- /dev/null +++ b/benchmarks/rotatingDrum_250kParticles/caseSetup/shapes @@ -0,0 +1,15 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ + +objectName shapes; +objectType dictionary; +fileFormat ASCII; +/*---------------------------------------------------------------------------*/ + +names (glassBead); // names of shapes + +diameters (0.006); // diameter of shapes + +materials (glassMat); // material names for shapes diff --git a/benchmarks/rotatingDrum_250kParticles/cleanThisCase b/benchmarks/rotatingDrum_250kParticles/cleanThisCase new file mode 100755 index 00000000..8a0ab919 --- /dev/null +++ b/benchmarks/rotatingDrum_250kParticles/cleanThisCase @@ -0,0 +1,7 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # Run from this directory + +ls | grep -P "^(([0-9]+\.?[0-9]*)|(\.[0-9]+))$" | xargs -d"\n" rm -rf +rm -rf VTK + +#------------------------------------------------------------------------------ diff --git a/benchmarks/rotatingDrum_250kParticles/runThisCase b/benchmarks/rotatingDrum_250kParticles/runThisCase new file mode 100755 index 00000000..c48d71fe --- /dev/null +++ b/benchmarks/rotatingDrum_250kParticles/runThisCase @@ -0,0 +1,21 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # Run from this directory +echo "\n<--------------------------------------------------------------------->" +echo "1) Creating particles" +echo "<--------------------------------------------------------------------->\n" +particlesPhasicFlow + +echo "\n<--------------------------------------------------------------------->" +echo "2) Creating geometry" +echo "<--------------------------------------------------------------------->\n" +geometryPhasicFlow + +echo "\n<--------------------------------------------------------------------->" +echo "3) Running the case" +echo "<--------------------------------------------------------------------->\n" +sphereGranFlow + + + + +#------------------------------------------------------------------------------ diff --git a/benchmarks/rotatingDrum_250kParticles/settings/domainDict b/benchmarks/rotatingDrum_250kParticles/settings/domainDict new file mode 100644 index 00000000..ec704467 --- /dev/null +++ b/benchmarks/rotatingDrum_250kParticles/settings/domainDict @@ -0,0 +1,50 @@ +/* -------------------------------*- 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.2 -0.2 0.0); + max ( 0.2 0.2 0.8); +} + +boundaries +{ + neighborListUpdateInterval 200; + + updateInterval 20; + + left + { + type exit; // other options: periodic, reflective + } + + right + { + type exit; // other options: periodic, reflective + } + + bottom + { + type exit; // other options: periodic, reflective + } + + top + { + type exit; // other options: periodic, reflective + } + + rear + { + type exit; // other options: periodic, reflective + } + + front + { + type exit; // other options: periodic, reflective + } +} diff --git a/benchmarks/rotatingDrum_250kParticles/settings/geometryDict b/benchmarks/rotatingDrum_250kParticles/settings/geometryDict new file mode 100644 index 00000000..72cc32f6 --- /dev/null +++ b/benchmarks/rotatingDrum_250kParticles/settings/geometryDict @@ -0,0 +1,86 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ + +objectName geometryDict; +objectType dictionary; +fileFormat ASCII; + +motionModel rotatingAxis; // motion model: rotating object around an axis + +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.256; // rotation speed (rad/s) => 12 rpm + } +} + +surfaces +{ + 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.8); // end point of cylinder axis + + radius1 0.2; // radius at p1 + + radius2 0.2; // radius at p2 + + resolution 24; // number of divisions + + material wallMat; // material name of this wall + + motion rotAxis; // motion component name + } + + /* + This is a plane wall at the rear end of cylinder + */ + + wall1 + { + type planeWall; // type of the wall + + p1 (-0.2 -0.2 0.0); // first point of the wall + + p2 ( 0.2 -0.2 0.0); // second point + + p3 ( 0.2 0.2 0.0); // third point + + p4 (-0.2 0.2 0.0); // fourth point + + material wallMat; // material name of the wall + + motion rotAxis; // motion component name + } + + /* + This is a plane wall at the front end of cylinder + */ + + wall2 + { + type planeWall; // type of the wall + + p1 (-0.2 -0.2 0.8); // first point of the wall + + p2 ( 0.2 -0.2 0.8); // second point + + p3 ( 0.2 0.2 0.8); // third point + + p4 (-0.2 0.2 0.8); // fourth point + + material wallMat; // material name of the wall + + motion rotAxis; // motion component name + } +} diff --git a/benchmarks/rotatingDrum_250kParticles/settings/particlesDict b/benchmarks/rotatingDrum_250kParticles/settings/particlesDict new file mode 100644 index 00000000..720a7b76 --- /dev/null +++ b/benchmarks/rotatingDrum_250kParticles/settings/particlesDict @@ -0,0 +1,47 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ + +objectName particlesDict; +objectType dictionary; +fileFormat ASCII; + +setFields +{ + defaultValue + { + velocity realx3 (0 0 0); // linear velocity (m/s) + acceleration realx3 (0 0 0); // linear acceleration (m/s2) + rotVelocity realx3 (0 0 0); // rotational velocity (rad/s) + shapeName word glassBead; // name of the particle shape + } + + selectors + {} +} + +positionParticles +{ + method ordered; + + orderedInfo + { + diameter 0.006; // minimum space between centers of particles + + numPoints 250000; // number of particles in the simulation + + axisOrder (z x y); // axis order for filling the space with particles + } + + regionType cylinder; // other options: box and sphere + + cylinderInfo // cylinder for positioning particles + { + p1 (0.0 0.0 0.01); // lower corner point of the box + + p2 (0.0 0.0 0.79); // upper corner point of the box + + radius 0.195; // radius of cylinder + } +} diff --git a/benchmarks/rotatingDrum_250kParticles/settings/settingsDict b/benchmarks/rotatingDrum_250kParticles/settings/settingsDict new file mode 100644 index 00000000..6f971c6f --- /dev/null +++ b/benchmarks/rotatingDrum_250kParticles/settings/settingsDict @@ -0,0 +1,34 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ +objectName settingsDict; +objectType dictionary; +fileFormat ASCII; +/*---------------------------------------------------------------------------*/ +run rotatingDrum_250KParticles; + +dt 0.00001; // time step for integration (s) + +startTime 0; // start time for simulation + +endTime 4; // end time for simulation + +saveInterval 0.2; // time interval for saving the simulation + +timePrecision 5; // maximum number of digits for time folder + +g (0 -9.8 0); // gravity vector (m/s2) + +includeObjects (diameter); // save necessary (i.e., required) data on disk + +// exclude unnecessary data from saving on disk +excludeObjects (rVelocity.dy1 pStructPosition.dy1 pStructVelocity.dy1); + +integrationMethod AdamsBashforth2; // integration method + +writeFormat binary; // data writting format (ascii or binary) + +timersReport Yes; + +timersReportInterval 0.01; diff --git a/benchmarks/rotatingDrum_2mParticles/caseSetup/interaction b/benchmarks/rotatingDrum_2mParticles/caseSetup/interaction new file mode 100644 index 00000000..4ef2c32f --- /dev/null +++ b/benchmarks/rotatingDrum_2mParticles/caseSetup/interaction @@ -0,0 +1,60 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ + +objectName interaction; +objectType dictionary; +fileFormat ASCII; + +/*---------------------------------------------------------------------------*/ + +materials (glassMat wallMat); // a list of materials names + +densities (2500.0 2500); // density of materials [kg/m3] + +contactListType sortedContactList; + +contactSearch +{ + method NBS; + + updateInterval 20; + + sizeRatio 1.1; + + cellExtent 0.55; + + adjustableBox Yes; +} + +model +{ + contactForceModel nonLinearLimited; + + rollingFrictionModel normal; + + /* + Property (glassMat-glassMat glassMat-wallMat + wallMat-wallMat); + */ + + Yeff (1.0e6 1.0e6 + 1.0e6); // Young modulus [Pa] + + Geff (0.8e6 0.8e6 + 0.8e6); // Shear modulus [Pa] + + nu (0.25 0.25 + 0.25); // Poisson's ratio [-] + + en (0.97 0.85 + 1.00); // coefficient of normal restitution + + mu (0.65 0.65 + 0.65); // dynamic friction + + mur (0.1 0.1 + 0.1); // rolling friction +} + diff --git a/benchmarks/rotatingDrum_2mParticles/caseSetup/shapes b/benchmarks/rotatingDrum_2mParticles/caseSetup/shapes new file mode 100644 index 00000000..d08fdf86 --- /dev/null +++ b/benchmarks/rotatingDrum_2mParticles/caseSetup/shapes @@ -0,0 +1,15 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ + +objectName shapes; +objectType dictionary; +fileFormat ASCII; +/*---------------------------------------------------------------------------*/ + +names (glassBead); // names of shapes + +diameters (0.003); // diameter of shapes + +materials (glassMat); // material names for shapes diff --git a/benchmarks/rotatingDrum_2mParticles/cleanThisCase b/benchmarks/rotatingDrum_2mParticles/cleanThisCase new file mode 100755 index 00000000..8a0ab919 --- /dev/null +++ b/benchmarks/rotatingDrum_2mParticles/cleanThisCase @@ -0,0 +1,7 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # Run from this directory + +ls | grep -P "^(([0-9]+\.?[0-9]*)|(\.[0-9]+))$" | xargs -d"\n" rm -rf +rm -rf VTK + +#------------------------------------------------------------------------------ diff --git a/benchmarks/rotatingDrum_2mParticles/runThisCase b/benchmarks/rotatingDrum_2mParticles/runThisCase new file mode 100755 index 00000000..c48d71fe --- /dev/null +++ b/benchmarks/rotatingDrum_2mParticles/runThisCase @@ -0,0 +1,21 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # Run from this directory +echo "\n<--------------------------------------------------------------------->" +echo "1) Creating particles" +echo "<--------------------------------------------------------------------->\n" +particlesPhasicFlow + +echo "\n<--------------------------------------------------------------------->" +echo "2) Creating geometry" +echo "<--------------------------------------------------------------------->\n" +geometryPhasicFlow + +echo "\n<--------------------------------------------------------------------->" +echo "3) Running the case" +echo "<--------------------------------------------------------------------->\n" +sphereGranFlow + + + + +#------------------------------------------------------------------------------ diff --git a/benchmarks/rotatingDrum_2mParticles/settings/domainDict b/benchmarks/rotatingDrum_2mParticles/settings/domainDict new file mode 100644 index 00000000..1b4718fd --- /dev/null +++ b/benchmarks/rotatingDrum_2mParticles/settings/domainDict @@ -0,0 +1,50 @@ +/* -------------------------------*- 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.2 -0.2 0.0); + max ( 0.2 0.2 1.2); +} + +boundaries +{ + neighborListUpdateInterval 200; + + updateInterval 20; + + left + { + type exit; // other options: periodic, reflective + } + + right + { + type exit; // other options: periodic, reflective + } + + bottom + { + type exit; // other options: periodic, reflective + } + + top + { + type exit; // other options: periodic, reflective + } + + rear + { + type exit; // other options: periodic, reflective + } + + front + { + type exit; // other options: periodic, reflective + } +} diff --git a/benchmarks/rotatingDrum_2mParticles/settings/geometryDict b/benchmarks/rotatingDrum_2mParticles/settings/geometryDict new file mode 100644 index 00000000..d9c08764 --- /dev/null +++ b/benchmarks/rotatingDrum_2mParticles/settings/geometryDict @@ -0,0 +1,86 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ + +objectName geometryDict; +objectType dictionary; +fileFormat ASCII; + +motionModel rotatingAxis; // motion model: rotating object around an axis + +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.256; // rotation speed (rad/s) => 12 rpm + } +} + +surfaces +{ + cylinder + { + type cylinderWall; // type of the wall + + p1 (0.0 0.0 0.0); // begin point of cylinder axis + + p2 (0.0 0.0 1.2); // end point of cylinder axis + + radius1 0.2; // radius at p1 + + radius2 0.2; // radius at p2 + + resolution 24; // number of divisions + + material wallMat; // material name of this wall + + motion rotAxis; // motion component name + } + + /* + This is a plane wall at the rear end of cylinder + */ + + wall1 + { + type planeWall; // type of the wall + + p1 (-0.2 -0.2 0.0); // first point of the wall + + p2 ( 0.2 -0.2 0.0); // second point + + p3 ( 0.2 0.2 0.0); // third point + + p4 (-0.2 0.2 0.0); // fourth point + + material wallMat; // material name of the wall + + motion rotAxis; // motion component name + } + + /* + This is a plane wall at the front end of cylinder + */ + + wall2 + { + type planeWall; // type of the wall + + p1 (-0.2 -0.2 1.2); // first point of the wall + + p2 ( 0.2 -0.2 1.2); // second point + + p3 ( 0.2 0.2 1.2); // third point + + p4 (-0.2 0.2 1.2); // fourth point + + material wallMat; // material name of the wall + + motion rotAxis; // motion component name + } +} diff --git a/benchmarks/rotatingDrum_2mParticles/settings/particlesDict b/benchmarks/rotatingDrum_2mParticles/settings/particlesDict new file mode 100644 index 00000000..675de3cb --- /dev/null +++ b/benchmarks/rotatingDrum_2mParticles/settings/particlesDict @@ -0,0 +1,47 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ + +objectName particlesDict; +objectType dictionary; +fileFormat ASCII; + +setFields +{ + defaultValue + { + velocity realx3 (0 0 0); // linear velocity (m/s) + acceleration realx3 (0 0 0); // linear acceleration (m/s2) + rotVelocity realx3 (0 0 0); // rotational velocity (rad/s) + shapeName word glassBead; // name of the particle shape + } + + selectors + {} +} + +positionParticles +{ + method ordered; + + orderedInfo + { + diameter 0.003; // minimum space between centers of particles + + numPoints 2000000; // number of particles in the simulation + + axisOrder (z x y); // axis order for filling the space with particles + } + + regionType cylinder; // other options: box and sphere + + cylinderInfo // cylinder for positioning particles + { + p1 (0.0 0.0 0.01); // lower corner point of the box + + p2 (0.0 0.0 1.19); // upper corner point of the box + + radius 0.195; // radius of cylinder + } +} diff --git a/benchmarks/rotatingDrum_2mParticles/settings/settingsDict b/benchmarks/rotatingDrum_2mParticles/settings/settingsDict new file mode 100644 index 00000000..b53afca8 --- /dev/null +++ b/benchmarks/rotatingDrum_2mParticles/settings/settingsDict @@ -0,0 +1,34 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ +objectName settingsDict; +objectType dictionary; +fileFormat ASCII; +/*---------------------------------------------------------------------------*/ +run rotatingDrum_2mParticles; + +dt 0.00001; // time step for integration (s) + +startTime 0; // start time for simulation + +endTime 4; // end time for simulation + +saveInterval 0.2; // time interval for saving the simulation + +timePrecision 5; // maximum number of digits for time folder + +g (0 -9.8 0); // gravity vector (m/s2) + +includeObjects (diameter); // save necessary (i.e., required) data on disk + +// exclude unnecessary data from saving on disk +excludeObjects (rVelocity.dy1 pStructPosition.dy1 pStructVelocity.dy1); + +integrationMethod AdamsBashforth2; // integration method + +writeFormat binary; // data writting format (ascii or binary) + +timersReport Yes; + +timersReportInterval 0.01; diff --git a/benchmarks/rotatingDrum_4mParticles/caseSetup/interaction b/benchmarks/rotatingDrum_4mParticles/caseSetup/interaction new file mode 100644 index 00000000..4ef2c32f --- /dev/null +++ b/benchmarks/rotatingDrum_4mParticles/caseSetup/interaction @@ -0,0 +1,60 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ + +objectName interaction; +objectType dictionary; +fileFormat ASCII; + +/*---------------------------------------------------------------------------*/ + +materials (glassMat wallMat); // a list of materials names + +densities (2500.0 2500); // density of materials [kg/m3] + +contactListType sortedContactList; + +contactSearch +{ + method NBS; + + updateInterval 20; + + sizeRatio 1.1; + + cellExtent 0.55; + + adjustableBox Yes; +} + +model +{ + contactForceModel nonLinearLimited; + + rollingFrictionModel normal; + + /* + Property (glassMat-glassMat glassMat-wallMat + wallMat-wallMat); + */ + + Yeff (1.0e6 1.0e6 + 1.0e6); // Young modulus [Pa] + + Geff (0.8e6 0.8e6 + 0.8e6); // Shear modulus [Pa] + + nu (0.25 0.25 + 0.25); // Poisson's ratio [-] + + en (0.97 0.85 + 1.00); // coefficient of normal restitution + + mu (0.65 0.65 + 0.65); // dynamic friction + + mur (0.1 0.1 + 0.1); // rolling friction +} + diff --git a/benchmarks/rotatingDrum_4mParticles/caseSetup/shapes b/benchmarks/rotatingDrum_4mParticles/caseSetup/shapes new file mode 100644 index 00000000..d08fdf86 --- /dev/null +++ b/benchmarks/rotatingDrum_4mParticles/caseSetup/shapes @@ -0,0 +1,15 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ + +objectName shapes; +objectType dictionary; +fileFormat ASCII; +/*---------------------------------------------------------------------------*/ + +names (glassBead); // names of shapes + +diameters (0.003); // diameter of shapes + +materials (glassMat); // material names for shapes diff --git a/benchmarks/rotatingDrum_4mParticles/cleanThisCase b/benchmarks/rotatingDrum_4mParticles/cleanThisCase new file mode 100755 index 00000000..8a0ab919 --- /dev/null +++ b/benchmarks/rotatingDrum_4mParticles/cleanThisCase @@ -0,0 +1,7 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # Run from this directory + +ls | grep -P "^(([0-9]+\.?[0-9]*)|(\.[0-9]+))$" | xargs -d"\n" rm -rf +rm -rf VTK + +#------------------------------------------------------------------------------ diff --git a/benchmarks/rotatingDrum_4mParticles/runThisCase b/benchmarks/rotatingDrum_4mParticles/runThisCase new file mode 100755 index 00000000..c48d71fe --- /dev/null +++ b/benchmarks/rotatingDrum_4mParticles/runThisCase @@ -0,0 +1,21 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # Run from this directory +echo "\n<--------------------------------------------------------------------->" +echo "1) Creating particles" +echo "<--------------------------------------------------------------------->\n" +particlesPhasicFlow + +echo "\n<--------------------------------------------------------------------->" +echo "2) Creating geometry" +echo "<--------------------------------------------------------------------->\n" +geometryPhasicFlow + +echo "\n<--------------------------------------------------------------------->" +echo "3) Running the case" +echo "<--------------------------------------------------------------------->\n" +sphereGranFlow + + + + +#------------------------------------------------------------------------------ diff --git a/benchmarks/rotatingDrum_4mParticles/settings/domainDict b/benchmarks/rotatingDrum_4mParticles/settings/domainDict new file mode 100644 index 00000000..b92756a2 --- /dev/null +++ b/benchmarks/rotatingDrum_4mParticles/settings/domainDict @@ -0,0 +1,50 @@ +/* -------------------------------*- 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.2 -0.2 0.0); + max ( 0.2 0.2 1.6); +} + +boundaries +{ + neighborListUpdateInterval 200; + + updateInterval 20; + + left + { + type exit; // other options: periodic, reflective + } + + right + { + type exit; // other options: periodic, reflective + } + + bottom + { + type exit; // other options: periodic, reflective + } + + top + { + type exit; // other options: periodic, reflective + } + + rear + { + type exit; // other options: periodic, reflective + } + + front + { + type exit; // other options: periodic, reflective + } +} diff --git a/benchmarks/rotatingDrum_4mParticles/settings/geometryDict b/benchmarks/rotatingDrum_4mParticles/settings/geometryDict new file mode 100644 index 00000000..97c513c8 --- /dev/null +++ b/benchmarks/rotatingDrum_4mParticles/settings/geometryDict @@ -0,0 +1,86 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ + +objectName geometryDict; +objectType dictionary; +fileFormat ASCII; + +motionModel rotatingAxis; // motion model: rotating object around an axis + +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.256; // rotation speed (rad/s) => 12 rpm + } +} + +surfaces +{ + cylinder + { + type cylinderWall; // type of the wall + + p1 (0.0 0.0 0.0); // begin point of cylinder axis + + p2 (0.0 0.0 1.6); // end point of cylinder axis + + radius1 0.2; // radius at p1 + + radius2 0.2; // radius at p2 + + resolution 24; // number of divisions + + material wallMat; // material name of this wall + + motion rotAxis; // motion component name + } + + /* + This is a plane wall at the rear end of cylinder + */ + + wall1 + { + type planeWall; // type of the wall + + p1 (-0.2 -0.2 0.0); // first point of the wall + + p2 ( 0.2 -0.2 0.0); // second point + + p3 ( 0.2 0.2 0.0); // third point + + p4 (-0.2 0.2 0.0); // fourth point + + material wallMat; // material name of the wall + + motion rotAxis; // motion component name + } + + /* + This is a plane wall at the front end of cylinder + */ + + wall2 + { + type planeWall; // type of the wall + + p1 (-0.2 -0.2 1.6); // first point of the wall + + p2 ( 0.2 -0.2 1.6); // second point + + p3 ( 0.2 0.2 1.6); // third point + + p4 (-0.2 0.2 1.6); // fourth point + + material wallMat; // material name of the wall + + motion rotAxis; // motion component name + } +} diff --git a/benchmarks/rotatingDrum_4mParticles/settings/particlesDict b/benchmarks/rotatingDrum_4mParticles/settings/particlesDict new file mode 100644 index 00000000..0876c7cc --- /dev/null +++ b/benchmarks/rotatingDrum_4mParticles/settings/particlesDict @@ -0,0 +1,47 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ + +objectName particlesDict; +objectType dictionary; +fileFormat ASCII; + +setFields +{ + defaultValue + { + velocity realx3 (0 0 0); // linear velocity (m/s) + acceleration realx3 (0 0 0); // linear acceleration (m/s2) + rotVelocity realx3 (0 0 0); // rotational velocity (rad/s) + shapeName word glassBead; // name of the particle shape + } + + selectors + {} +} + +positionParticles +{ + method ordered; + + orderedInfo + { + diameter 0.003; // minimum space between centers of particles + + numPoints 4000000; // number of particles in the simulation + + axisOrder (z x y); // axis order for filling the space with particles + } + + regionType cylinder; // other options: box and sphere + + cylinderInfo // cylinder for positioning particles + { + p1 (0.0 0.0 0.01); // lower corner point of the box + + p2 (0.0 0.0 1.59); // upper corner point of the box + + radius 0.195; // radius of cylinder + } +} diff --git a/benchmarks/rotatingDrum_4mParticles/settings/settingsDict b/benchmarks/rotatingDrum_4mParticles/settings/settingsDict new file mode 100644 index 00000000..67cbee31 --- /dev/null +++ b/benchmarks/rotatingDrum_4mParticles/settings/settingsDict @@ -0,0 +1,34 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ +objectName settingsDict; +objectType dictionary; +fileFormat ASCII; +/*---------------------------------------------------------------------------*/ +run rotatingDrum_4mParticles; + +dt 0.00001; // time step for integration (s) + +startTime 0; // start time for simulation + +endTime 4; // end time for simulation + +saveInterval 0.2; // time interval for saving the simulation + +timePrecision 5; // maximum number of digits for time folder + +g (0 -9.8 0); // gravity vector (m/s2) + +includeObjects (diameter); // save necessary (i.e., required) data on disk + +// exclude unnecessary data from saving on disk +excludeObjects (rVelocity.dy1 pStructPosition.dy1 pStructVelocity.dy1); + +integrationMethod AdamsBashforth2; // integration method + +writeFormat binary; // data writting format (ascii or binary) + +timersReport Yes; + +timersReportInterval 0.01; diff --git a/benchmarks/rotatingDrum_500kParticles/caseSetup/interaction b/benchmarks/rotatingDrum_500kParticles/caseSetup/interaction new file mode 100644 index 00000000..4ef2c32f --- /dev/null +++ b/benchmarks/rotatingDrum_500kParticles/caseSetup/interaction @@ -0,0 +1,60 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ + +objectName interaction; +objectType dictionary; +fileFormat ASCII; + +/*---------------------------------------------------------------------------*/ + +materials (glassMat wallMat); // a list of materials names + +densities (2500.0 2500); // density of materials [kg/m3] + +contactListType sortedContactList; + +contactSearch +{ + method NBS; + + updateInterval 20; + + sizeRatio 1.1; + + cellExtent 0.55; + + adjustableBox Yes; +} + +model +{ + contactForceModel nonLinearLimited; + + rollingFrictionModel normal; + + /* + Property (glassMat-glassMat glassMat-wallMat + wallMat-wallMat); + */ + + Yeff (1.0e6 1.0e6 + 1.0e6); // Young modulus [Pa] + + Geff (0.8e6 0.8e6 + 0.8e6); // Shear modulus [Pa] + + nu (0.25 0.25 + 0.25); // Poisson's ratio [-] + + en (0.97 0.85 + 1.00); // coefficient of normal restitution + + mu (0.65 0.65 + 0.65); // dynamic friction + + mur (0.1 0.1 + 0.1); // rolling friction +} + diff --git a/benchmarks/rotatingDrum_500kParticles/caseSetup/shapes b/benchmarks/rotatingDrum_500kParticles/caseSetup/shapes new file mode 100644 index 00000000..962433e2 --- /dev/null +++ b/benchmarks/rotatingDrum_500kParticles/caseSetup/shapes @@ -0,0 +1,15 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ + +objectName shapes; +objectType dictionary; +fileFormat ASCII; +/*---------------------------------------------------------------------------*/ + +names (glassBead); // names of shapes + +diameters (0.005); // diameter of shapes + +materials (glassMat); // material names for shapes diff --git a/benchmarks/rotatingDrum_500kParticles/cleanThisCase b/benchmarks/rotatingDrum_500kParticles/cleanThisCase new file mode 100755 index 00000000..8a0ab919 --- /dev/null +++ b/benchmarks/rotatingDrum_500kParticles/cleanThisCase @@ -0,0 +1,7 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # Run from this directory + +ls | grep -P "^(([0-9]+\.?[0-9]*)|(\.[0-9]+))$" | xargs -d"\n" rm -rf +rm -rf VTK + +#------------------------------------------------------------------------------ diff --git a/benchmarks/rotatingDrum_500kParticles/runThisCase b/benchmarks/rotatingDrum_500kParticles/runThisCase new file mode 100755 index 00000000..c48d71fe --- /dev/null +++ b/benchmarks/rotatingDrum_500kParticles/runThisCase @@ -0,0 +1,21 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # Run from this directory +echo "\n<--------------------------------------------------------------------->" +echo "1) Creating particles" +echo "<--------------------------------------------------------------------->\n" +particlesPhasicFlow + +echo "\n<--------------------------------------------------------------------->" +echo "2) Creating geometry" +echo "<--------------------------------------------------------------------->\n" +geometryPhasicFlow + +echo "\n<--------------------------------------------------------------------->" +echo "3) Running the case" +echo "<--------------------------------------------------------------------->\n" +sphereGranFlow + + + + +#------------------------------------------------------------------------------ diff --git a/benchmarks/rotatingDrum_500kParticles/settings/domainDict b/benchmarks/rotatingDrum_500kParticles/settings/domainDict new file mode 100644 index 00000000..ec704467 --- /dev/null +++ b/benchmarks/rotatingDrum_500kParticles/settings/domainDict @@ -0,0 +1,50 @@ +/* -------------------------------*- 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.2 -0.2 0.0); + max ( 0.2 0.2 0.8); +} + +boundaries +{ + neighborListUpdateInterval 200; + + updateInterval 20; + + left + { + type exit; // other options: periodic, reflective + } + + right + { + type exit; // other options: periodic, reflective + } + + bottom + { + type exit; // other options: periodic, reflective + } + + top + { + type exit; // other options: periodic, reflective + } + + rear + { + type exit; // other options: periodic, reflective + } + + front + { + type exit; // other options: periodic, reflective + } +} diff --git a/benchmarks/rotatingDrum_500kParticles/settings/geometryDict b/benchmarks/rotatingDrum_500kParticles/settings/geometryDict new file mode 100644 index 00000000..72cc32f6 --- /dev/null +++ b/benchmarks/rotatingDrum_500kParticles/settings/geometryDict @@ -0,0 +1,86 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ + +objectName geometryDict; +objectType dictionary; +fileFormat ASCII; + +motionModel rotatingAxis; // motion model: rotating object around an axis + +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.256; // rotation speed (rad/s) => 12 rpm + } +} + +surfaces +{ + 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.8); // end point of cylinder axis + + radius1 0.2; // radius at p1 + + radius2 0.2; // radius at p2 + + resolution 24; // number of divisions + + material wallMat; // material name of this wall + + motion rotAxis; // motion component name + } + + /* + This is a plane wall at the rear end of cylinder + */ + + wall1 + { + type planeWall; // type of the wall + + p1 (-0.2 -0.2 0.0); // first point of the wall + + p2 ( 0.2 -0.2 0.0); // second point + + p3 ( 0.2 0.2 0.0); // third point + + p4 (-0.2 0.2 0.0); // fourth point + + material wallMat; // material name of the wall + + motion rotAxis; // motion component name + } + + /* + This is a plane wall at the front end of cylinder + */ + + wall2 + { + type planeWall; // type of the wall + + p1 (-0.2 -0.2 0.8); // first point of the wall + + p2 ( 0.2 -0.2 0.8); // second point + + p3 ( 0.2 0.2 0.8); // third point + + p4 (-0.2 0.2 0.8); // fourth point + + material wallMat; // material name of the wall + + motion rotAxis; // motion component name + } +} diff --git a/benchmarks/rotatingDrum_500kParticles/settings/particlesDict b/benchmarks/rotatingDrum_500kParticles/settings/particlesDict new file mode 100644 index 00000000..1bc36f28 --- /dev/null +++ b/benchmarks/rotatingDrum_500kParticles/settings/particlesDict @@ -0,0 +1,47 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ + +objectName particlesDict; +objectType dictionary; +fileFormat ASCII; + +setFields +{ + defaultValue + { + velocity realx3 (0 0 0); // linear velocity (m/s) + acceleration realx3 (0 0 0); // linear acceleration (m/s2) + rotVelocity realx3 (0 0 0); // rotational velocity (rad/s) + shapeName word glassBead; // name of the particle shape + } + + selectors + {} +} + +positionParticles +{ + method ordered; + + orderedInfo + { + diameter 0.005; // minimum space between centers of particles + + numPoints 500000; // number of particles in the simulation + + axisOrder (z x y); // axis order for filling the space with particles + } + + regionType cylinder; // other options: box and sphere + + cylinderInfo // cylinder for positioning particles + { + p1 (0.0 0.0 0.01); // lower corner point of the box + + p2 (0.0 0.0 0.79); // upper corner point of the box + + radius 0.195; // radius of cylinder + } +} diff --git a/benchmarks/rotatingDrum_500kParticles/settings/settingsDict b/benchmarks/rotatingDrum_500kParticles/settings/settingsDict new file mode 100644 index 00000000..f42eacc5 --- /dev/null +++ b/benchmarks/rotatingDrum_500kParticles/settings/settingsDict @@ -0,0 +1,34 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ +objectName settingsDict; +objectType dictionary; +fileFormat ASCII; +/*---------------------------------------------------------------------------*/ +run rotatingDrum_500KParticles; + +dt 0.00001; // time step for integration (s) + +startTime 0; // start time for simulation + +endTime 4; // end time for simulation + +saveInterval 0.2; // time interval for saving the simulation + +timePrecision 5; // maximum number of digits for time folder + +g (0 -9.8 0); // gravity vector (m/s2) + +includeObjects (diameter); // save necessary (i.e., required) data on disk + +// exclude unnecessary data from saving on disk +excludeObjects (rVelocity.dy1 pStructPosition.dy1 pStructVelocity.dy1); + +integrationMethod AdamsBashforth2; // integration method + +writeFormat binary; // data writting format (ascii or binary) + +timersReport Yes; + +timersReportInterval 0.01; diff --git a/benchmarks/rotatingDrum_6mParticles/caseSetup/interaction b/benchmarks/rotatingDrum_6mParticles/caseSetup/interaction new file mode 100644 index 00000000..4ef2c32f --- /dev/null +++ b/benchmarks/rotatingDrum_6mParticles/caseSetup/interaction @@ -0,0 +1,60 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ + +objectName interaction; +objectType dictionary; +fileFormat ASCII; + +/*---------------------------------------------------------------------------*/ + +materials (glassMat wallMat); // a list of materials names + +densities (2500.0 2500); // density of materials [kg/m3] + +contactListType sortedContactList; + +contactSearch +{ + method NBS; + + updateInterval 20; + + sizeRatio 1.1; + + cellExtent 0.55; + + adjustableBox Yes; +} + +model +{ + contactForceModel nonLinearLimited; + + rollingFrictionModel normal; + + /* + Property (glassMat-glassMat glassMat-wallMat + wallMat-wallMat); + */ + + Yeff (1.0e6 1.0e6 + 1.0e6); // Young modulus [Pa] + + Geff (0.8e6 0.8e6 + 0.8e6); // Shear modulus [Pa] + + nu (0.25 0.25 + 0.25); // Poisson's ratio [-] + + en (0.97 0.85 + 1.00); // coefficient of normal restitution + + mu (0.65 0.65 + 0.65); // dynamic friction + + mur (0.1 0.1 + 0.1); // rolling friction +} + diff --git a/benchmarks/rotatingDrum_6mParticles/caseSetup/shapes b/benchmarks/rotatingDrum_6mParticles/caseSetup/shapes new file mode 100644 index 00000000..d08fdf86 --- /dev/null +++ b/benchmarks/rotatingDrum_6mParticles/caseSetup/shapes @@ -0,0 +1,15 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ + +objectName shapes; +objectType dictionary; +fileFormat ASCII; +/*---------------------------------------------------------------------------*/ + +names (glassBead); // names of shapes + +diameters (0.003); // diameter of shapes + +materials (glassMat); // material names for shapes diff --git a/benchmarks/rotatingDrum_6mParticles/cleanThisCase b/benchmarks/rotatingDrum_6mParticles/cleanThisCase new file mode 100755 index 00000000..8a0ab919 --- /dev/null +++ b/benchmarks/rotatingDrum_6mParticles/cleanThisCase @@ -0,0 +1,7 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # Run from this directory + +ls | grep -P "^(([0-9]+\.?[0-9]*)|(\.[0-9]+))$" | xargs -d"\n" rm -rf +rm -rf VTK + +#------------------------------------------------------------------------------ diff --git a/benchmarks/rotatingDrum_6mParticles/runThisCase b/benchmarks/rotatingDrum_6mParticles/runThisCase new file mode 100755 index 00000000..c48d71fe --- /dev/null +++ b/benchmarks/rotatingDrum_6mParticles/runThisCase @@ -0,0 +1,21 @@ +#!/bin/sh +cd ${0%/*} || exit 1 # Run from this directory +echo "\n<--------------------------------------------------------------------->" +echo "1) Creating particles" +echo "<--------------------------------------------------------------------->\n" +particlesPhasicFlow + +echo "\n<--------------------------------------------------------------------->" +echo "2) Creating geometry" +echo "<--------------------------------------------------------------------->\n" +geometryPhasicFlow + +echo "\n<--------------------------------------------------------------------->" +echo "3) Running the case" +echo "<--------------------------------------------------------------------->\n" +sphereGranFlow + + + + +#------------------------------------------------------------------------------ diff --git a/benchmarks/rotatingDrum_6mParticles/settings/domainDict b/benchmarks/rotatingDrum_6mParticles/settings/domainDict new file mode 100644 index 00000000..b92756a2 --- /dev/null +++ b/benchmarks/rotatingDrum_6mParticles/settings/domainDict @@ -0,0 +1,50 @@ +/* -------------------------------*- 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.2 -0.2 0.0); + max ( 0.2 0.2 1.6); +} + +boundaries +{ + neighborListUpdateInterval 200; + + updateInterval 20; + + left + { + type exit; // other options: periodic, reflective + } + + right + { + type exit; // other options: periodic, reflective + } + + bottom + { + type exit; // other options: periodic, reflective + } + + top + { + type exit; // other options: periodic, reflective + } + + rear + { + type exit; // other options: periodic, reflective + } + + front + { + type exit; // other options: periodic, reflective + } +} diff --git a/benchmarks/rotatingDrum_6mParticles/settings/geometryDict b/benchmarks/rotatingDrum_6mParticles/settings/geometryDict new file mode 100644 index 00000000..97c513c8 --- /dev/null +++ b/benchmarks/rotatingDrum_6mParticles/settings/geometryDict @@ -0,0 +1,86 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ + +objectName geometryDict; +objectType dictionary; +fileFormat ASCII; + +motionModel rotatingAxis; // motion model: rotating object around an axis + +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.256; // rotation speed (rad/s) => 12 rpm + } +} + +surfaces +{ + cylinder + { + type cylinderWall; // type of the wall + + p1 (0.0 0.0 0.0); // begin point of cylinder axis + + p2 (0.0 0.0 1.6); // end point of cylinder axis + + radius1 0.2; // radius at p1 + + radius2 0.2; // radius at p2 + + resolution 24; // number of divisions + + material wallMat; // material name of this wall + + motion rotAxis; // motion component name + } + + /* + This is a plane wall at the rear end of cylinder + */ + + wall1 + { + type planeWall; // type of the wall + + p1 (-0.2 -0.2 0.0); // first point of the wall + + p2 ( 0.2 -0.2 0.0); // second point + + p3 ( 0.2 0.2 0.0); // third point + + p4 (-0.2 0.2 0.0); // fourth point + + material wallMat; // material name of the wall + + motion rotAxis; // motion component name + } + + /* + This is a plane wall at the front end of cylinder + */ + + wall2 + { + type planeWall; // type of the wall + + p1 (-0.2 -0.2 1.6); // first point of the wall + + p2 ( 0.2 -0.2 1.6); // second point + + p3 ( 0.2 0.2 1.6); // third point + + p4 (-0.2 0.2 1.6); // fourth point + + material wallMat; // material name of the wall + + motion rotAxis; // motion component name + } +} diff --git a/benchmarks/rotatingDrum_6mParticles/settings/particlesDict b/benchmarks/rotatingDrum_6mParticles/settings/particlesDict new file mode 100644 index 00000000..dcc22b7b --- /dev/null +++ b/benchmarks/rotatingDrum_6mParticles/settings/particlesDict @@ -0,0 +1,47 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ + +objectName particlesDict; +objectType dictionary; +fileFormat ASCII; + +setFields +{ + defaultValue + { + velocity realx3 (0 0 0); // linear velocity (m/s) + acceleration realx3 (0 0 0); // linear acceleration (m/s2) + rotVelocity realx3 (0 0 0); // rotational velocity (rad/s) + shapeName word glassBead; // name of the particle shape + } + + selectors + {} +} + +positionParticles +{ + method ordered; + + orderedInfo + { + diameter 0.003; // minimum space between centers of particles + + numPoints 6000000; // number of particles in the simulation + + axisOrder (z x y); // axis order for filling the space with particles + } + + regionType cylinder; // other options: box and sphere + + cylinderInfo // cylinder for positioning particles + { + p1 (0.0 0.0 0.01); // lower corner point of the box + + p2 (0.0 0.0 1.59); // upper corner point of the box + + radius 0.195; // radius of cylinder + } +} diff --git a/benchmarks/rotatingDrum_6mParticles/settings/settingsDict b/benchmarks/rotatingDrum_6mParticles/settings/settingsDict new file mode 100644 index 00000000..67cbee31 --- /dev/null +++ b/benchmarks/rotatingDrum_6mParticles/settings/settingsDict @@ -0,0 +1,34 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ +objectName settingsDict; +objectType dictionary; +fileFormat ASCII; +/*---------------------------------------------------------------------------*/ +run rotatingDrum_4mParticles; + +dt 0.00001; // time step for integration (s) + +startTime 0; // start time for simulation + +endTime 4; // end time for simulation + +saveInterval 0.2; // time interval for saving the simulation + +timePrecision 5; // maximum number of digits for time folder + +g (0 -9.8 0); // gravity vector (m/s2) + +includeObjects (diameter); // save necessary (i.e., required) data on disk + +// exclude unnecessary data from saving on disk +excludeObjects (rVelocity.dy1 pStructPosition.dy1 pStructVelocity.dy1); + +integrationMethod AdamsBashforth2; // integration method + +writeFormat binary; // data writting format (ascii or binary) + +timersReport Yes; + +timersReportInterval 0.01;