updated V1.0 V-blender

This commit is contained in:
ramin1728 2024-12-28 14:58:28 +03:30
parent 31ebc5963c
commit c02027f5d2
7 changed files with 235 additions and 204 deletions

View File

@ -6,70 +6,49 @@ objectName interaction;
objectType dicrionary; objectType dicrionary;
fileFormat ASCII; fileFormat ASCII;
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
materials (wallMat lightMat); // a list of materials names
// a list of materials names densities (1000 1000); // density of materials [kg/m3]
materials (wallMat lightMat);
// density of materials [kg/m3]
densities (1000 1000);
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;
// Young modulus [Pa]
Yeff (1.0e6 1.0e6 Yeff (1.0e6 1.0e6
1.0e6); 1.0e6); // Young modulus [Pa]
// Shear modulus [Pa]
Geff (0.8e6 0.8e6 Geff (0.8e6 0.8e6
0.8e6); 0.8e6); // Shear modulus [Pa]
// Poisson's ratio [-]
nu (0.25 0.25 nu (0.25 0.25
0.25); 0.25); // Poisson's ratio [-]
// coefficient of normal restitution
en (0.97 0.85 en (0.97 0.85
0.97); 0.97); // coefficient of normal restitution
// dynamic friction
mu (0.65 0.35 mu (0.65 0.35
0.65); 0.65); // dynamic friction
// rolling friction
mur (0.1 0.1 mur (0.1 0.1
0.1); 0.1); // rolling friction
} }
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

@ -6,97 +6,86 @@ objectName particleInsertion;
objectType dicrionary; objectType dicrionary;
fileFormat ASCII; fileFormat ASCII;
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
active Yes; // is insertion active -> Yes or No
// is insertion active? checkForCollision No; // is checked -> Yes or No
active yes;
// not implemented for yes
collisionCheck No;
/* /*
two layers of particles are packed one-by-one using tho insertion steps. Two layers of particles are packed one-by-one using tho insertion steps
*/ */
rightregion rightregion
{ {
// type of insertion region timeControl simulationTime;
type cylinderRegion;
// insertion rate (particles/s) regionType cylinder; // type of insertion region
rate 10000;
// start time of small particles insertion (s) rate 10000; // Particles Insertion Rate (particles/s)
startTime 0.0;
// end time of small particles insertion (s) startTime 0.0; // start time of small particles insertion (s)
endTime 1;
// time interval of small particles insertion (s) endTime 1; // end time of small particles insertion (s)
interval 0.025;
cylinderRegionInfo insertionInterval 0.025; // time interval of small particles insertion (s)
cylinderInfo
{ {
// radius of cylinder (m) /* coordinates of center of both ends of the insertion
radius 0.1;
cylinder on the right side of the V-blender (m,m,m) */
// coordinates of center of both ends of the insertion cylinder on
// the right side of the V-blender (m,m,m)
p1 (0.0950615 0.12 0.5011585); p1 (0.0950615 0.12 0.5011585);
p2 (0.1150615 0.12 0.4811585); p2 (0.1150615 0.12 0.4811585);
radius 0.1; // radius of cylinder (m)
} }
setFields setFields
{ {
// initial velocity of inserted particles velocity realx3 (1.2 0.0 -1.2); // initial velocity of inserted particles
velocity realx3 (1.2 0.0 -1.2);
} }
mixture mixture
{ {
// first layer of inserted particles smallSphere 1; // first layer of inserted particles
smallSphere 1;
} }
} }
leftregion leftregion
{ {
// type of insertion region timeControl simulationTime;
type cylinderRegion;
// insertion rate (particles/s) regionType cylinder; // type of insertion region
rate 10000;
// start time of large particles insertion (s) rate 10000; // Particles Insertion Rate (particles/s)
startTime 1.5;
// end time of large particles insertion (s) startTime 1.5; // start time of large particles insertion (s)
endTime 2.5;
// time interval of large particles insertion (s) endTime 2.5; // end time of large particles insertion (s)
interval 0.025;
cylinderRegionInfo insertionInterval 0.025; // time interval of large particles insertion (s)
cylinderInfo
{ {
// radius of cylinder (m) /* coordinates of center of both ends of the insertion
radius 0.1;
cylinder on the left side of the V-blender (m,m,m) */
// coordinates of center of both ends of the insertion cylinder on
// the left side of the V-blender (m,m,m)
p1 ( 0.7562545 0.12 0.50079); p1 ( 0.7562545 0.12 0.50079);
p2 ( 0.7362545 0.12 0.48079); p2 ( 0.7362545 0.12 0.48079);
radius 0.1; // radius of cylinder (m)
} }
setFields setFields
{ {
// initial velocity of inserted particles velocity realx3 (-1.2 0.0 -1.2); // initial velocity of inserted particles
velocity realx3 (-1.2 0.0 -1.2);
} }
mixture mixture
{ {
// second layer of inserted particles largeSphere 1; // second layer of inserted particles
largeSphere 1;
} }
} }

View File

