Merge pull request #133 from wanqing0421/main

Add the conveyor belt model and tutorial
This commit is contained in:
Hamidreza Norouzi 2024-12-25 09:39:07 +03:30 committed by GitHub
commit 51d85a0b79
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
23 changed files with 1178 additions and 2 deletions

View File

@ -23,7 +23,7 @@ else()
set(Kokkos_Source_DIR $ENV{HOME}/Kokkos/kokkos) set(Kokkos_Source_DIR $ENV{HOME}/Kokkos/kokkos)
endif() endif()
message(STATUS "Kokkos source directory is ${Kokkos_Source_DIR}") 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() Kokkos_cmake_settings()

View File

@ -26,4 +26,6 @@ template class pFlow::geometryMotion<pFlow::rotatingAxisMotion>;
template class pFlow::geometryMotion<pFlow::stationaryWall>; template class pFlow::geometryMotion<pFlow::stationaryWall>;
template class pFlow::geometryMotion<pFlow::conveyorBeltMotion>;
//template class pFlow::geometryMotion<pFlow::multiRotatingAxisMotion>; //template class pFlow::geometryMotion<pFlow::multiRotatingAxisMotion>;

View File

@ -24,6 +24,7 @@ Licence:
#include "geometryMotion.hpp" #include "geometryMotion.hpp"
#include "stationaryWall.hpp" #include "stationaryWall.hpp"
#include "rotatingAxisMotion.hpp" #include "rotatingAxisMotion.hpp"
#include "conveyorBeltMotion.hpp"
//#include "multiRotatingAxisMotion.hpp" //#include "multiRotatingAxisMotion.hpp"
#include "vibratingMotion.hpp" #include "vibratingMotion.hpp"
@ -37,6 +38,8 @@ using rotationAxisMotionGeometry = geometryMotion<rotatingAxisMotion>;
using stationaryGeometry = geometryMotion<stationaryWall>; using stationaryGeometry = geometryMotion<stationaryWall>;
using conveyorBeltMotionGeometry = geometryMotion<conveyorBeltMotion>;
//typedef geometryMotion<multiRotatingAxisMotion> multiRotationAxisMotionGeometry; //typedef geometryMotion<multiRotatingAxisMotion> multiRotationAxisMotionGeometry;

View File

