Compare commits

...

7 Commits

Author SHA1 Message Date
Omid Khosravi 2ccf6de8ae
Merge 99269b9682 into 12b3413306 2024-12-24 22:55:51 +08:00
Hamidreza Norouzi 12b3413306
Merge pull request #131 from ramin1728/rotatingDrumSmall
updated V1.0 rotatingDrumSmall
2024-12-24 18:08:32 +03:30
ramin1728 ebff41619e updated V1.0 rotatingDrumSmall 2024-12-24 18:03:38 +03:30
Omid Khosravi 99269b9682 Update gitignore
src files ignored
2023-03-26 19:11:40 +04:30
Omid Khosravi 5fe3304fdc tote blender commit 2023-03-26 03:08:06 +04:30
Omid Khosravi b98b97fe8c RDB second commit 2023-03-26 03:07:44 +04:30
Omid Khosravi 0de7f91013 RDB commit 2023-03-26 03:07:04 +04:30
19 changed files with 862 additions and 144 deletions

5
.gitignore vendored
View File

@ -61,3 +61,8 @@ doc/DTAGS
**/[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 **/VTK
utilities/postprocessPhasicFlow/includeMask.hpp
utilities/postprocessPhasicFlow/ProcessField.hpp
utilities/postprocessPhasicFlow/ProcessField.hpp
*.hpp
*.cpp

View File

@ -6,15 +6,30 @@ objectName interaction;
objectType dicrionary; objectType dicrionary;
fileFormat ASCII; 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
updateInterval 10;
sizeRatio 1.1;
cellExtent 0.55;
adjustableBox Yes;
}
model model
{ {
contactForceModel nonLinearNonLimited; contactForceModel nonLinearNonLimited;
rollingFrictionModel normal; rollingFrictionModel normal;
Yeff (1.0e6); // Young modulus [Pa] Yeff (1.0e6); // Young modulus [Pa]
@ -30,24 +45,5 @@ model
mu (0.3); // dynamic friction mu (0.3); // dynamic friction
mur (0.1); // rolling 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)
}
}

View File

@ -6,9 +6,8 @@ objectName particleInsertion;
objectType dicrionary; objectType dicrionary;
fileFormat ASCII; fileFormat ASCII;
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
active No; // is insertion active -> Yes or No
active no; // is insertion active? collisionCheck No; // is checked -> Yes or No
collisionCheck No; // not implemented for yes

View File

@ -0,0 +1,13 @@
/* -------------------------------*- C++ -*--------------------------------- *\
| phasicFlow File |
| copyright: www.cemf.ir |
\* ------------------------------------------------------------------------- */
objectName sphereDict;
objectType sphereShape;
fileFormat ASCII;
/*---------------------------------------------------------------------------*/
names (sphere1); // names of shapes
diameters (0.004); // diameter of shapes
materials (prop1); // material names for shapes

View File

@ -0,0 +1,64 @@
/* -------------------------------*- 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.00); // lower corner point of the box
max (0.12 0.12 0.11); // upper corner point of the box
}
decomposition
{
direction z;
}
boundaries
{
neighborListUpdateInterval 50; /* 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 */
updateInterval 10; // Determines how often do you want to update the new changes in the boundary
neighborLength 0.004; // The distance from the boundary plane within which particles are marked to be in the boundary list
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

