From a6185d1362b45999bf083476680328d9be07cb7f Mon Sep 17 00:00:00 2001 From: Ramin Khodabandeh Date: Tue, 28 May 2024 15:55:56 +0430 Subject: [PATCH] rotatingDrumSmall updated. --- .../rotatingDrumSmall/caseSetup/interaction | 56 +++++----- .../caseSetup/particleInsertion | 14 --- .../caseSetup/{sphereShape => shapes} | 9 +- .../rotatingDrumSmall/settings/domainDict | 58 ++++++++++ .../rotatingDrumSmall/settings/geometryDict | 100 +++++++++++------- .../rotatingDrumSmall/settings/particlesDict | 44 ++++---- .../rotatingDrumSmall/settings/settingsDict | 35 +++--- 7 files changed, 190 insertions(+), 126 deletions(-) delete mode 100755 tutorials/sphereGranFlow/rotatingDrumSmall/caseSetup/particleInsertion rename tutorials/sphereGranFlow/rotatingDrumSmall/caseSetup/{sphereShape => shapes} (74%) create mode 100755 tutorials/sphereGranFlow/rotatingDrumSmall/settings/domainDict mode change 100644 => 100755 tutorials/sphereGranFlow/rotatingDrumSmall/settings/geometryDict mode change 100644 => 100755 tutorials/sphereGranFlow/rotatingDrumSmall/settings/particlesDict mode change 100644 => 100755 tutorials/sphereGranFlow/rotatingDrumSmall/settings/settingsDict diff --git a/tutorials/sphereGranFlow/rotatingDrumSmall/caseSetup/interaction b/tutorials/sphereGranFlow/rotatingDrumSmall/caseSetup/interaction index 32800a5c..0b68666a 100755 --- a/tutorials/sphereGranFlow/rotatingDrumSmall/caseSetup/interaction +++ b/tutorials/sphereGranFlow/rotatingDrumSmall/caseSetup/interaction @@ -6,48 +6,46 @@ objectName interaction; objectType dicrionary; fileFormat ASCII; /*---------------------------------------------------------------------------*/ +materials (prop1); // a list of materials names -materials (prop1); // a list of materials names -densities (1000.0); // density of materials [kg/m3] +densities (1000.0); // density of materials [kg/m3] + +contactListType sortedContactList; -contactListType sortedContactList; +contactSearch +{ + method NBS; // method for broad search particle-particle + + updateInterval 10; + + sizeRatio 1.1; + + cellExtent 0.55; + + adjustableBox Yes; +} model { contactForceModel nonLinearNonLimited; - rollingFrictionModel normal; - Yeff (1.0e6); // Young modulus [Pa] + rollingFrictionModel normal; - Geff (0.8e6); // Shear modulus [Pa] + // Property (solid-solid Properties) - nu (0.25); // Poisson's ratio [-] + Yeff (1.0e6); // Young modulus [Pa] - en (0.7); // coefficient of normal restitution + Geff (0.8e6); // Shear modulus [Pa] - et (1.0); // coefficient of tangential restitution + nu (0.25); // Poisson's ratio [-] - mu (0.3); // dynamic friction + en (0.7); // coefficient of normal restitution - mur (0.1); // rolling friction - + et (1.0); // coefficient of tangential restitution + + mu (0.3); // dynamic friction + + mur (0.1); // rolling friction } -contactSearch -{ - method NBS; // method for broad search particle-particle - wallMapping cellMapping; // method for broad search particle-wall - NBSInfo - { - updateFrequency 20; // each 20 timesteps, update neighbor list - sizeRatio 1.1; // bounding box size to particle diameter (max) - } - - cellMappingInfo - { - updateFrequency 20; // each 20 timesteps, update neighbor list - cellExtent 0.7; // bounding box for particle-wall search (> 0.5) - } - -} \ No newline at end of file diff --git a/tutorials/sphereGranFlow/rotatingDrumSmall/caseSetup/particleInsertion b/tutorials/sphereGranFlow/rotatingDrumSmall/caseSetup/particleInsertion deleted file mode 100755 index 76835952..00000000 --- a/tutorials/sphereGranFlow/rotatingDrumSmall/caseSetup/particleInsertion +++ /dev/null @@ -1,14 +0,0 @@ -/* -------------------------------*- 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/sphereGranFlow/rotatingDrumSmall/caseSetup/sphereShape b/tutorials/sphereGranFlow/rotatingDrumSmall/caseSetup/shapes similarity index 74% rename from tutorials/sphereGranFlow/rotatingDrumSmall/caseSetup/sphereShape rename to tutorials/sphereGranFlow/rotatingDrumSmall/caseSetup/shapes index 7a87b7ad..3fb3f0a6 100755 --- a/tutorials/sphereGranFlow/rotatingDrumSmall/caseSetup/sphereShape +++ b/tutorials/sphereGranFlow/rotatingDrumSmall/caseSetup/shapes @@ -6,7 +6,10 @@ objectName sphereDict; objectType sphereShape; fileFormat ASCII; /*---------------------------------------------------------------------------*/ +names (sphere1); // names of shapes + +diameters (0.004); // diameter of shapes + +materials (prop1); // material names for shapes + -names (sphere1); // names of shapes -diameters (0.004); // diameter of shapes -materials (prop1); // material names for shapes diff --git a/tutorials/sphereGranFlow/rotatingDrumSmall/settings/domainDict b/tutorials/sphereGranFlow/rotatingDrumSmall/settings/domainDict new file mode 100755 index 00000000..a9d79b65 --- /dev/null +++ b/tutorials/sphereGranFlow/rotatingDrumSmall/settings/domainDict @@ -0,0 +1,58 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ +objectName domainDict; +objectType dictionary; +fileFormat ASCII; +/*---------------------------------------------------------------------------*/ +globalBox // Simulation domain: every particles that goes outside this domain will be deleted +{ + min (-0.12 -0.12 0); + + max (0.12 0.12 0.11); +} + +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 50; + + // Determines how often do you want to update the new changes in the boundary + updateInterval 0.0001; + + // 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/rotatingDrumSmall/settings/geometryDict b/tutorials/sphereGranFlow/rotatingDrumSmall/settings/geometryDict old mode 100644 new mode 100755 index 46d4025b..fcdbe16e --- a/tutorials/sphereGranFlow/rotatingDrumSmall/settings/geometryDict +++ b/tutorials/sphereGranFlow/rotatingDrumSmall/settings/geometryDict @@ -6,66 +6,86 @@ objectName geometryDict; objectType dictionary; fileFormat ASCII; /*---------------------------------------------------------------------------*/ +motionModel rotatingAxis; // motion model can be rotatingAxis or stationary or vibrating -// motion model: rotating object around an axis -motionModel rotatingAxisMotion; +rotatingAxisInfo // information for rotatingAxisMotion motion model +{ + rotAxis + { + p1 (0.0 0.0 0.0); // first point for the axis of rotation + + p2 (0.0 0.0 1.0); // second point for the axis of rotation + + omega 1.214; // rotation speed (rad/s) + } +} surfaces { /* - A cylinder with begin and end radii 0.12 m and axis points at (0 0 0) - and (0 0 0.1) + A cylinder with begin and end radii 0.12 m and axis points at (0 0 0) and (0 0 0.1) */ + cylinder { - type cylinderWall; // type of the wall - p1 (0.0 0.0 0.0); // begin point of cylinder axis - p2 (0.0 0.0 0.1); // end point of cylinder axis - radius1 0.12; // radius at p1 - radius2 0.12; // radius at p2 - resolution 24; // number of divisions - material prop1; // material name of this wall - motion rotAxis; // motion component name + type cylinderWall; // other options: cuboidWall and planeWall + + p1 (0.0 0.0 0.0); // begin point of cylinder axis + + p2 (0.0 0.0 0.1); // end point of cylinder axis + + radius1 0.12; // radius at p1 + + radius2 0.12; // radius at p2 + + resolution 24; // number of divisions + + material prop1; // material name of this wall + + motion rotAxis; // motion component name } /* - This is a plane wall at the rear end of cylinder + This is a plane wall at the rear end of cylinder */ + wall1 { - type planeWall; // type of the wall - p1 (-0.12 -0.12 0.0); // first point of the wall - p2 ( 0.12 -0.12 0.0); // second point - p3 ( 0.12 0.12 0.0); // third point - p4 (-0.12 0.12 0.0); // fourth point - material prop1; // material name of the wall - motion rotAxis; // motion component name + type planeWall; // other options: cuboidWall and cylinderWall + + p1 (-0.12 -0.12 0.0); // first point of the wall + + p2 ( 0.12 -0.12 0.0); // second point + + p3 ( 0.12 0.12 0.0); // third point + + p4 (-0.12 0.12 0.0); // fourth point + + material prop1; // material name of the wall + + motion rotAxis; // motion component name } /* - This is a plane wall at the front end of cylinder + This is a plane wall at the front end of cylinder */ + wall2 { - type planeWall; - p1 (-0.12 -0.12 0.1); - p2 ( 0.12 -0.12 0.1); - p3 ( 0.12 0.12 0.1); - p4 (-0.12 0.12 0.1); - material prop1; - motion rotAxis; + type planeWall; // other options: cuboidWall and cylinderWall + + p1 (-0.12 -0.12 0.1); // first point of the wall + + p2 ( 0.12 -0.12 0.1); // second point + + p3 ( 0.12 0.12 0.1); // third point + + p4 (-0.12 0.12 0.1); // fourth point + + material prop1; // material name of the wall + + motion rotAxis; // motion component name } - - } -// information for rotatingAxisMotion motion model -rotatingAxisMotionInfo -{ - rotAxis - { - p1 (0.0 0.0 0.0); // first point for the axis of rotation - p2 (0.0 0.0 1.0); // second point for the axis of rotation - omega 1.214; // rotation speed (rad/s) - } -} \ No newline at end of file + diff --git a/tutorials/sphereGranFlow/rotatingDrumSmall/settings/particlesDict b/tutorials/sphereGranFlow/rotatingDrumSmall/settings/particlesDict old mode 100644 new mode 100755 index 2ca735fb..c03e7a66 --- a/tutorials/sphereGranFlow/rotatingDrumSmall/settings/particlesDict +++ b/tutorials/sphereGranFlow/rotatingDrumSmall/settings/particlesDict @@ -6,45 +6,49 @@ objectName particlesDict; objectType dictionary; fileFormat ASCII; /*---------------------------------------------------------------------------*/ - setFields { /* - Default value for fields defined for particles + Default value for fields defined for particles These fields should always be defined for simulations with spherical particles. */ defaultValue { - velocity realx3 (0 0 0); // linear velocity (m/s) - acceleration realx3 (0 0 0); // linear acceleration (m/s2) - rVelocity realx3 (0 0 0); // rotational velocity (rad/s) - shapeName word sphere1; // name of the particle shape + velocity realx3 (0 0 0); // linear velocity (m/s) + + acceleration realx3 (0 0 0); // linear acceleration (m/s2) + + rVelocity realx3 (0 0 0); // rotational velocity (rad/s) + + shapeName word sphere1; // name of the particle shape } selectors {} } -// positions particles -positionParticles +positionParticles // positions particles { - method positionOrdered; // ordered positioning + method ordered; // can be ordered or random or empty - maxNumberOfParticles 40000; // maximum number of particles in the simulation - mortonSorting Yes; // perform initial sorting based on morton code? - - box // box for positioning particles + orderedInfo { - 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 + diameter 0.004; // diameter of particles + + numPoints 30000; // number of particles in the simulation + + axisOrder (z y x); // axis order for filling the space with particles } - positionOrderedInfo + regionType box; // can be box or cylinder or sphere + + boxInfo // box for positioning particles { - diameter 0.004; // minimum space between centers of particles - numPoints 30000; // number of particles in the simulation - axisOrder (z y x); // axis order for filling the space with 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/rotatingDrumSmall/settings/settingsDict b/tutorials/sphereGranFlow/rotatingDrumSmall/settings/settingsDict old mode 100644 new mode 100755 index 7611fd2b..89809b66 --- a/tutorials/sphereGranFlow/rotatingDrumSmall/settings/settingsDict +++ b/tutorials/sphereGranFlow/rotatingDrumSmall/settings/settingsDict @@ -6,35 +6,30 @@ objectName settingsDict; objectType dictionary; fileFormat ASCII; /*---------------------------------------------------------------------------*/ - run rotatingDrumSmall; -dt 0.00001; // time step for integration (s) +dt 0.00001; // time step for integration (s) -startTime 0; // start time for simulation +startTime 0.0; // start time for simulation -endTime 10; // end time for simulation +endTime 10.0; // end time for simulation -saveInterval 0.1; // time interval for saving the simulation +saveInterval 0.01; // time interval for saving the simulation -timePrecision 6; // maximum number of digits for time folder +timePrecision 6; // maximum number of digits for time folder -g (0 -9.8 0); // gravity vector (m/s2) +g (0 -9.8 0); // gravity vector (m/s2) -/* - Simulation domain - every particles that goes outside this domain is deleted. -*/ -domain -{ - min (-0.12 -0.12 0); - max (0.12 0.12 0.11); -} +// save necessary (i.e., required) data on disk +includeObjects (diameter); +// exclude unnecessary data from saving on disk +excludeObjects (rVelocity.dy1 pStructPosition.dy1 pStructVelocity.dy1); -integrationMethod AdamsBashforth2; // integration method +integrationMethod AdamsBashforth2; // integration method -writeFormat ascii; +writeFormat ascii; // data writting format (ascii or binary) -timersReport Yes; // report timers? +timersReport Yes; // report timers + +timersReportInterval 0.01; // time interval for reporting timers -timersReportInterval 0.01; // time interval for reporting timers