diff --git a/doc/Eqs/voidfractionModel_divided_pic1.png b/doc/Eqs/voidfractionModel_divided_pic1.png new file mode 100755 index 00000000..b455f067 Binary files /dev/null and b/doc/Eqs/voidfractionModel_divided_pic1.png differ diff --git a/doc/Eqs/voidfractionModel_divided_pic2.png b/doc/Eqs/voidfractionModel_divided_pic2.png new file mode 100755 index 00000000..9b331fb5 Binary files /dev/null and b/doc/Eqs/voidfractionModel_divided_pic2.png differ diff --git a/doc/Eqs/voidfractionModel_divided_pic3.png b/doc/Eqs/voidfractionModel_divided_pic3.png new file mode 100755 index 00000000..5430f275 Binary files /dev/null and b/doc/Eqs/voidfractionModel_divided_pic3.png differ diff --git a/doc/Eqs/voidfractionModel_divided_pic4.png b/doc/Eqs/voidfractionModel_divided_pic4.png new file mode 100755 index 00000000..c3520b5c Binary files /dev/null and b/doc/Eqs/voidfractionModel_divided_pic4.png differ diff --git a/doc/Eqs/voidfractionModel_divided_pic5.png b/doc/Eqs/voidfractionModel_divided_pic5.png new file mode 100755 index 00000000..acd4ad8d Binary files /dev/null and b/doc/Eqs/voidfractionModel_divided_pic5.png differ diff --git a/doc/Eqs/voidfractionModel_divided_pic6.png b/doc/Eqs/voidfractionModel_divided_pic6.png new file mode 100755 index 00000000..4c051abb Binary files /dev/null and b/doc/Eqs/voidfractionModel_divided_pic6.png differ diff --git a/doc/dataExchangeModel_twoWayFiles.txt b/doc/dataExchangeModel_twoWayFiles.txt index 9561b12d..d2cb2a38 100644 --- a/doc/dataExchangeModel_twoWayFiles.txt +++ b/doc/dataExchangeModel_twoWayFiles.txt @@ -16,11 +16,13 @@ dataExchangeModel twoWayFiles; twoWayFilesProps \{ couplingFilename "filename"; - maxNumberOfParticles number; + maxNumberOfParticles scalar1; + DEMts scalar2; \} :pre {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 [Examples:] diff --git a/doc/liggghtsCommandModel_execute.txt b/doc/liggghtsCommandModel_execute.txt index e008f7a9..4d404c6d 100644 --- a/doc/liggghtsCommandModel_execute.txt +++ b/doc/liggghtsCommandModel_execute.txt @@ -23,18 +23,18 @@ executeProps0 run $couplingInterval ); - runFirst switch1; + runFirst switch1; runLast switch2; runEveryCouplingStep switch3; runEveryWriteStep switch4; verbose; \} :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 -{switch1} = switch (choose on/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 -{switch3} = switch (choose on/off) if the command is executed at every coupling step :l -{switch4} = switch (choose on/off) if the command is executed at every writing step :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} = (optional, default off) if the command is executed only at first time step :l +{switch2} = (optional, default off) if the command is executed only at last time step (requires {switch1} to be off) :l +{switch3} = (optional, default off) if the command is executed at every coupling step (requires {switch1} and {switch2} to be off) :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 :ule diff --git a/doc/liggghtsCommandModel_readLiggghtsData.txt b/doc/liggghtsCommandModel_readLiggghtsData.txt index e2fc588d..29e9d71c 100644 --- a/doc/liggghtsCommandModel_readLiggghtsData.txt +++ b/doc/liggghtsCommandModel_readLiggghtsData.txt @@ -18,9 +18,26 @@ liggghtsCommandModels ); readLiggghtsDataProps0 \{ - ??? + startIndex scalar1; + verbose; + exactTiming; + filePath + ( + "word" + ); + startTime scalar2; + endTime scalar3; + timeInterval scalar4; \} :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:] @@ -30,13 +47,27 @@ liggghtsCommandModels ); readLiggghtsDataProps0 \{ - ??? + startIndex 0; + exactTiming; + filePath + ( + dotdot + slash + DEM + slash + packing.data + ); + startTime 0.002; + endTime 0.012; + timeInterval 0.001; \} :pre [Description:] 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. diff --git a/doc/liggghtsCommandModel_writeLiggghts.txt b/doc/liggghtsCommandModel_writeLiggghts.txt index f3f2f05b..53bad2c9 100644 --- a/doc/liggghtsCommandModel_writeLiggghts.txt +++ b/doc/liggghtsCommandModel_writeLiggghts.txt @@ -20,15 +20,17 @@ liggghtsCommandModels writeLiggghtsProps \{ writeLast switch1; + path "path"; writeName "name"; overwrite switch2; verbose; \} :pre -{switch1} = switch (choose on/off) to select if only last step is stored or every write step (default on). :ulb,l -{name} = name of the restart file to be written in /$caseDir/DEM/ default (default "liggghts.restartCFDEM") :l -{switch2} = switch (choose on/off) to select if only one restart file $name or many files $name_$timeStamp are written (default off):l -{verbose} = (default off) for verbose run :l +{switch1} = (optional, default on) select if only last step is stored or every write step :ulb,l +{path} = (optional, default "../DEM") alternative path (relative to execution directory) for saving the restart file :l +{name} = (optional, default "liggghts.restartCFDEM") name of the restart file to be written in ../DEM/ :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 [Examples:] diff --git a/doc/momCoupleModel_implicitCouple.txt b/doc/momCoupleModel_implicitCouple.txt index aa5da194..f746477b 100644 --- a/doc/momCoupleModel_implicitCouple.txt +++ b/doc/momCoupleModel_implicitCouple.txt @@ -21,13 +21,15 @@ implicitCoupleProps velFieldName "U"; granVelFieldName "Us"; voidfractionFieldName "voidfraction"; - minAlphaP number; + KslLimit scalar1; + minAlphaP scalar2; \} :pre {U} = name of the finite volume fluid velocity field :ulb,l {Us} = name of the finite volume granular velocity 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 [Examples:] diff --git a/doc/smoothingModel_constDiffSmoothing.txt b/doc/smoothingModel_constDiffSmoothing.txt index c6d83f2e..1bc69bde 100644 --- a/doc/smoothingModel_constDiffSmoothing.txt +++ b/doc/smoothingModel_constDiffSmoothing.txt @@ -19,12 +19,14 @@ constDiffSmoothingProps upperLimit number2; smoothingLength lengthScale; smoothingLengthReferenceField lengthScaleRefField; + verbose; \} :pre {number1} = scalar fields will be bound to this lower value :ulb,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 {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 [Examples:] diff --git a/doc/voidFractionModel_GaussVoidFraction.txt b/doc/voidFractionModel_GaussVoidFraction.txt index f382bd06..0c792001 100644 --- a/doc/voidFractionModel_GaussVoidFraction.txt +++ b/doc/voidFractionModel_GaussVoidFraction.txt @@ -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 {number2} = minimum limit for voidfraction :l -{number3} = (optional) 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 +{number3} = (optional, default 1.0) scaling of the particle volume to account for porosity or agglomerations. :l +{number4} = (optional, default 1.0) diameter of the particle's representation is artificially increased according to {number2} * Vparticle, volume remains unaltered! :l :ule [Examples:] diff --git a/doc/voidFractionModel_bigParticleVoidFraction.txt b/doc/voidFractionModel_bigParticleVoidFraction.txt index 495d1714..724b0489 100644 --- a/doc/voidFractionModel_bigParticleVoidFraction.txt +++ b/doc/voidFractionModel_bigParticleVoidFraction.txt @@ -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 {number2} = minimum limit for voidfraction :l -{number3} = (optional) 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 +{number3} = (optional, default 1.0) scaling of the particle volume to account for porosity or agglomerations. :l +{number4} = (optional, default 1.0) diameter of the particle's representation is artificially increased according to {number2} * Vparticle, volume remains unaltered! :l :ule [Examples:] @@ -34,7 +34,7 @@ bigParticleProps \{ maxCellsPerParticle 1000; alphaMin 0.10; - weight 1.; + weight 1.0; porosity 5.0; \} :pre diff --git a/doc/voidFractionModel_dividedVoidFraction.txt b/doc/voidFractionModel_dividedVoidFraction.txt index d87cda43..b4e5906a 100644 --- a/doc/voidFractionModel_dividedVoidFraction.txt +++ b/doc/voidFractionModel_dividedVoidFraction.txt @@ -19,12 +19,16 @@ dividedProps interpolation; weight number2; porosity number3; + procBoundaryCorrection switch1; + verbose; \} :pre {number1} = minimum limit for voidfraction :ulb,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 {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 [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 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 -"porosity", which blows up the particles, but keeps their volume (for -voidfraction calculation) constant. +{porosity}, which blows up the particles, but keeps their volume (for +void fraction calculation) constant. 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 all particles. Depending on the solver used, the void fraction calculation is