From 21934b329c98c35a620d4054e3e29bc0bba8251f Mon Sep 17 00:00:00 2001 From: goniva Date: Tue, 15 Apr 2014 09:22:02 +0200 Subject: [PATCH] release on 2014-04-15_09-22-01 --- README | 81 ++++++++++++++ .../solvers/cfdemSolverIB/cfdemSolverIB.C | 5 +- .../solvers/cfdemSolverPiso/cfdemSolverPiso.C | 6 +- .../cfdemSolverPisoScalar.C | 4 + doc/CFDEMcoupling_Manual.html | 18 +-- doc/CFDEMcoupling_Manual.pdf | Bin 511914 -> 512035 bytes doc/CFDEMcoupling_Manual.txt | 18 +-- doc/IOModel_basicIO.html | 2 +- doc/IOModel_basicIO.txt | 2 +- doc/IOModel_trackIO.html | 2 +- doc/IOModel_trackIO.txt | 2 +- doc/averagingModel.html | 2 +- doc/averagingModel.txt | 2 +- doc/cfdemSolverIB.html | 2 +- doc/cfdemSolverIB.txt | 2 +- doc/cfdemSolverPiso.html | 2 +- doc/cfdemSolverPiso.txt | 2 +- doc/clockModel_standardClock.html | 2 +- doc/clockModel_standardClock.txt | 2 +- doc/dataExchangeModel_oneWayVTK.html | 2 +- doc/dataExchangeModel_oneWayVTK.txt | 2 +- doc/dataExchangeModel_twoWayFiles.html | 4 +- doc/dataExchangeModel_twoWayFiles.txt | 4 +- doc/forceModel_ArchimedesIB.html | 2 +- doc/forceModel_ArchimedesIB.txt | 2 +- doc/forceModel_DiFeliceDrag.html | 2 +- doc/forceModel_DiFeliceDrag.txt | 2 +- doc/forceModel_GidaspowDrag.html | 9 +- doc/forceModel_GidaspowDrag.txt | 8 +- doc/forceModel_KochHillDrag.html | 4 +- doc/forceModel_KochHillDrag.txt | 4 +- doc/forceModel_LaEuScalarTemp.html | 8 +- doc/forceModel_LaEuScalarTemp.txt | 6 +- doc/forceModel_ShirgaonkarIB.html | 2 +- doc/forceModel_ShirgaonkarIB.txt | 2 +- doc/forceModel_gradPForce.html | 2 +- doc/forceModel_gradPForce.txt | 2 +- doc/forceModel_particleCellVolume.html | 6 +- doc/forceModel_particleCellVolume.txt | 6 +- doc/forceModel_viscForce.html | 4 +- doc/forceModel_viscForce.txt | 4 +- doc/githubAccess_public.html | 14 +-- doc/githubAccess_public.pdf | Bin 362749 -> 362748 bytes doc/githubAccess_public.txt | 14 +-- doc/liggghtsCommandModel_execute.html | 3 + doc/liggghtsCommandModel_execute.txt | 2 + ...liggghtsCommandModel_readLiggghtsData.html | 4 +- doc/liggghtsCommandModel_readLiggghtsData.txt | 4 +- doc/liggghtsCommandModel_runLiggghts.html | 5 +- doc/liggghtsCommandModel_runLiggghts.txt | 5 +- doc/liggghtsCommandModel_writeLiggghts.html | 3 + doc/liggghtsCommandModel_writeLiggghts.txt | 2 + doc/locateModel_engineSearchIB.html | 4 +- doc/locateModel_engineSearchIB.txt | 4 +- doc/momCoupleModel_explicitCouple.html | 2 +- doc/momCoupleModel_explicitCouple.txt | 2 +- doc/momCoupleModel_implicitCouple.html | 4 +- doc/momCoupleModel_implicitCouple.txt | 4 +- doc/momCoupleModel_noCouple.html | 4 +- doc/momCoupleModel_noCouple.txt | 4 +- doc/probeModel.html | 2 +- doc/probeModel.txt | 2 +- doc/smoothingModel_constDiffSmoothing.html | 6 +- doc/smoothingModel_constDiffSmoothing.txt | 6 +- doc/voidFractionModel_GaussVoidFraction.html | 18 +-- doc/voidFractionModel_GaussVoidFraction.txt | 18 +-- doc/voidFractionModel_IBVoidFraction.html | 10 +- doc/voidFractionModel_IBVoidFraction.txt | 10 +- ...FractionModel_bigParticleVoidFraction.html | 20 ++-- ...dFractionModel_bigParticleVoidFraction.txt | 20 ++-- doc/voidFractionModel_centreVoidFraction.html | 4 +- doc/voidFractionModel_centreVoidFraction.txt | 4 +- ...voidFractionModel_dividedVoidFraction.html | 22 ++-- doc/voidFractionModel_dividedVoidFraction.txt | 20 ++-- src/lagrangian/cfdemParticle/Make/files | 42 +++++-- src/lagrangian/cfdemParticle/Make/options | 6 +- .../cfdemParticle/cfdTools/versionInfo.H | 4 +- .../cfdemParticle/cfdemCloud/cfdemCloud.C | 56 ++++------ .../cfdemParticle/cfdemCloud/cfdemCloud.H | 2 + .../derived/cfdemCloudIB/cfdemCloudIB.C | 9 ++ .../derived/cfdemCloudMS/cfdemCloudMS.C | 38 ++++++- .../derived/cfdemCloudMS/cfdemCloudMS.H | 7 ++ .../derived/cfdemCloudMS/cfdemCloudMSI.H | 5 + .../cfdemParticle/etc/OFversion/OFversion.H | 11 +- src/lagrangian/cfdemParticle/etc/bashrc | 20 ++-- .../cfdemParticle/etc/cfdemSystemTest.sh | 3 +- .../etc/compileCFDEMcoupling_all.sh | 8 +- .../etc/compileCFDEMcoupling_sol.sh | 99 +++++++++++++++-- .../cfdemParticle/etc/compileLIGGGHTS.sh | 11 ++ .../cfdemParticle/etc/compileLIGGGHTS_lib.sh | 71 ++++++++++++ src/lagrangian/cfdemParticle/etc/cshrc | 10 +- src/lagrangian/cfdemParticle/etc/functions.sh | 62 +++++++++-- .../cfdemParticle/etc/library-list.txt | 10 ++ .../cfdemParticle/etc/solver-list.txt | 13 ++- .../cfdemParticle/etc/tutorial-list.txt | 44 ++++++-- .../averagingModel/averagingModel.C | 31 +++++- .../averagingModel/averagingModel.H | 8 ++ .../twoWayM2M/library/error.o | Bin 9696 -> 9688 bytes .../twoWayM2M/library/files.o | Bin 14064 -> 14056 bytes .../twoWayM2M/library/irregular.o | Bin 37224 -> 37216 bytes .../twoWayM2M/library/lammps_data_write.o | Bin 35440 -> 35432 bytes .../twoWayM2M/library/libcouple.a | Bin 351814 -> 351958 bytes .../twoWayM2M/library/many2many.o | Bin 121216 -> 121208 bytes .../twoWayM2M/library/many2one.o | Bin 17496 -> 17488 bytes .../twoWayM2M/library/memory.o | Bin 18712 -> 18704 bytes .../twoWayM2M/library/one2many.o | Bin 76632 -> 76624 bytes .../twoWayM2M/library/send2one.o | Bin 17440 -> 17432 bytes .../dataExchangeModel/twoWayM2M/twoWayM2M.C | 43 +++++++- .../dataExchangeModel/twoWayM2M/twoWayM2M.H | 1 + .../forceModel/GidaspowDrag/GidaspowDrag.C | 98 +++++++++++++---- .../forceModel/GidaspowDrag/GidaspowDrag.H | 5 + .../forceModel/KochHillDrag/KochHillDrag.C | 23 ++-- .../forceModel/KochHillDrag/KochHillDrag.H | 4 +- .../LaEuScalarTemp/LaEuScalarTemp.C | 82 +++++++++----- .../LaEuScalarTemp/LaEuScalarTemp.H | 7 +- .../subModels/forceModel/noDrag/noDrag.C | 18 +-- .../DiFeliceDragMS/DiFeliceDragMS.C | 28 +---- .../forceModelMS/forceModelMS/forceModelMS.C | 39 +++++++ .../forceModelMS/forceModelMS/forceModelMS.H | 2 +- .../liggghtsCommandModel/execute/execute.C | 6 +- .../liggghtsCommandModel/execute/execute.H | 2 - .../liggghtsCommandModel.C | 20 ++-- .../liggghtsCommandModel.H | 2 + .../readLiggghtsData/readLiggghtsData.C | 3 + .../runLiggghts/runLiggghts.C | 3 + .../writeLiggghts/writeLiggghts.C | 3 + .../locateModel/engineSearch/engineSearch.C | 9 +- .../locateModel/engineSearch/engineSearch.H | 4 +- .../standardSearch/standardSearch.C | 4 +- .../turboEngineSearch/turboEngineSearch.C | 3 +- .../probeModel/particleProbe/particleProbe.H | 2 +- .../constDiffSmoothing/constDiffSmoothing.C | 103 +++++++++++------- .../constDiffSmoothing/constDiffSmoothing.H | 1 + .../GaussVoidFraction/GaussVoidFraction.C | 27 ++--- .../GaussVoidFraction/GaussVoidFraction.H | 8 +- .../IBVoidFraction/IBVoidFraction.C | 2 +- .../bigParticleVoidFraction.C | 24 ++-- .../bigParticleVoidFraction.H | 6 +- .../centreVoidFraction/centreVoidFraction.C | 22 ++-- .../dividedVoidFraction/dividedVoidFraction.C | 17 ++- .../dividedVoidFraction/dividedVoidFraction.H | 6 +- .../dividedVoidFractionMS.C | 14 +-- .../dividedVoidFractionMS.H | 4 +- .../voidFractionModel/voidFractionModel.C | 3 +- .../voidFractionModel/voidFractionModel.H | 12 +- .../CFD/octave/totalPressureDrop.m | 2 - .../ErgunTestCG/DEM/in.liggghts_init | 3 +- .../ErgunTestCG/DEM/in.liggghts_resume | 7 +- .../CFD/constant/couplingProperties | 3 +- .../ErgunTestMPI/DEM/in.liggghts_init | 2 +- .../ErgunTestMPI/DEM/liggghts.restart | Bin 3923813 -> 2481193 bytes .../ErgunTestMPI/DEM/post/dummy | 1 - .../ErgunTestMPI/parCFDDEMrun.sh | 24 +--- .../ErgunTestMPI_restart/Allrun.sh | 24 ++-- .../ErgunTestMPI_restart/CFD/0/U | 6 +- .../ErgunTestMPI_restart/CFD/0/p | 3 +- .../CFD/constant/couplingProperties_init | 78 +++++++++++-- .../CFD/constant/couplingProperties_restart | 74 +++++++++++-- .../CFD/constant/liggghtsCommands_init | 4 + .../CFD/constant/liggghtsCommands_restart | 6 +- .../CFD/system/controlDict | 8 +- .../CFD/system/controlDict_init | 8 +- .../CFD/system/controlDict_restart | 8 +- .../CFD/system/decomposeParDict | 4 +- .../CFD/system/fvSolution | 34 +----- .../ErgunTestMPI_restart/DEM/in.liggghts_init | 8 +- .../DEM/in.liggghts_restart | 13 +-- .../DEM/in.liggghts_resume | 9 +- .../ErgunTestMPI_restart/DEM/liggghts.restart | Bin 3923813 -> 2481193 bytes .../ErgunTestMPI_restart/DEM/post/dummy | 60 ---------- .../ErgunTestMPI_restart/parCFDDEMrun.sh | 5 +- .../cfdemSolverPiso/settlingTestMPI/CFD/0/Ksl | 8 +- .../cfdemSolverPiso/settlingTestMPI/CFD/0/U | 7 +- .../cfdemSolverPiso/settlingTestMPI/CFD/0/Us | 7 +- .../cfdemSolverPiso/settlingTestMPI/CFD/0/k | 8 +- .../settlingTestMPI/CFD/0/nuSgs | 7 +- .../cfdemSolverPiso/settlingTestMPI/CFD/0/p | 12 +- .../cfdemSolverPiso/settlingTestMPI/CFD/0/rho | 10 +- .../settlingTestMPI/CFD/0/voidfraction | 13 +-- .../CFD/constant/couplingProperties | 4 +- .../CFD/constant/polyMesh/blockMeshDict | 13 ++- .../settlingTestMPI/CFD/system/fvSolution | 5 + .../settlingTestMPI/parCFDDEMrun.sh | 2 +- .../CFD/constant/couplingProperties | 2 +- .../ErgunTestMPI/CFD/system/controlDict | 2 +- .../ErgunTestMPI/DEM/in.liggghts_init | 12 +- .../ErgunTestMPI/DEM/liggghts.restart | Bin 1110 -> 8661352 bytes .../ErgunTestMPI/DEM/post/dummy | 82 ++++++++++++++ 188 files changed, 1532 insertions(+), 775 deletions(-) create mode 100755 README create mode 100755 src/lagrangian/cfdemParticle/etc/compileLIGGGHTS_lib.sh diff --git a/README b/README new file mode 100755 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/applications/solvers/cfdemSolverIB/cfdemSolverIB.C b/applications/solvers/cfdemSolverIB/cfdemSolverIB.C index 2df2a46e..93f0d41d 100755 --- a/applications/solvers/cfdemSolverIB/cfdemSolverIB.C +++ b/applications/solvers/cfdemSolverIB/cfdemSolverIB.C @@ -130,9 +130,12 @@ int main(int argc, char *argv[]) volScalarField rUA = 1.0/UEqn.A(); U = rUA*UEqn.H(); + #ifdef version23 + phi = (fvc::interpolate(U) & mesh.Sf()); // there is a new version in 23x + #else phi = (fvc::interpolate(U) & mesh.Sf()) + fvc::ddtPhiCorr(rUA, U, phi); - + #endif adjustPhi(phi, U, p); #if defined(version22) diff --git a/applications/solvers/cfdemSolverPiso/cfdemSolverPiso.C b/applications/solvers/cfdemSolverPiso/cfdemSolverPiso.C index 73c97d60..76a6b58d 100644 --- a/applications/solvers/cfdemSolverPiso/cfdemSolverPiso.C +++ b/applications/solvers/cfdemSolverPiso/cfdemSolverPiso.C @@ -73,7 +73,7 @@ int main(int argc, char *argv[]) // do particle stuff particleCloud.clockM().start(2,"Coupling"); particleCloud.evolve(voidfraction,Us,U); - + Info << "update Ksl.internalField()" << endl; Ksl = particleCloud.momCoupleM(0).impMomSource(); particleCloud.smoothingM().smoothen(Ksl); @@ -88,8 +88,8 @@ int main(int argc, char *argv[]) // Momentum predictor fvVectorMatrix UEqn ( - fvm::ddt(voidfraction,U) //particleCloud.ddtVoidfractionU(U,voidfraction) // - + fvm::div(phi, U) + fvm::ddt(voidfraction,U) + fvm::Sp(fvc::ddt(voidfraction),U) + + fvm::div(phi,U) + fvm::Sp(fvc::div(phi),U) // + turbulence->divDevReff(U) + particleCloud.divVoidfractionTau(U, voidfraction) == diff --git a/applications/solvers/cfdemSolverPisoScalar/cfdemSolverPisoScalar.C b/applications/solvers/cfdemSolverPisoScalar/cfdemSolverPisoScalar.C index af3134d5..ac015944 100644 --- a/applications/solvers/cfdemSolverPisoScalar/cfdemSolverPisoScalar.C +++ b/applications/solvers/cfdemSolverPisoScalar/cfdemSolverPisoScalar.C @@ -133,8 +133,12 @@ int main(int argc, char *argv[]) U = rUA*UEqn.H(); + #ifdef version23 + phi = ( fvc::interpolate(U*voidfraction) & mesh.Sf() ); + #else phi = ( fvc::interpolate(U*voidfraction) & mesh.Sf() ) + fvc::ddtPhiCorr(rUAvoidfraction, U, phi); + #endif surfaceScalarField phiS(fvc::interpolate(Us*voidfraction) & mesh.Sf()); surfaceScalarField phiGes = phi + rUAf*(fvc::interpolate(Ksl/rho) * phiS); if (modelType=="A") diff --git a/doc/CFDEMcoupling_Manual.html b/doc/CFDEMcoupling_Manual.html index e8dd38f1..0fc3dcb6 100644 --- a/doc/CFDEMcoupling_Manual.html +++ b/doc/CFDEMcoupling_Manual.html @@ -21,7 +21,7 @@

