From 5a00361df68bb31d70bd5534c4241d8ac59ed3b9 Mon Sep 17 00:00:00 2001 From: alireza Hosseini Date: Sun, 17 Nov 2024 14:59:58 +0330 Subject: [PATCH] cours graining tutorial added --- .../rotatingDrum/caseSetup/interaction | 56 +++++++++++++++ .../rotatingDrum/caseSetup/particleInsertion | 14 ++++ .../rotatingDrum/caseSetup/shapes | 13 ++++ .../grainGranFlow/rotatingDrum/runThisCase | 21 ++++++ .../rotatingDrum/settings/domainDict | 55 ++++++++++++++ .../rotatingDrum/settings/geometryDict | 71 +++++++++++++++++++ .../rotatingDrum/settings/particlesDict | 59 +++++++++++++++ .../rotatingDrum/settings/settingsDict | 37 ++++++++++ 8 files changed, 326 insertions(+) create mode 100755 tutorials/grainGranFlow/rotatingDrum/caseSetup/interaction create mode 100755 tutorials/grainGranFlow/rotatingDrum/caseSetup/particleInsertion create mode 100755 tutorials/grainGranFlow/rotatingDrum/caseSetup/shapes create mode 100755 tutorials/grainGranFlow/rotatingDrum/runThisCase create mode 100644 tutorials/grainGranFlow/rotatingDrum/settings/domainDict create mode 100644 tutorials/grainGranFlow/rotatingDrum/settings/geometryDict create mode 100644 tutorials/grainGranFlow/rotatingDrum/settings/particlesDict create mode 100644 tutorials/grainGranFlow/rotatingDrum/settings/settingsDict diff --git a/tutorials/grainGranFlow/rotatingDrum/caseSetup/interaction b/tutorials/grainGranFlow/rotatingDrum/caseSetup/interaction new file mode 100755 index 00000000..8a75854b --- /dev/null +++ b/tutorials/grainGranFlow/rotatingDrum/caseSetup/interaction @@ -0,0 +1,56 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ +objectName interaction; +objectType dicrionary; +fileFormat ASCII; +/*---------------------------------------------------------------------------*/ + +materials (prop1); // a list of materials names +densities (2500.0); // density of materials [kg/m3] + +contactListType sortedContactList; + +model +{ + contactForceModel cGRelativeLinearLimited; // cGAbsoluteLinearLimited or cGRelativeLinearLimited + + rollingFrictionModel normal; + + grainDissipationModel none; // simplified or KTGF or none + + Yeff (1.0e6); // Young modulus [Pa] + + Geff (0.8e6); // Shear modulus [Pa] + + nu (0.25); // Poisson's ratio [-] + + en (0.8); // coefficient of normal restitution + + et (1.0); // coefficient of tangential restitution + + mu (0.3); // dynamic friction + + mur (0.1); // rolling friction + + kn (1050); + + kt (800); + + additionalDissipationModel GB; + + +} + +contactSearch +{ + method NBS; // method for broad search particle-particle + + + updateInterval 10; + sizeRatio 1.1; + cellExtent 0.55; + adjustableBox Yes; + +} diff --git a/tutorials/grainGranFlow/rotatingDrum/caseSetup/particleInsertion b/tutorials/grainGranFlow/rotatingDrum/caseSetup/particleInsertion new file mode 100755 index 00000000..76835952 --- /dev/null +++ b/tutorials/grainGranFlow/rotatingDrum/caseSetup/particleInsertion @@ -0,0 +1,14 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ +objectName particleInsertion; +objectType dicrionary; +fileFormat ASCII; +/*---------------------------------------------------------------------------*/ + +active no; // is insertion active? + +collisionCheck No; // not implemented for yes + + diff --git a/tutorials/grainGranFlow/rotatingDrum/caseSetup/shapes b/tutorials/grainGranFlow/rotatingDrum/caseSetup/shapes new file mode 100755 index 00000000..7cddc882 --- /dev/null +++ b/tutorials/grainGranFlow/rotatingDrum/caseSetup/shapes @@ -0,0 +1,13 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ +objectName grainDict; +objectType grainShape; +fileFormat ASCII; +/*---------------------------------------------------------------------------*/ + +names (sphere1); // names of shapes +grainDiameters (0.0008); // diameter of shapes +sphereDiameters (0.0004); // diameter of shapes +materials (prop1); // material names for shapes diff --git a/tutorials/grainGranFlow/rotatingDrum/runThisCase b/tutorials/grainGranFlow/rotatingDrum/runThisCase new file mode 100755 index 00000000..695dc761 --- /dev/null +++ b/tutorials/grainGranFlow/rotatingDrum/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" +grainGranFlow + + + + +#------------------------------------------------------------------------------ diff --git a/tutorials/grainGranFlow/rotatingDrum/settings/domainDict b/tutorials/grainGranFlow/rotatingDrum/settings/domainDict new file mode 100644 index 00000000..0fc93833 --- /dev/null +++ b/tutorials/grainGranFlow/rotatingDrum/settings/domainDict @@ -0,0 +1,55 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ +objectName domainDict; +objectType dictionary; +fileFormat ASCII; +/*---------------------------------------------------------------------------*/ + + +globalBox +{ + min (-0.037 -0.037 -0.001); + max (0.037 0.037 0.026); +} + +boundaries +{ + timeControl runTime; + + neighborListUpdateInterval 0.0001; + + neighborLength 0.004; + + + left + { + type exit; + } + + right + { + type exit; + } + + bottom + { + type exit; + } + + top + { + type exit; + } + + rear + { + type exit; + } + + front + { + type exit; + } +} diff --git a/tutorials/grainGranFlow/rotatingDrum/settings/geometryDict b/tutorials/grainGranFlow/rotatingDrum/settings/geometryDict new file mode 100644 index 00000000..cdf3776a --- /dev/null +++ b/tutorials/grainGranFlow/rotatingDrum/settings/geometryDict @@ -0,0 +1,71 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ +objectName geometryDict; +objectType dictionary; +fileFormat ASCII; +/*---------------------------------------------------------------------------*/ + +// motion model: rotating object around an axis +motionModel rotatingAxis; + +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 + p1 (0.0 0.0 0.0); // begin point of cylinder axis + p2 (0.0 0.0 0.025); // end point of cylinder axis + radius1 0.036; // radius at p1 + radius2 0.036; // 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 + */ + wall1 + { + type planeWall; // type of the wall + p1 (-0.036 -0.036 0.0); // first point of the wall + p2 ( 0.036 -0.036 0.0); // second point + p3 ( 0.036 0.036 0.0); // third point + p4 (-0.036 0.036 0.0); // fourth point + material prop1; // material name of the wall + motion rotAxis; // motion component name + } + + /* + This is a plane wall at the front end of cylinder + */ + wall2 + { + type planeWall; + p1 (-0.036 -0.036 0.025); // first point of the wall + p2 ( 0.036 -0.036 0.025); // second point + p3 ( 0.036 0.036 0.025); // third point + p4 (-0.036 0.036 0.025); + material prop1; + motion rotAxis; + } + + +} + +// information for rotatingAxisMotion motion model +rotatingAxisInfo +{ + 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 0.8; // rotation speed (rad/s) + } +} diff --git a/tutorials/grainGranFlow/rotatingDrum/settings/particlesDict b/tutorials/grainGranFlow/rotatingDrum/settings/particlesDict new file mode 100644 index 00000000..2dcb6684 --- /dev/null +++ b/tutorials/grainGranFlow/rotatingDrum/settings/particlesDict @@ -0,0 +1,59 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ +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 sphere1; // name of the particle shape + } + + selectors + {} +} + +// positions particles +positionParticles +{ + method ordered; // ordered positioning + + maxNumberOfParticles 200000; // maximum number of particles in the simulation + mortonSorting Yes; // perform initial sorting based on morton code? + regionType box; + + boxInfo // box for positioning particles + { + min (-0.025 -0.025 0.001); // lower corner point of the box + max ( 0.025 0.025 0.024); // upper corner point of the box + } + + orderedInfo + { + // minimum space between centers of particles + diameter 0.001; + + // number of particles in the simulation + numPoints 50000; + + // axis order for filling the space with particles + axisOrder (x y z); + } + + + +} diff --git a/tutorials/grainGranFlow/rotatingDrum/settings/settingsDict b/tutorials/grainGranFlow/rotatingDrum/settings/settingsDict new file mode 100644 index 00000000..fe55c8cf --- /dev/null +++ b/tutorials/grainGranFlow/rotatingDrum/settings/settingsDict @@ -0,0 +1,37 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ +objectName settingsDict; +objectType dictionary; +fileFormat ASCII; +/*---------------------------------------------------------------------------*/ + +run rotatingDrumMedium; + +dt 0.000005; // time step for integration (s) + +startTime 0.0; // start time for simulation + +endTime 3.0; // end time for simulation + +saveInterval 0.05; // time interval for saving the simulation + +timePrecision 6; // maximum number of digits for time folder + +g (0 -9.8 0); // gravity vector (m/s2) + +/* + Simulation domain + every particles that goes outside this domain is deleted. +*/ + +includeObjects (diameter); + +integrationMethod AdamsBashforth2; // integration method + +writeFormat ascii; + +timersReport Yes; // report timers? + +timersReportInterval 0.01; // time interval for reporting timers