diff --git a/.gitignore b/.gitignore index d0570535..3dbc24c1 100644 --- a/.gitignore +++ b/.gitignore @@ -37,3 +37,18 @@ include/** bin/** lib/** **/**notnow +# all possible time folders +**/[0-9] +**/[0-9][0-9] +**/[0-9][0-9][0-9] +**/[0-9][0-9][0-9][0-9] +**/[0-9][0-9][0-9][0-9][0-9] +**/[0-9]*.[0-9] +**/[0-9]*.[0-9][0-9] +**/[0-9]*.[0-9][0-9][0-9] +**/[0-9]*.[0-9][0-9][0-9][0-9] +**/[0-9]*.[0-9][0-9][0-9][0-9][0-9] +**/[0-9]*.[0-9][0-9][0-9][0-9][0-9][0-9] +**/[0-9]*.[0-9][0-9][0-9][0-9][0-9][0-9][0-9] +**/[0-9]*.[0-9][0-9][0-9][0-9][0-9][0-9][0-9][0-9] +**/VTK diff --git a/tutorials/sphereGranFlow/rotatingDrumSmall/caseSetup/interaction b/tutorials/sphereGranFlow/rotatingDrumSmall/caseSetup/interaction new file mode 100755 index 00000000..50e8c4d0 --- /dev/null +++ b/tutorials/sphereGranFlow/rotatingDrumSmall/caseSetup/interaction @@ -0,0 +1,52 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ + +objectName interaction; +objectType dicrionary; + +materials (prop1); // a list of material names +densities (1000.0); // density of materials [kg/m3] + +contactListType sortedContactList; + +model +{ + contactForceModel nonLinearNonLimited; + rollingFrictionModel normal; + + Yeff (1.0e6); // Young modulus [Pa] + + Geff (0.8e6); // Shear modulus [Pa] + + nu (0.25); // Poisson's ratio [-] + + en (0.7); // coefficient of normal restitution + + 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 cellsSimple; // 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) + } + + cellsSimpleInfo + { + updateFrequency 20; // each 20 timesteps, update neighbor list + cellExtent 0.7; // bounding + } + +} \ No newline at end of file diff --git a/tutorials/sphereGranFlow/rotatingDrumSmall/caseSetup/particleInsertion b/tutorials/sphereGranFlow/rotatingDrumSmall/caseSetup/particleInsertion new file mode 100755 index 00000000..eec7b7f9 --- /dev/null +++ b/tutorials/sphereGranFlow/rotatingDrumSmall/caseSetup/particleInsertion @@ -0,0 +1,14 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ + +objectName particleInsertion; +objectType dicrionary; + + +active no; // is insertion active? + +collisionCheck No; // not implemented for yes + + diff --git a/tutorials/sphereGranFlow/rotatingDrumSmall/caseSetup/sphereShape b/tutorials/sphereGranFlow/rotatingDrumSmall/caseSetup/sphereShape new file mode 100755 index 00000000..72192393 --- /dev/null +++ b/tutorials/sphereGranFlow/rotatingDrumSmall/caseSetup/sphereShape @@ -0,0 +1,11 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ + +objectName sphereDict; +objectType sphereShape; + +names (sphere1); // names of shapes +diameters (0.004); // diameter of shapes +materials (prop1); // material names for shapes diff --git a/tutorials/sphereGranFlow/rotatingDrumSmall/settings/geometryDict b/tutorials/sphereGranFlow/rotatingDrumSmall/settings/geometryDict new file mode 100644 index 00000000..7a2667f7 --- /dev/null +++ b/tutorials/sphereGranFlow/rotatingDrumSmall/settings/geometryDict @@ -0,0 +1,70 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ + +objectName geometryDict; +objectType dictionary; + +// motion model: rotating object around an axis +motionModel rotatingAxisMotion; + +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.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 + */ + 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 + } + + /* + 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; + } + + +} + +// 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 new file mode 100644 index 00000000..b6faab63 --- /dev/null +++ b/tutorials/sphereGranFlow/rotatingDrumSmall/settings/particlesDict @@ -0,0 +1,50 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ + +objectName particlesDict; +objectType dictionary; + +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) + rotVelocity realx3 (0 0 0); // rotational velocity (rad/s) + shapeName word sphere1; // name of the particle shape + } + + selectors + {} +} + +// positions particles +positionParticles +{ + method positionOrdered; // ordered positioning + + maxNumberOfParticles 40000; // maximum number of particles in the simulation + mortonSorting Yes; // perform initial sorting based on morton code? + + positionOrderedInfo + { + box // box 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 + } + + 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 + + } +} diff --git a/tutorials/sphereGranFlow/rotatingDrumSmall/settings/settingsDict b/tutorials/sphereGranFlow/rotatingDrumSmall/settings/settingsDict new file mode 100644 index 00000000..dc202f23 --- /dev/null +++ b/tutorials/sphereGranFlow/rotatingDrumSmall/settings/settingsDict @@ -0,0 +1,36 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ +objectName settingsDict; +objectType dictionary;; + +run rotatingDrumSmall; + +dt 0.00001; // time step for integration (s) + +startTime 0; // start time for simulation + +endTime 10; // end time for simulation + +saveInterval 0.1; // 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. +*/ +domain +{ + min (-0.12 -0.12 0); + max (0.12 0.12 0.11); +} + +integrationMethod AdamsBashforth2; // integration method + +timersReport Yes; // report timers? + +timersReportInterval 0.01; // time interval for reporting timers diff --git a/utilities/geometryPhasicFlow/geometryPhasicFlow.C b/utilities/geometryPhasicFlow/geometryPhasicFlow.C index 26f03bf0..76092834 100755 --- a/utilities/geometryPhasicFlow/geometryPhasicFlow.C +++ b/utilities/geometryPhasicFlow/geometryPhasicFlow.C @@ -47,12 +47,12 @@ int main( int argc, char* argv[] ) ( objectFile ( - "createGeometryDict", + "geometryDict", Control.settings().path(), objectFile::READ_ALWAYS, objectFile::WRITE_NEVER ), - "createGeometryDict", + "geometryDict", true ); diff --git a/utilities/particlesPhasicFlow/particlesPhasicFlow.C b/utilities/particlesPhasicFlow/particlesPhasicFlow.C index 7d0a1f48..63683306 100755 --- a/utilities/particlesPhasicFlow/particlesPhasicFlow.C +++ b/utilities/particlesPhasicFlow/particlesPhasicFlow.C @@ -79,12 +79,12 @@ int main( int argc, char* argv[] ) ( objectFile ( - "createParticles", + "particlesDict", Control.settings().path(), objectFile::READ_ALWAYS, objectFile::WRITE_ALWAYS ), - "createParticles", + "particlesDict", true );