1. Contents

-

The CFDEMcoupling documentation is organized into the following sections. If you find errors or omissions in this manual or have suggestions for useful information to add, please send an email to the developers so we can improve the CFDEMcoupling documentation. +

The CFDEMcoupling documentation is organized into the following sections. If you find any errors or omissions in this manual or have suggestions for useful information to add, please send an email to the developers so the CFDEMcoupling documentation can be improved.

1.1 About CFDEMcoupling
1.2 Installation
@@ -63,11 +63,11 @@

Details on installation are given on the CFDEMproject WWW Site . -The functionality of this CFD-DEM framwork is described via tutorial cases showing how to use different solvers and models. +The functionality of this CFD-DEM framework 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). +

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

@@ -90,7 +90,7 @@ In order to get the latest code version, please use the git repository at http:/

General:

-

Each solver of the CFDEMcoupling is comes with at least one tutorial example, showing its functionality and correct useage. Provided that the installation is correct, the tutorials can be run via "Allrun.sh" shell scripts. These scripts perform all necessary steps (preprocessing, run, postprocessing, visualization). +

Each solver of the CFDEMcoupling comes with at least one tutorial example, showing its functionality and correct usage. Provided that the installation is correct, the tutorials can be run via "Allrun.sh" shell scripts. These scripts perform all necessary steps (preprocessing, run, postprocessing, visualization).

Location:

@@ -108,7 +108,7 @@ In order to get the latest code version, please use the git repository at http:/

The main settings of a simulation are done via dictionaries:

-

The DEM setup of each case is defined by a LIGGGHTS input file located in $caseDir/DEM (e.g. in.liggghts_init). For details on the LIGGGHTS setup, please have a look in the LIGGGHTS manual. +

The DEM setup of each case is defined by a LIGGGHTS input file located in $caseDir/DEM (e.g. in.liggghts_init). For details on the LIGGGHTS setup, please have a look at the LIGGGHTS manual.

Standard CFD settings are defined in $caseDir/CFD/constant (e.g. transportProperties, RASproperties, etc.) and $caseDir/CFD/system (e.g. fvSchemes, controlDict). You can find more information on that in OpenFOAM(R)(*) documentations (www.openFoam.com)(*).

@@ -164,16 +164,16 @@ In order to get the latest code version, please use the git repository at http:/

modelType 
 
-

"modelType" refers to the formulation of the equations to be solved. Choose "A" or "B", according to Zhou et al. (2010): "Discrete particle simulation of particle-fluid flow: model formulations and their appliccability", JFM. "A" requres the use of the force models gradPForce and viscForce, whereas "B" requires the force model "Archimedes". +

"modelType" refers to the formulation of the equations to be solved. Choose "A" or "B", according to Zhou et al. (2010): "Discrete particle simulation of particle-fluid flow: model formulations and their applicability", JFM. "A" requires the use of the force models gradPForce and viscForce, whereas "B" requires the force model "Archimedes".

couplingInterval 
 
-

The coupling interval determines the time passing between two CFD-DEM data exchanges. +

The coupling interval determines the time passing between two CFD-DEM data exchanges.

