mirror of
https://github.com/ParticulateFlow/CFDEMcoupling-PFM.git
synced 2025-12-08 06:37:44 +00:00
[DOC] update model options
This commit is contained in:
BIN
doc/Eqs/voidfractionModel_divided_pic1.png
Executable file
BIN
doc/Eqs/voidfractionModel_divided_pic1.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 1.7 KiB |
BIN
doc/Eqs/voidfractionModel_divided_pic2.png
Executable file
BIN
doc/Eqs/voidfractionModel_divided_pic2.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 4.7 KiB |
BIN
doc/Eqs/voidfractionModel_divided_pic3.png
Executable file
BIN
doc/Eqs/voidfractionModel_divided_pic3.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 5.0 KiB |
BIN
doc/Eqs/voidfractionModel_divided_pic4.png
Executable file
BIN
doc/Eqs/voidfractionModel_divided_pic4.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 15 KiB |
BIN
doc/Eqs/voidfractionModel_divided_pic5.png
Executable file
BIN
doc/Eqs/voidfractionModel_divided_pic5.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 4.1 KiB |
BIN
doc/Eqs/voidfractionModel_divided_pic6.png
Executable file
BIN
doc/Eqs/voidfractionModel_divided_pic6.png
Executable file
Binary file not shown.
|
After Width: | Height: | Size: 1.9 KiB |
@ -16,11 +16,13 @@ dataExchangeModel twoWayFiles;
|
|||||||
twoWayFilesProps
|
twoWayFilesProps
|
||||||
\{
|
\{
|
||||||
couplingFilename "filename";
|
couplingFilename "filename";
|
||||||
maxNumberOfParticles number;
|
maxNumberOfParticles scalar1;
|
||||||
|
DEMts scalar2;
|
||||||
\} :pre
|
\} :pre
|
||||||
|
|
||||||
{filename} = filename of the VTK file series :ulb,l
|
{filename} = filename of the VTK file series :ulb,l
|
||||||
{number} = maximum number of particles in DEM simulation :l
|
{scalar1} = maximum number of particles in DEM simulation :l
|
||||||
|
{scalar2} = DEM time step width :l
|
||||||
:ule
|
:ule
|
||||||
|
|
||||||
[Examples:]
|
[Examples:]
|
||||||
|
|||||||
@ -30,11 +30,11 @@ executeProps0
|
|||||||
verbose;
|
verbose;
|
||||||
\} :pre
|
\} :pre
|
||||||
|
|
||||||
{command} = LIGGGHTS command to be executed. Each word in a new line, numbers and symbols need special treatment (e.g. $couplingInterval will be replaced by correct coupling interval in the simulation) :ulb,l
|
{command} = LIGGGHTS command to be executed. Each word in a new line, numbers and symbols need special treatment (e.g. $couplingInterval will be replaced by correct coupling interval in the simulation) :ulb,l
|
||||||
{switch1} = switch (choose on/off) if the command is executed only at first time step :l
|
{switch1} = (optional, default off) if the command is executed only at first time step :l
|
||||||
{switch2} = switch (choose on/off) if the command is executed only at last time step :l
|
{switch2} = (optional, default off) if the command is executed only at last time step (requires {switch1} to be off) :l
|
||||||
{switch3} = switch (choose on/off) if the command is executed at every coupling step :l
|
{switch3} = (optional, default off) if the command is executed at every coupling step (requires {switch1} and {switch2} to be off) :l
|
||||||
{switch4} = switch (choose on/off) if the command is executed at every writing step :l
|
{switch4} = (optional, default off) if the command is executed at every writing step (requires {switch1} to {switch3} to be off) :l
|
||||||
{verbose} = (normally off) for verbose run :l
|
{verbose} = (normally off) for verbose run :l
|
||||||
:ule
|
:ule
|
||||||
|
|
||||||
|
|||||||
@ -18,9 +18,26 @@ liggghtsCommandModels
|
|||||||
);
|
);
|
||||||
readLiggghtsDataProps0
|
readLiggghtsDataProps0
|
||||||
\{
|
\{
|
||||||
???
|
startIndex scalar1;
|
||||||
|
verbose;
|
||||||
|
exactTiming;
|
||||||
|
filePath
|
||||||
|
(
|
||||||
|
"word"
|
||||||
|
);
|
||||||
|
startTime scalar2;
|
||||||
|
endTime scalar3;
|
||||||
|
timeInterval scalar4;
|
||||||
\} :pre
|
\} :pre
|
||||||
|
|
||||||
|
{scalar1} = start index of data file to be read; the index is appended to {filePath} :ulb,l
|
||||||
|
{verbose} = (default off) flag for verbose run :l
|
||||||
|
{exactTiming} = flag indicating that start time should be kept even during a coupling interval :l
|
||||||
|
{filePath} = path to LIGGGHTS data file. Each word starts in a new line; special characters, i.e. dots and slashes, need special treatment (e.g. dotdot will be replaced by "..") :l
|
||||||
|
{scalar2} = start reading at this time :l
|
||||||
|
{scalar3} = end reading at this time :l
|
||||||
|
{scalar4} = repeat reading at this time interval while increasing the data file index :l
|
||||||
|
:ule
|
||||||
|
|
||||||
[Examples:]
|
[Examples:]
|
||||||
|
|
||||||
@ -30,13 +47,27 @@ liggghtsCommandModels
|
|||||||
);
|
);
|
||||||
readLiggghtsDataProps0
|
readLiggghtsDataProps0
|
||||||
\{
|
\{
|
||||||
???
|
startIndex 0;
|
||||||
|
exactTiming;
|
||||||
|
filePath
|
||||||
|
(
|
||||||
|
dotdot
|
||||||
|
slash
|
||||||
|
DEM
|
||||||
|
slash
|
||||||
|
packing.data
|
||||||
|
);
|
||||||
|
startTime 0.002;
|
||||||
|
endTime 0.012;
|
||||||
|
timeInterval 0.001;
|
||||||
\} :pre
|
\} :pre
|
||||||
|
|
||||||
[Description:]
|
[Description:]
|
||||||
|
|
||||||
The {readLiggghtsData} liggghtsCommandModel can be used to read LIGGGHTS data
|
The {readLiggghtsData} liggghtsCommandModel can be used to read LIGGGHTS data
|
||||||
files into LIGGGHTS during runtime of a coupled simulation.
|
files into LIGGGHTS during runtime of a coupled simulation. This corresponds to
|
||||||
|
the {read_data} command in LIGGGHTS with the {add} option, i.e. read in
|
||||||
|
particles are added to existing particles.
|
||||||
|
|
||||||
IMPORTANT NOTE: Model is outdated.
|
IMPORTANT NOTE: Model is outdated.
|
||||||
|
|
||||||
|
|||||||
@ -20,15 +20,17 @@ liggghtsCommandModels
|
|||||||
writeLiggghtsProps
|
writeLiggghtsProps
|
||||||
\{
|
\{
|
||||||
writeLast switch1;
|
writeLast switch1;
|
||||||
|
path "path";
|
||||||
writeName "name";
|
writeName "name";
|
||||||
overwrite switch2;
|
overwrite switch2;
|
||||||
verbose;
|
verbose;
|
||||||
\} :pre
|
\} :pre
|
||||||
|
|
||||||
{switch1} = switch (choose on/off) to select if only last step is stored or every write step (default on). :ulb,l
|
{switch1} = (optional, default on) select if only last step is stored or every write step :ulb,l
|
||||||
{name} = name of the restart file to be written in /$caseDir/DEM/ default (default "liggghts.restartCFDEM") :l
|
{path} = (optional, default "../DEM") alternative path (relative to execution directory) for saving the restart file :l
|
||||||
{switch2} = switch (choose on/off) to select if only one restart file $name or many files $name_$timeStamp are written (default off):l
|
{name} = (optional, default "liggghts.restartCFDEM") name of the restart file to be written in ../DEM/ :l
|
||||||
{verbose} = (default off) for verbose run :l
|
{switch2} = (optional, default off) select if only one restart file $name or multiple files $name_$timeStamp are written :l
|
||||||
|
{verbose} = (optional, default off) for verbose run :l
|
||||||
:ule
|
:ule
|
||||||
|
|
||||||
[Examples:]
|
[Examples:]
|
||||||
|
|||||||
@ -21,13 +21,15 @@ implicitCoupleProps
|
|||||||
velFieldName "U";
|
velFieldName "U";
|
||||||
granVelFieldName "Us";
|
granVelFieldName "Us";
|
||||||
voidfractionFieldName "voidfraction";
|
voidfractionFieldName "voidfraction";
|
||||||
minAlphaP number;
|
KslLimit scalar1;
|
||||||
|
minAlphaP scalar2;
|
||||||
\} :pre
|
\} :pre
|
||||||
|
|
||||||
{U} = name of the finite volume fluid velocity field :ulb,l
|
{U} = name of the finite volume fluid velocity field :ulb,l
|
||||||
{Us} = name of the finite volume granular velocity field :l
|
{Us} = name of the finite volume granular velocity field :l
|
||||||
{voidfraction} = name of the finite volume voidfraction field :l
|
{voidfraction} = name of the finite volume voidfraction field :l
|
||||||
{number} = minimum value for local particle volume fraction to calculate the exchange filed (default SMALL) :l
|
{scalar1} = (optional, default 1e10) limit implicit momentum exchange field :l
|
||||||
|
{scalar2} = (optional, default SMALL) minimum value for local particle volume fraction to calculate the exchange field :l
|
||||||
:ule
|
:ule
|
||||||
|
|
||||||
[Examples:]
|
[Examples:]
|
||||||
|
|||||||
@ -19,12 +19,14 @@ constDiffSmoothingProps
|
|||||||
upperLimit number2;
|
upperLimit number2;
|
||||||
smoothingLength lengthScale;
|
smoothingLength lengthScale;
|
||||||
smoothingLengthReferenceField lengthScaleRefField;
|
smoothingLengthReferenceField lengthScaleRefField;
|
||||||
|
verbose;
|
||||||
\} :pre
|
\} :pre
|
||||||
|
|
||||||
{number1} = scalar fields will be bound to this lower value :ulb,l
|
{number1} = scalar fields will be bound to this lower value :ulb,l
|
||||||
{number2} = scalar fields will be bound to this upper value :l
|
{number2} = scalar fields will be bound to this upper value :l
|
||||||
{lengthScale} = length scale over which the exchange fields will be smoothed out :l
|
{lengthScale} = length scale over which the exchange fields will be smoothed out :l
|
||||||
{lengthScaleRefField} = length scale over which reference fields (e.g., the average particle velocity) will be smoothed out. Should be always larger than lengthScale. If not specified, will be equal to lengthScale. :l
|
{lengthScaleRefField} = length scale over which reference fields (e.g., the average particle velocity) will be smoothed out. Should be always larger than lengthScale. If not specified, will be equal to lengthScale. :l
|
||||||
|
{verbose} = (optional, default false) flag for debugging output :l
|
||||||
:ule
|
:ule
|
||||||
|
|
||||||
[Examples:]
|
[Examples:]
|
||||||
|
|||||||
@ -23,8 +23,8 @@ GaussProps
|
|||||||
|
|
||||||
{number1} = maximum number of cells covered by a particle (search will fail when more than {number1} cells are covered by the particle) :ulb,l
|
{number1} = maximum number of cells covered by a particle (search will fail when more than {number1} cells are covered by the particle) :ulb,l
|
||||||
{number2} = minimum limit for voidfraction :l
|
{number2} = minimum limit for voidfraction :l
|
||||||
{number3} = (optional) scaling of the particle volume to account for porosity or agglomerations. :l
|
{number3} = (optional, default 1.0) scaling of the particle volume to account for porosity or agglomerations. :l
|
||||||
{number4} = (optional) diameter of the particle's representation is artificially increased according to {number2} * Vparticle, volume remains unaltered! :l
|
{number4} = (optional, default 1.0) diameter of the particle's representation is artificially increased according to {number2} * Vparticle, volume remains unaltered! :l
|
||||||
:ule
|
:ule
|
||||||
|
|
||||||
[Examples:]
|
[Examples:]
|
||||||
|
|||||||
@ -23,8 +23,8 @@ bigParticleProps
|
|||||||
|
|
||||||
{number1} = maximum number of cells covered by a particle (search will fail when more than {number1} cells are covered by the particle) :ulb,l
|
{number1} = maximum number of cells covered by a particle (search will fail when more than {number1} cells are covered by the particle) :ulb,l
|
||||||
{number2} = minimum limit for voidfraction :l
|
{number2} = minimum limit for voidfraction :l
|
||||||
{number3} = (optional) scaling of the particle volume to account for porosity or agglomerations. :l
|
{number3} = (optional, default 1.0) scaling of the particle volume to account for porosity or agglomerations. :l
|
||||||
{number4} = (optional) diameter of the particle's representation is artificially increased according to {number2} * Vparticle, volume remains unaltered! :l
|
{number4} = (optional, default 1.0) diameter of the particle's representation is artificially increased according to {number2} * Vparticle, volume remains unaltered! :l
|
||||||
:ule
|
:ule
|
||||||
|
|
||||||
[Examples:]
|
[Examples:]
|
||||||
@ -34,7 +34,7 @@ bigParticleProps
|
|||||||
\{
|
\{
|
||||||
maxCellsPerParticle 1000;
|
maxCellsPerParticle 1000;
|
||||||
alphaMin 0.10;
|
alphaMin 0.10;
|
||||||
weight 1.;
|
weight 1.0;
|
||||||
porosity 5.0;
|
porosity 5.0;
|
||||||
\} :pre
|
\} :pre
|
||||||
|
|
||||||
|
|||||||
@ -19,12 +19,16 @@ dividedProps
|
|||||||
interpolation;
|
interpolation;
|
||||||
weight number2;
|
weight number2;
|
||||||
porosity number3;
|
porosity number3;
|
||||||
|
procBoundaryCorrection switch1;
|
||||||
|
verbose;
|
||||||
\} :pre
|
\} :pre
|
||||||
|
|
||||||
{number1} = minimum limit for voidfraction :ulb,l
|
{number1} = minimum limit for voidfraction :ulb,l
|
||||||
{interpolation} = flag to interpolate voidfraction to particle positions (normally off) :l
|
{interpolation} = flag to interpolate voidfraction to particle positions (normally off) :l
|
||||||
{number2} = (optional) scaling of the particle volume to account for porosity or agglomerations. :l
|
{number2} = (optional) scaling of the particle volume to account for porosity or agglomerations. :l
|
||||||
{number3} = (optional) diameter of the particle's representation is artificially increased according to {number2} * Vparticle, volume remains unaltered! :l
|
{number3} = (optional) diameter of the particle's representation is artificially increased according to {number2} * Vparticle, volume remains unaltered! :l
|
||||||
|
{switch1} = (optional, default false) allow for correction at processor boundaries. This requires the use of engineIB and vice versa. :l
|
||||||
|
{verbose} = (optional, default false) flag for debugging output :l
|
||||||
:ule
|
:ule
|
||||||
|
|
||||||
[Examples:]
|
[Examples:]
|
||||||
@ -41,12 +45,38 @@ The {divided} voidFraction model is supposed to be used when a particle (or its
|
|||||||
representation) is in the size range of a CFD cell. Satellite points are used to
|
representation) is in the size range of a CFD cell. Satellite points are used to
|
||||||
divide the particle's volume to the touched cells.
|
divide the particle's volume to the touched cells.
|
||||||
|
|
||||||
|
The particle has radius R and its volume is divided into 29 non-overlapping
|
||||||
|
regions of equal volume. The centroids of these volumes are then used to
|
||||||
|
reproduce each volume. The first volume is a sphere with the center coinciding
|
||||||
|
with the particle center. The radius of this subsphere can be found as follows:
|
||||||
|
|
||||||
|
:c,image(Eqs/voidfractionModel_divided_pic2.png)
|
||||||
|
|
||||||
|
The rest of the volume is a spherical layer that is divided into 2 layers of
|
||||||
|
equal volume. Position of the border between these two spherical layers in
|
||||||
|
radial direction can be easily obtained:
|
||||||
|
|
||||||
|
:c,image(Eqs/voidfractionModel_divided_pic3.png)
|
||||||
|
|
||||||
|
Each of these spherical layers is later divided into 14 elements of equal volume.
|
||||||
|
Position of the centroid point in radial direction of each volume in the first
|
||||||
|
spherical layer is as follows
|
||||||
|
|
||||||
|
:c,image(Eqs/voidfractionModel_divided_pic4.png)
|
||||||
|
|
||||||
|
Similarly, for the second spherical layer remembering that the external radius
|
||||||
|
is the particle radius:
|
||||||
|
|
||||||
|
:c,image(Eqs/voidfractionModel_divided_pic5.png)
|
||||||
|
|
||||||
The region of influence of a particle can be increased artificially by
|
The region of influence of a particle can be increased artificially by
|
||||||
"porosity", which blows up the particles, but keeps their volume (for
|
{porosity}, which blows up the particles, but keeps their volume (for
|
||||||
voidfraction calculation) constant.
|
void fraction calculation) constant.
|
||||||
|
|
||||||
The particle volume occupied in the CFD domain can be adjusted by the parameter
|
The particle volume occupied in the CFD domain can be adjusted by the parameter
|
||||||
"weight", using Vparticle=dsphere^3*pi/6*weight.
|
{weight}, using
|
||||||
|
|
||||||
|
:c,image(Eqs/voidfractionModel_divided_pic6.png).
|
||||||
|
|
||||||
In the basic implementation of solvers, the void fraction is calculated based on
|
In the basic implementation of solvers, the void fraction is calculated based on
|
||||||
all particles. Depending on the solver used, the void fraction calculation is
|
all particles. Depending on the solver used, the void fraction calculation is
|
||||||
|
|||||||
Reference in New Issue
Block a user