@ -59,4 +59,10 @@ createInteraction(pFlow::cfModels::grainRolling<pFlow::cfModels::cGAbsoluteLinea
createInteraction(pFlow::cfModels::grainRolling<pFlow::cfModels::cGRelativeLinear<true>>, pFlow::vibratingMotionGeometry); createInteraction(pFlow::cfModels::grainRolling<pFlow::cfModels::cGRelativeLinear<true>>, pFlow::vibratingMotionGeometry);
createInteraction(pFlow::cfModels::grainRolling<pFlow::cfModels::cGAbsoluteLinear<false>>, pFlow::vibratingMotionGeometry); createInteraction(pFlow::cfModels::grainRolling<pFlow::cfModels::cGAbsoluteLinear<false>>, pFlow::vibratingMotionGeometry);
createInteraction(pFlow::cfModels::grainRolling<pFlow::cfModels::cGRelativeLinear<false>>, pFlow::vibratingMotionGeometry); createInteraction(pFlow::cfModels::grainRolling<pFlow::cfModels::cGRelativeLinear<false>>, pFlow::vibratingMotionGeometry);
createInteraction(pFlow::cfModels::grainRolling<pFlow::cfModels::cGAbsoluteLinear<true>>, pFlow::conveyorBeltMotionGeometry);
createInteraction(pFlow::cfModels::grainRolling<pFlow::cfModels::cGRelativeLinear<true>>, pFlow::conveyorBeltMotionGeometry);
createInteraction(pFlow::cfModels::grainRolling<pFlow::cfModels::cGAbsoluteLinear<false>>, pFlow::conveyorBeltMotionGeometry);
createInteraction(pFlow::cfModels::grainRolling<pFlow::cfModels::cGRelativeLinear<false>>, pFlow::conveyorBeltMotionGeometry);

View File

@ -53,6 +53,10 @@ createInteraction(pFlow::cfModels::nonLimitedLinearNormalRolling,pFlow::rotation
createInteraction(pFlow::cfModels::limitedLinearNormalRolling, pFlow::vibratingMotionGeometry); createInteraction(pFlow::cfModels::limitedLinearNormalRolling, pFlow::vibratingMotionGeometry);
createInteraction(pFlow::cfModels::nonLimitedLinearNormalRolling,pFlow::vibratingMotionGeometry); createInteraction(pFlow::cfModels::nonLimitedLinearNormalRolling,pFlow::vibratingMotionGeometry);
// conveyorBeltGeometry
createInteraction(pFlow::cfModels::limitedLinearNormalRolling, pFlow::conveyorBeltMotionGeometry);
createInteraction(pFlow::cfModels::nonLimitedLinearNormalRolling,pFlow::conveyorBeltMotionGeometry);
// multiRotationAxisMotionGeometry // multiRotationAxisMotionGeometry
//createInteraction(pFlow::cfModels::limitedLinearNormalRolling, pFlow::multiRotationAxisMotionGeometry); //createInteraction(pFlow::cfModels::limitedLinearNormalRolling, pFlow::multiRotationAxisMotionGeometry);
//createInteraction(pFlow::cfModels::nonLimitedLinearNormalRolling,pFlow::multiRotationAxisMotionGeometry); //createInteraction(pFlow::cfModels::nonLimitedLinearNormalRolling,pFlow::multiRotationAxisMotionGeometry);

View File

@ -53,6 +53,10 @@ createInteraction(pFlow::cfModels::nonLimitedNonLinearModNormalRolling,pFlow::ro
createInteraction(pFlow::cfModels::limitedNonLinearModNormalRolling, pFlow::vibratingMotionGeometry); createInteraction(pFlow::cfModels::limitedNonLinearModNormalRolling, pFlow::vibratingMotionGeometry);
createInteraction(pFlow::cfModels::nonLimitedNonLinearModNormalRolling,pFlow::vibratingMotionGeometry); createInteraction(pFlow::cfModels::nonLimitedNonLinearModNormalRolling,pFlow::vibratingMotionGeometry);
// conveyorBeltMotionGeometry
createInteraction(pFlow::cfModels::limitedNonLinearModNormalRolling, pFlow::conveyorBeltMotionGeometry);
createInteraction(pFlow::cfModels::nonLimitedNonLinearModNormalRolling,pFlow::conveyorBeltMotionGeometry);
// multiRotationAxisMotionGeometry // multiRotationAxisMotionGeometry
//createInteraction(pFlow::cfModels::limitedNonLinearModNormalRolling, pFlow::multiRotationAxisMotionGeometry); //createInteraction(pFlow::cfModels::limitedNonLinearModNormalRolling, pFlow::multiRotationAxisMotionGeometry);
//createInteraction(pFlow::cfModels::nonLimitedNonLinearModNormalRolling,pFlow::multiRotationAxisMotionGeometry); //createInteraction(pFlow::cfModels::nonLimitedNonLinearModNormalRolling,pFlow::multiRotationAxisMotionGeometry);

View File

@ -53,6 +53,10 @@ createInteraction(pFlow::cfModels::nonLimitedNonLinearNormalRolling,pFlow::rotat
createInteraction(pFlow::cfModels::limitedNonLinearNormalRolling, pFlow::vibratingMotionGeometry); createInteraction(pFlow::cfModels::limitedNonLinearNormalRolling, pFlow::vibratingMotionGeometry);
createInteraction(pFlow::cfModels::nonLimitedNonLinearNormalRolling,pFlow::vibratingMotionGeometry); createInteraction(pFlow::cfModels::nonLimitedNonLinearNormalRolling,pFlow::vibratingMotionGeometry);
// conveyorBeltMotionGeometry
createInteraction(pFlow::cfModels::limitedNonLinearNormalRolling, pFlow::conveyorBeltMotionGeometry);
createInteraction(pFlow::cfModels::nonLimitedNonLinearNormalRolling,pFlow::conveyorBeltMotionGeometry);
// multiRotationAxisMotionGeometry // multiRotationAxisMotionGeometry
//createInteraction(pFlow::cfModels::limitedNonLinearNormalRolling, pFlow::multiRotationAxisMotionGeometry); //createInteraction(pFlow::cfModels::limitedNonLinearNormalRolling, pFlow::multiRotationAxisMotionGeometry);
//createInteraction(pFlow::cfModels::nonLimitedNonLinearNormalRolling,pFlow::multiRotationAxisMotionGeometry); //createInteraction(pFlow::cfModels::nonLimitedNonLinearNormalRolling,pFlow::multiRotationAxisMotionGeometry);

View File

@ -11,6 +11,9 @@ vibratingMotion/vibratingMotion.cpp
stationaryWall/stationaryWall.cpp stationaryWall/stationaryWall.cpp
entities/stationary/stationary.cpp entities/stationary/stationary.cpp
conveyorBeltMotion/conveyorBeltMotion.cpp
entities/conveyorBelt/conveyorBelt.cpp
#entities/multiRotatingAxis/multiRotatingAxis.cpp #entities/multiRotatingAxis/multiRotatingAxis.cpp
#multiRotatingAxisMotion/multiRotatingAxisMotion.cpp #multiRotatingAxisMotion/multiRotatingAxisMotion.cpp

View File

@ -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()<<endl;
return false;
}
}
return true;
}

View File

@ -0,0 +1,104 @@
/*------------------------------- 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 __conveyorBeltMotion_hpp__
#define __conveyorBeltMotion_hpp__
#include "MotionModel.hpp"
#include "conveyorBelt.hpp"
#include "fileDictionary.hpp"
namespace pFlow
{
/**
* conveyor belt model for walls
*
* This class is used for simulaiton that wall components are conveyor belt.
*
\verbatim
// In geometryDict file, this will defines stationary walls
...
motionModel conveyorBelt;
// this dictionary is optional
conveyorBeltInfo
{
conveyorBelt1
{
// the definition based on class conveyorBelt
}
}
...
\endverbatim
*
*/
class conveyorBeltMotion
:
public fileDictionary,
public MotionModel<conveyorBeltMotion, conveyorBelt>
{
protected:
friend MotionModel<conveyorBeltMotion, conveyorBelt>;
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__

View File

@ -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()<<endl;
fatalExit;
}
}
FUNCTION_H
bool pFlow::conveyorBelt::read(const dictionary& dict)
{
tangentVelocity_ = dict.getVal<realx3>("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()<<endl;
return false;
}
return true;
}
FUNCTION_H
bool pFlow::conveyorBelt::read(iIstream& is)
{
notImplementedFunction;
return true;
}
FUNCTION_H
bool pFlow::conveyorBelt::write(iOstream& os)const
{
os.writeWordEntry("tangentVelocity", tangentVelocity_);
return true;
}