A useful procedure would be: -1) Set the DEM TS in the in.xxx according to the needs of the pure DEM problem. +1) Set the DEM timestep in the in.xxx file according to the needs of the pure DEM problem. 2) Set the "couplingInterval", which refers to the DEM timesteps. Depending on the problem you will need to have a close (small couplingInterval) or loose coupling. -3) Choose the CFD timestep in the controlDict. it must be equal or smaller than the coupling time, otherwise you will get the error: "Error - TS bigger than coupling interval!". +3) Choose the CFD timestep in the controlDict. It must be equal to or smaller than the coupling time, otherwise you will get the error: "Error - TS bigger than coupling interval!".

Example: DEMts=0.00001s, couplingInterval=10 exchange data (=couple) will happen every 0.0001s.

diff --git a/doc/CFDEMcoupling_Manual.pdf b/doc/CFDEMcoupling_Manual.pdf index e9b710f47dddfc9d63c83adf06ba466d448dd5f9..3e18714a24e77b403b7d219d72454e769a882693 100644 GIT binary patch delta 45245 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≷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 diff --git a/doc/CFDEMcoupling_Manual.txt b/doc/CFDEMcoupling_Manual.txt index ba1a5717..69f8f64e 100644 --- a/doc/CFDEMcoupling_Manual.txt +++ b/doc/CFDEMcoupling_Manual.txt @@ -12,7 +12,7 @@ CFDEMcoupling Documentation :h2,c :line 1. Contents :h3 -The CFDEMcoupling documentation is organized into the following sections. If you find errors or omissions in this manual or have suggestions for useful information to add, please send an email to the developers so we can improve the CFDEMcoupling documentation. +The CFDEMcoupling documentation is organized into the following sections. If you find any errors or omissions in this manual or have suggestions for useful information to add, please send an email to the developers so the CFDEMcoupling documentation can be improved. 1.1 "About CFDEMcoupling"_#1_1 1.2 "Installation"_#1_2 @@ -45,11 +45,11 @@ The file structure: :ule Details on installation are given on the "CFDEMproject WWW Site"_lws . -The functionality of this CFD-DEM framwork is described via "tutorial cases"_#_1_2 showing how to use different solvers and models. +The functionality of this CFD-DEM framework is described via "tutorial cases"_#_1_2 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). +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 @@ -71,7 +71,7 @@ In order to get the latest code version, please use the git repository at http:/ [General:] -Each solver of the CFDEMcoupling is comes with at least one tutorial example, showing its functionality and correct useage. Provided that the installation is correct, the tutorials can be run via "Allrun.sh" shell scripts. These scripts perform all necessary steps (preprocessing, run, postprocessing, visualization). +Each solver of the CFDEMcoupling comes with at least one tutorial example, showing its functionality and correct usage. Provided that the installation is correct, the tutorials can be run via "Allrun.sh" shell scripts. These scripts perform all necessary steps (preprocessing, run, postprocessing, visualization). [Location:] @@ -89,7 +89,7 @@ Provided that the installation is correct, the tutorials can be run via "Allrun. The main settings of a simulation are done via dictionaries: -The DEM setup of each case is defined by a "LIGGGHTS"_lig input file located in $caseDir/DEM (e.g. in.liggghts_init). For details on the "LIGGGHTS"_lig setup, please have a look in the "LIGGGHTS"_lig manual. +The DEM setup of each case is defined by a "LIGGGHTS"_lig input file located in $caseDir/DEM (e.g. in.liggghts_init). For details on the "LIGGGHTS"_lig setup, please have a look at the "LIGGGHTS"_lig manual. Standard CFD settings are defined in $caseDir/CFD/constant (e.g. transportProperties, RASproperties, etc.) and $caseDir/CFD/system (e.g. fvSchemes, controlDict). You can find more information on that in "OpenFOAM(R)(*)"_of documentations (www.openFoam.com)(*). @@ -133,16 +133,16 @@ Reasonable example settings for the "couplingProperties" dictionary are given in modelType :pre -"modelType" refers to the formulation of the equations to be solved. Choose "A" or "B", according to Zhou et al. (2010): "Discrete particle simulation of particle-fluid flow: model formulations and their appliccability", JFM. "A" requres the use of the force models gradPForce and viscForce, whereas "B" requires the force model "Archimedes". +"modelType" refers to the formulation of the equations to be solved. Choose "A" or "B", according to Zhou et al. (2010): "Discrete particle simulation of particle-fluid flow: model formulations and their applicability", JFM. "A" requires the use of the force models gradPForce and viscForce, whereas "B" requires the force model "Archimedes". couplingInterval :pre -The coupling interval determines the time passing between two CFD-DEM data exchanges. +The coupling interval determines the time passing between two CFD-DEM data exchanges. A useful procedure would be: -1) Set the DEM TS in the in.xxx according to the needs of the pure DEM problem. +1) Set the DEM timestep in the in.xxx file according to the needs of the pure DEM problem. 2) Set the "couplingInterval", which refers to the DEM timesteps. Depending on the problem you will need to have a close (small couplingInterval) or loose coupling. -3) Choose the CFD timestep in the controlDict. it must be equal or smaller than the coupling time, otherwise you will get the error: "Error - TS bigger than coupling interval!". +3) Choose the CFD timestep in the controlDict. It must be equal to or smaller than the coupling time, otherwise you will get the error: "Error - TS bigger than coupling interval!". Example: DEMts=0.00001s, couplingInterval=10 exchange data (=couple) will happen every 0.0001s. diff --git a/doc/IOModel_basicIO.html b/doc/IOModel_basicIO.html index 3d8ff298..8152c9e9 100644 --- a/doc/IOModel_basicIO.html +++ b/doc/IOModel_basicIO.html @@ -21,7 +21,7 @@

Description:

-

The basic IO-model writes particle positions velocities and radii to files. The default output directory ($casePath/CFD/proc*/time/lagrangian). Using the ceyword "serialOutput;" in couplingProperties the IO is serial to the directory ($casePath/CFD/lagrangian). In the latter case only the data on processor 0 is written! Data is written every write time of the CFD simulation. +

The basic IO-model writes particle positions velocities and radii to files. The default output directory ($casePath/CFD/proc*/time/lagrangian). Using the keyword "serialOutput;" in couplingProperties the IO is serial to the directory ($casePath/CFD/lagrangian). In the latter case only the data on processor 0 is written! Data is written every write time of the CFD simulation.

Restrictions: None.

diff --git a/doc/IOModel_basicIO.txt b/doc/IOModel_basicIO.txt index d73c5168..98daa37a 100644 --- a/doc/IOModel_basicIO.txt +++ b/doc/IOModel_basicIO.txt @@ -19,7 +19,7 @@ IOModel "basicIO"; :pre [Description:] -The basic IO-model writes particle positions velocities and radii to files. The default output directory ($casePath/CFD/proc*/time/lagrangian). Using the ceyword "serialOutput;" in couplingProperties the IO is serial to the directory ($casePath/CFD/lagrangian). In the latter case only the data on processor 0 is written! Data is written every write time of the CFD simulation. +The basic IO-model writes particle positions velocities and radii to files. The default output directory ($casePath/CFD/proc*/time/lagrangian). Using the keyword "serialOutput;" in couplingProperties the IO is serial to the directory ($casePath/CFD/lagrangian). In the latter case only the data on processor 0 is written! Data is written every write time of the CFD simulation. [Restrictions:] None. diff --git a/doc/IOModel_trackIO.html b/doc/IOModel_trackIO.html index 0d91e418..28d1e861 100644 --- a/doc/IOModel_trackIO.html +++ b/doc/IOModel_trackIO.html @@ -21,7 +21,7 @@

Description:

-

The trackIO-model is based on sophIO model and additionally writes fields necessary to use the particleTracks utility (which needs a particleTrackProperties file in the constant dir). The particleTracks generats tracks of the particles and writes them to a vtk file. +

The trackIO-model is based on sophIO model and additionally writes fields necessary to use the particleTracks utility (which needs a particleTrackProperties file in the constant dir). The particleTracks utility generates tracks of the particles and writes them to a vtk file.

Restrictions: None.

diff --git a/doc/IOModel_trackIO.txt b/doc/IOModel_trackIO.txt index 7aa03e77..dff7906e 100644 --- a/doc/IOModel_trackIO.txt +++ b/doc/IOModel_trackIO.txt @@ -19,7 +19,7 @@ IOModel "trackIO"; :pre [Description:] -The trackIO-model is based on sophIO model and additionally writes fields necessary to use the particleTracks utility (which needs a particleTrackProperties file in the constant dir). The particleTracks generats tracks of the particles and writes them to a vtk file. +The trackIO-model is based on sophIO model and additionally writes fields necessary to use the particleTracks utility (which needs a particleTrackProperties file in the constant dir). The particleTracks utility generates tracks of the particles and writes them to a vtk file. [Restrictions:] None. diff --git a/doc/averagingModel.html b/doc/averagingModel.html index ecc7defa..5237b6d4 100644 --- a/doc/averagingModel.html +++ b/doc/averagingModel.html @@ -22,7 +22,7 @@
averagingModel dense;
 averagingModel dilute; 
 
-

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

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

Description:

diff --git a/doc/averagingModel.txt b/doc/averagingModel.txt index 6ec694a0..36c327e7 100644 --- a/doc/averagingModel.txt +++ b/doc/averagingModel.txt @@ -20,7 +20,7 @@ model = name of averaging model to be applied :ul averagingModel dense; averagingModel dilute; :pre -Note: This examples list might not be complete - please look for other averagin models (averagingModel_XY) in this documentation. +Note: This examples list might not be complete - please look for other averaging models (averagingModel_XY) in this documentation. [Description:] diff --git a/doc/cfdemSolverIB.html b/doc/cfdemSolverIB.html index c1850e53..556d2441 100644 --- a/doc/cfdemSolverIB.html +++ b/doc/cfdemSolverIB.html @@ -14,7 +14,7 @@

"cfdemSolverIB" is a coupled CFD-DEM solver using CFDEMcoupling, an open source parallel coupled CFD-DEM framework, for calculating the dynamics between immersed bodies and the surrounding fluid. Being an implementation of an immersed boundary method it allows tackling problems where the body diameter exceeds the maximal size of a fluid cell. Using the toolbox of OpenFOAM(R)(*) the governing equations of the fluid are computed and the corrections of velocity and pressure field with respect to the body-movement information, gained from LIGGGHTS, are incorporated.

