diff --git a/CMakeLists.txt b/CMakeLists.txt index 962c594d..7890710c 100644 --- a/CMakeLists.txt +++ b/CMakeLists.txt @@ -23,7 +23,7 @@ else() set(Kokkos_Source_DIR $ENV{HOME}/Kokkos/kokkos) endif() message(STATUS "Kokkos source directory is ${Kokkos_Source_DIR}") -add_subdirectory(${Kokkos_Source_DIR} ${phasicFlow_BINARY_DIR}/kokkos) +add_subdirectory(${Kokkos_Source_DIR} ./kokkos) Kokkos_cmake_settings() diff --git a/src/Geometry/geometryMotion/geometryMotions.cpp b/src/Geometry/geometryMotion/geometryMotions.cpp index 8b1d1d55..6cdb4a3b 100644 --- a/src/Geometry/geometryMotion/geometryMotions.cpp +++ b/src/Geometry/geometryMotion/geometryMotions.cpp @@ -26,4 +26,6 @@ template class pFlow::geometryMotion; template class pFlow::geometryMotion; +template class pFlow::geometryMotion; + //template class pFlow::geometryMotion; diff --git a/src/Geometry/geometryMotion/geometryMotions.hpp b/src/Geometry/geometryMotion/geometryMotions.hpp index 1bb078d8..3b0a2867 100644 --- a/src/Geometry/geometryMotion/geometryMotions.hpp +++ b/src/Geometry/geometryMotion/geometryMotions.hpp @@ -24,6 +24,7 @@ Licence: #include "geometryMotion.hpp" #include "stationaryWall.hpp" #include "rotatingAxisMotion.hpp" +#include "conveyorBeltMotion.hpp" //#include "multiRotatingAxisMotion.hpp" #include "vibratingMotion.hpp" @@ -37,6 +38,8 @@ using rotationAxisMotionGeometry = geometryMotion; using stationaryGeometry = geometryMotion; +using conveyorBeltMotionGeometry = geometryMotion; + //typedef geometryMotion multiRotationAxisMotionGeometry; diff --git a/src/Interaction/grainInteraction/grainInteractionsLinearModels.cpp b/src/Interaction/grainInteraction/grainInteractionsLinearModels.cpp index 6fa77730..d047df09 100755 --- a/src/Interaction/grainInteraction/grainInteractionsLinearModels.cpp +++ b/src/Interaction/grainInteraction/grainInteractionsLinearModels.cpp @@ -59,4 +59,10 @@ createInteraction(pFlow::cfModels::grainRolling>, pFlow::vibratingMotionGeometry); createInteraction(pFlow::cfModels::grainRolling>, pFlow::vibratingMotionGeometry); -createInteraction(pFlow::cfModels::grainRolling>, pFlow::vibratingMotionGeometry); \ No newline at end of file +createInteraction(pFlow::cfModels::grainRolling>, pFlow::vibratingMotionGeometry); + +createInteraction(pFlow::cfModels::grainRolling>, pFlow::conveyorBeltMotionGeometry); +createInteraction(pFlow::cfModels::grainRolling>, pFlow::conveyorBeltMotionGeometry); + +createInteraction(pFlow::cfModels::grainRolling>, pFlow::conveyorBeltMotionGeometry); +createInteraction(pFlow::cfModels::grainRolling>, pFlow::conveyorBeltMotionGeometry); \ No newline at end of file diff --git a/src/Interaction/sphereInteraction/sphereInteractionsLinearModels.cpp b/src/Interaction/sphereInteraction/sphereInteractionsLinearModels.cpp index 8c30776f..1c45936b 100644 --- a/src/Interaction/sphereInteraction/sphereInteractionsLinearModels.cpp +++ b/src/Interaction/sphereInteraction/sphereInteractionsLinearModels.cpp @@ -53,6 +53,10 @@ createInteraction(pFlow::cfModels::nonLimitedLinearNormalRolling,pFlow::rotation createInteraction(pFlow::cfModels::limitedLinearNormalRolling, pFlow::vibratingMotionGeometry); createInteraction(pFlow::cfModels::nonLimitedLinearNormalRolling,pFlow::vibratingMotionGeometry); +// conveyorBeltGeometry +createInteraction(pFlow::cfModels::limitedLinearNormalRolling, pFlow::conveyorBeltMotionGeometry); +createInteraction(pFlow::cfModels::nonLimitedLinearNormalRolling,pFlow::conveyorBeltMotionGeometry); + // multiRotationAxisMotionGeometry //createInteraction(pFlow::cfModels::limitedLinearNormalRolling, pFlow::multiRotationAxisMotionGeometry); //createInteraction(pFlow::cfModels::nonLimitedLinearNormalRolling,pFlow::multiRotationAxisMotionGeometry); diff --git a/src/Interaction/sphereInteraction/sphereInteractionsNonLinearModModels.cpp b/src/Interaction/sphereInteraction/sphereInteractionsNonLinearModModels.cpp index b96e5d98..d7f79ff7 100644 --- a/src/Interaction/sphereInteraction/sphereInteractionsNonLinearModModels.cpp +++ b/src/Interaction/sphereInteraction/sphereInteractionsNonLinearModModels.cpp @@ -53,6 +53,10 @@ createInteraction(pFlow::cfModels::nonLimitedNonLinearModNormalRolling,pFlow::ro createInteraction(pFlow::cfModels::limitedNonLinearModNormalRolling, pFlow::vibratingMotionGeometry); createInteraction(pFlow::cfModels::nonLimitedNonLinearModNormalRolling,pFlow::vibratingMotionGeometry); +// conveyorBeltMotionGeometry +createInteraction(pFlow::cfModels::limitedNonLinearModNormalRolling, pFlow::conveyorBeltMotionGeometry); +createInteraction(pFlow::cfModels::nonLimitedNonLinearModNormalRolling,pFlow::conveyorBeltMotionGeometry); + // multiRotationAxisMotionGeometry //createInteraction(pFlow::cfModels::limitedNonLinearModNormalRolling, pFlow::multiRotationAxisMotionGeometry); //createInteraction(pFlow::cfModels::nonLimitedNonLinearModNormalRolling,pFlow::multiRotationAxisMotionGeometry); diff --git a/src/Interaction/sphereInteraction/sphereInteractionsNonLinearModels.cpp b/src/Interaction/sphereInteraction/sphereInteractionsNonLinearModels.cpp index 3e8e2707..c13ec77e 100644 --- a/src/Interaction/sphereInteraction/sphereInteractionsNonLinearModels.cpp +++ b/src/Interaction/sphereInteraction/sphereInteractionsNonLinearModels.cpp @@ -53,6 +53,10 @@ createInteraction(pFlow::cfModels::nonLimitedNonLinearNormalRolling,pFlow::rotat createInteraction(pFlow::cfModels::limitedNonLinearNormalRolling, pFlow::vibratingMotionGeometry); createInteraction(pFlow::cfModels::nonLimitedNonLinearNormalRolling,pFlow::vibratingMotionGeometry); +// conveyorBeltMotionGeometry +createInteraction(pFlow::cfModels::limitedNonLinearNormalRolling, pFlow::conveyorBeltMotionGeometry); +createInteraction(pFlow::cfModels::nonLimitedNonLinearNormalRolling,pFlow::conveyorBeltMotionGeometry); + // multiRotationAxisMotionGeometry //createInteraction(pFlow::cfModels::limitedNonLinearNormalRolling, pFlow::multiRotationAxisMotionGeometry); //createInteraction(pFlow::cfModels::nonLimitedNonLinearNormalRolling,pFlow::multiRotationAxisMotionGeometry); diff --git a/src/MotionModel/CMakeLists.txt b/src/MotionModel/CMakeLists.txt index b0b084fd..1e92a989 100644 --- a/src/MotionModel/CMakeLists.txt +++ b/src/MotionModel/CMakeLists.txt @@ -11,6 +11,9 @@ vibratingMotion/vibratingMotion.cpp stationaryWall/stationaryWall.cpp entities/stationary/stationary.cpp +conveyorBeltMotion/conveyorBeltMotion.cpp +entities/conveyorBelt/conveyorBelt.cpp + #entities/multiRotatingAxis/multiRotatingAxis.cpp #multiRotatingAxisMotion/multiRotatingAxisMotion.cpp diff --git a/src/MotionModel/conveyorBeltMotion/conveyorBeltMotion.cpp b/src/MotionModel/conveyorBeltMotion/conveyorBeltMotion.cpp new file mode 100644 index 00000000..2315e43e --- /dev/null +++ b/src/MotionModel/conveyorBeltMotion/conveyorBeltMotion.cpp @@ -0,0 +1,75 @@ +/*------------------------------- 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 "conveyorBeltMotion.hpp" + + +pFlow::conveyorBeltMotion::conveyorBeltMotion +( + const objectFile &objf, + repository *owner +) +: + fileDictionary(objf, owner) +{ + + if(!impl_readDictionary(*this) ) + { + fatalErrorInFunction; + fatalExit; + } +} + +pFlow::conveyorBeltMotion::conveyorBeltMotion +( + const objectFile &objf, + const dictionary &dict, + repository *owner +) +: + fileDictionary(objf, dict, owner) +{ + if(!impl_readDictionary(*this) ) + { + fatalErrorInFunction; + fatalExit; + } +} + +bool pFlow::conveyorBeltMotion::write +( + iOstream &os, + const IOPattern &iop +) const +{ + // a global dictionary + dictionary newDict(fileDictionary::dictionary::name(), true); + if( iop.thisProcWriteData() ) + { + if( !this->impl_writeDictionary(newDict) || + !newDict.write(os)) + { + fatalErrorInFunction<< + " error in writing to dictionary "<< newDict.globalName()< +{ +protected: + + friend MotionModel; + + bool impl_isMoving()const + { + return false; + } + + bool impl_move(uint32, real, real)const + { + return true; + } + + void impl_setTime(uint32 ,real ,real )const + {} + +public: + + TypeInfo("conveyorBeltMotion"); + + conveyorBeltMotion(const objectFile& objf, repository* owner); + + conveyorBeltMotion( + const objectFile& objf, + const dictionary& dict, + repository* owner); + + + using fileDictionary::write; + + bool write(iOstream& os, const IOPattern& iop)const override; + + static + auto noneComponent() + { + return conveyorBelt(); + } +}; + +} // pFlow + + +#endif // __conveyorBeltMotion_hpp__ \ No newline at end of file diff --git a/src/MotionModel/entities/conveyorBelt/conveyorBelt.cpp b/src/MotionModel/entities/conveyorBelt/conveyorBelt.cpp new file mode 100644 index 00000000..2e63a5a1 --- /dev/null +++ b/src/MotionModel/entities/conveyorBelt/conveyorBelt.cpp @@ -0,0 +1,70 @@ +/*------------------------------- 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 "conveyorBelt.hpp" +#include "dictionary.hpp" + + +FUNCTION_H +pFlow::conveyorBelt::conveyorBelt(const dictionary& dict) +{ + if(!read(dict)) + { + fatalErrorInFunction<< + " error in reading conveyorBelt from dictionary "<< dict.globalName()<("tangentVelocity"); + + return true; +} + +FUNCTION_H +bool pFlow::conveyorBelt::write(dictionary& dict) const +{ + if( !dict.add("tangentVelocity", tangentVelocity_) ) + { + fatalErrorInFunction<< + " error in writing tangentVelocity to dictionary "<< dict.globalName()<>(iIstream& is, conveyorBelt& obj) +{ + + return is; +} + +} + + +#endif diff --git a/tutorials/sphereGranFlow/conveyorBelt/caseSetup/interaction b/tutorials/sphereGranFlow/conveyorBelt/caseSetup/interaction new file mode 100755 index 00000000..3ea53adf --- /dev/null +++ b/tutorials/sphereGranFlow/conveyorBelt/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/conveyorBelt/caseSetup/particleInsertion b/tutorials/sphereGranFlow/conveyorBelt/caseSetup/particleInsertion new file mode 100755 index 00000000..195f27df --- /dev/null +++ b/tutorials/sphereGranFlow/conveyorBelt/caseSetup/particleInsertion @@ -0,0 +1,54 @@ +/* -------------------------------*- C++ -*--------------------------------- *\ +| phasicFlow File | +| copyright: www.cemf.ir | +\* ------------------------------------------------------------------------- */ +objectName particleInsertion; +objectType dicrionary; +fileFormat ASCII; +/*---------------------------------------------------------------------------*/ +active Yes; // 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/conveyorBelt/caseSetup/shapes b/tutorials/sphereGranFlow/conveyorBelt/caseSetup/shapes new file mode 100755 index 00000000..603c28cb --- /dev/null +++ b/tutorials/sphereGranFlow/conveyorBelt/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/conveyorBelt/cleanThisCase b/tutorials/sphereGranFlow/conveyorBelt/cleanThisCase new file mode 100755 index 00000000..8a0ab919 --- /dev/null +++ b/tutorials/sphereGranFlow/conveyorBelt/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/conveyorBelt/runThisCase b/tutorials/sphereGranFlow/conveyorBelt/runThisCase new file mode 100755 index 00000000..c48d71fe --- /dev/null +++ b/tutorials/sphereGranFlow/conveyorBelt/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/conveyorBelt/settings/domainDict b/tutorials/sphereGranFlow/conveyorBelt/settings/domainDict new file mode 100755 index 00000000..159c33e5 --- /dev/null +++ b/tutorials/sphereGranFlow/conveyorBelt/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/conveyorBelt/settings/geometryDict b/tutorials/sphereGranFlow/conveyorBelt/settings/geometryDict new file mode 100755 index 00000000..69873d0e --- /dev/null +++ b/tutorials/sphereGranFlow/conveyorBelt/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/conveyorBelt/settings/particlesDict b/tutorials/sphereGranFlow/conveyorBelt/settings/particlesDict new file mode 100755 index 00000000..4df47975 --- /dev/null +++ b/tutorials/sphereGranFlow/conveyorBelt/settings/particlesDict @@ -0,0 +1,47 @@ +/* -------------------------------*- 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 empty; // other options: ordered and random + + 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/conveyorBelt/settings/settingsDict b/tutorials/sphereGranFlow/conveyorBelt/settings/settingsDict new file mode 100755 index 00000000..c5b6650d --- /dev/null +++ b/tutorials/sphereGranFlow/conveyorBelt/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/conveyorBelt/stl/belt.stl b/tutorials/sphereGranFlow/conveyorBelt/stl/belt.stl new file mode 100644 index 00000000..6ab0e13b --- /dev/null +++ b/tutorials/sphereGranFlow/conveyorBelt/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/conveyorBelt/stl/box.stl b/tutorials/sphereGranFlow/conveyorBelt/stl/box.stl new file mode 100644 index 00000000..3b0bb013 --- /dev/null +++ b/tutorials/sphereGranFlow/conveyorBelt/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