diff --git a/README b/README new file mode 100644 index 00000000..fd2ca756 --- /dev/null +++ b/README @@ -0,0 +1,81 @@ +/*---------------------------------------------------------------------------*\ + CFDEMcoupling - Open Source CFD-DEM coupling + + CFDEMcoupling is part of the CFDEMproject + www.cfdem.com + Christoph Goniva, christoph.goniva@cfdem.com + Copyright 2009-2012 JKU Linz + Copyright 2012- DCS Computing GmbH, Linz +------------------------------------------------------------------------------- +License + This file is part of CFDEMcoupling. + + CFDEMcoupling is free software; you can redistribute it and/or modify it + under the terms of the GNU General Public License as published by the + Free Software Foundation; either version 3 of the License, or (at your + option) any later version. + + CFDEMcoupling is distributed in the hope that it will be useful, but WITHOUT + ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or + FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License + for more details. + + You should have received a copy of the GNU General Public License + along with CFDEMcoupling; if not, write to the Free Software Foundation, + Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + +Description + This code is designed to realize coupled CFD-DEM simulations using LIGGGHTS + and OpenFOAM. Note: this code is not part of OpenFOAM (see DISCLAIMER). +\*---------------------------------------------------------------------------*/ + + +CFDEM coupling provides an open source parallel coupled CFD-DEM framework +combining the strengths of LIGGGHTS DEM code and the Open Source +CFD package OpenFOAM(R)(*). The CFDEMcoupling toolbox allows to expand +standard CFD solvers of OpenFOAM(R)(*) to include a coupling to the DEM +code LIGGGHTS. In this toolbox the particle representation within the +CFD solver is organized by "cloud" classes. Key functionalities are organised +in sub-models (e.g. force models, data exchange models, etc.) which can easily +be selected and combined by dictionary settings. + +The coupled solvers run fully parallel on distributed-memory clusters. + +Features are: + +- its modular approach allows users to easily implement new models +- its MPI parallelization enables to use it for large scale problems +- the "forum"_lws on CFD-DEM gives the possibility to exchange with other + users / developers +- the use of GIT allows to easily update to the latest version +- basic documentation is provided + +The file structure: + +- "src" directory including the source files of the coupling toolbox and models +- "applications" directory including the solver files for coupled CFD-DEM simulations +- "doc" directory including the documentation of CFDEMcoupling +- "tutorials" directory including basic tutorial cases showing the functionality + + + +Details on installation are given on the "www.cfdem.com" + +The functionality of this CFD-DEM framwork is described via "tutorial cases" showing +how to use different solvers and models. + +CFDEMcoupling stands for Computational Fluid Dynamics (CFD) - +Discrete Element Method (DEM) coupling. + +CFDEMcoupling is an open-source code, distributed freely under the terms of the +GNU Public License (GPL). + +Core development of CFDEMcoupling is done by +Christoph Goniva and Christoph Kloss, both at DCS Computing GmbH, 2012 + + +\*---------------------------------------------------------------------------*/ +(*) "OpenFOAM(R)"_of is a registered trade mark of the ESI Group. +This offering is not affiliated, approved or endorsed by ESI Group, +the producer of the OpenFOAMĀ® software and owner of the OpenFOAMĀ® trade mark. +\*---------------------------------------------------------------------------*/ diff --git a/doc/CFDEMcoupling_Manual.html b/doc/CFDEMcoupling_Manual.html index 2e48e155..7fea5f97 100644 --- a/doc/CFDEMcoupling_Manual.html +++ b/doc/CFDEMcoupling_Manual.html @@ -218,22 +218,22 @@ listing below of styles within certain commands. forceModel_KochHillDragforceModel_LaEuScalarTemp forceModel_MeiLiftforceModel_SchillerNaumannDrag forceModel_ShirgaonkarIBforceModel_gradPForce -forceModel_noDragforceModel_virtualMassForce -forceModel_viscForceliggghtsCommandModel -liggghtsCommandModel_executeliggghtsCommandModel_readLiggghtsData -liggghtsCommandModel_runLiggghtsliggghtsCommandModel_writeLiggghts -locateModellocateModel_engineSearch -locateModel_engineSearchIBlocateModel_standardSearch -locateModel_turboEngineM2MSearchlocateModel_turboEngineSearch -meshMotionModelmeshMotionModel_noMeshMotion -momCoupleModelmomCoupleModel_explicitCouple -momCoupleModel_implicitCouplemomCoupleModel_noCouple -regionModelregionModel_allRegion -smoothingModelsmoothingModel_constDiffSmoothing -smoothingModel_noSmoothingvoidfractionModel -voidfractionModel_GaussVoidFractionvoidfractionModel_IBVoidFraction -voidfractionModel_bigParticleVoidFractionvoidfractionModel_centreVoidFraction -voidfractionModel_dividedVoidFraction +forceModel_noDragforceModel_particleCellVolume +forceModel_virtualMassForceforceModel_viscForce +liggghtsCommandModelliggghtsCommandModel_execute +liggghtsCommandModel_readLiggghtsDataliggghtsCommandModel_runLiggghts +liggghtsCommandModel_writeLiggghtslocateModel +locateModel_engineSearchlocateModel_engineSearchIB +locateModel_standardSearchlocateModel_turboEngineM2MSearch +locateModel_turboEngineSearchmeshMotionModel +meshMotionModel_noMeshMotionmomCoupleModel +momCoupleModel_explicitCouplemomCoupleModel_implicitCouple +momCoupleModel_noCoupleregionModel +regionModel_allRegionsmoothingModel +smoothingModel_constDiffSmoothingsmoothingModel_noSmoothing +voidfractionModelvoidfractionModel_GaussVoidFraction +voidfractionModel_IBVoidFractionvoidfractionModel_bigParticleVoidFraction +voidfractionModel_centreVoidFractionvoidfractionModel_dividedVoidFraction diff --git a/doc/CFDEMcoupling_Manual.pdf b/doc/CFDEMcoupling_Manual.pdf index ba0dd6d1..94af00aa 100644 Binary files a/doc/CFDEMcoupling_Manual.pdf and b/doc/CFDEMcoupling_Manual.pdf differ diff --git a/doc/CFDEMcoupling_Manual.txt b/doc/CFDEMcoupling_Manual.txt index fa012636..9a5c8253 100644 --- a/doc/CFDEMcoupling_Manual.txt +++ b/doc/CFDEMcoupling_Manual.txt @@ -239,6 +239,7 @@ listing below of styles within certain commands. "forceModel_ShirgaonkarIB"_forceModel_ShirgaonkarIB.html, "forceModel_gradPForce"_forceModel_gradPForce.html, "forceModel_noDrag"_forceModel_noDrag.html, +"forceModel_particleCellVolume"_forceModel_particleCellVolume.html, "forceModel_virtualMassForce"_forceModel_virtualMassForce.html, "forceModel_viscForce"_forceModel_viscForce.html, "liggghtsCommandModel"_liggghtsCommandModel.html, diff --git a/doc/forceModel_particleCellVolume.html b/doc/forceModel_particleCellVolume.html new file mode 100644 index 00000000..b834c3fd --- /dev/null +++ b/doc/forceModel_particleCellVolume.html @@ -0,0 +1,59 @@ + +
CFDEMproject WWW Site - CFDEM Commands +
+ + + + +
+ +