@ -6,12 +6,8 @@ objectName sphereDict;
objectType sphereShape; objectType sphereShape;
fileFormat ASCII; fileFormat ASCII;
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
names (smallSphere largeSphere); // names of particles
// names of particles diameters (0.01 0.0101); // diameter of particles
names (smallSphere largeSphere);
// diameter of particles materials (lightMat lightMat); // material names for particles
diameters (0.01 0.0101);
// material names for particles
materials (lightMat lightMat);

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.1 -0.4 0); // lower corner point of the box
max (0.86 0.6 0.6); // 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: periodic, 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,49 +6,37 @@ objectName geometryDict;
objectType dictionary; objectType dictionary;
fileFormat ASCII; fileFormat ASCII;
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
motionModel rotatingAxis; // motion model: rotating object around an axis
// motion model: rotating object around an axis rotatingAxisInfo // information for rotatingAxis motion model
motionModel rotatingAxisMotion;
surfaces
{
body
{
// type of the wall
type stlWall;
// file name in stl folder
file body.stl;
// material name of this wall
material wallMat;
// motion component name
motion rotAxis;
}
}
// information for rotatingAxisMotion motion model
rotatingAxisMotionInfo
{ {
rotAxis rotAxis
{ {
// first point for the axis of rotation p1 (0.128228 0.116446 0.297901); // first point for the axis of rotation
p1 (0.128228 0.116446 0.297901);
// second point for the axis of rotation p2 (0.722596 0.116459 0.297901); // second point for the axis of rotation
p2 (0.722596 0.116459 0.297901);
// rotation speed (rad/s) omega 3.14; // rotation speed (rad/s)
omega 3.14;
// start time of rotation startTime 3; // start time of rotation
startTime 3;
// end time of rotation endTime 10; // end time of rotation
endTime 10;
} }
} }
surfaces
{
body
{
type stlWall; // type of the wall
file body.stl; // file name in stl folder
material wallMat; // material name of this wall
motion otAxis; // motion component name
}
}

View File

@ -6,43 +6,74 @@ 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
{ {
// linear velocity (m/s) velocity realx3 (0 0 0); // linear velocity (m/s)
velocity realx3 (0 0 0);
// linear acceleration (m/s2) acceleration realx3 (0 0 0); // linear acceleration (m/s2)
acceleration realx3 (0 0 0);
// rotational velocity (rad/s) rVelocity realx3 (0 0 0); // rotational velocity (rad/s)
rVelocity realx3 (0 0 0);
// name of the particle shape shapeName word smallSphere; // name of the particle shape
shapeName word smallSphere;
} }
selectors selectors
{}
}
// positions particles
positionParticles
{ {
// no particle is initially in the simulation shapeAssigne
method empty; {
selector stridedRange; // other options: box, cylinder, sphere, randomPoints
// maximum number of particles in the simulation stridedRangeInfo
maxNumberOfParticles 25000; {
begin 0; // begin index of points
// perform initial sorting based on morton code? end 24000; // end index of points
mortonSorting Yes;
stride 3; // stride for selector
}
fieldValue // fields that the selector is applied to
{
shapeName word sphere1; // sets shapeName of the selected points to largeSphere
}
}
}
}
positionParticles // positions particles
{
method ordered; // ordered positioning
mortonSorting Yes; // perform initial sorting based on morton code?
orderedInfo
{
diameter 0.0101; // minimum space between centers of particles
numPoints 25000; // number of particles in the simulation
axisOrder (x y z); // axis order for filling the space with particles
}
regionType cylinder; // other options: cylinder and sphere
cylinderInfo // cylinder for positioning particles
{
p1 (0.0 0.0 0.09); // Coordinates of bottom cylinderRegion (m,m,m)
p2 (0.0 0.0 0.21); // Coordinates of top cylinderRegion (m,m,m)
radius 0.09; // radius of cylinder
}
} }

View File

@ -6,45 +6,29 @@ objectName settingsDict;
objectType dictionary; objectType dictionary;
fileFormat ASCII; fileFormat ASCII;
/*---------------------------------------------------------------------------*/ /*---------------------------------------------------------------------------*/
run rotatingVblender; run rotatingVblender;
// time step for integration (s) dt 0.00001; // time step for integration (s)
dt 0.00001;
// start time for simulation startTime 0; // start time for simulation
startTime 0;
// end time for simulation endTime 10; // end time for simulation
endTime 10;
// time interval for saving the simulation saveInterval 0.05; // time interval for saving the simulation
saveInterval 0.05;
// maximum number of digits for time folder timePrecision 6; // maximum number of digits for time folder
timePrecision 6;
// gravity vector (m/s2) g (0 0 -9.8); // gravity vector (m/s2)
g (0 0 -9.8);
/* includeObjects (diameter); // save necessary (i.e., required) data on disk
Simulation domain
every particles that goes outside this domain is deleted.
*/
domain // exclude unnecessary data from saving on disk
{ excludeObjects (rVelocity.dy1 pStructPosition.dy1 pStructVelocity.dy1);
min (-0.1 -0.4 0);
max (0.86 0.6 0.6);
}
// integration method integrationMethod AdamsBashforth2; // integration method
integrationMethod AdamsBashforth2;
writeFormat ascii; writeFormat ascii; // data writting format (ascii or binary)
// report timers? timersReport Yes; // report timers (Yes or No)
timersReport Yes;
// time interval for reporting timers timersReportInterval 0.01; // time interval for reporting timers
timersReportInterval 0.01;