-

Code of this solver contributions by Alice Hager, JKU. +

Code of this solver contributions by Alice Hager, JKU.

Algorithm:

diff --git a/doc/cfdemSolverIB.txt b/doc/cfdemSolverIB.txt index a3ed4d88..4bb7c2af 100644 --- a/doc/cfdemSolverIB.txt +++ b/doc/cfdemSolverIB.txt @@ -12,7 +12,7 @@ cfdemSolverIB command :h3 "cfdemSolverIB" is a coupled CFD-DEM solver using CFDEMcoupling, an open source parallel coupled CFD-DEM framework, for calculating the dynamics between immersed bodies and the surrounding fluid. Being an implementation of an immersed boundary method it allows tackling problems where the body diameter exceeds the maximal size of a fluid cell. Using the toolbox of OpenFOAM(R)(*) the governing equations of the fluid are computed and the corrections of velocity and pressure field with respect to the body-movement information, gained from LIGGGHTS, are incorporated. -Code of this solver contributions by Alice Hager, JKU. +Code of this solver contributions by Alice Hager, JKU. [Algorithm:] diff --git a/doc/cfdemSolverPiso.html b/doc/cfdemSolverPiso.html index ebba4c7a..dda40592 100644 --- a/doc/cfdemSolverPiso.html +++ b/doc/cfdemSolverPiso.html @@ -11,7 +11,7 @@

Description:

-

"cfdemSolverPiso" is a coupled CFD-DEM solver using CFDEMcoupling, an open source parallel coupled CFD-DEM framework. Based on pisoFoam(R)(*), a finite volume based solver for turbulent Navier-Stokes equations applying PISO algorithm, "cfdemSolverPiso" has additional functionality for a coupling to the DEM code "LIGGGHTS". The volume averaged Navier-Stokes Equations are solved accounting for momentum exchange and volume displacement of discrete particles whose trajectories are calculated in the DEM code LIGGGHTS. +

"cfdemSolverPiso" is a coupled CFD-DEM solver using CFDEMcoupling, an open source parallel coupled CFD-DEM framework. Based on pisoFoam(R)(*), a finite volume based solver for turbulent Navier-Stokes equations applying the PISO algorithm, "cfdemSolverPiso" has additional functionality for a coupling to the DEM code "LIGGGHTS". The volume averaged Navier-Stokes Equations are solved accounting for momentum exchange and volume displacement of discrete particles whose trajectories are calculated in the DEM code LIGGGHTS.

see:

diff --git a/doc/cfdemSolverPiso.txt b/doc/cfdemSolverPiso.txt index 551adaea..3885699b 100644 --- a/doc/cfdemSolverPiso.txt +++ b/doc/cfdemSolverPiso.txt @@ -9,7 +9,7 @@ cfdemSolverPiso command :h3 [Description:] -"cfdemSolverPiso" is a coupled CFD-DEM solver using CFDEMcoupling, an open source parallel coupled CFD-DEM framework. Based on pisoFoam(R)(*), a finite volume based solver for turbulent Navier-Stokes equations applying PISO algorithm, "cfdemSolverPiso" has additional functionality for a coupling to the DEM code "LIGGGHTS". The volume averaged Navier-Stokes Equations are solved accounting for momentum exchange and volume displacement of discrete particles whose trajectories are calculated in the DEM code LIGGGHTS. +"cfdemSolverPiso" is a coupled CFD-DEM solver using CFDEMcoupling, an open source parallel coupled CFD-DEM framework. Based on pisoFoam(R)(*), a finite volume based solver for turbulent Navier-Stokes equations applying the PISO algorithm, "cfdemSolverPiso" has additional functionality for a coupling to the DEM code "LIGGGHTS". The volume averaged Navier-Stokes Equations are solved accounting for momentum exchange and volume displacement of discrete particles whose trajectories are calculated in the DEM code LIGGGHTS. see: diff --git a/doc/clockModel_standardClock.html b/doc/clockModel_standardClock.html index b26c6c0d..57ec9ee9 100644 --- a/doc/clockModel_standardClock.html +++ b/doc/clockModel_standardClock.html @@ -22,7 +22,7 @@

Description:

The "standardClock" model is a basic clockModel model which measures the run time between every ".start(int arrayPos,string name)" and ".stop(string name)" statement placed in the code. If a ".start(name)" is called more than once (e.g. in a loop) the accumulated times are calculated. After the simulation has finished, the data is stored in $caseDir/CFD/clockData/$startTime/*.txt . -Since the measurements are stored in an array, it is necessary to put a variable arrayPos (type integer) at the start command. Those do not need to be in ascending order and positions may be omitted. The standard size of this array is 30 and can be changed at the initialization of the standardClock class. If arrayPos is out of bounds, the array size will be doubled. The stop command does not need arrayPos, since the class remembers the positions. The string name is for easier evaluation afterwards an may be omitted like ".start(int arrayPos)" and ".stop()". The command ".stop(string name)" is a safety feature, because if the name is not equal to the started name, output will be produced for information. +Since the measurements are stored in an array, it is necessary to put a variable arrayPos (type integer) at the start command. Those do not need to be in ascending order and positions may be omitted. The standard size of this array is 30 and can be changed at the initialization of the standardClock class. If arrayPos is out of bounds, the array size will be doubled. The stop command does not need arrayPos, since the class remembers the positions. The string name is intended for easier evaluation afterwards an may be omitted like ".start(int arrayPos)" and ".stop()". The command ".stop(string name)" is a safety feature, because if the name is not equal to the started name, output will be produced for information. After the case ran you may use the matPlot.py script located in $CFDEM_UT_DIR/vizClock/ to produce a graphical output of your measurements. The usage is like 'python < matPlot.py' and you have to be in the directory of the desired time step, where there is a file called "timeEvalFull.txt", which contains averaged and maximum data with respect to the number of processes.

Restrictions: none. diff --git a/doc/clockModel_standardClock.txt b/doc/clockModel_standardClock.txt index 117352d2..30d675cb 100644 --- a/doc/clockModel_standardClock.txt +++ b/doc/clockModel_standardClock.txt @@ -20,7 +20,7 @@ clockModel standardClock; :pre [Description:] The "standardClock" model is a basic clockModel model which measures the run time between every ".start(int arrayPos,string name)" and ".stop(string name)" statement placed in the code. If a ".start(name)" is called more than once (e.g. in a loop) the accumulated times are calculated. After the simulation has finished, the data is stored in $caseDir/CFD/clockData/$startTime/*.txt . -Since the measurements are stored in an array, it is necessary to put a variable {arrayPos} (type integer) at the start command. Those do not need to be in ascending order and positions may be omitted. The standard size of this array is 30 and can be changed at the initialization of the standardClock class. If {arrayPos} is out of bounds, the array size will be doubled. The stop command does not need {arrayPos}, since the class remembers the positions. The string name is for easier evaluation afterwards an may be omitted like ".start(int arrayPos)" and ".stop()". The command ".stop(string name)" is a safety feature, because if the name is not equal to the started name, output will be produced for information. +Since the measurements are stored in an array, it is necessary to put a variable {arrayPos} (type integer) at the start command. Those do not need to be in ascending order and positions may be omitted. The standard size of this array is 30 and can be changed at the initialization of the standardClock class. If {arrayPos} is out of bounds, the array size will be doubled. The stop command does not need {arrayPos}, since the class remembers the positions. The string name is intended for easier evaluation afterwards an may be omitted like ".start(int arrayPos)" and ".stop()". The command ".stop(string name)" is a safety feature, because if the name is not equal to the started name, output will be produced for information. After the case ran you may use the matPlot.py script located in $CFDEM_UT_DIR/vizClock/ to produce a graphical output of your measurements. The usage is like 'python < matPlot.py' and you have to be in the directory of the desired time step, where there is a file called "timeEvalFull.txt", which contains averaged and maximum data with respect to the number of processes. [Restrictions:] none. diff --git a/doc/dataExchangeModel_oneWayVTK.html b/doc/dataExchangeModel_oneWayVTK.html index 800af8e2..def26192 100644 --- a/doc/dataExchangeModel_oneWayVTK.html +++ b/doc/dataExchangeModel_oneWayVTK.html @@ -28,7 +28,7 @@ oneWayVTKProps

  • filename = filename of the VTK file series -
  • number = maximum nuber of particles in DEM simulation +
  • number = maximum number of particles in DEM simulation diff --git a/doc/dataExchangeModel_oneWayVTK.txt b/doc/dataExchangeModel_oneWayVTK.txt index f3e0153a..3cf66429 100644 --- a/doc/dataExchangeModel_oneWayVTK.txt +++ b/doc/dataExchangeModel_oneWayVTK.txt @@ -23,7 +23,7 @@ oneWayVTKProps {timeStep} = time step size of stored DEM data :ulb,l {path} = path to the VTK data files relative do simulation directory :l {filename} = filename of the VTK file series :l -{number} = maximum nuber of particles in DEM simulation :l +{number} = maximum number of particles in DEM simulation :l :ule [Examples:] diff --git a/doc/dataExchangeModel_twoWayFiles.html b/doc/dataExchangeModel_twoWayFiles.html index 30a72333..46d2d891 100644 --- a/doc/dataExchangeModel_twoWayFiles.html +++ b/doc/dataExchangeModel_twoWayFiles.html @@ -22,7 +22,7 @@ twoWayFilesProps
    • filename = filename of the VTK file series -
    • number = maximum nuber of particles in DEM simulation +
    • number = maximum number of particles in DEM simulation
    @@ -41,7 +41,7 @@ twoWayFilesProps

    Restrictions:

    -

    Developed only for two processors, one for DEM and on for CFD run. +

    Developed only for two processors, one for DEM and one for CFD run.

    Related commands:

    diff --git a/doc/dataExchangeModel_twoWayFiles.txt b/doc/dataExchangeModel_twoWayFiles.txt index 20c4d8d7..cd31b167 100644 --- a/doc/dataExchangeModel_twoWayFiles.txt +++ b/doc/dataExchangeModel_twoWayFiles.txt @@ -19,7 +19,7 @@ twoWayFilesProps \}; :pre {filename} = filename of the VTK file series :ulb,l -{number} = maximum nuber of particles in DEM simulation :l +{number} = maximum number of particles in DEM simulation :l :ule [Examples:] @@ -37,7 +37,7 @@ The data exchange model performs the data exchange between the DEM code and the [Restrictions:] -Developed only for two processors, one for DEM and on for CFD run. +Developed only for two processors, one for DEM and one for CFD run. [Related commands:] diff --git a/doc/forceModel_ArchimedesIB.html b/doc/forceModel_ArchimedesIB.html index df087d34..01468568 100644 --- a/doc/forceModel_ArchimedesIB.html +++ b/doc/forceModel_ArchimedesIB.html @@ -47,7 +47,7 @@ ArchimedesIBProps

    Description:

    -

    The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The ArchimedesIB model is a model that calculates the ArchimedesIB' volumetric lift force stemming from density difference of fluid and particle. This model is especially suited for resolved CFD-DEM simulations where the particle is represented by immersed boundrary method. +

    The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The ArchimedesIB model is a model that calculates the ArchimedesIB' volumetric lift force stemming from density difference of fluid and particle. This model is especially suited for resolved CFD-DEM simulations where the particle is represented by immersed boundary method.

    Restrictions:

    diff --git a/doc/forceModel_ArchimedesIB.txt b/doc/forceModel_ArchimedesIB.txt index 4b26bb38..b9aca335 100644 --- a/doc/forceModel_ArchimedesIB.txt +++ b/doc/forceModel_ArchimedesIB.txt @@ -42,7 +42,7 @@ ArchimedesIBProps [Description:] -The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The ArchimedesIB model is a model that calculates the ArchimedesIB' volumetric lift force stemming from density difference of fluid and particle. This model is especially suited for resolved CFD-DEM simulations where the particle is represented by immersed boundrary method. +The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The ArchimedesIB model is a model that calculates the ArchimedesIB' volumetric lift force stemming from density difference of fluid and particle. This model is especially suited for resolved CFD-DEM simulations where the particle is represented by immersed boundary method. [Restrictions:] diff --git a/doc/forceModel_DiFeliceDrag.html b/doc/forceModel_DiFeliceDrag.html index 1fe8dacf..9b02164b 100644 --- a/doc/forceModel_DiFeliceDrag.html +++ b/doc/forceModel_DiFeliceDrag.html @@ -28,7 +28,7 @@ DiFeliceDragProps
  • density = name of the finite volume gravity field -
  • interpolation = flag to use interolate interpolated voidfraction and velocity values (normally off) +
  • interpolation = flag to use interpolated voidfraction and velocity values (normally off) diff --git a/doc/forceModel_DiFeliceDrag.txt b/doc/forceModel_DiFeliceDrag.txt index b2e0c85a..7180d17f 100644 --- a/doc/forceModel_DiFeliceDrag.txt +++ b/doc/forceModel_DiFeliceDrag.txt @@ -24,7 +24,7 @@ DiFeliceDragProps {U} = name of the finite volume fluid velocity field :ulb,l {density} = name of the finite volume gravity field :l -{interpolation} = flag to use interolate interpolated voidfraction and velocity values (normally off) :l +{interpolation} = flag to use interpolated voidfraction and velocity values (normally off) :l :ule [Examples:] diff --git a/doc/forceModel_GidaspowDrag.html b/doc/forceModel_GidaspowDrag.html index 09861907..c31a57ce 100644 --- a/doc/forceModel_GidaspowDrag.html +++ b/doc/forceModel_GidaspowDrag.html @@ -21,8 +21,9 @@ GidaspowDragProps { velFieldName "U"; densityFieldName "density"; - voidfractionFieldName "voidfraction"; + voidfractionFieldName "voidfraction"; phi "scalar"; + interpolation; };
    • U = name of the finite volume fluid velocity field @@ -33,6 +34,8 @@ GidaspowDragProps
    • phi = drag correction factor (in doubt 1) +
    • interpolation = (optional, normally off) flag to use interpolated voidfraction and fluid velocity values +

    Examples: @@ -45,12 +48,12 @@ GidaspowDragProps { velFieldName "U"; densityFieldName "rho"; - voidfractionFieldName "voidfraction"; + voidfractionFieldName "voidfraction"; }

    Description:

    -

    The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The GidaspowDrag model is a model that calculates the particle based drag force following the correlation of Gidaspow which is a combination of Egrun (1952) and Wen & Yu (1966) (see Zhu et al. (2007): "Discrete particle simulation of particulate systems: Theoretical developments" ,ChemEngScience). +

    The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The GidaspowDrag model is a model that calculates the particle based drag force following the correlation of Gidaspow which is a combination of Ergun (1952) and Wen & Yu (1966) (see Zhu et al. (2007): "Discrete particle simulation of particulate systems: Theoretical developments", ChemEngScience).

    Restrictions:

    diff --git a/doc/forceModel_GidaspowDrag.txt b/doc/forceModel_GidaspowDrag.txt index a4e5718f..5de896bf 100644 --- a/doc/forceModel_GidaspowDrag.txt +++ b/doc/forceModel_GidaspowDrag.txt @@ -19,14 +19,16 @@ GidaspowDragProps \{ velFieldName "U"; densityFieldName "density"; - voidfractionFieldName "voidfraction"; + voidfractionFieldName "voidfraction"; phi "scalar"; + interpolation; \}; :pre {U} = name of the finite volume fluid velocity field :ulb,l {density} = name of the finite volume gravity field :l {voidfraction} = name of the finite volume voidfraction field :l {phi} = drag correction factor (in doubt 1) :l +{interpolation} = (optional, normally off) flag to use interpolated voidfraction and fluid velocity values :l :ule [Examples:] @@ -39,12 +41,12 @@ GidaspowDragProps \{ velFieldName "U"; densityFieldName "rho"; - voidfractionFieldName "voidfraction"; + voidfractionFieldName "voidfraction"; \} :pre [Description:] -The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The GidaspowDrag model is a model that calculates the particle based drag force following the correlation of Gidaspow which is a combination of Egrun (1952) and Wen & Yu (1966) (see Zhu et al. (2007): "Discrete particle simulation of particulate systems: Theoretical developments" ,ChemEngScience). +The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The GidaspowDrag model is a model that calculates the particle based drag force following the correlation of Gidaspow which is a combination of Ergun (1952) and Wen & Yu (1966) (see Zhu et al. (2007): "Discrete particle simulation of particulate systems: Theoretical developments", ChemEngScience). [Restrictions:] diff --git a/doc/forceModel_KochHillDrag.html b/doc/forceModel_KochHillDrag.html index 94857f53..3938a881 100644 --- a/doc/forceModel_KochHillDrag.html +++ b/doc/forceModel_KochHillDrag.html @@ -31,7 +31,7 @@ KochHillDragProps
  • voidfraction = name of the finite volume voidfraction field -
  • interpolation = flag to use interpolated voidfraction and fluid velocity values (normally off) +
  • interpolation = (optional, normally off) flag to use interpolated voidfraction and fluid velocity values
  • implDEM = flag to use implicit formulation of drag on DEM side (normally off) @@ -52,7 +52,7 @@ KochHillDragProps

    Description:

    -

    The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The KochHillDrag model is a model that calculates the particle based drag force following the correlation of Koch & Hill (2001) (see van Buijtenen et al. (2011): "Numerical and experimental study on multiple-spout fluidized beds" ,ChemEngScience). +

    The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The KochHillDrag model is a model that calculates the particle based drag force following the correlation of Koch & Hill (2001) (see van Buijtenen et al. (2011): "Numerical and experimental study on multiple-spout fluidized beds", ChemEngScience).

    Restrictions:

    diff --git a/doc/forceModel_KochHillDrag.txt b/doc/forceModel_KochHillDrag.txt index 565c8202..d8ab7eb8 100644 --- a/doc/forceModel_KochHillDrag.txt +++ b/doc/forceModel_KochHillDrag.txt @@ -26,7 +26,7 @@ KochHillDragProps {U} = name of the finite volume fluid velocity field :ulb,l {density} = name of the finite volume gravity field :l {voidfraction} = name of the finite volume voidfraction field :l -{interpolation} = flag to use interpolated voidfraction and fluid velocity values (normally off) :l +{interpolation} = (optional, normally off) flag to use interpolated voidfraction and fluid velocity values :l {implDEM} = flag to use implicit formulation of drag on DEM side (normally off) :l :ule @@ -45,7 +45,7 @@ KochHillDragProps [Description:] -The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The KochHillDrag model is a model that calculates the particle based drag force following the correlation of Koch & Hill (2001) (see van Buijtenen et al. (2011): "Numerical and experimental study on multiple-spout fluidized beds" ,ChemEngScience). +The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The KochHillDrag model is a model that calculates the particle based drag force following the correlation of Koch & Hill (2001) (see van Buijtenen et al. (2011): "Numerical and experimental study on multiple-spout fluidized beds", ChemEngScience). [Restrictions:] diff --git a/doc/forceModel_LaEuScalarTemp.html b/doc/forceModel_LaEuScalarTemp.html index 03f3cd37..c0075c96 100644 --- a/doc/forceModel_LaEuScalarTemp.html +++ b/doc/forceModel_LaEuScalarTemp.html @@ -28,6 +28,8 @@ LaEuScalarTempProps lambda value; Cp value1; densityFieldName "density"; + interpolation; + verbose; };
    • U = name of the finite volume fluid velocity field @@ -48,6 +50,10 @@ LaEuScalarTempProps
    • density = name of the finite volume fluid density field +
    • interpolation = (optional, normally off) flag to use interpolated voidfraction and fluid velocity values + +
    • verbose = (normally off) for verbose run +

    Examples: @@ -71,7 +77,7 @@ LaEuScalarTempProps

    Description:

    -

    This "forceModel" does not influence the particles or the fluid flow! Using the particles' temperature a scalar field representing "particle-fluid heatflux" is calculated. The solver then uses this source field in the scalar transport equation for the temperature. The model for convective heat transfer is based on Li and Mason (2000), A computational investigation of transient heat transfer in pneumatic transport of granular particles, Pow.Tech 112 +

    This "forceModel" does not influence the particles or the fluid flow! Using the particles' temperature a scalar field representing "particle-fluid heatflux" is calculated. The solver then uses this source field in the scalar transport equation for the temperature. The model for convective heat transfer is based on Li and Mason (2000), A computational investigation of transient heat transfer in pneumatic transport of granular particles, Pow.Tech 112

    Restrictions:

    diff --git a/doc/forceModel_LaEuScalarTemp.txt b/doc/forceModel_LaEuScalarTemp.txt index 6c0daac5..a2b8690d 100644 --- a/doc/forceModel_LaEuScalarTemp.txt +++ b/doc/forceModel_LaEuScalarTemp.txt @@ -26,6 +26,8 @@ LaEuScalarTempProps lambda value; Cp value1; densityFieldName "density"; + interpolation; + verbose; \}; :pre {U} = name of the finite volume fluid velocity field :ulb,l @@ -37,6 +39,8 @@ LaEuScalarTempProps {value} = fluid thermal conductivity \[W/(m*K)\] :l {value1} = fluid specific heat capacity \[W*s/(kg*K)\] :l {density} = name of the finite volume fluid density field :l +{interpolation} = (optional, normally off) flag to use interpolated voidfraction and fluid velocity values :l +{verbose} = (normally off) for verbose run :l :ule [Examples:] @@ -60,7 +64,7 @@ LaEuScalarTempProps [Description:] -This "forceModel" does not influence the particles or the fluid flow! Using the particles' temperature a scalar field representing "particle-fluid heatflux" is calculated. The solver then uses this source field in the scalar transport equation for the temperature. The model for convective heat transfer is based on Li and Mason (2000), A computational investigation of transient heat transfer in pneumatic transport of granular particles, Pow.Tech 112 +This "forceModel" does not influence the particles or the fluid flow! Using the particles' temperature a scalar field representing "particle-fluid heatflux" is calculated. The solver then uses this source field in the scalar transport equation for the temperature. The model for convective heat transfer is based on Li and Mason (2000), A computational investigation of transient heat transfer in pneumatic transport of granular particles, Pow.Tech 112 [Restrictions:] diff --git a/doc/forceModel_ShirgaonkarIB.html b/doc/forceModel_ShirgaonkarIB.html index 5956cc2b..5e198cfc 100644 --- a/doc/forceModel_ShirgaonkarIB.html +++ b/doc/forceModel_ShirgaonkarIB.html @@ -47,7 +47,7 @@ ShirgaonkarIBProps

    Description:

    -

    The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The ShirgaonkarIB model calculates the drag force (viscous and pressure force) acting on each particle in a resolved manner (see Shirgaonkar et al. (2009): "A new mathematical formulation and fast algorithm for fully resolved simulation of self-propulsion", Journal of Comp. Physics). This model is only suited for resolved CFD-DEM simulations where the particle is represented by immersed boundrary method. +

    The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The ShirgaonkarIB model calculates the drag force (viscous and pressure force) acting on each particle in a resolved manner (see Shirgaonkar et al. (2009): "A new mathematical formulation and fast algorithm for fully resolved simulation of self-propulsion", Journal of Comp. Physics). This model is only suited for resolved CFD-DEM simulations where the particle is represented by immersed boundary method.

    References:

    diff --git a/doc/forceModel_ShirgaonkarIB.txt b/doc/forceModel_ShirgaonkarIB.txt index f9a6223e..9f488cfc 100644 --- a/doc/forceModel_ShirgaonkarIB.txt +++ b/doc/forceModel_ShirgaonkarIB.txt @@ -42,7 +42,7 @@ ShirgaonkarIBProps [Description:] -The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The ShirgaonkarIB model calculates the drag force (viscous and pressure force) acting on each particle in a resolved manner (see Shirgaonkar et al. (2009): "A new mathematical formulation and fast algorithm for fully resolved simulation of self-propulsion", Journal of Comp. Physics). This model is only suited for resolved CFD-DEM simulations where the particle is represented by immersed boundrary method. +The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The ShirgaonkarIB model calculates the drag force (viscous and pressure force) acting on each particle in a resolved manner (see Shirgaonkar et al. (2009): "A new mathematical formulation and fast algorithm for fully resolved simulation of self-propulsion", Journal of Comp. Physics). This model is only suited for resolved CFD-DEM simulations where the particle is represented by immersed boundary method. [References:] diff --git a/doc/forceModel_gradPForce.html b/doc/forceModel_gradPForce.html index 410cd208..f5553131 100644 --- a/doc/forceModel_gradPForce.html +++ b/doc/forceModel_gradPForce.html @@ -31,7 +31,7 @@ gradPForceProps
  • U = name of the finite volume fluid velocity field -
  • interpolation = flag to use interolate interpolated pressure values (normally off) +
  • interpolation = flag to use interpolated pressure values (normally off) diff --git a/doc/forceModel_gradPForce.txt b/doc/forceModel_gradPForce.txt index c1d2bdf3..7a0801d3 100644 --- a/doc/forceModel_gradPForce.txt +++ b/doc/forceModel_gradPForce.txt @@ -26,7 +26,7 @@ gradPForceProps {pressure} = name of the finite volume fluid pressure field :ulb,l {density} = name of the finite volume gravity field :l {U} = name of the finite volume fluid velocity field :l -{interpolation} = flag to use interolate interpolated pressure values (normally off) :l +{interpolation} = flag to use interpolated pressure values (normally off) :l :ule [Examples:] diff --git a/doc/forceModel_particleCellVolume.html b/doc/forceModel_particleCellVolume.html index d906882c..c34aa71e 100644 --- a/doc/forceModel_particleCellVolume.html +++ b/doc/forceModel_particleCellVolume.html @@ -21,7 +21,7 @@ particleCellVolumeProps { upperThreshold value; lowerThreshold value2; - verbous; + verbose; };
  • value = only cells with a field value (magnitude) lower than this upper threshold are considered @@ -40,13 +40,13 @@ particleCellVolumeProps { upperThreshold 0.999; lowerThreshold 0; - verbous; + verbose; }

    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. Further the total volume of the cells particles are in 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. Analogously a field named cellVolume is written. Using the verbose option a screen output is given. +At "writeTime" a field named particleCellVolume , where scalarField is the name of the original field, is written. This can then be probed using standard function object probes. Analogously a field named cellVolume is written. Using the verbose option a screen output is given.

    Restrictions:

    diff --git a/doc/forceModel_particleCellVolume.txt b/doc/forceModel_particleCellVolume.txt index 21bc23dd..93b1dbfb 100644 --- a/doc/forceModel_particleCellVolume.txt +++ b/doc/forceModel_particleCellVolume.txt @@ -19,7 +19,7 @@ particleCellVolumeProps \{ upperThreshold value; lowerThreshold value2; - verbous; + verbose; \}; :pre {value} = only cells with a field value (magnitude) lower than this upper threshold are considered :l @@ -36,13 +36,13 @@ particleCellVolumeProps \{ upperThreshold 0.999; lowerThreshold 0; - verbous; + verbose; \} :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. Further the total volume of the cells particles are in 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. Analogously a field named cellVolume is written. Using the verbose option a screen output is given. +At "writeTime" a field named particleCellVolume , where scalarField is the name of the original field, is written. This can then be probed using standard function object probes. Analogously a field named cellVolume is written. Using the verbose option a screen output is given. [Restrictions:] diff --git a/doc/forceModel_viscForce.html b/doc/forceModel_viscForce.html index 73b6ad9f..ebd76ec6 100644 --- a/doc/forceModel_viscForce.html +++ b/doc/forceModel_viscForce.html @@ -28,7 +28,7 @@ viscForceProps
  • density = name of the finite volume gravity field -
  • interpolation = flag to use interolate interpolated stress values (normally off) +
  • interpolation = flag to use interpolated stress values (normally off) @@ -46,7 +46,7 @@ viscForceProps

    Description:

    -

    The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The viscForce model calculates the particle based viscous force, -(grad(tau)) * Vparticle (see Zhou et al. (2010): "Discrete particle simulation of particle-fluid flow: model formulations and their applicability" ,JFM). +

    The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The viscForce model calculates the particle based viscous force, -(grad(tau)) * Vparticle (see Zhou et al. (2010): "Discrete particle simulation of particle-fluid flow: model formulations and their applicability", JFM).

    Restrictions:

    diff --git a/doc/forceModel_viscForce.txt b/doc/forceModel_viscForce.txt index a7986d1c..8577846c 100644 --- a/doc/forceModel_viscForce.txt +++ b/doc/forceModel_viscForce.txt @@ -24,7 +24,7 @@ viscForceProps {U} = name of the finite volume fluid velocity field :ulb,l {density} = name of the finite volume gravity field :l -{interpolation} = flag to use interolate interpolated stress values (normally off) :l +{interpolation} = flag to use interpolated stress values (normally off) :l :ule [Examples:] @@ -41,7 +41,7 @@ viscForceProps [Description:] -The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The viscForce model calculates the particle based viscous force, -(grad(tau)) * Vparticle (see Zhou et al. (2010): "Discrete particle simulation of particle-fluid flow: model formulations and their applicability" ,JFM). +The force model performs the calculation of forces (e.g. fluid-particle interaction forces) acting on each DEM particle. The viscForce model calculates the particle based viscous force, -(grad(tau)) * Vparticle (see Zhou et al. (2010): "Discrete particle simulation of particle-fluid flow: model formulations and their applicability", JFM). [Restrictions:] diff --git a/doc/githubAccess_public.html b/doc/githubAccess_public.html index 2ca41186..b27e7093 100644 --- a/doc/githubAccess_public.html +++ b/doc/githubAccess_public.html @@ -17,7 +17,7 @@

    Description:

    -

    This routine describes how to setup a github account and pull repositories of the CFDEM(R)project. +

    This routine describes how to set up a github account and pull repositories of the CFDEM(R)project. After setting some environment variables LIGGGHTS(R) and CFDEM(R)coupling can be compiled

    Procedure: @@ -81,7 +81,7 @@ git pull

    gedit ~/.bashrc & 
     
    -

    add the lines (you find them also in .../cfdemParticle/etc/bashrc and cshrc respectively): +

    add the lines (you find them also in .../cfdemParticle/etc/bashrc and cshrc respectively):

    #================================================#
     #- source cfdem env vars
    @@ -107,7 +107,7 @@ export CFDEM_PIZZA_DIR=$HOME/LIGGGHTS/PIZZA/gran_pizza_17Aug10/src
     $CFDEM_SRC_DIR
     $CFDEM_LIGGGHTS_SRC_DIR 
     
    -

    should give "...: is a directory" otherwise something went wrong and the environment variables in ~/bashrc are not set correctly. +

    should give "...: is a directory" otherwise something went wrong and the environment variables in ~/.bashrc are not set correctly.

    To specify the paths of pizza, please check the settings in $CFDEM_SRC_DIR/lagrangian/cfdemParticle/etc/bashrc.

    @@ -139,7 +139,7 @@ Changes in $CFDEM_TUT_DIR will be lost after every git stash!

    Additional Installations:

    -

    Optionally you can install lpp which will help you convert the DEM (dump) data to VTK format. For standard CFD-DEM runs this will not be necessary. To get the DEM postporcessing tool "lpp" you need python-numpy package installed: +

    Optionally you can install lpp which will help you convert the DEM (dump) data to VTK format. For standard CFD-DEM runs this will not be necessary. To get the DEM postprocessing tool "lpp" you need python-numpy package installed:

    sudo apt-get install python-numpy 
     
    @@ -149,9 +149,9 @@ Changes in $CFDEM_TUT_DIR will be lost after every git stash!
    git clone git://cfdem.git.sourceforge.net/gitroot/cfdem/lpp mylpp 
     
    -

    Backward Compatibility: +

    Backwards Compatibility:

    -

    Basically CFDEM(R)coupling supports one OpenFOAM(R) version therefore all settings are prepared for that. Nevertheless we try to maintain backward compatibility as long as it works with reasonable effort. +

    Basically CFDEM(R)coupling supports one OpenFOAM(R) version therefore all settings are prepared for that. Nevertheless we try to maintain backwards compatibility as long as it works with reasonable effort.

    The supported OpenFOAM(R) and LIGGGHTS(R) versions are stated in: src/lagrangian/cfdemParticle/cfdTools/versionInfo.H @@ -162,7 +162,7 @@ src/lagrangian/cfdemParticle/etc/OFversion/OFversion.H

    Troubleshooting:

    -
    • toubles with git clone? +
      • Troubles with git clone?
      diff --git a/doc/githubAccess_public.pdf b/doc/githubAccess_public.pdf index 7192ddb2efa8fffeb773ea1f9d8017a0cd8e0fab..dd5e1fbf9fe7e3a86cb542f68edbf945cdda0ed2 100644 GIT binary patch delta 3194 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
      • 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) @@ -40,6 +41,8 @@ executeProps0
      • switch4 = switch (choose on/off) if the command is executed at every writing step +
      • verbose = (normally off) for verbose run +

      Examples: diff --git a/doc/liggghtsCommandModel_execute.txt b/doc/liggghtsCommandModel_execute.txt index f0fec115..5db5f2af 100644 --- a/doc/liggghtsCommandModel_execute.txt +++ b/doc/liggghtsCommandModel_execute.txt @@ -26,6 +26,7 @@ executeProps0 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 @@ -33,6 +34,7 @@ executeProps0 {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 +{verbose} = (normally off) for verbose run :l :ule [Examples:] diff --git a/doc/liggghtsCommandModel_readLiggghtsData.html b/doc/liggghtsCommandModel_readLiggghtsData.html index 7710a678..1981d499 100644 --- a/doc/liggghtsCommandModel_readLiggghtsData.html +++ b/doc/liggghtsCommandModel_readLiggghtsData.html @@ -36,9 +36,9 @@ readLiggghtsDataProps0

      Description:

      -

      The readLiggghtsData liggghtsCommand Model can be used to ??? +

      The readLiggghtsData liggghtsCommand Model can be used to ???

      -

      Restrictions: +

      Restrictions:

      Note: Model is not up to date.

      diff --git a/doc/liggghtsCommandModel_readLiggghtsData.txt b/doc/liggghtsCommandModel_readLiggghtsData.txt index 99c655e0..510ab556 100644 --- a/doc/liggghtsCommandModel_readLiggghtsData.txt +++ b/doc/liggghtsCommandModel_readLiggghtsData.txt @@ -35,10 +35,10 @@ readLiggghtsDataProps0 [Description:] -The readLiggghtsData liggghtsCommand Model can be used to ??? +The readLiggghtsData liggghtsCommand Model can be used to ??? -[Restrictions:] +[Restrictions:] Note: Model is not up to date. diff --git a/doc/liggghtsCommandModel_runLiggghts.html b/doc/liggghtsCommandModel_runLiggghts.html index 58452e86..b9ad8864 100644 --- a/doc/liggghtsCommandModel_runLiggghts.html +++ b/doc/liggghtsCommandModel_runLiggghts.html @@ -21,6 +21,7 @@ runLiggghtsProps { preNo true; + verbose; (optional) }

      Examples: @@ -32,9 +33,9 @@ runLiggghtsProps

      Description:

      -

      The liggghtsCommand models can be used to execute a LIGGGHTS command during a CFD run. The "runLiggghts" command executes the command "run $nrDEMsteps", where $nrDEMsteps is automaically set according to the coupling intervals, every coupling step. Optionally a dictionary called runLiggghtsProps can be specified where the "preNo" switch can be set, which uses the command "run $nrDEMsteps pre no" for every time step except the first. +

      The liggghtsCommand models can be used to execute a LIGGGHTS command during a CFD run. The "runLiggghts" command executes the command "run $nrDEMsteps", where $nrDEMsteps is automatically set according to the coupling intervals, every coupling step. Optionally a dictionary called runLiggghtsProps can be specified where the "preNo" switch can be set, which uses the command "run $nrDEMsteps pre no" for every time step except the first.

      -

      Restrictions: Warning: the "pre no" option can cause troubles (dump data of particles changin the domain might be erroneous)! +

      Restrictions: Warning: the "pre no" option can cause troubles (dump data of particles changing the domain might be erroneous)!

      Related commands:

      diff --git a/doc/liggghtsCommandModel_runLiggghts.txt b/doc/liggghtsCommandModel_runLiggghts.txt index 1fefddda..a1f0ef41 100644 --- a/doc/liggghtsCommandModel_runLiggghts.txt +++ b/doc/liggghtsCommandModel_runLiggghts.txt @@ -19,6 +19,7 @@ liggghtsCommandModels runLiggghtsProps \{ preNo true; + verbose; (optional) \} :pre [Examples:] @@ -30,9 +31,9 @@ liggghtsCommandModels [Description:] -The liggghtsCommand models can be used to execute a LIGGGHTS command during a CFD run. The "runLiggghts" command executes the command "run $nrDEMsteps", where $nrDEMsteps is automaically set according to the coupling intervals, every coupling step. Optionally a dictionary called runLiggghtsProps can be specified where the "preNo" switch can be set, which uses the command "run $nrDEMsteps pre no" for every time step except the first. +The liggghtsCommand models can be used to execute a LIGGGHTS command during a CFD run. The "runLiggghts" command executes the command "run $nrDEMsteps", where $nrDEMsteps is automatically set according to the coupling intervals, every coupling step. Optionally a dictionary called runLiggghtsProps can be specified where the "preNo" switch can be set, which uses the command "run $nrDEMsteps pre no" for every time step except the first. -[Restrictions:] Warning: the "pre no" option can cause troubles (dump data of particles changin the domain might be erroneous)! +[Restrictions:] Warning: the "pre no" option can cause troubles (dump data of particles changing the domain might be erroneous)! [Related commands:] diff --git a/doc/liggghtsCommandModel_writeLiggghts.html b/doc/liggghtsCommandModel_writeLiggghts.html index 685b9014..3a96aaf7 100644 --- a/doc/liggghtsCommandModel_writeLiggghts.html +++ b/doc/liggghtsCommandModel_writeLiggghts.html @@ -23,6 +23,7 @@ writeLiggghtsProps writeLast switch1; writeName "name"; overwrite switch2; + verbose; }
      • switch1 = switch (choose on/off) to select if only last step is stored or every write step. @@ -31,6 +32,8 @@ writeLiggghtsProps
      • switch2 = switch (choose on/off) to select if only one restart file $name or many files $name_$timeStamp are written +
      • verbose = (normally off) for verbose run +

      Examples: diff --git a/doc/liggghtsCommandModel_writeLiggghts.txt b/doc/liggghtsCommandModel_writeLiggghts.txt index c0a2a310..77f4f461 100644 --- a/doc/liggghtsCommandModel_writeLiggghts.txt +++ b/doc/liggghtsCommandModel_writeLiggghts.txt @@ -21,11 +21,13 @@ writeLiggghtsProps writeLast switch1; writeName "name"; overwrite switch2; + verbose; \} :pre {switch1} = switch (choose on/off) to 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 {switch2} = switch (choose on/off) to select if only one restart file $name or many files $name_$timeStamp are written :l +{verbose} = (normally off) for verbose run :l :ule [Examples:] diff --git a/doc/locateModel_engineSearchIB.html b/doc/locateModel_engineSearchIB.html index 15e36803..16ec8ce5 100644 --- a/doc/locateModel_engineSearchIB.html +++ b/doc/locateModel_engineSearchIB.html @@ -57,9 +57,9 @@ engineIBProps

    -

    This model is a modification of the engine search model. Instead of using the centre-cell as starting point for the engine search, further satellite points located on the surface of the sphere are checked. This makes sure that (parts of) spheres can be located even when their centre is on another processor. This is especially important for parallel computations, when a sphere is about to move from one processor to another. +

    This model is a modification of the engine search model. Instead of using the centre-cell as starting point for the engine search, further satellite points located on the surface of the sphere are checked. This ensures that (parts of) spheres can be located even when their centre is on another processor. This is especially important for parallel computations, when a sphere is about to move from one processor to another.

    -

    Restrictions: +

    Restrictions:

    Only for immersed boundary solvers!

    diff --git a/doc/locateModel_engineSearchIB.txt b/doc/locateModel_engineSearchIB.txt index 9adbdcc2..08b66a1b 100644 --- a/doc/locateModel_engineSearchIB.txt +++ b/doc/locateModel_engineSearchIB.txt @@ -50,9 +50,9 @@ treeSearch false; will execute some geometric (linear) search using the last treeSearch true; will use a recursive tree structure to find the cell. :l :ule -This model is a modification of the engine search model. Instead of using the centre-cell as starting point for the engine search, further satellite points located on the surface of the sphere are checked. This makes sure that (parts of) spheres can be located even when their centre is on another processor. This is especially important for parallel computations, when a sphere is about to move from one processor to another. +This model is a modification of the engine search model. Instead of using the centre-cell as starting point for the engine search, further satellite points located on the surface of the sphere are checked. This ensures that (parts of) spheres can be located even when their centre is on another processor. This is especially important for parallel computations, when a sphere is about to move from one processor to another. -[Restrictions:] +[Restrictions:] Only for immersed boundary solvers! diff --git a/doc/momCoupleModel_explicitCouple.html b/doc/momCoupleModel_explicitCouple.html index 521d7c96..ac6b5ba5 100644 --- a/doc/momCoupleModel_explicitCouple.html +++ b/doc/momCoupleModel_explicitCouple.html @@ -41,7 +41,7 @@ explicitCoupleProps

    The explicitCouple-model is a momCoupleModel model providing an explicit momentum source term for the CFD solver.

    -

    Restrictions: +

    Restrictions:

    Only for solvers that include explicit momentum exchange.

    diff --git a/doc/momCoupleModel_explicitCouple.txt b/doc/momCoupleModel_explicitCouple.txt index 58cd2824..bdcb4655 100644 --- a/doc/momCoupleModel_explicitCouple.txt +++ b/doc/momCoupleModel_explicitCouple.txt @@ -38,7 +38,7 @@ explicitCoupleProps The explicitCouple-model is a momCoupleModel model providing an explicit momentum source term for the CFD solver. -[Restrictions:] +[Restrictions:] Only for solvers that include explicit momentum exchange. diff --git a/doc/momCoupleModel_implicitCouple.html b/doc/momCoupleModel_implicitCouple.html index ca70b2c9..f2b1a00a 100644 --- a/doc/momCoupleModel_implicitCouple.html +++ b/doc/momCoupleModel_implicitCouple.html @@ -31,7 +31,7 @@ implicitCoupleProps
  • voidfraction = name of the finite volume voidfraction field -number = min value for local particle volume fraction to calculate the exchange filed (default SMALL):l +number = minimum value for local particle volume fraction to calculate the exchange filed (default SMALL):l

    Examples: @@ -51,7 +51,7 @@ implicitCoupleProps

    The implicitCouple-model is a momCoupleModel model providing an implicit momentum source term for the CFD solver.

    -

    Restrictions: +

    Restrictions:

    Only for solvers that include implicit momentum exchange.

    diff --git a/doc/momCoupleModel_implicitCouple.txt b/doc/momCoupleModel_implicitCouple.txt index e46a35c0..08433eec 100644 --- a/doc/momCoupleModel_implicitCouple.txt +++ b/doc/momCoupleModel_implicitCouple.txt @@ -26,7 +26,7 @@ implicitCoupleProps {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} = min value for local particle volume fraction to calculate the exchange filed (default SMALL):l +{number} = minimum value for local particle volume fraction to calculate the exchange filed (default SMALL):l :ule [Examples:] @@ -46,7 +46,7 @@ implicitCoupleProps The implicitCouple-model is a momCoupleModel model providing an implicit momentum source term for the CFD solver. -[Restrictions:] +[Restrictions:] Only for solvers that include implicit momentum exchange. diff --git a/doc/momCoupleModel_noCouple.html b/doc/momCoupleModel_noCouple.html index 38dd7c35..0ec1e601 100644 --- a/doc/momCoupleModel_noCouple.html +++ b/doc/momCoupleModel_noCouple.html @@ -27,9 +27,9 @@

    Description:

    -

    The noCouple-model is a dummy momCoupleModel model providing an no momentum source term for the CFD solver. +

    The noCouple-model is a dummy momCoupleModel model providing a no momentum source term for the CFD solver.

    -

    Restrictions: +

    Restrictions:

    Only for solvers that include no momentum exchange, e.g. immersed boundary.

    diff --git a/doc/momCoupleModel_noCouple.txt b/doc/momCoupleModel_noCouple.txt index c6080190..6972d30c 100644 --- a/doc/momCoupleModel_noCouple.txt +++ b/doc/momCoupleModel_noCouple.txt @@ -26,9 +26,9 @@ momCoupleModels [Description:] -The noCouple-model is a dummy momCoupleModel model providing an no momentum source term for the CFD solver. +The noCouple-model is a dummy momCoupleModel model providing a no momentum source term for the CFD solver. -[Restrictions:] +[Restrictions:] Only for solvers that include no momentum exchange, e.g. immersed boundary. diff --git a/doc/probeModel.html b/doc/probeModel.html index 3871fe47..72309a36 100644 --- a/doc/probeModel.html +++ b/doc/probeModel.html @@ -31,7 +31,7 @@

    Description:

    -

    The probeModel feature allows one to implement various probing features in CFDEM. Currently, only the particleProbe model is implemented, that performs probing of particle forces. +

    The probeModel feature allows to implement various probing features in CFDEM. Currently, only the particleProbe model is implemented, that performs probing of particle forces.

    Restrictions:

    diff --git a/doc/probeModel.txt b/doc/probeModel.txt index 5e10acfd..64826ed1 100644 --- a/doc/probeModel.txt +++ b/doc/probeModel.txt @@ -29,7 +29,7 @@ Note: This examples list might not be complete - please check below for the list [Description:] -The probeModel feature allows one to implement various probing features in CFDEM. Currently, only the "particleProbe"_probeModel_particleProbe.html model is implemented, that performs probing of particle forces. +The probeModel feature allows to implement various probing features in CFDEM. Currently, only the "particleProbe"_probeModel_particleProbe.html model is implemented, that performs probing of particle forces. [Restrictions:] diff --git a/doc/smoothingModel_constDiffSmoothing.html b/doc/smoothingModel_constDiffSmoothing.html index faf3f45a..cf5904ab 100644 --- a/doc/smoothingModel_constDiffSmoothing.html +++ b/doc/smoothingModel_constDiffSmoothing.html @@ -39,15 +39,15 @@ constDiffSmoothingProps lowerLimit 0.1; upperLimit 1e10; smoothingLength 1500e-6; - smoothingLengthReferenceField 9000e-6; + smoothingLengthReferenceField 9000e-6; }

    Description:

    -

    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. +

    The "constDiffSmoothing" model is a basic smoothingModel model which reads a smoothing length scale being used for smoothing the exchange fields (voidfraction, Ksl, f if present). This model can be used for smoothing explicit force coupling fields, as well as implicit force coupling algorithms. Smoothing for reference fields is performed to "fill in" values in cells in which these reference fields are not specified. Values calculated in the cells (via Lagrangian-To-Euler mapping) are NOT changed! These reference fields are, e.g., the average particle velocity, which are not specified in all cells in case the flow is rather dilute.

    -

    Restrictions: This model is tested in a limited number of flow situations. +

    Restrictions: This model is tested in a limited number of flow situations.

    ATTENTION: In case a smoothing model is used in conjunction with "PimpleImEx" solvers, the fields "f" and "fSmooth" must be placed in the initial time directory! This is because zeroGradient boundary conditions for the fields "f" and "fSmooth" must be specified, otherwise the smoothing operation will give an Error.

    diff --git a/doc/smoothingModel_constDiffSmoothing.txt b/doc/smoothingModel_constDiffSmoothing.txt index b6dc6db9..54f75cfd 100644 --- a/doc/smoothingModel_constDiffSmoothing.txt +++ b/doc/smoothingModel_constDiffSmoothing.txt @@ -33,15 +33,15 @@ constDiffSmoothingProps lowerLimit 0.1; upperLimit 1e10; smoothingLength 1500e-6; - smoothingLengthReferenceField 9000e-6; + smoothingLengthReferenceField 9000e-6; \} :pre [Description:] -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. +The "constDiffSmoothing" model is a basic smoothingModel model which reads a smoothing length scale being used for smoothing the exchange fields (voidfraction, Ksl, f if present). This model can be used for smoothing explicit force coupling fields, as well as implicit force coupling algorithms. Smoothing for reference fields is performed to "fill in" values in cells in which these reference fields are not specified. Values calculated in the cells (via Lagrangian-To-Euler mapping) are NOT changed! These reference fields are, e.g., the average particle velocity, which are not specified in all cells in case the flow is rather dilute. -[Restrictions:] This model is tested in a limited number of flow situations. +[Restrictions:] This model is tested in a limited number of flow situations. ATTENTION: In case a smoothing model is used in conjunction with "PimpleImEx" solvers, the fields "f" and "fSmooth" must be placed in the initial time directory! This is because zeroGradient boundary conditions for the fields "f" and "fSmooth" must be specified, otherwise the smoothing operation will give an Error. diff --git a/doc/voidFractionModel_GaussVoidFraction.html b/doc/voidFractionModel_GaussVoidFraction.html index c976b46d..2ad4fd92 100644 --- a/doc/voidFractionModel_GaussVoidFraction.html +++ b/doc/voidFractionModel_GaussVoidFraction.html @@ -18,17 +18,17 @@ GaussProps { maxCellsPerParticle number1; alphaMin number2; - scaleUpVol number3; - weight number4; + weight number3; + porosity number4; } -