forceModel_particleCellVolume command +

+

Syntax: +

+

Defined in couplingProperties dictionary. +

+
forceModels
+(
+    particleCellVolume
+);
+particleCellVolumeProps
+{
+    upperThreshold value;
+    lowerThreshold value2;
+    verbous;
+}; 
+
+
  • value = only cells with a field value (magnitude) lower than this upper threshold are considered + +
  • value2 = only cells with a field value (magnitude) greater than this lower threshold are considered + + + +

    Examples: +

    +
    forceModels
    +(
    +    particleCellVolume
    +);
    +particleCellVolumeProps
    +{
    +    upperThreshold 0.999;
    +    lowerThreshold 0;
    +    verbous;
    +} 
    +
    +

    Description: +

    +

    This "forceModel" does not influence the particles or the simulation - it is a postprocessing tool! The total volume of the particles as they are represented on the CFD mesh is calculated. +At "writeTime" a field named particleCellVolume , where scalarField is the name of the original field, is written. This can be can the be probed using standard function object probes. Using the verbous option a screen output is given. +

    +

    Restrictions: +

    +

    None. +

    +

    Related commands: +

    +

    forceModel +

    + diff --git a/doc/forceModel_particleCellVolume.txt b/doc/forceModel_particleCellVolume.txt new file mode 100644 index 00000000..f60eb486 --- /dev/null +++ b/doc/forceModel_particleCellVolume.txt @@ -0,0 +1,54 @@ +"CFDEMproject WWW Site"_lws - "CFDEM Commands"_lc :c + +:link(lws,http://www.cfdem.com) +:link(lc,CFDEMcoupling_Manual.html#comm) + +:line + +forceModel_particleCellVolume command :h3 + +[Syntax:] + +Defined in couplingProperties dictionary. + +forceModels +( + particleCellVolume +); +particleCellVolumeProps +\{ + upperThreshold value; + lowerThreshold value2; + verbous; +\}; :pre + +{value} = only cells with a field value (magnitude) lower than this upper threshold are considered :l +{value2} = only cells with a field value (magnitude) greater than this lower threshold are considered :l +:ule + +[Examples:] + +forceModels +( + particleCellVolume +); +particleCellVolumeProps +\{ + upperThreshold 0.999; + lowerThreshold 0; + verbous; +\} :pre + +[Description:] + +This "forceModel" does not influence the particles or the simulation - it is a postprocessing tool! The total volume of the particles as they are represented on the CFD mesh is calculated. +At "writeTime" a field named particleCellVolume , where scalarField is the name of the original field, is written. This can be can the be probed using standard function object probes. Using the verbous option a screen output is given. + +[Restrictions:] + +None. + +[Related commands:] + +"forceModel"_forceModel.html + diff --git a/doc/githubAccess_public.pdf b/doc/githubAccess_public.pdf index 892d2ad2..300b497c 100644 Binary files a/doc/githubAccess_public.pdf and b/doc/githubAccess_public.pdf differ diff --git a/doc/smoothingModel.html b/doc/smoothingModel.html index 2adb878a..7d7617b4 100644 --- a/doc/smoothingModel.html +++ b/doc/smoothingModel.html @@ -21,13 +21,17 @@

    smoothingModel off; 
     
    +
    smoothingModel  constDiffSmoothing; 
    +
    +
    smoothingModel  localPSizeDiffSmoothing; 
    +

    Note: This examples list might not be complete - please look for other models (smoothingModel_XY) in this documentation.

    Description:

    -

    The smoothingModel is the base class for models smoothen the exchange fields. +

    The smoothingModel is the base class for models that smoothen the exchange fields (i.e., voidfraction and the Ksl field in case of implicit force coupling). This is relevant in case one uses a small grid resolution compared to the local particle diameter (or parcel diameter in case one uses a parcel approach).

    -

    Restrictions: none. +

    Restrictions: These models are in beta testing.

    Default: none.

    diff --git a/doc/smoothingModel.txt b/doc/smoothingModel.txt index 13133406..a0bb7060 100644 --- a/doc/smoothingModel.txt +++ b/doc/smoothingModel.txt @@ -18,13 +18,15 @@ model = name of the smoothingModel to be applied :ul [Examples:] smoothingModel off; :pre +smoothingModel constDiffSmoothing; :pre +smoothingModel localPSizeDiffSmoothing; :pre Note: This examples list might not be complete - please look for other models (smoothingModel_XY) in this documentation. [Description:] -The smoothingModel is the base class for models smoothen the exchange fields. +The smoothingModel is the base class for models that smoothen the exchange fields (i.e., voidfraction and the Ksl field in case of implicit force coupling). This is relevant in case one uses a small grid resolution compared to the local particle diameter (or parcel diameter in case one uses a parcel approach). -[Restrictions:] none. +[Restrictions:] These models are in beta testing. [Default:] none. diff --git a/doc/smoothingModel_constDiffSmoothing.html b/doc/smoothingModel_constDiffSmoothing.html index 48456c29..edfb3fb8 100644 --- a/doc/smoothingModel_constDiffSmoothing.html +++ b/doc/smoothingModel_constDiffSmoothing.html @@ -18,29 +18,33 @@ constDiffSmoothingProps { lowerLimit number1; upperLimit number2; - DT number3; + smoothingLength lengthScale; }

    Examples:

    constDiffSmoothingProps
     {
         lowerLimit 0.1;
         upperLimit 1e10;
    -    DT 1e-3;
    +    smoothingLength 1500e-6;
     } 
     

    Description:

    -

    The "constDiffSmoothing" model is a basic smoothingModel model which reads a diffusion coefficient being used for smoothening the exchange fields (voidfraction, Ksl, f if present). +

    The "constDiffSmoothing" model is a basic smoothingModel model which reads a smoothing length scale being used for smoothening the exchange fields (voidfraction, Ksl, f if present). This model can be used for smoothing explicit force coupling fields, as well as implicit fource coupling algorithms +(see solver "cfdemSolverPisoImEx").

    -

    Restrictions: none. +

    Restrictions: Should be used for monodisperse cases only. +Time derivatives of the voidfraction field are calculated incorrectly, so don't use them in your solver when smoothing is applied.

    Related commands:

    diff --git a/doc/smoothingModel_constDiffSmoothing.txt b/doc/smoothingModel_constDiffSmoothing.txt index 68ab56bb..3fe9c8d9 100644 --- a/doc/smoothingModel_constDiffSmoothing.txt +++ b/doc/smoothingModel_constDiffSmoothing.txt @@ -16,12 +16,13 @@ constDiffSmoothingProps \{ lowerLimit number1; upperLimit number2; - DT number3; + smoothingLength lengthScale; \} :pre {number1} = scalar fields will be bound to this lower value :ulb,l {number2} = scalar fields will be bound to this upper value :l -{number3} = diffusion constant :l +{lengthScale} = length scale over which the exchange fields will be smoothed out :l +:ule [Examples:] @@ -29,14 +30,16 @@ constDiffSmoothingProps \{ lowerLimit 0.1; upperLimit 1e10; - DT 1e-3; + smoothingLength 1500e-6; \} :pre [Description:] -The "constDiffSmoothing" model is a basic smoothingModel model which reads a diffusion coefficient being used for smoothening the exchange fields (voidfraction, Ksl, f if present). +The "constDiffSmoothing" model is a basic smoothingModel model which reads a smoothing length scale being used for smoothening the exchange fields (voidfraction, Ksl, f if present). This model can be used for smoothing explicit force coupling fields, as well as implicit fource coupling algorithms +(see solver "cfdemSolverPisoImEx"). -[Restrictions:] none. +[Restrictions:] Should be used for monodisperse cases only. +Time derivatives of the voidfraction field are calculated incorrectly, so don't use them in your solver when smoothing is applied. [Related commands:] diff --git a/doc/voidFractionModel_GaussVoidFraction.html b/doc/voidFractionModel_GaussVoidFraction.html index 976c6be0..c976b46d 100644 --- a/doc/voidFractionModel_GaussVoidFraction.html +++ b/doc/voidFractionModel_GaussVoidFraction.html @@ -19,6 +19,7 @@ GaussProps maxCellsPerParticle number1; alphaMin number2; scaleUpVol number3; + weight number4; }

    Examples: @@ -37,6 +40,7 @@ GaussProps maxCellsPerParticle 1000; alphaMin 0.10; scaleUpVol 5.0; + weight 1.; }

    Description: @@ -45,6 +49,8 @@ GaussProps

    The region of influence of a particle can be increased artificially by "scaleUpVol", which blows up the particles, but keeps their volume (for voidfraction calculation) constant.

    +

    The particle volume occupied in the CFD domain can be adjusted by the parameter "weight", using Vparticle=dsphere^3*pi/6*weight. +

    Restrictions: none.

    Related commands: diff --git a/doc/voidFractionModel_GaussVoidFraction.txt b/doc/voidFractionModel_GaussVoidFraction.txt index 969c09f3..dd0c6adf 100644 --- a/doc/voidFractionModel_GaussVoidFraction.txt +++ b/doc/voidFractionModel_GaussVoidFraction.txt @@ -17,11 +17,13 @@ GaussProps maxCellsPerParticle number1; alphaMin number2; scaleUpVol number3; + weight number4; \} :pre {number1} = max number of cells covered by a partilce (search will fail when more than {number1} cells are covered by the particle) :ulb,l {number2} = mininmum limit for voidfraction :l {number3} = diameter of the particle's representation is artificially increased according to {number3} * Vparticle, volume remains unaltered! :l +{number4} = scaling of the particle volume to account for porosity or agglomerations. :l :ule [Examples:] @@ -32,6 +34,7 @@ GaussProps maxCellsPerParticle 1000; alphaMin 0.10; scaleUpVol 5.0; + weight 1.; \} :pre [Description:] @@ -40,6 +43,8 @@ The Gauss voidFraction model is supposed to be used when a particle (or it's rep The region of influence of a particle can be increased artificially by "scaleUpVol", which blows up the particles, but keeps their volume (for voidfraction calculation) constant. +The particle volume occupied in the CFD domain can be adjusted by the parameter "weight", using Vparticle=dsphere^3*pi/6*weight. + [Restrictions:] none. [Related commands:] diff --git a/doc/voidFractionModel_bigParticleVoidFraction.html b/doc/voidFractionModel_bigParticleVoidFraction.html index 8a13e4f7..76605fe1 100644 --- a/doc/voidFractionModel_bigParticleVoidFraction.html +++ b/doc/voidFractionModel_bigParticleVoidFraction.html @@ -19,6 +19,7 @@ bigParticleProps maxCellsPerParticle number1; alphaMin number2; scaleUpVol number3; + weight number4; }

    Examples: @@ -37,6 +40,7 @@ bigParticleProps maxCellsPerParticle 1000; alphaMin 0.10; scaleUpVol 5.0; + weight 1.; }

    Description: @@ -45,7 +49,9 @@ bigParticleProps

    The region of influence of a particle can be increased artificially by "scaleUpVol", which blows up the particles, but keeps their volume (for voidfraction calculation) constant.

    -

    Code of this sub-model contributed by Alice Hager, JKU. +

    The particle volume occupied in the CFD domain can be adjusted by the parameter "weight", using Vparticle=dsphere^3*pi/6*weight. +

    +

    Parts of this sub-model contributed by Alice Hager, JKU.

    Restrictions: none.

    diff --git a/doc/voidFractionModel_bigParticleVoidFraction.txt b/doc/voidFractionModel_bigParticleVoidFraction.txt index baa109c3..2b816fe6 100644 --- a/doc/voidFractionModel_bigParticleVoidFraction.txt +++ b/doc/voidFractionModel_bigParticleVoidFraction.txt @@ -17,11 +17,13 @@ bigParticleProps maxCellsPerParticle number1; alphaMin number2; scaleUpVol number3; + weight number4; \} :pre {number1} = max number of cells covered by a partilce (search will fail when more than {number1} cells are covered by the particle) :ulb,l {number2} = mininmum limit for voidfraction :l {number3} = diameter of the particle's representation is artificially increased according to {number3} * Vparticle, volume remains unaltered! :l +{number4} = scaling of the particle volume to account for porosity or agglomerations. :l :ule [Examples:] @@ -32,6 +34,7 @@ bigParticleProps maxCellsPerParticle 1000; alphaMin 0.10; scaleUpVol 5.0; + weight 1.; \} :pre [Description:] @@ -40,7 +43,9 @@ The bigParticle voidFraction model is supposed to be used when a particle (or it The region of influence of a particle can be increased artificially by "scaleUpVol", which blows up the particles, but keeps their volume (for voidfraction calculation) constant. -Code of this sub-model contributed by Alice Hager, JKU. +The particle volume occupied in the CFD domain can be adjusted by the parameter "weight", using Vparticle=dsphere^3*pi/6*weight. + +Parts of this sub-model contributed by Alice Hager, JKU. [Restrictions:] none. diff --git a/doc/voidFractionModel_centreVoidFraction.html b/doc/voidFractionModel_centreVoidFraction.html index cfe8a547..0e480d97 100644 --- a/doc/voidFractionModel_centreVoidFraction.html +++ b/doc/voidFractionModel_centreVoidFraction.html @@ -16,10 +16,13 @@
    voidfractionModel centre;
     centreProps
     {
    -    alphaMin value;
    +    alphaMin number1;
    +    weight number2;
     } 
     
    -