View File

@ -0,0 +1,108 @@
/*------------------------------- 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 __conveyorBelt_hpp__
#define __conveyorBelt_hpp__
#include "types.hpp"
#include "typeInfo.hpp"
#include "streams.hpp"
namespace pFlow
{
// forward
class dictionary;
/**
* conveyor belt model for a wall
*
*/
class conveyorBelt
{
private:
realx3 tangentVelocity_{0, 0, 0};
public:
TypeInfoNV("conveyorBelt");
FUNCTION_HD
conveyorBelt()=default;
FUNCTION_H
explicit conveyorBelt(const dictionary& dict);
FUNCTION_HD
conveyorBelt(const conveyorBelt&) = default;
conveyorBelt& operator=(const conveyorBelt&) = default;
INLINE_FUNCTION_HD
void setTime(real t)
{}
INLINE_FUNCTION_HD
realx3 linVelocityPoint(const realx3 &)const
{
return tangentVelocity_;
}
INLINE_FUNCTION_HD
realx3 transferPoint(const realx3& p, real)const
{
return p;
}
// - IO operation
FUNCTION_H
bool read(const dictionary& dict);
FUNCTION_H
bool write(dictionary& dict) const;
FUNCTION_H
bool read(iIstream& is);
FUNCTION_H
bool write(iOstream& os)const;
};
inline iOstream& operator <<(iOstream& os, const conveyorBelt& obj)
{
return os;
}
inline iIstream& operator >>(iIstream& is, conveyorBelt& obj)
{
return is;
}
}
#endif

View File

@ -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);
}

View File

@ -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
}
}

View File

@ -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

View File

@ -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
#------------------------------------------------------------------------------

View File

@ -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
#------------------------------------------------------------------------------

View File

@ -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
}
}

View File

@ -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
}
}

View File

@ -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
}
}

View File

@ -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

View File

@ -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

View File

@ -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