From 3aa6be6676115755d547a958be1e3fe5d3457fee Mon Sep 17 00:00:00 2001 From: wanqing0421 Date: Mon, 10 Feb 2025 23:11:33 +0800 Subject: [PATCH 1/4] A simple rapid filling --- .../rapidFilling/caseSetup/interaction | 71 +++++++ .../rapidFilling/caseSetup/particleInsertion | 54 +++++ .../rapidFilling/caseSetup/shapes | 15 ++ .../sphereGranFlow/rapidFilling/cleanThisCase | 7 + .../sphereGranFlow/rapidFilling/dataFile | 3 + .../sphereGranFlow/rapidFilling/runThisCase | 21 ++ .../rapidFilling/settings/domainDict | 65 ++++++ .../rapidFilling/settings/geometryDict | 75 +++++++ .../rapidFilling/settings/particlesDict | 58 +++++ .../rapidFilling/settings/settingsDict | 42 ++++ .../sphereGranFlow/rapidFilling/stl/belt.stl | 198 ++++++++++++++++++ .../sphereGranFlow/rapidFilling/stl/box.stl | 198 ++++++++++++++++++ 12 files changed, 807 insertions(+) create mode 100755 tutorials/sphereGranFlow/rapidFilling/caseSetup/interaction create mode 100755 tutorials/sphereGranFlow/rapidFilling/caseSetup/particleInsertion create mode 100755 tutorials/sphereGranFlow/rapidFilling/caseSetup/shapes create mode 100755 tutorials/sphereGranFlow/rapidFilling/cleanThisCase create mode 100644 tutorials/sphereGranFlow/rapidFilling/dataFile create mode 100755 tutorials/sphereGranFlow/rapidFilling/runThisCase create mode 100755 tutorials/sphereGranFlow/rapidFilling/settings/domainDict create mode 100755 tutorials/sphereGranFlow/rapidFilling/settings/geometryDict create mode 100755 tutorials/sphereGranFlow/rapidFilling/settings/particlesDict create mode 100755 tutorials/sphereGranFlow/rapidFilling/settings/settingsDict create mode 100644 tutorials/sphereGranFlow/rapidFilling/stl/belt.stl create mode 100644 tutorials/sphereGranFlow/rapidFilling/stl/box.stl diff --git a/tutorials/sphereGranFlow/rapidFilling/caseSetup/interaction b/tutorials/sphereGranFlow/rapidFilling/caseSetup/interaction new file mode 100755 index 00000000..3ea53adf --- /dev/null +++ b/tutorials/sphereGranFlow/rapidFilling/caseSetup/interaction @@ -0,0 +1,71 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ +objectName interaction; +objectType dicrionary; +fileFormat ASCII; +/*---------------------------------------------------------------------------*/ +materials (lightMat heavyMat wallMat); // a list of materials names + +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 No; +} + +model +{ + contactForceModel nonLinearLimited; + + rollingFrictionModel normal; + + /* + + Property (lightMat-lightMat lightMat-heavyMat lightMat-wallMat + heavyMat-heavyMat heavyMat-wallMat + wallMat-wallMat ); + */ + + 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] + 0.8e6 0.8e6 + 0.8e6); + + 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 + 0.97 0.85 + 1.00); + + 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 + 0.65 0.35 + 0.35); + + mur (0.1 0.1 0.1 // rolling friction + 0.1 0.1 + 0.1); +} + + + diff --git a/tutorials/sphereGranFlow/rapidFilling/caseSetup/particleInsertion b/tutorials/sphereGranFlow/rapidFilling/caseSetup/particleInsertion new file mode 100755 index 00000000..1c70abba --- /dev/null +++ b/tutorials/sphereGranFlow/rapidFilling/caseSetup/particleInsertion @@ -0,0 +1,54 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ +objectName particleInsertion; +objectType dicrionary; +fileFormat ASCII; +/*---------------------------------------------------------------------------*/ +active No; // is insertion active -> yes or no + +checkForCollision No; // is checked -> yes or no + +/* + one layers of particles are packed +*/ + +layer0 +{ + timeControl simulationTime; + + //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) + //} + + setFields + { + velocity realx3 (0.0 0.0 -0.6); // initial velocity of inserted particles + } + + mixture + { + lightSphere 1; // mixture composition of inserted particles + } +} + + + + + diff --git a/tutorials/sphereGranFlow/rapidFilling/caseSetup/shapes b/tutorials/sphereGranFlow/rapidFilling/caseSetup/shapes new file mode 100755 index 00000000..603c28cb --- /dev/null +++ b/tutorials/sphereGranFlow/rapidFilling/caseSetup/shapes @@ -0,0 +1,15 @@ +/* -------------------------------*- 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/rapidFilling/cleanThisCase b/tutorials/sphereGranFlow/rapidFilling/cleanThisCase new file mode 100755 index 00000000..8a0ab919 --- /dev/null +++ b/tutorials/sphereGranFlow/rapidFilling/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/tutorials/sphereGranFlow/rapidFilling/dataFile b/tutorials/sphereGranFlow/rapidFilling/dataFile new file mode 100644 index 00000000..452a3c0a --- /dev/null +++ b/tutorials/sphereGranFlow/rapidFilling/dataFile @@ -0,0 +1,3 @@ +2 +0.049302 0.00425012 -0.0068537 +0.0456989 -0.0209381 -0.00786771 diff --git a/tutorials/sphereGranFlow/rapidFilling/runThisCase b/tutorials/sphereGranFlow/rapidFilling/runThisCase new file mode 100755 index 00000000..c48d71fe --- /dev/null +++ b/tutorials/sphereGranFlow/rapidFilling/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/tutorials/sphereGranFlow/rapidFilling/settings/domainDict b/tutorials/sphereGranFlow/rapidFilling/settings/domainDict new file mode 100755 index 00000000..159c33e5 --- /dev/null +++ b/tutorials/sphereGranFlow/rapidFilling/settings/domainDict @@ -0,0 +1,65 @@ +/* -------------------------------*- 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.41); + + max ( 0.33 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 + } +} + + diff --git a/tutorials/sphereGranFlow/rapidFilling/settings/geometryDict b/tutorials/sphereGranFlow/rapidFilling/settings/geometryDict new file mode 100755 index 00000000..69873d0e --- /dev/null +++ b/tutorials/sphereGranFlow/rapidFilling/settings/geometryDict @@ -0,0 +1,75 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ +objectName geometryDict; +objectType dictionary; +fileFormat ASCII; +/*---------------------------------------------------------------------------*/ +motionModel conveyorBelt; // motion model can be rotatingAxis or stationary or vibrating + +conveyorBeltInfo +{ + conveyorBelt1 + { + tangentVelocity (0.5 0 0); + } +} + +surfaces +{ + cylinderShell + { + type cylinderWall; // other options: cuboidWall and planeWall + + 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; // other options: cuboidWall and planeWall + + 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 + } + + belt + { + type stlWall; // type of the wall + file belt.stl; // file name in stl folder + material wallMat; // material name of this wall + motion conveyorBelt1; // motion component name + } + + box + { + type stlWall; // type of the wall + file box.stl; // file name in stl folder + material wallMat; // material name of this wall + } +} + + + + + + diff --git a/tutorials/sphereGranFlow/rapidFilling/settings/particlesDict b/tutorials/sphereGranFlow/rapidFilling/settings/particlesDict new file mode 100755 index 00000000..fc7e32b5 --- /dev/null +++ b/tutorials/sphereGranFlow/rapidFilling/settings/particlesDict @@ -0,0 +1,58 @@ +/* -------------------------------*- 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 lightSphere; // name of the particle shape + } + + selectors + {} +} + +positionParticles // positions particles +{ + method file; // other options: empty, ordered and random + + fileInfo + { + name dataFile; // the name of the file that contains position and particle data, the data format is ASCII. The file is located at the root case folder + + numPoints 10000; + + fields ( (velocity realx3) (shapeName word) ); // (optional, it could be an empty list or omitted) list of other fields/data that should be read from the file + + commaSeparated No; // optional (default is No). if Yes, then fields are separated by a comma + } + + 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/rapidFilling/settings/settingsDict b/tutorials/sphereGranFlow/rapidFilling/settings/settingsDict new file mode 100755 index 00000000..c5b6650d --- /dev/null +++ b/tutorials/sphereGranFlow/rapidFilling/settings/settingsDict @@ -0,0 +1,42 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ +objectName settingsDict; +objectType dictionary; +fileFormat ASCII; +/*---------------------------------------------------------------------------*/ +run layerdSiloFilling; + +dt 0.00005; // time step for integration (s) + +startTime 0.0; // start time for simulation + +endTime 5.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 0 -9.8); // gravity vector (m/s2) + +// save data objects that are not automatically saved on disk. + +// overrides the default behavior + +includeObjects (diameter); + +// exclude unnecessary data from saving on disk + +excludeObjects (rVelocity.dy1 pStructPosition.dy1 pStructVelocity.dy1); + +integrationMethod AdamsBashforth2; // integration method + +writeFormat ascii; // data writting format (ascii or binary) + +timersReport Yes; // report timers + +timersReportInterval 0.01; // time interval for reporting timers + + + diff --git a/tutorials/sphereGranFlow/rapidFilling/stl/belt.stl b/tutorials/sphereGranFlow/rapidFilling/stl/belt.stl new file mode 100644 index 00000000..6ab0e13b --- /dev/null +++ b/tutorials/sphereGranFlow/rapidFilling/stl/belt.stl @@ -0,0 +1,198 @@ +solid + facet normal -1.000000 0.000000 0.000000 + outer loop + vertex -0.1 0.045 -0.145 + vertex -0.1 0.05 -0.12 + vertex -0.1 0.05 -0.15 + endloop + endfacet + facet normal -1.000000 0.000000 0.000000 + outer loop + vertex -0.1 0.045 -0.145 + vertex -0.1 0.045 -0.12 + vertex -0.1 0.05 -0.12 + endloop + endfacet + facet normal -1.000000 0.000000 0.000000 + outer loop + vertex -0.1 0.05 -0.15 + vertex -0.1 -0.05 -0.15 + vertex -0.1 0.045 -0.145 + endloop + endfacet + facet normal -1.000000 0.000000 0.000000 + outer loop + vertex -0.1 -0.05 -0.15 + vertex -0.1 -0.045 -0.145 + vertex -0.1 0.045 -0.145 + endloop + endfacet + facet normal -1.000000 0.000000 0.000000 + outer loop + vertex -0.1 -0.045 -0.145 + vertex -0.1 -0.05 -0.12 + vertex -0.1 -0.045 -0.12 + endloop + endfacet + facet normal -1.000000 0.000000 0.000000 + outer loop + vertex -0.1 -0.05 -0.15 + vertex -0.1 -0.05 -0.12 + vertex -0.1 -0.045 -0.145 + endloop + endfacet + facet normal 0.000000 0.000000 -1.000000 + outer loop + vertex -0.1 -0.05 -0.15 + vertex -0.1 0.05 -0.15 + vertex 0.2 0.05 -0.15 + endloop + endfacet + facet normal 0.000000 0.000000 -1.000000 + outer loop + vertex -0.1 -0.05 -0.15 + vertex 0.2 0.05 -0.15 + vertex 0.2 -0.05 -0.15 + endloop + endfacet + facet normal 1.000000 0.000000 0.000000 + outer loop + vertex 0.2 0.05 -0.12 + vertex 0.2 0.045 -0.145 + vertex 0.2 0.05 -0.15 + endloop + endfacet + facet normal 1.000000 -0.000000 0.000000 + outer loop + vertex 0.2 0.045 -0.12 + vertex 0.2 0.045 -0.145 + vertex 0.2 0.05 -0.12 + endloop + endfacet + facet normal 1.000000 0.000000 0.000000 + outer loop + vertex 0.2 -0.05 -0.15 + vertex 0.2 0.05 -0.15 + vertex 0.2 0.045 -0.145 + endloop + endfacet + facet normal 1.000000 -0.000000 0.000000 + outer loop + vertex 0.2 -0.045 -0.145 + vertex 0.2 -0.05 -0.15 + vertex 0.2 0.045 -0.145 + endloop + endfacet + facet normal 1.000000 -0.000000 0.000000 + outer loop + vertex 0.2 -0.05 -0.12 + vertex 0.2 -0.045 -0.145 + vertex 0.2 -0.045 -0.12 + endloop + endfacet + facet normal 1.000000 0.000000 0.000000 + outer loop + vertex 0.2 -0.05 -0.12 + vertex 0.2 -0.05 -0.15 + vertex 0.2 -0.045 -0.145 + endloop + endfacet + facet normal 0.000000 -1.000000 0.000000 + outer loop + vertex -0.1 -0.05 -0.15 + vertex 0.2 -0.05 -0.15 + vertex 0.2 -0.05 -0.12 + endloop + endfacet + facet normal 0.000000 -1.000000 0.000000 + outer loop + vertex -0.1 -0.05 -0.15 + vertex 0.2 -0.05 -0.12 + vertex -0.1 -0.05 -0.12 + endloop + endfacet + facet normal 0.000000 1.000000 0.000000 + outer loop + vertex 0.2 0.05 -0.12 + vertex -0.1 0.05 -0.15 + vertex -0.1 0.05 -0.12 + endloop + endfacet + facet normal 0.000000 1.000000 -0.000000 + outer loop + vertex 0.2 0.05 -0.15 + vertex -0.1 0.05 -0.15 + vertex 0.2 0.05 -0.12 + endloop + endfacet + facet normal 0.000000 0.000000 1.000000 + outer loop + vertex -0.1 -0.05 -0.12 + vertex 0.2 -0.05 -0.12 + vertex 0.2 -0.045 -0.12 + endloop + endfacet + facet normal -0.000000 0.000000 1.000000 + outer loop + vertex -0.1 -0.045 -0.12 + vertex -0.1 -0.05 -0.12 + vertex 0.2 -0.045 -0.12 + endloop + endfacet + facet normal 0.000000 0.000000 1.000000 + outer loop + vertex -0.1 0.045 -0.12 + vertex 0.2 0.045 -0.12 + vertex 0.2 0.05 -0.12 + endloop + endfacet + facet normal -0.000000 0.000000 1.000000 + outer loop + vertex -0.1 0.05 -0.12 + vertex -0.1 0.045 -0.12 + vertex 0.2 0.05 -0.12 + endloop + endfacet + facet normal 0.000000 -1.000000 0.000000 + outer loop + vertex -0.1 0.045 -0.145 + vertex 0.2 0.045 -0.145 + vertex 0.2 0.045 -0.12 + endloop + endfacet + facet normal 0.000000 -1.000000 0.000000 + outer loop + vertex -0.1 0.045 -0.145 + vertex 0.2 0.045 -0.12 + vertex -0.1 0.045 -0.12 + endloop + endfacet + facet normal 0.000000 0.000000 1.000000 + outer loop + vertex -0.1 -0.045 -0.145 + vertex 0.2 -0.045 -0.145 + vertex 0.2 0.045 -0.145 + endloop + endfacet + facet normal -0.000000 0.000000 1.000000 + outer loop + vertex -0.1 0.045 -0.145 + vertex -0.1 -0.045 -0.145 + vertex 0.2 0.045 -0.145 + endloop + endfacet + facet normal 0.000000 1.000000 -0.000000 + outer loop + vertex 0.2 -0.045 -0.145 + vertex -0.1 -0.045 -0.12 + vertex 0.2 -0.045 -0.12 + endloop + endfacet + facet normal 0.000000 1.000000 0.000000 + outer loop + vertex 0.2 -0.045 -0.145 + vertex -0.1 -0.045 -0.145 + vertex -0.1 -0.045 -0.12 + endloop + endfacet +endsolid diff --git a/tutorials/sphereGranFlow/rapidFilling/stl/box.stl b/tutorials/sphereGranFlow/rapidFilling/stl/box.stl new file mode 100644 index 00000000..3b0bb013 --- /dev/null +++ b/tutorials/sphereGranFlow/rapidFilling/stl/box.stl @@ -0,0 +1,198 @@ +solid + facet normal -1.000000 0.000000 0.000000 + outer loop + vertex 0.182 -0.073 -0.18 + vertex 0.182 0.069 -0.18 + vertex 0.182 0.069 -0.28 + endloop + endfacet + facet normal -1.000000 0.000000 0.000000 + outer loop + vertex 0.182 -0.073 -0.18 + vertex 0.182 0.069 -0.28 + vertex 0.182 -0.073 -0.28 + endloop + endfacet + facet normal -0.000000 -1.000000 0.000000 + outer loop + vertex 0.323 -0.073 -0.18 + vertex 0.182 -0.073 -0.18 + vertex 0.182 -0.073 -0.28 + endloop + endfacet + facet normal 0.000000 -1.000000 -0.000000 + outer loop + vertex 0.323 -0.073 -0.18 + vertex 0.182 -0.073 -0.28 + vertex 0.323 -0.073 -0.28 + endloop + endfacet + facet normal 1.000000 0.000000 0.000000 + outer loop + vertex 0.323 0.069 -0.18 + vertex 0.323 -0.073 -0.18 + vertex 0.323 -0.073 -0.28 + endloop + endfacet + facet normal 1.000000 0.000000 0.000000 + outer loop + vertex 0.323 0.069 -0.18 + vertex 0.323 -0.073 -0.28 + vertex 0.323 0.069 -0.28 + endloop + endfacet + facet normal 0.000000 1.000000 0.000000 + outer loop + vertex 0.182 0.069 -0.28 + vertex 0.323 0.069 -0.18 + vertex 0.323 0.069 -0.28 + endloop + endfacet + facet normal -0.000000 1.000000 0.000000 + outer loop + vertex 0.182 0.069 -0.18 + vertex 0.323 0.069 -0.18 + vertex 0.182 0.069 -0.28 + endloop + endfacet + facet normal 0.000000 0.000000 -1.000000 + outer loop + vertex 0.182 0.069 -0.28 + vertex 0.323 0.069 -0.28 + vertex 0.182 -0.073 -0.28 + endloop + endfacet + facet normal 0.000000 0.000000 -1.000000 + outer loop + vertex 0.182 -0.073 -0.28 + vertex 0.323 0.069 -0.28 + vertex 0.323 -0.073 -0.28 + endloop + endfacet + facet normal 0.000000 0.000000 1.000000 + outer loop + vertex 0.323 -0.073 -0.18 + vertex 0.318 -0.068 -0.18 + vertex 0.187 -0.068 -0.18 + endloop + endfacet + facet normal 0.000000 0.000000 1.000000 + outer loop + vertex 0.323 -0.073 -0.18 + vertex 0.187 -0.068 -0.18 + vertex 0.182 -0.073 -0.18 + endloop + endfacet + facet normal 0.000000 0.000000 1.000000 + outer loop + vertex 0.187 0.064 -0.18 + vertex 0.182 0.069 -0.18 + vertex 0.182 -0.073 -0.18 + endloop + endfacet + facet normal 0.000000 0.000000 1.000000 + outer loop + vertex 0.187 0.064 -0.18 + vertex 0.182 -0.073 -0.18 + vertex 0.187 -0.068 -0.18 + endloop + endfacet + facet normal 0.000000 0.000000 1.000000 + outer loop + vertex 0.318 0.064 -0.18 + vertex 0.318 -0.068 -0.18 + vertex 0.323 -0.073 -0.18 + endloop + endfacet + facet normal 0.000000 0.000000 1.000000 + outer loop + vertex 0.323 0.069 -0.18 + vertex 0.318 0.064 -0.18 + vertex 0.323 -0.073 -0.18 + endloop + endfacet + facet normal 0.000000 0.000000 1.000000 + outer loop + vertex 0.323 0.069 -0.18 + vertex 0.182 0.069 -0.18 + vertex 0.187 0.064 -0.18 + endloop + endfacet + facet normal 0.000000 0.000000 1.000000 + outer loop + vertex 0.323 0.069 -0.18 + vertex 0.187 0.064 -0.18 + vertex 0.318 0.064 -0.18 + endloop + endfacet + facet normal 1.000000 0.000000 0.000000 + outer loop + vertex 0.187 0.064 -0.18 + vertex 0.187 -0.068 -0.18 + vertex 0.187 0.064 -0.275 + endloop + endfacet + facet normal 1.000000 0.000000 0.000000 + outer loop + vertex 0.187 0.064 -0.275 + vertex 0.187 -0.068 -0.18 + vertex 0.187 -0.068 -0.275 + endloop + endfacet + facet normal -0.000000 1.000000 0.000000 + outer loop + vertex 0.187 -0.068 -0.18 + vertex 0.318 -0.068 -0.18 + vertex 0.187 -0.068 -0.275 + endloop + endfacet + facet normal 0.000000 1.000000 0.000000 + outer loop + vertex 0.187 -0.068 -0.275 + vertex 0.318 -0.068 -0.18 + vertex 0.318 -0.068 -0.275 + endloop + endfacet + facet normal -1.000000 0.000000 0.000000 + outer loop + vertex 0.318 -0.068 -0.18 + vertex 0.318 0.064 -0.18 + vertex 0.318 -0.068 -0.275 + endloop + endfacet + facet normal -1.000000 0.000000 0.000000 + outer loop + vertex 0.318 -0.068 -0.275 + vertex 0.318 0.064 -0.18 + vertex 0.318 0.064 -0.275 + endloop + endfacet + facet normal -0.000000 -1.000000 -0.000000 + outer loop + vertex 0.318 0.064 -0.18 + vertex 0.187 0.064 -0.18 + vertex 0.318 0.064 -0.275 + endloop + endfacet + facet normal 0.000000 -1.000000 0.000000 + outer loop + vertex 0.318 0.064 -0.275 + vertex 0.187 0.064 -0.18 + vertex 0.187 0.064 -0.275 + endloop + endfacet + facet normal 0.000000 0.000000 1.000000 + outer loop + vertex 0.318 0.064 -0.275 + vertex 0.187 0.064 -0.275 + vertex 0.187 -0.068 -0.275 + endloop + endfacet + facet normal 0.000000 0.000000 1.000000 + outer loop + vertex 0.318 0.064 -0.275 + vertex 0.187 -0.068 -0.275 + vertex 0.318 -0.068 -0.275 + endloop + endfacet +endsolid From 29d922e3c5daa3cc635374aecce3d2440e37b64c Mon Sep 17 00:00:00 2001 From: wanqing0421 Date: Mon, 10 Feb 2025 23:12:42 +0800 Subject: [PATCH 2/4] A simple rapid filling demo --- utilities/particlesPhasicFlow/CMakeLists.txt | 1 + .../positionFile/positionFile.cpp | 82 ++++++++++++++ .../positionFile/positionFile.hpp | 100 ++++++++++++++++++ 3 files changed, 183 insertions(+) create mode 100755 utilities/particlesPhasicFlow/positionFile/positionFile.cpp create mode 100755 utilities/particlesPhasicFlow/positionFile/positionFile.hpp diff --git a/utilities/particlesPhasicFlow/CMakeLists.txt b/utilities/particlesPhasicFlow/CMakeLists.txt index 1ee6f3f8..6bea0938 100644 --- a/utilities/particlesPhasicFlow/CMakeLists.txt +++ b/utilities/particlesPhasicFlow/CMakeLists.txt @@ -4,6 +4,7 @@ particlesPhasicFlow.cpp positionParticles/positionParticles.cpp positionOrdered/positionOrdered.cpp positionRandom/positionRandom.cpp +positionFile/positionFile.cpp empty/empty.cpp ) #set(link_lib phasicFlow Kokkos::kokkos Interaction Utilities) diff --git a/utilities/particlesPhasicFlow/positionFile/positionFile.cpp b/utilities/particlesPhasicFlow/positionFile/positionFile.cpp new file mode 100755 index 00000000..039997f8 --- /dev/null +++ b/utilities/particlesPhasicFlow/positionFile/positionFile.cpp @@ -0,0 +1,82 @@ +/*------------------------------- phasicFlow --------------------------------- + O C enter of + O O E ngineering and + O O M ultiscale modeling of + OOOOOOO F luid flow +------------------------------------------------------------------------------ + Copyright (C): www.cemf.ir + email: hamid.r.norouzi AT gmail.com +------------------------------------------------------------------------------ +Licence: + This file is part of phasicFlow code. It is a free software for simulating + granular and multiphase flows. You can redistribute it and/or modify it under + the terms of GNU General Public License v3 or any other later versions. + + phasicFlow is distributed to help others in their research in the field of + granular and multiphase flows, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +-----------------------------------------------------------------------------*/ + +#include "error.hpp" +#include "dictionary.hpp" +#include "positionFile.hpp" +#include "iFstream.hpp" + +bool pFlow::positionFile::positionPointsFile() +{ + std::cout << "Reading user defined position file...."; + + position_.clear(); + + // ToDo: read position data from file. + + std::ifstream inFile(fileName_); + + inFile >> numPoints_; + + realx3 tempPoint; + + for(int i = 0; i < numPoints_; i++) + { + inFile >> tempPoint.x_ >> tempPoint.y_ >> tempPoint.z_; + position_.push_back(tempPoint); + } + + std::cout << "Done!" << std::endl; + + return true; +} + +pFlow::positionFile::positionFile +( + systemControl& control, + const dictionary& dict +) +: + positionParticles(control, dict), + poDict_ + ( + dict.subDict("fileInfo") + ), + fileName_ + ( + poDict_.getVal("name") + ), + numPoints_ + ( + poDict_.getVal("numPoints") + ), + position_ + ( + "position", + max(maxNumberOfParticles(), numPoints_), + numPoints_ , + RESERVE() + ) +{ + if(!positionPointsFile()) + { + fatalExit; + } +} \ No newline at end of file diff --git a/utilities/particlesPhasicFlow/positionFile/positionFile.hpp b/utilities/particlesPhasicFlow/positionFile/positionFile.hpp new file mode 100755 index 00000000..91b97ee8 --- /dev/null +++ b/utilities/particlesPhasicFlow/positionFile/positionFile.hpp @@ -0,0 +1,100 @@ +/*------------------------------- phasicFlow --------------------------------- + O C enter of + O O E ngineering and + O O M ultiscale modeling of + OOOOOOO F luid flow +------------------------------------------------------------------------------ + Copyright (C): www.cemf.ir + email: hamid.r.norouzi AT gmail.com +------------------------------------------------------------------------------ +Licence: + This file is part of phasicFlow code. It is a free software for simulating + granular and multiphase flows. You can redistribute it and/or modify it under + the terms of GNU General Public License v3 or any other later versions. + + phasicFlow is distributed to help others in their research in the field of + granular and multiphase flows, but WITHOUT ANY WARRANTY; without even the + implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. + +-----------------------------------------------------------------------------*/ + +#ifndef __positionFile_hpp__ +#define __positionFile_hpp__ + +#include "positionParticles.hpp" + +namespace pFlow +{ + + +class positionFile +: + public positionParticles +{ +private: + + dictionary poDict_; + + word fileName_; + + uint32 numPoints_; + + realx3Vector position_; + + bool positionPointsFile(); + +public: + + // - type Info + TypeInfo("file"); + + positionFile( + systemControl& control, + const dictionary& dict); + + // - add this class to vCtor selection table + add_vCtor( + positionParticles, + positionFile, + dictionary); + + ~positionFile() final = default; + + //// - Methods + + uint32 numPoints()const final + { + return static_cast(position_.size()); + } + + uint32 size()const final + { + return static_cast(position_.size()); + } + + real maxDiameter() const final + { + return 0; + } + + // - const access to position + const realx3Vector& position()const final + { + return position_; + } + + // - access to position + realx3Vector& position() final + { + return position_; + } + + +}; + + +} + + + +#endif // __positionFile_hpp__ From ae251598a4c09316b03b89502d0112a05f81a9b4 Mon Sep 17 00:00:00 2001 From: wanqing0421 Date: Sun, 16 Feb 2025 12:31:11 +0800 Subject: [PATCH 3/4] update rapid filling --- .../binarySystemOfParticles/runThisCase | 0 .../sphereGranFlow/rapidFilling/dataFile | 2 +- .../rapidFilling/settings/particlesDict | 6 +- .../positionFile/positionFile.cpp | 62 ++++++++++++++----- .../positionFile/positionFile.hpp | 13 ++-- 5 files changed, 59 insertions(+), 24 deletions(-) mode change 100644 => 100755 tutorials/sphereGranFlow/binarySystemOfParticles/runThisCase diff --git a/tutorials/sphereGranFlow/binarySystemOfParticles/runThisCase b/tutorials/sphereGranFlow/binarySystemOfParticles/runThisCase old mode 100644 new mode 100755 diff --git a/tutorials/sphereGranFlow/rapidFilling/dataFile b/tutorials/sphereGranFlow/rapidFilling/dataFile index 452a3c0a..4d3ebed1 100644 --- a/tutorials/sphereGranFlow/rapidFilling/dataFile +++ b/tutorials/sphereGranFlow/rapidFilling/dataFile @@ -1,3 +1,3 @@ -2 0.049302 0.00425012 -0.0068537 0.0456989 -0.0209381 -0.00786771 + diff --git a/tutorials/sphereGranFlow/rapidFilling/settings/particlesDict b/tutorials/sphereGranFlow/rapidFilling/settings/particlesDict index fc7e32b5..0566491f 100755 --- a/tutorials/sphereGranFlow/rapidFilling/settings/particlesDict +++ b/tutorials/sphereGranFlow/rapidFilling/settings/particlesDict @@ -38,12 +38,8 @@ positionParticles // positions particles fileInfo { name dataFile; // the name of the file that contains position and particle data, the data format is ASCII. The file is located at the root case folder - - numPoints 10000; - - fields ( (velocity realx3) (shapeName word) ); // (optional, it could be an empty list or omitted) list of other fields/data that should be read from the file - commaSeparated No; // optional (default is No). if Yes, then fields are separated by a comma + commaSeparated No; // optional (default is No). if Yes, then fields are separated by a comma } regionType box; // other options: cylinder and sphere diff --git a/utilities/particlesPhasicFlow/positionFile/positionFile.cpp b/utilities/particlesPhasicFlow/positionFile/positionFile.cpp index 039997f8..ebcbf7dd 100755 --- a/utilities/particlesPhasicFlow/positionFile/positionFile.cpp +++ b/utilities/particlesPhasicFlow/positionFile/positionFile.cpp @@ -21,29 +21,63 @@ Licence: #include "error.hpp" #include "dictionary.hpp" #include "positionFile.hpp" + + +#include "streams.hpp" +// #include "token.hpp" +#include "fileSystem.hpp" #include "iFstream.hpp" +#include "oFstream.hpp" bool pFlow::positionFile::positionPointsFile() { - std::cout << "Reading user defined position file...."; + REPORT(0) << "Reading user defined position file...."; position_.clear(); - // ToDo: read position data from file. - - std::ifstream inFile(fileName_); - - inFile >> numPoints_; + // Read position data from file. + iFstream is(fileName_); realx3 tempPoint; - for(int i = 0; i < numPoints_; i++) - { - inFile >> tempPoint.x_ >> tempPoint.y_ >> tempPoint.z_; + token tok; + + while (!is.eof() || !is.bad()) + { + // read position x + is >> tempPoint.x_; + + if(commaSeparated_) + { + is >> tok; + if(tok.type() != token::COMMA) + { + fatalErrorInFunction << "Error datafile format, the data not comma separated!"; + return false; + } + } + + // read position y + is >> tempPoint.y_; + + if(commaSeparated_) + { + is >> tok; + if(tok.type() != token::COMMA) + { + fatalErrorInFunction << "Error datafile format, the data not comma separated!"; + return false; + } + } + + // read position z + is >> tempPoint.z_; + + // insert position data to vector position_.push_back(tempPoint); } - std::cout << "Done!" << std::endl; + REPORT(0) << "Done!" << END_REPORT; return true; } @@ -63,15 +97,15 @@ pFlow::positionFile::positionFile ( poDict_.getVal("name") ), - numPoints_ + commaSeparated_ ( - poDict_.getVal("numPoints") + poDict_.getValOrSet("commaSeparated", Logical("Yes")) ), position_ ( "position", - max(maxNumberOfParticles(), numPoints_), - numPoints_ , + max(maxNumberOfParticles(), position_.size()), + 0, RESERVE() ) { diff --git a/utilities/particlesPhasicFlow/positionFile/positionFile.hpp b/utilities/particlesPhasicFlow/positionFile/positionFile.hpp index 91b97ee8..e2df0841 100755 --- a/utilities/particlesPhasicFlow/positionFile/positionFile.hpp +++ b/utilities/particlesPhasicFlow/positionFile/positionFile.hpp @@ -35,12 +35,14 @@ private: dictionary poDict_; - word fileName_; + // word fileName_; - uint32 numPoints_; + fileSystem fileName_; realx3Vector position_; + Logical commaSeparated_; + bool positionPointsFile(); public: @@ -76,6 +78,11 @@ public: { return 0; } + + // bool commaSeparated()const + // { + // return commaSeparated_(); + // } // - const access to position const realx3Vector& position()const final @@ -88,8 +95,6 @@ public: { return position_; } - - }; From d5b9ca4c4355e23a429be8225af577c25baa492e Mon Sep 17 00:00:00 2001 From: wanqing0421 Date: Sun, 16 Feb 2025 13:08:09 +0800 Subject: [PATCH 4/4] remove rapid filling tutorial --- .../rapidFilling/caseSetup/interaction | 71 ------- .../rapidFilling/caseSetup/particleInsertion | 54 ----- .../rapidFilling/caseSetup/shapes | 15 -- .../sphereGranFlow/rapidFilling/cleanThisCase | 7 - .../sphereGranFlow/rapidFilling/dataFile | 3 - .../sphereGranFlow/rapidFilling/runThisCase | 21 -- .../rapidFilling/settings/domainDict | 65 ------ .../rapidFilling/settings/geometryDict | 75 ------- .../rapidFilling/settings/particlesDict | 54 ----- .../rapidFilling/settings/settingsDict | 42 ---- .../sphereGranFlow/rapidFilling/stl/belt.stl | 198 ------------------ .../sphereGranFlow/rapidFilling/stl/box.stl | 198 ------------------ 12 files changed, 803 deletions(-) delete mode 100755 tutorials/sphereGranFlow/rapidFilling/caseSetup/interaction delete mode 100755 tutorials/sphereGranFlow/rapidFilling/caseSetup/particleInsertion delete mode 100755 tutorials/sphereGranFlow/rapidFilling/caseSetup/shapes delete mode 100755 tutorials/sphereGranFlow/rapidFilling/cleanThisCase delete mode 100644 tutorials/sphereGranFlow/rapidFilling/dataFile delete mode 100755 tutorials/sphereGranFlow/rapidFilling/runThisCase delete mode 100755 tutorials/sphereGranFlow/rapidFilling/settings/domainDict delete mode 100755 tutorials/sphereGranFlow/rapidFilling/settings/geometryDict delete mode 100755 tutorials/sphereGranFlow/rapidFilling/settings/particlesDict delete mode 100755 tutorials/sphereGranFlow/rapidFilling/settings/settingsDict delete mode 100644 tutorials/sphereGranFlow/rapidFilling/stl/belt.stl delete mode 100644 tutorials/sphereGranFlow/rapidFilling/stl/box.stl diff --git a/tutorials/sphereGranFlow/rapidFilling/caseSetup/interaction b/tutorials/sphereGranFlow/rapidFilling/caseSetup/interaction deleted file mode 100755 index 3ea53adf..00000000 --- a/tutorials/sphereGranFlow/rapidFilling/caseSetup/interaction +++ /dev/null @@ -1,71 +0,0 @@ -/* -------------------------------*- C++ -*--------------------------------- *\ -| phasicFlow File | -| copyright: www.cemf.ir | -\* ------------------------------------------------------------------------- */ -objectName interaction; -objectType dicrionary; -fileFormat ASCII; -/*---------------------------------------------------------------------------*/ -materials (lightMat heavyMat wallMat); // a list of materials names - -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 No; -} - -model -{ - contactForceModel nonLinearLimited; - - rollingFrictionModel normal; - - /* - - Property (lightMat-lightMat lightMat-heavyMat lightMat-wallMat - heavyMat-heavyMat heavyMat-wallMat - wallMat-wallMat ); - */ - - 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] - 0.8e6 0.8e6 - 0.8e6); - - 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 - 0.97 0.85 - 1.00); - - 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 - 0.65 0.35 - 0.35); - - mur (0.1 0.1 0.1 // rolling friction - 0.1 0.1 - 0.1); -} - - - diff --git a/tutorials/sphereGranFlow/rapidFilling/caseSetup/particleInsertion b/tutorials/sphereGranFlow/rapidFilling/caseSetup/particleInsertion deleted file mode 100755 index 1c70abba..00000000 --- a/tutorials/sphereGranFlow/rapidFilling/caseSetup/particleInsertion +++ /dev/null @@ -1,54 +0,0 @@ -/* -------------------------------*- C++ -*--------------------------------- *\ -| phasicFlow File | -| copyright: www.cemf.ir | -\* ------------------------------------------------------------------------- */ -objectName particleInsertion; -objectType dicrionary; -fileFormat ASCII; -/*---------------------------------------------------------------------------*/ -active No; // is insertion active -> yes or no - -checkForCollision No; // is checked -> yes or no - -/* - one layers of particles are packed -*/ - -layer0 -{ - timeControl simulationTime; - - //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) - //} - - setFields - { - velocity realx3 (0.0 0.0 -0.6); // initial velocity of inserted particles - } - - mixture - { - lightSphere 1; // mixture composition of inserted particles - } -} - - - - - diff --git a/tutorials/sphereGranFlow/rapidFilling/caseSetup/shapes b/tutorials/sphereGranFlow/rapidFilling/caseSetup/shapes deleted file mode 100755 index 603c28cb..00000000 --- a/tutorials/sphereGranFlow/rapidFilling/caseSetup/shapes +++ /dev/null @@ -1,15 +0,0 @@ -/* -------------------------------*- 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/rapidFilling/cleanThisCase b/tutorials/sphereGranFlow/rapidFilling/cleanThisCase deleted file mode 100755 index 8a0ab919..00000000 --- a/tutorials/sphereGranFlow/rapidFilling/cleanThisCase +++ /dev/null @@ -1,7 +0,0 @@ -#!/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/tutorials/sphereGranFlow/rapidFilling/dataFile b/tutorials/sphereGranFlow/rapidFilling/dataFile deleted file mode 100644 index 4d3ebed1..00000000 --- a/tutorials/sphereGranFlow/rapidFilling/dataFile +++ /dev/null @@ -1,3 +0,0 @@ -0.049302 0.00425012 -0.0068537 -0.0456989 -0.0209381 -0.00786771 - diff --git a/tutorials/sphereGranFlow/rapidFilling/runThisCase b/tutorials/sphereGranFlow/rapidFilling/runThisCase deleted file mode 100755 index c48d71fe..00000000 --- a/tutorials/sphereGranFlow/rapidFilling/runThisCase +++ /dev/null @@ -1,21 +0,0 @@ -#!/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/tutorials/sphereGranFlow/rapidFilling/settings/domainDict b/tutorials/sphereGranFlow/rapidFilling/settings/domainDict deleted file mode 100755 index 159c33e5..00000000 --- a/tutorials/sphereGranFlow/rapidFilling/settings/domainDict +++ /dev/null @@ -1,65 +0,0 @@ -/* -------------------------------*- 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.41); - - max ( 0.33 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 - } -} - - diff --git a/tutorials/sphereGranFlow/rapidFilling/settings/geometryDict b/tutorials/sphereGranFlow/rapidFilling/settings/geometryDict deleted file mode 100755 index 69873d0e..00000000 --- a/tutorials/sphereGranFlow/rapidFilling/settings/geometryDict +++ /dev/null @@ -1,75 +0,0 @@ -/* -------------------------------*- C++ -*--------------------------------- *\ -| phasicFlow File | -| copyright: www.cemf.ir | -\* ------------------------------------------------------------------------- */ -objectName geometryDict; -objectType dictionary; -fileFormat ASCII; -/*---------------------------------------------------------------------------*/ -motionModel conveyorBelt; // motion model can be rotatingAxis or stationary or vibrating - -conveyorBeltInfo -{ - conveyorBelt1 - { - tangentVelocity (0.5 0 0); - } -} - -surfaces -{ - cylinderShell - { - type cylinderWall; // other options: cuboidWall and planeWall - - 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; // other options: cuboidWall and planeWall - - 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 - } - - belt - { - type stlWall; // type of the wall - file belt.stl; // file name in stl folder - material wallMat; // material name of this wall - motion conveyorBelt1; // motion component name - } - - box - { - type stlWall; // type of the wall - file box.stl; // file name in stl folder - material wallMat; // material name of this wall - } -} - - - - - - diff --git a/tutorials/sphereGranFlow/rapidFilling/settings/particlesDict b/tutorials/sphereGranFlow/rapidFilling/settings/particlesDict deleted file mode 100755 index 0566491f..00000000 --- a/tutorials/sphereGranFlow/rapidFilling/settings/particlesDict +++ /dev/null @@ -1,54 +0,0 @@ -/* -------------------------------*- 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 lightSphere; // name of the particle shape - } - - selectors - {} -} - -positionParticles // positions particles -{ - method file; // other options: empty, ordered and random - - fileInfo - { - name dataFile; // the name of the file that contains position and particle data, the data format is ASCII. The file is located at the root case folder - - commaSeparated No; // optional (default is No). if Yes, then fields are separated by a comma - } - - 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/rapidFilling/settings/settingsDict b/tutorials/sphereGranFlow/rapidFilling/settings/settingsDict deleted file mode 100755 index c5b6650d..00000000 --- a/tutorials/sphereGranFlow/rapidFilling/settings/settingsDict +++ /dev/null @@ -1,42 +0,0 @@ -/* -------------------------------*- C++ -*--------------------------------- *\ -| phasicFlow File | -| copyright: www.cemf.ir | -\* ------------------------------------------------------------------------- */ -objectName settingsDict; -objectType dictionary; -fileFormat ASCII; -/*---------------------------------------------------------------------------*/ -run layerdSiloFilling; - -dt 0.00005; // time step for integration (s) - -startTime 0.0; // start time for simulation - -endTime 5.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 0 -9.8); // gravity vector (m/s2) - -// save data objects that are not automatically saved on disk. - -// overrides the default behavior - -includeObjects (diameter); - -// exclude unnecessary data from saving on disk - -excludeObjects (rVelocity.dy1 pStructPosition.dy1 pStructVelocity.dy1); - -integrationMethod AdamsBashforth2; // integration method - -writeFormat ascii; // data writting format (ascii or binary) - -timersReport Yes; // report timers - -timersReportInterval 0.01; // time interval for reporting timers - - - diff --git a/tutorials/sphereGranFlow/rapidFilling/stl/belt.stl b/tutorials/sphereGranFlow/rapidFilling/stl/belt.stl deleted file mode 100644 index 6ab0e13b..00000000 --- a/tutorials/sphereGranFlow/rapidFilling/stl/belt.stl +++ /dev/null @@ -1,198 +0,0 @@ -solid - facet normal -1.000000 0.000000 0.000000 - outer loop - vertex -0.1 0.045 -0.145 - vertex -0.1 0.05 -0.12 - vertex -0.1 0.05 -0.15 - endloop - endfacet - facet normal -1.000000 0.000000 0.000000 - outer loop - vertex -0.1 0.045 -0.145 - vertex -0.1 0.045 -0.12 - vertex -0.1 0.05 -0.12 - endloop - endfacet - facet normal -1.000000 0.000000 0.000000 - outer loop - vertex -0.1 0.05 -0.15 - vertex -0.1 -0.05 -0.15 - vertex -0.1 0.045 -0.145 - endloop - endfacet - facet normal -1.000000 0.000000 0.000000 - outer loop - vertex -0.1 -0.05 -0.15 - vertex -0.1 -0.045 -0.145 - vertex -0.1 0.045 -0.145 - endloop - endfacet - facet normal -1.000000 0.000000 0.000000 - outer loop - vertex -0.1 -0.045 -0.145 - vertex -0.1 -0.05 -0.12 - vertex -0.1 -0.045 -0.12 - endloop - endfacet - facet normal -1.000000 0.000000 0.000000 - outer loop - vertex -0.1 -0.05 -0.15 - vertex -0.1 -0.05 -0.12 - vertex -0.1 -0.045 -0.145 - endloop - endfacet - facet normal 0.000000 0.000000 -1.000000 - outer loop - vertex -0.1 -0.05 -0.15 - vertex -0.1 0.05 -0.15 - vertex 0.2 0.05 -0.15 - endloop - endfacet - facet normal 0.000000 0.000000 -1.000000 - outer loop - vertex -0.1 -0.05 -0.15 - vertex 0.2 0.05 -0.15 - vertex 0.2 -0.05 -0.15 - endloop - endfacet - facet normal 1.000000 0.000000 0.000000 - outer loop - vertex 0.2 0.05 -0.12 - vertex 0.2 0.045 -0.145 - vertex 0.2 0.05 -0.15 - endloop - endfacet - facet normal 1.000000 -0.000000 0.000000 - outer loop - vertex 0.2 0.045 -0.12 - vertex 0.2 0.045 -0.145 - vertex 0.2 0.05 -0.12 - endloop - endfacet - facet normal 1.000000 0.000000 0.000000 - outer loop - vertex 0.2 -0.05 -0.15 - vertex 0.2 0.05 -0.15 - vertex 0.2 0.045 -0.145 - endloop - endfacet - facet normal 1.000000 -0.000000 0.000000 - outer loop - vertex 0.2 -0.045 -0.145 - vertex 0.2 -0.05 -0.15 - vertex 0.2 0.045 -0.145 - endloop - endfacet - facet normal 1.000000 -0.000000 0.000000 - outer loop - vertex 0.2 -0.05 -0.12 - vertex 0.2 -0.045 -0.145 - vertex 0.2 -0.045 -0.12 - endloop - endfacet - facet normal 1.000000 0.000000 0.000000 - outer loop - vertex 0.2 -0.05 -0.12 - vertex 0.2 -0.05 -0.15 - vertex 0.2 -0.045 -0.145 - endloop - endfacet - facet normal 0.000000 -1.000000 0.000000 - outer loop - vertex -0.1 -0.05 -0.15 - vertex 0.2 -0.05 -0.15 - vertex 0.2 -0.05 -0.12 - endloop - endfacet - facet normal 0.000000 -1.000000 0.000000 - outer loop - vertex -0.1 -0.05 -0.15 - vertex 0.2 -0.05 -0.12 - vertex -0.1 -0.05 -0.12 - endloop - endfacet - facet normal 0.000000 1.000000 0.000000 - outer loop - vertex 0.2 0.05 -0.12 - vertex -0.1 0.05 -0.15 - vertex -0.1 0.05 -0.12 - endloop - endfacet - facet normal 0.000000 1.000000 -0.000000 - outer loop - vertex 0.2 0.05 -0.15 - vertex -0.1 0.05 -0.15 - vertex 0.2 0.05 -0.12 - endloop - endfacet - facet normal 0.000000 0.000000 1.000000 - outer loop - vertex -0.1 -0.05 -0.12 - vertex 0.2 -0.05 -0.12 - vertex 0.2 -0.045 -0.12 - endloop - endfacet - facet normal -0.000000 0.000000 1.000000 - outer loop - vertex -0.1 -0.045 -0.12 - vertex -0.1 -0.05 -0.12 - vertex 0.2 -0.045 -0.12 - endloop - endfacet - facet normal 0.000000 0.000000 1.000000 - outer loop - vertex -0.1 0.045 -0.12 - vertex 0.2 0.045 -0.12 - vertex 0.2 0.05 -0.12 - endloop - endfacet - facet normal -0.000000 0.000000 1.000000 - outer loop - vertex -0.1 0.05 -0.12 - vertex -0.1 0.045 -0.12 - vertex 0.2 0.05 -0.12 - endloop - endfacet - facet normal 0.000000 -1.000000 0.000000 - outer loop - vertex -0.1 0.045 -0.145 - vertex 0.2 0.045 -0.145 - vertex 0.2 0.045 -0.12 - endloop - endfacet - facet normal 0.000000 -1.000000 0.000000 - outer loop - vertex -0.1 0.045 -0.145 - vertex 0.2 0.045 -0.12 - vertex -0.1 0.045 -0.12 - endloop - endfacet - facet normal 0.000000 0.000000 1.000000 - outer loop - vertex -0.1 -0.045 -0.145 - vertex 0.2 -0.045 -0.145 - vertex 0.2 0.045 -0.145 - endloop - endfacet - facet normal -0.000000 0.000000 1.000000 - outer loop - vertex -0.1 0.045 -0.145 - vertex -0.1 -0.045 -0.145 - vertex 0.2 0.045 -0.145 - endloop - endfacet - facet normal 0.000000 1.000000 -0.000000 - outer loop - vertex 0.2 -0.045 -0.145 - vertex -0.1 -0.045 -0.12 - vertex 0.2 -0.045 -0.12 - endloop - endfacet - facet normal 0.000000 1.000000 0.000000 - outer loop - vertex 0.2 -0.045 -0.145 - vertex -0.1 -0.045 -0.145 - vertex -0.1 -0.045 -0.12 - endloop - endfacet -endsolid diff --git a/tutorials/sphereGranFlow/rapidFilling/stl/box.stl b/tutorials/sphereGranFlow/rapidFilling/stl/box.stl deleted file mode 100644 index 3b0bb013..00000000 --- a/tutorials/sphereGranFlow/rapidFilling/stl/box.stl +++ /dev/null @@ -1,198 +0,0 @@ -solid - facet normal -1.000000 0.000000 0.000000 - outer loop - vertex 0.182 -0.073 -0.18 - vertex 0.182 0.069 -0.18 - vertex 0.182 0.069 -0.28 - endloop - endfacet - facet normal -1.000000 0.000000 0.000000 - outer loop - vertex 0.182 -0.073 -0.18 - vertex 0.182 0.069 -0.28 - vertex 0.182 -0.073 -0.28 - endloop - endfacet - facet normal -0.000000 -1.000000 0.000000 - outer loop - vertex 0.323 -0.073 -0.18 - vertex 0.182 -0.073 -0.18 - vertex 0.182 -0.073 -0.28 - endloop - endfacet - facet normal 0.000000 -1.000000 -0.000000 - outer loop - vertex 0.323 -0.073 -0.18 - vertex 0.182 -0.073 -0.28 - vertex 0.323 -0.073 -0.28 - endloop - endfacet - facet normal 1.000000 0.000000 0.000000 - outer loop - vertex 0.323 0.069 -0.18 - vertex 0.323 -0.073 -0.18 - vertex 0.323 -0.073 -0.28 - endloop - endfacet - facet normal 1.000000 0.000000 0.000000 - outer loop - vertex 0.323 0.069 -0.18 - vertex 0.323 -0.073 -0.28 - vertex 0.323 0.069 -0.28 - endloop - endfacet - facet normal 0.000000 1.000000 0.000000 - outer loop - vertex 0.182 0.069 -0.28 - vertex 0.323 0.069 -0.18 - vertex 0.323 0.069 -0.28 - endloop - endfacet - facet normal -0.000000 1.000000 0.000000 - outer loop - vertex 0.182 0.069 -0.18 - vertex 0.323 0.069 -0.18 - vertex 0.182 0.069 -0.28 - endloop - endfacet - facet normal 0.000000 0.000000 -1.000000 - outer loop - vertex 0.182 0.069 -0.28 - vertex 0.323 0.069 -0.28 - vertex 0.182 -0.073 -0.28 - endloop - endfacet - facet normal 0.000000 0.000000 -1.000000 - outer loop - vertex 0.182 -0.073 -0.28 - vertex 0.323 0.069 -0.28 - vertex 0.323 -0.073 -0.28 - endloop - endfacet - facet normal 0.000000 0.000000 1.000000 - outer loop - vertex 0.323 -0.073 -0.18 - vertex 0.318 -0.068 -0.18 - vertex 0.187 -0.068 -0.18 - endloop - endfacet - facet normal 0.000000 0.000000 1.000000 - outer loop - vertex 0.323 -0.073 -0.18 - vertex 0.187 -0.068 -0.18 - vertex 0.182 -0.073 -0.18 - endloop - endfacet - facet normal 0.000000 0.000000 1.000000 - outer loop - vertex 0.187 0.064 -0.18 - vertex 0.182 0.069 -0.18 - vertex 0.182 -0.073 -0.18 - endloop - endfacet - facet normal 0.000000 0.000000 1.000000 - outer loop - vertex 0.187 0.064 -0.18 - vertex 0.182 -0.073 -0.18 - vertex 0.187 -0.068 -0.18 - endloop - endfacet - facet normal 0.000000 0.000000 1.000000 - outer loop - vertex 0.318 0.064 -0.18 - vertex 0.318 -0.068 -0.18 - vertex 0.323 -0.073 -0.18 - endloop - endfacet - facet normal 0.000000 0.000000 1.000000 - outer loop - vertex 0.323 0.069 -0.18 - vertex 0.318 0.064 -0.18 - vertex 0.323 -0.073 -0.18 - endloop - endfacet - facet normal 0.000000 0.000000 1.000000 - outer loop - vertex 0.323 0.069 -0.18 - vertex 0.182 0.069 -0.18 - vertex 0.187 0.064 -0.18 - endloop - endfacet - facet normal 0.000000 0.000000 1.000000 - outer loop - vertex 0.323 0.069 -0.18 - vertex 0.187 0.064 -0.18 - vertex 0.318 0.064 -0.18 - endloop - endfacet - facet normal 1.000000 0.000000 0.000000 - outer loop - vertex 0.187 0.064 -0.18 - vertex 0.187 -0.068 -0.18 - vertex 0.187 0.064 -0.275 - endloop - endfacet - facet normal 1.000000 0.000000 0.000000 - outer loop - vertex 0.187 0.064 -0.275 - vertex 0.187 -0.068 -0.18 - vertex 0.187 -0.068 -0.275 - endloop - endfacet - facet normal -0.000000 1.000000 0.000000 - outer loop - vertex 0.187 -0.068 -0.18 - vertex 0.318 -0.068 -0.18 - vertex 0.187 -0.068 -0.275 - endloop - endfacet - facet normal 0.000000 1.000000 0.000000 - outer loop - vertex 0.187 -0.068 -0.275 - vertex 0.318 -0.068 -0.18 - vertex 0.318 -0.068 -0.275 - endloop - endfacet - facet normal -1.000000 0.000000 0.000000 - outer loop - vertex 0.318 -0.068 -0.18 - vertex 0.318 0.064 -0.18 - vertex 0.318 -0.068 -0.275 - endloop - endfacet - facet normal -1.000000 0.000000 0.000000 - outer loop - vertex 0.318 -0.068 -0.275 - vertex 0.318 0.064 -0.18 - vertex 0.318 0.064 -0.275 - endloop - endfacet - facet normal -0.000000 -1.000000 -0.000000 - outer loop - vertex 0.318 0.064 -0.18 - vertex 0.187 0.064 -0.18 - vertex 0.318 0.064 -0.275 - endloop - endfacet - facet normal 0.000000 -1.000000 0.000000 - outer loop - vertex 0.318 0.064 -0.275 - vertex 0.187 0.064 -0.18 - vertex 0.187 0.064 -0.275 - endloop - endfacet - facet normal 0.000000 0.000000 1.000000 - outer loop - vertex 0.318 0.064 -0.275 - vertex 0.187 0.064 -0.275 - vertex 0.187 -0.068 -0.275 - endloop - endfacet - facet normal 0.000000 0.000000 1.000000 - outer loop - vertex 0.318 0.064 -0.275 - vertex 0.187 -0.068 -0.275 - vertex 0.318 -0.068 -0.275 - endloop - endfacet -endsolid