@ -6,66 +6,85 @@ objectName geometryDict;
objectType dictionary; objectType dictionary;
fileFormat ASCII; fileFormat ASCII;
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
motionModel rotatingAxis;
// motion model: rotating object around an axis rotatingAxisInfo // information for rotatingAxisMotion motion model
motionModel rotatingAxisMotion; {
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 surfaces
{ {
/* /*
A cylinder with begin and end radii 0.12 m and axis points at (0 0 0) A cylinder with begin and end radii 0.12 m and axis points at (0 0 0) and (0 0 0.1)
and (0 0 0.1)
*/ */
cylinder cylinder
{ {
type cylinderWall; // type of the wall type cylinderWall; // type of the wall
p1 (0.0 0.0 0.0); // begin point of cylinder axis p1 (0.0 0.0 0.0); // begin point of cylinder axis
p2 (0.0 0.0 0.1); // end point of cylinder axis p2 (0.0 0.0 0.1); // end point of cylinder axis
radius1 0.12; // radius at p1 radius1 0.12; // radius at p1
radius2 0.12; // radius at p2 radius2 0.12; // radius at p2
resolution 24; // number of divisions resolution 24; // number of divisions
material prop1; // material name of this wall material prop1; // material name of this wall
motion rotAxis; // motion component name 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 wall1
{ {
type planeWall; // type of the wall type planeWall; // type of the wall
p1 (-0.12 -0.12 0.0); // first point of the wall p1 (-0.12 -0.12 0.0); // first point of the wall
p2 ( 0.12 -0.12 0.0); // second point p2 ( 0.12 -0.12 0.0); // second point
p3 ( 0.12 0.12 0.0); // third point p3 ( 0.12 0.12 0.0); // third point
p4 (-0.12 0.12 0.0); // fourth point p4 (-0.12 0.12 0.0); // fourth point
material prop1; // material name of the wall material prop1; // material name of the wall
motion rotAxis; // motion component name 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 wall2
{ {
type planeWall; type planeWall; // type of the wall
p1 (-0.12 -0.12 0.1);
p2 ( 0.12 -0.12 0.1); p1 (-0.12 -0.12 0.1); // first point of the wall
p3 ( 0.12 0.12 0.1);
p4 (-0.12 0.12 0.1); p2 ( 0.12 -0.12 0.1); // second point
material prop1;
motion rotAxis; 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)
}
}

View File

@ -6,45 +6,70 @@ objectName particlesDict;
objectType dictionary; objectType dictionary;
fileFormat ASCII; fileFormat ASCII;
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
setFields setFields
{ {
/* /*
Default value for fields defined for particles Default value for fields defined for particles
These fields should always be defined for simulations with These fields should always be defined for simulations with
spherical particles. spherical particles.
*/ */
defaultValue defaultValue
{ {
velocity realx3 (0 0 0); // linear velocity (m/s) velocity realx3 (0 0 0); // linear velocity (m/s)
acceleration realx3 (0 0 0); // linear acceleration (m/s2) acceleration realx3 (0 0 0); // linear acceleration (m/s2)
rVelocity realx3 (0 0 0); // rotational velocity (rad/s) rVelocity realx3 (0 0 0); // rotational velocity (rad/s)
shapeName word sphere1; // name of the particle shape shapeName word sphere1; // name of the particle shape
} }
selectors selectors
{} {
shapeAssigne
{
selector stridedRange; // other options: box, cylinder, sphere, randomPoints
stridedRangeInfo
{
begin 0; // begin index of points
end 30000; // end index of points
stride 3; // stride for selector
} }
// positions particles fieldValue // fields that the selector is applied to
positionParticles
{ {
method positionOrdered; // ordered positioning shapeName word sphere1; // sets shapeName of the selected points to largeSphere
}
}
}
positionParticles // positions particles
{
method ordered; // other options: random and empty
maxNumberOfParticles 40000; // maximum number of particles in the simulation
mortonSorting Yes; // perform initial sorting based on morton code? 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
}
positionOrderedInfo
{ {
diameter 0.004; // minimum space between centers of particles diameter 0.004; // minimum space between centers of particles
numPoints 30000; // number of particles in the simulation numPoints 30000; // number of particles in the simulation
axisOrder (z y x); // axis order for filling the space with particles axisOrder (z y x); // axis order for filling the space with particles
} }
regionType box; // other options: cylinder and sphere
boxInfo // box information 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

@ -6,7 +6,6 @@ objectName settingsDict;
objectType dictionary; objectType dictionary;
fileFormat ASCII; fileFormat ASCII;
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
run rotatingDrumSmall; run rotatingDrumSmall;
dt 0.00001; // time step for integration (s) dt 0.00001; // time step for integration (s)
@ -21,20 +20,15 @@ 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)
/* includeObjects (diameter); // save necessary (i.e., required) data on disk
Simulation domain
every particles that goes outside this domain is deleted. // exclude unnecessary data from saving on disk
*/ excludeObjects (rVelocity.dy1 pStructPosition.dy1 pStructVelocity.dy1);
domain
{
min (-0.12 -0.12 0);
max (0.12 0.12 0.11);
}
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 (Yes or No)
timersReportInterval 0.01; // time interval for reporting timers timersReportInterval 0.01; // time interval for reporting timers

View File

@ -0,0 +1,244 @@
# Problem Definition
The problem is to simulate a double pedestal tote blender with the diameter **0.03 m** and **0.1 m** respectively, the length **0.3 m**, rotating at **28 rpm**. This blender is filled with **20000** Particles. The timestep for integration is **0.00001 s**. There is one type of Particle in this blender that are being inserted during simulation to fill the drum.
* **20000** particles with **4 mm** diameter, at the rate of 20000 particles/s for 1 sec.
<html>
<body>
<div align="center"><b>
a view of the tote-blender while rotating
</div></b>
<div align="center">
<img src="sample sample sample sample", width=700px>
</div>
</body>
</html>
# Setting up the Case
As it has been explained in the previous cases, the simulation case setup is based on text-based scripts. Here, the simulation case setup are sotred in two folders: `caseSetup`, `setting`. (see the above folders). Unlike the previous cases, this case does not have the `stl` file. and the geometry is described in the `geometryDict` file.
## Defining particles
Then in the `caseSetup/sphereShape` the diameter and the material name of the particles are defined.
```C++
// names of shapes
names (sphere1);
// diameter of shapes (m)
diameters (0.004);
// material names for shapes
materials (prop1);
```
## Particle Insertion
In this case we have a region for ordering particles. These particles are placed in this blender. For example the script for the inserted particles is shown below.
<div align="center">
in <b>caseSetup/particleInsertion</b> file
</div>
```C++
// positions particles
positionParticles
{
// ordered positioning
method positionOrdered;
// maximum number of particles in the simulation
maxNumberOfParticles 40000;
// perform initial sorting based on morton code?
mortonSorting Yes;
// box for positioning particles
box
{
// lower corner point of the box
min (-0.06 -0.06 0.08);
// upper corner point of the box
max (0.06 0.06 0.18);
}
```
## Interaction between particles
In `caseSetup/interaction` file, material names and properties and interaction parameters are defined: interaction between the particles of rotating drum. Since we are defining 1 material for simulation, the interaction matrix is 1x1 (interactions are symetric).
```C++
// a list of materials names
materials (prop1);
// density of materials [kg/m3]
densities (1000.0);
contactListType sortedContactList;
model
{
contactForceModel nonLinearNonLimited;
rollingFrictionModel normal;
/*
Property (prop1-prop1);
*/
// Young modulus [Pa]
Yeff (1.0e6);
// Shear modulus [Pa]
Geff (0.8e6);
// Poisson's ratio [-]
nu (0.25);
// coefficient of normal restitution
en (0.7);
// coefficient of tangential restitution
et (1.0);
// dynamic friction
mu (0.3);
// rolling friction
mur (0.1);
}
```
## Settings
### Geometry
In the `settings/geometryDict` file, the geometry and axis of rotation is defined for the drum. The geometry is composed of a cylinder inlet and outlet, cone shell top and down, a cylinder shell and enter and exit Gate.
```C++
surfaces
{
enterGate
{
// type of wall
type planeWall;
// coords of wall
p1 (-0.05 -0.05 0.3);
p2 (-0.05 0.05 0.3);
p3 ( 0.05 0.05 0.3);
p4 (0.05 -0.05 0.3);
// material of wall
material prop1;
// motion component name
motion rotAxis;
}
cylinderinlet
{
// type of the wall
type cylinderWall;
// begin point of cylinder axis
p1 (0.0 0.0 0.28);
// end point of cylinder axis
p2 (0.0 0.0 0.3);
// radius at p1
radius1 0.03;
// radius at p2
radius2 0.03;
// number of divisions
resolution 36;
// material name of this wall
material prop1;
// motion component name
motion rotAxis;
}
coneShelltop
{
// type of the wall
type cylinderWall;
// begin point of cylinder axis
p1 (0.0 0.0 0.2);
// end point of cylinder axis
p2 (0.0 0.0 0.28);
// radius at p1
radius1 0.1;
// radius at p2
radius2 0.03;
// number of divisions
resolution 36;
// material name of this wall
material prop1;
// motion component name
motion rotAxis;
}
cylinderShell
{
// type of the wall
type cylinderWall;
// begin point of cylinder axis
p1 (0.0 0.0 0.1);
// end point of cylinder axis
p2 (0.0 0.0 0.2);
// radius at p1
radius1 0.1;
// radius at p2
radius2 0.1;
// number of divisions
resolution 36;
// material name of this wall
material prop1;
// motion component name
motion rotAxis;
}
coneShelldown
{
// type of the wall
type cylinderWall;
// begin point of cylinder axis
p1 (0.0 0.0 0.02);
// end point of cylinder axis
p2 (0.0 0.0 0.1);
// radius at p1
radius1 0.03;
// radius at p2
radius2 0.1;
// number of divisions
resolution 36;
// material name of this wall
material prop1;
// motion component name
motion rotAxis;
}
/*
This is a plane wall at the exit of silo
*/
cylinderoutlet
{
// type of the wall
type cylinderWall;
// begin point of cylinder axis
p1 (0.0 0.0 0.0);
// end point of cylinder axis
p2 (0.0 0.0 0.02);
// radius at p1
radius1 0.03;
// radius at p2
radius2 0.03;
// number of divisions
resolution 36;
// material name of this wall
material prop1;
// motion component name
motion rotAxis;
}
exitGate
{
type planeWall;
p1 (-0.05 -0.05 0);
p2 (-0.05 0.05 0);
p3 ( 0.05 0.05 0);
p4 (0.05 -0.05 0);
material prop1;
motion rotAxis;
}
}
```
### Rotating Axis Info
In this part of `geometryDict` the information of rotating axis and speed of rotation are defined. Unlike the previous cases, the rotation of this blender starts at time=**0 s**.
```C++
rotatingAxisMotionInfo
{
rotAxis
{
p1 (-0.1 0.0 0.15); // first point for the axis of rotation
p2 (0.1 0.0 0.15); // second point for the axis of rotation
omega 3; // rotation speed (rad/s)
}
}
```
## Performing Simulation
To perform simulations, enter the following commands one after another in the terminal.
Enter `$ particlesPhasicFlow` command to create the initial fields for particles.
Enter `$ geometryPhasicFlow` command to create the Geometry.
At last, enter `$ sphereGranFlow` command to start the simulation.
After finishing the simulation, you can use `$ pFlowtoVTK` to convert the results into vtk format storred in ./VTK folder.

View File

@ -0,0 +1,61 @@
/* -------------------------------*- C++ -*--------------------------------- *\
| phasicFlow File |
| copyright: www.cemf.ir |
\* ------------------------------------------------------------------------- */
objectName interaction;
objectType dicrionary;
/* ------------------------------------------------------------------------- */
// a list of materials names
materials (prop1);
// density of materials [kg/m3]
densities (1000.0);
contactListType sortedContactList;
model
{
contactForceModel nonLinearNonLimited;
rollingFrictionModel normal;
/*
Property (prop1-prop1);
*/
// Young modulus [Pa]
Yeff (1.0e6);
// Shear modulus [Pa]
Geff (0.8e6);
// Poisson's ratio [-]
nu (0.25);
// coefficient of normal restitution
en (0.7);
// coefficient of tangential restitution
et (1.0);
// dynamic friction
mu (0.3);
// rolling friction
mur (0.1);
}
contactSearch
{
// method for broad search particle-particle
method NBS;
// method for broad search particle-wall
wallMapping cellMapping;
NBSInfo
{
// each 20 timesteps, update neighbor list
updateFrequency 20;
// bounding box size to particle diameter (max)
sizeRatio 1.1;
}
cellMappingInfo
{
// each 20 timesteps, update neighbor list
updateFrequency 20;
// bounding box for particle-wall search (> 0.5)
cellExtent 0.7;
}
}

View File

@ -0,0 +1,13 @@
/* -------------------------------*- C++ -*--------------------------------- *\
| phasicFlow File |
| copyright: www.cemf.ir |
\* ------------------------------------------------------------------------- */
objectName particleInsertion;
objectType dicrionary;
/* ------------------------------------------------------------------------- */
// is insertion active?
active no;
// not implemented for yes
collisionCheck No;

View File

@ -0,0 +1,13 @@
/* -------------------------------*- C++ -*--------------------------------- *\
| phasicFlow File |
| copyright: www.cemf.ir |
\* ------------------------------------------------------------------------- */
objectName sphereDict;
objectType sphereShape;
/* ------------------------------------------------------------------------- */
// names of shapes
names (sphere1);
// diameter of shapes (m)
diameters (0.004);
// material names for shapes
materials (prop1);

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,151 @@
/* -------------------------------*- C++ -*--------------------------------- *\
| phasicFlow File |
| copyright: www.cemf.ir |
\* ------------------------------------------------------------------------- */
objectName geometryDict;
objectType dictionary;
/* ------------------------------------------------------------------------- */
// motion model: rotating object around an axis
motionModel rotatingAxisMotion;
surfaces
{
enterGate
{
// type of wall
type planeWall;
// coords of wall
p1 (-0.05 -0.05 0.3);
p2 (-0.05 0.05 0.3);
p3 ( 0.05 0.05 0.3);
p4 (0.05 -0.05 0.3);
// material of wall
material prop1;
// motion component name
motion rotAxis;
}
cylinderinlet
{
// type of the wall
type cylinderWall;
// begin point of cylinder axis
p1 (0.0 0.0 0.28);
// end point of cylinder axis
p2 (0.0 0.0 0.3);
// radius at p1
radius1 0.03;
// radius at p2
radius2 0.03;
// number of divisions
resolution 36;
// material name of this wall
material prop1;
// motion component name
motion rotAxis;
}
coneShelltop
{
// type of the wall
type cylinderWall;
// begin point of cylinder axis
p1 (0.0 0.0 0.2);
// end point of cylinder axis
p2 (0.0 0.0 0.28);
// radius at p1
radius1 0.1;
// radius at p2
radius2 0.03;
// number of divisions
resolution 36;
// material name of this wall
material prop1;
// motion component name
motion rotAxis;
}
cylinderShell
{
// type of the wall
type cylinderWall;
// begin point of cylinder axis
p1 (0.0 0.0 0.1);
// end point of cylinder axis
p2 (0.0 0.0 0.2);
// radius at p1
radius1 0.1;
// radius at p2
radius2 0.1;
// number of divisions
resolution 36;
// material name of this wall
material prop1;
// motion component name
motion rotAxis;
}
coneShelldown
{
// type of the wall
type cylinderWall;
// begin point of cylinder axis
p1 (0.0 0.0 0.02);
// end point of cylinder axis
p2 (0.0 0.0 0.1);
// radius at p1
radius1 0.03;
// radius at p2
radius2 0.1;
// number of divisions
resolution 36;
// material name of this wall
material prop1;
// motion component name
motion rotAxis;
}
/*
This is a plane wall at the exit of silo
*/
cylinderoutlet
{
// type of the wall
type cylinderWall;
// begin point of cylinder axis
p1 (0.0 0.0 0.0);
// end point of cylinder axis
p2 (0.0 0.0 0.02);
// radius at p1
radius1 0.03;
// radius at p2
radius2 0.03;
// number of divisions
resolution 36;
// material name of this wall
material prop1;
// motion component name
motion rotAxis;
}
exitGate
{
type planeWall;
p1 (-0.05 -0.05 0);
p2 (-0.05 0.05 0);
p3 ( 0.05 0.05 0);
p4 (0.05 -0.05 0);
material prop1;
motion rotAxis;
}
}
// information for rotatingAxisMotion motion model
rotatingAxisMotionInfo
{
rotAxis
{
p1 (-0.1 0.0 0.15); // first point for the axis of rotation
p2 (0.1 0.0 0.15); // second point for the axis of rotation
omega 3; // rotation speed (rad/s)
}
}

View File

@ -0,0 +1,59 @@
/* -------------------------------*- 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
{
// linear velocity (m/s)
velocity realx3 (0 0 0);
// linear acceleration (m/s2)
acceleration realx3 (0 0 0);
// rotational velocity (rad/s)
rotVelocity realx3 (0 0 0);
// name of the particle shape
shapeName word sphere1;
}
selectors
{}
}
// positions particles
positionParticles
{
// ordered positioning
method positionOrdered;
// maximum number of particles in the simulation
maxNumberOfParticles 40000;
// perform initial sorting based on morton code?
mortonSorting Yes;
// box for positioning particles
box
{
// lower corner point of the box
min (-0.06 -0.06 0.08);
// upper corner point of the box
max (0.06 0.06 0.18);
}
positionOrderedInfo
{
// minimum space between centers of particles
diameter 0.004;
// number of particles in the simulation
numPoints 20000;
// axis order for filling the space with particles
axisOrder (z y x);
}
}

View File

@ -0,0 +1,34 @@
/* -------------------------------*- C++ -*--------------------------------- *\
| phasicFlow File |
| copyright: www.cemf.ir |
\* ------------------------------------------------------------------------- */
objectName settingsDict;
objectType dictionary;;
/*---------------------------------------------------------------------------*/
run toteBlender;
// time step for integration (s)
dt 0.00001;
// start time for simulation
startTime 0;
// end time for simulation
endTime 10;
// time interval for saving the simulation
saveInterval 0.1;
// maximum number of digits for time folder
timePrecision 6;
// gravity vector (m/s2)
g (0 0 -9.8);
/* Simulation domain */
/* every particles that goes outside this domain is deleted. */
domain
{
min (-0.5 -0.5 -0.5);
max (0.5 0.5 0.5);
}
// integration method
integrationMethod AdamsBashforth2;
// report timers?
timersReport Yes;
// time interval for reporting timers
timersReportInterval 0.01;