release on 2014-03-11_15-15-12

This commit is contained in:
goniva
2014-03-11 15:15:12 +01:00
parent 5cdaaa289c
commit ef08058ce6
36 changed files with 282 additions and 169 deletions

81
README
View File

@ -1,81 +0,0 @@
/*---------------------------------------------------------------------------*\
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.
\*---------------------------------------------------------------------------*/

View File

@ -51,8 +51,11 @@ Contributions
#include "dynamicFvMesh.H" //dyM
#include "cellSet.H"
#include "meshToMeshNew.H"
#include "fvIOoptionList.H"
#if defined(version22)
#include "meshToMeshNew.H"
#include "fvIOoptionList.H"
#endif
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -68,7 +71,9 @@ int main(int argc, char *argv[])
#include "initContinuityErrs.H"
#include "createFvOptions.H"
#if defined(version22)
#include "createFvOptions.H"
#endif
// create cfdemCloud
#include "readGravitationalAcceleration.H"
@ -102,13 +107,17 @@ int main(int argc, char *argv[])
fvm::ddt(voidfraction,U)
+ fvm::div(phi, U)
+ turbulence->divDevReff(U)
#if defined(version22)
==
fvOptions(U)
#endif
);
UEqn.relax();
#if defined(version22)
fvOptions.constrain(UEqn);
#endif
if (momentumPredictor)
{
@ -126,7 +135,9 @@ int main(int argc, char *argv[])
adjustPhi(phi, U, p);
#if defined(version22)
fvOptions.relativeFlux(phi);
#endif
// Non-orthogonal pressure corrector loop
for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
@ -172,7 +183,9 @@ int main(int argc, char *argv[])
volScalarField voidfractionNext=mesh.lookupObject<volScalarField>("voidfractionNext");
particleCloud.calcVelocityCorrection(p,U,phiIB,voidfractionNext);
#if defined(version22)
fvOptions.correct(U);
#endif
runTime.write();

Binary file not shown.

View File

@ -21,6 +21,7 @@ GidaspowDragProps
{
velFieldName "U";
densityFieldName "density";
voidfractionFieldName "voidfraction";
phi "scalar";
};
</PRE>
@ -28,6 +29,8 @@ GidaspowDragProps
<LI><I>density</I> = name of the finite volume gravity field
<LI><I>voidfraction</I> = name of the finite volume voidfraction field
<LI><I>phi</I> = drag correction factor (in doubt 1)
@ -42,6 +45,7 @@ GidaspowDragProps
{
velFieldName "U";
densityFieldName "rho";
voidfractionFieldName "voidfraction";
}
</PRE>
<P><B>Description:</B>

View File

@ -19,11 +19,13 @@ GidaspowDragProps
\{
velFieldName "U";
densityFieldName "density";
voidfractionFieldName "voidfraction";
phi "scalar";
\}; :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
:ule
@ -37,6 +39,7 @@ GidaspowDragProps
\{
velFieldName "U";
densityFieldName "rho";
voidfractionFieldName "voidfraction";
\} :pre
[Description:]

View File

@ -17,8 +17,8 @@
<P><B>Description:</B>
</P>
<P>This routine describes how to setup a github account and pull repositories of the CFDEMproject.
After setting some environment variables LIGGGHTS and CFDEMcoupling can be compiled
<P>This routine describes how to setup 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
</P>
<P><B>Procedure:</B>
</P>
@ -30,7 +30,7 @@ After setting some environment variables LIGGGHTS and CFDEMcoupling can be compi
<LI>set environment variables
<LI>compile LIGGGHTS and CFDEMcoupling
<LI>compile LIGGGHTS(R) and CFDEM(R)coupling
<LI>run your own cases
@ -38,7 +38,7 @@ After setting some environment variables LIGGGHTS and CFDEMcoupling can be compi
</UL>
<P><B><I>git clone</I> the desired repository:</B>
</P>
<P>If not already done, open a terminal and create a directory for LIGGGHTS in $HOME:
<P>If not already done, open a terminal and create a directory for LIGGGHTS(R) in $HOME:
</P>
<PRE>cd
</PRE>
@ -50,7 +50,7 @@ After setting some environment variables LIGGGHTS and CFDEMcoupling can be compi
</P>
<PRE><H6>git clone git://github.com/CFDEMproject/LIGGGHTS-PUBLIC.git LIGGGHTS-PUBLIC
</H6></PRE>
<P>If not already done, open a terminal and create a directory for CFDEMcoupling in $HOME:
<P>If not already done, open a terminal and create a directory for CFDEM(R)coupling in $HOME:
</P>
<PRE>cd
</PRE>
@ -58,9 +58,9 @@ After setting some environment variables LIGGGHTS and CFDEMcoupling can be compi
</PRE>
<PRE>cd CFDEM
</PRE>
<P>Make sure that OpenFOAM(R)-2.1.x is already set up correctly!
<P>Make sure that OpenFOAM(R) is already set up correctly!
</P>
<P>To clone the public CFDEMcoupling repository, open a terminal and execute:
<P>To clone the public CFDEM(R)coupling repository, open a terminal and execute:
</P>
<PRE><H6>git clone git://github.com/CFDEMproject/CFDEMcoupling-PUBLIC.git CFDEMcoupling-PUBLIC-$WM_PROJECT_VERSION
</H6></PRE>
@ -117,13 +117,13 @@ $CFDEM_LIGGGHTS_SRC_DIR
</PRE>
<P>to get some information if the paths are set correctly.
</P>
<P><B>Compile LIGGGHTS and CFDEMcoupling:</B>
<P><B>Compile LIGGGHTS(R) and CFDEM(R)coupling:</B>
</P>
<P>If above settings were done correctly, you can compile LIGGGHTS by typing:
<P>If above settings were done correctly, you can compile LIGGGHTS(R) by typing:
</P>
<PRE>cfdemCompLIG
</PRE>
<P>and you can then compile CFDEMcoupling by typing:
<P>and you can then compile CFDEM(R)coupling by typing:
</P>
<PRE>cfdemCompCFDEM
</PRE>
@ -149,6 +149,17 @@ Changes in $CFDEM_TUT_DIR will be lost after every <I>git stash</I>!
</PRE>
<PRE>git clone git://cfdem.git.sourceforge.net/gitroot/cfdem/lpp mylpp
</PRE>
<P><B>Backward Compatibility:</B>
</P>
<P>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.
</P>
<P>The supported OpenFOAM(R) and LIGGGHTS(R) versions are stated in:
src/lagrangian/cfdemParticle/cfdTools/versionInfo.H
</P>
<P>For using other versions you can manipulate:
src/lagrangian/cfdemParticle/etc/OFversion/OFversion.H
(still not all functionality might work then!)
</P>
<P><B>Troubleshooting:</B>
</P>
<UL><LI>toubles with git clone?

Binary file not shown.

View File

@ -11,8 +11,8 @@ githubAccess_public :h3
[Description:]
This routine describes how to setup a github account and pull repositories of the CFDEMproject.
After setting some environment variables LIGGGHTS and CFDEMcoupling can be compiled
This routine describes how to setup 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:]
@ -21,13 +21,13 @@ Basically the following steps have to be performed:
{git clone} the desired repository :ulb,l
update your repositories by {git pull} :l
set environment variables :l
compile LIGGGHTS and CFDEMcoupling :l
compile LIGGGHTS(R) and CFDEM(R)coupling :l
run your own cases :l
:ule
[{git clone} the desired repository:]
If not already done, open a terminal and create a directory for LIGGGHTS in $HOME:
If not already done, open a terminal and create a directory for LIGGGHTS(R) in $HOME:
cd :pre
mkdir LIGGGHTS :pre
@ -37,15 +37,15 @@ To clone the public LIGGGHTS repository, open a terminal and execute:
git clone git://github.com/CFDEMproject/LIGGGHTS-PUBLIC.git LIGGGHTS-PUBLIC :pre,h6
If not already done, open a terminal and create a directory for CFDEMcoupling in $HOME:
If not already done, open a terminal and create a directory for CFDEM(R)coupling in $HOME:
cd :pre
mkdir CFDEM :pre
cd CFDEM :pre
Make sure that OpenFOAM(R)-2.1.x is already set up correctly!
Make sure that OpenFOAM(R) is already set up correctly!
To clone the public CFDEMcoupling repository, open a terminal and execute:
To clone the public CFDEM(R)coupling repository, open a terminal and execute:
git clone git://github.com/CFDEMproject/CFDEMcoupling-PUBLIC.git CFDEMcoupling-PUBLIC-$WM_PROJECT_VERSION :pre,h6
@ -103,13 +103,13 @@ cfdemSysTest :pre
to get some information if the paths are set correctly.
[Compile LIGGGHTS and CFDEMcoupling:]
[Compile LIGGGHTS(R) and CFDEM(R)coupling:]
If above settings were done correctly, you can compile LIGGGHTS by typing:
If above settings were done correctly, you can compile LIGGGHTS(R) by typing:
cfdemCompLIG :pre
and you can then compile CFDEMcoupling by typing:
and you can then compile CFDEM(R)coupling by typing:
cfdemCompCFDEM :pre
@ -134,6 +134,17 @@ You can pull the latest version of lpp with:
cd $HOME/LIGGGHTS :pre
git clone git://cfdem.git.sourceforge.net/gitroot/cfdem/lpp mylpp :pre
[Backward 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.
The supported OpenFOAM(R) and LIGGGHTS(R) versions are stated in:
src/lagrangian/cfdemParticle/cfdTools/versionInfo.H
For using other versions you can manipulate:
src/lagrangian/cfdemParticle/etc/OFversion/OFversion.H
(still not all functionality might work then!)
[Troubleshooting:]
toubles with git clone? :ulb,l

View File

@ -6,7 +6,6 @@ voidFractionModels = subModels/voidFractionModel
locateModels = subModels/locateModel
meshMotionModels = subModels/meshMotionModel
momCoupleModels = subModels/momCoupleModel
regionModels = subModels/regionModel
dataExchangeModels = subModels/dataExchangeModel
averagingModels = subModels/averagingModel
clockModels = subModels/clockModel
@ -15,6 +14,7 @@ smoothingModels = subModels/smoothingModel
probeModels = subModels/probeModel
$(cfdemCloud)/cfdemCloud.C
derived/cfdemCloudBiDisperse/cfdemCloudBiDisperse.C
derived/cfdemCloudIB/cfdemCloudIB.C
derived/cfdemCloudMS/cfdemCloudMS.C
@ -23,26 +23,44 @@ $(forceModels)/forceModel/newForceModel.C
$(forceModels)/noDrag/noDrag.C
$(forceModels)/checkCouplingInterval/checkCouplingInterval.C
$(forceModels)/DiFeliceDrag/DiFeliceDrag.C
$(forceModels)/DiFeliceDragNLift/DiFeliceDragNLift.C
$(forceModels)/GidaspowDrag/GidaspowDrag.C
$(forceModels)/SchillerNaumannDrag/SchillerNaumannDrag.C
$(forceModels)/Archimedes/Archimedes.C
$(forceModels)/ArchimedesIB/ArchimedesIB.C
$(forceModels)/interface/interface.C
$(forceModels)/ShirgaonkarIB/ShirgaonkarIB.C
$(forceModels)/interfaceParticleProbe/interfaceParticleProbe.C
$(forceModels)/fieldTimeAverage/fieldTimeAverage.C
$(forceModels)/fieldBound/fieldBound.C
$(forceModels)/volWeightedAverage/volWeightedAverage.C
$(forceModels)/totalMomentumExchange/totalMomentumExchange.C
$(forceModels)/KochHillDrag/KochHillDrag.C
$(forceModels)/KochHillRWDrag/KochHillRWDrag.C
$(forceModels)/BeetstraDrag/multiphaseFlowBasic/multiphaseFlowBasic.C
$(forceModels)/BeetstraDrag/BeetstraDrag.C
$(forceModels)/LaEuScalarLiquid/LaEuScalarLiquid.C
$(forceModels)/LaEuScalarTemp/LaEuScalarTemp.C
$(forceModels)/LaEuScalarDust/LaEuScalarDust.C
$(forceModels)/virtualMassForce/virtualMassForce.C
$(forceModels)/gradPForce/gradPForce.C
$(forceModels)/gradULiftForce/gradULiftForce.C
$(forceModels)/HollowayDrag/HollowayDrag.C
$(forceModels)/viscForce/viscForce.C
$(forceModels)/MeiLift/MeiLift.C
$(forceModels)/melting/melting.C
$(forceModels)/KochHillDragNLift/KochHillDragNLift.C
$(forceModels)/solidsPressureForce/solidsPressureForce.C
$(forceModels)/periodicPressure/periodicPressure.C
$(forceModels)/periodicPressureControl/periodicPressureControl.C
$(forceModels)/averageSlipVel/averageSlipVel.C
$(forceModels)/particleCellVolume/particleCellVolume.C
$(forceModels)/fieldTimeAverage/fieldTimeAverage.C
$(forceModels)/volWeightedAverage/volWeightedAverage.C
$(forceModelsMS)/forceModelMS/forceModelMS.C
$(forceModelsMS)/forceModelMS/newForceModelMS.C
$(forceModelsMS)/DiFeliceDragMS/DiFeliceDragMS.C
$(forceModelsMS)/GidaspowDragMS/GidaspowDragMS.C
$(forceModelsMS)/noDragMS/noDragMS.C
$(probeModels)/probeModel/probeModel.C
$(probeModels)/probeModel/newProbeModel.C
@ -60,10 +78,12 @@ $(voidFractionModels)/voidFractionModel/voidFractionModel.C
$(voidFractionModels)/voidFractionModel/newVoidFractionModel.C
$(voidFractionModels)/centreVoidFraction/centreVoidFraction.C
$(voidFractionModels)/dividedVoidFraction/dividedVoidFraction.C
$(voidFractionModels)/dividedVoidFractionBiDi/dividedVoidFractionBiDi.C
$(voidFractionModels)/dividedVoidFractionMS/dividedVoidFractionMS.C
$(voidFractionModels)/bigParticleVoidFraction/bigParticleVoidFraction.C
$(voidFractionModels)/GaussVoidFraction/GaussVoidFraction.C
$(voidFractionModels)/IBVoidFraction/IBVoidFraction.C
$(voidFractionModels)/weightedNeigbhorsVoidFraction/weightedNeigbhorsVoidFraction.C
$(locateModels)/locateModel/locateModel.C
$(locateModels)/locateModel/newLocateModel.C
@ -73,21 +93,18 @@ $(locateModels)/turboEngineSearch/turboEngineSearch.C
$(locateModels)/turboEngineSearchM2M/turboEngineSearchM2M.C
$(locateModels)/engineSearchIB/engineSearchIB.C
$(meshMotionModels)/meshMotionModel/meshMotionModel.C
$(meshMotionModels)/meshMotionModel/newMeshMotionModel.C
$(meshMotionModels)/noMeshMotion/noMeshMotion.C
$(meshMotionModels)/DEMdrivenMeshMotion/DEMdrivenMeshMotion.C
$(momCoupleModels)/momCoupleModel/momCoupleModel.C
$(momCoupleModels)/momCoupleModel/newMomCoupleModel.C
$(momCoupleModels)/explicitCouple/explicitCouple.C
$(momCoupleModels)/explicitCoupleSource/explicitCoupleSource.C
$(momCoupleModels)/implicitCouple/implicitCouple.C
$(momCoupleModels)/noCouple/noCouple.C
$(regionModels)/regionModel/regionModel.C
$(regionModels)/regionModel/newRegionModel.C
$(regionModels)/allRegion/allRegion.C
$(dataExchangeModels)/dataExchangeModel/dataExchangeModel.C
$(dataExchangeModels)/dataExchangeModel/newDataExchangeModel.C
$(dataExchangeModels)/oneWayVTK/oneWayVTK.C
@ -100,6 +117,7 @@ $(averagingModels)/averagingModel/averagingModel.C
$(averagingModels)/averagingModel/newAveragingModel.C
$(averagingModels)/dilute/dilute.C
$(averagingModels)/dense/dense.C
$(averagingModels)/denseBiDi/denseBiDi.C
$(clockModels)/clockModel/clockModel.C
$(clockModels)/clockModel/newClockModel.C
@ -117,5 +135,6 @@ $(smoothingModels)/smoothingModel/smoothingModel.C
$(smoothingModels)/smoothingModel/newSmoothingModel.C
$(smoothingModels)/noSmoothing/noSmoothing.C
$(smoothingModels)/constDiffSmoothing/constDiffSmoothing.C
$(smoothingModels)/localPSizeDiffSmoothing/localPSizeDiffSmoothing.C
LIB = $(FOAM_USER_LIBBIN)/lib$(CFDEM_LIB_NAME)
LIB = $(CFDEM_LIB_DIR)/lib$(CFDEM_LIB_NAME)

View File

@ -1,6 +1,6 @@
word CFDEMversion="cfdem-2.6.0";
word CFDEMversion="cfdem-2.6.1";
word compatibleLIGGGHTSversion="3.0.0";
word OFversion="2.2.x-commit-7c405a31b2f7299f5e2669fa18fb251ea219dd03";
word OFversion="2.2.x-commit-61b850bc107bdd60bbf1bf9a6417b9faf701d128";
Info << "\nCFDEMcoupling version: " << CFDEMversion << "\n" << endl;
Info << "\n, compatible to LIGGGHTS version: " << compatibleLIGGGHTSversion << "\n" << endl;

View File

@ -30,6 +30,16 @@ Description
\*---------------------------------------------------------------------------*/
#include "momCoupleModel.H"
#include "smoothingModel.H"
#include "meshMotionModel.H"
#include "averagingModel.H"
#include "clockModel.H"
#include "IOModel.H"
#include "voidFractionModel.H"
#include "locateModel.H"
#include "probeModel.H"
namespace Foam
{

View File

@ -55,8 +55,17 @@ cfdemCloudIB::cfdemCloudIB
cfdemCloud(mesh),
angularVelocities_(NULL),
pRefCell_(readLabel(mesh.solutionDict().subDict("PISO").lookup("pRefCell"))),
pRefValue_(readScalar(mesh.solutionDict().subDict("PISO").lookup("pRefValue")))
{}
pRefValue_(readScalar(mesh.solutionDict().subDict("PISO").lookup("pRefValue"))),
haveEvolvedOnce_(false),
skipLagrangeToEulerMapping_(false)
{
if(this->couplingProperties().found("skipLagrangeToEulerMapping"))
{
Info << "Will skip lagrange-to-Euler mapping..." << endl;
skipLagrangeToEulerMapping_=true;
}
}
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
@ -95,20 +104,25 @@ bool Foam::cfdemCloudIB::evolve()
Info << "\n timeStepFraction() = " << dataExchangeM().timeStepFraction() << endl;
doCouple=true;
if(verbose_) Info << "- getDEMdata()" << endl;
getDEMdata();
Info << "nr particles = " << numberOfParticles() << endl;
// search cellID of particles
if(verbose_) Info << "- findCell()" << endl;
locateM().findCell(NULL,positions_,cellIDs_,numberOfParticles());
if(verbose_) Info << "findCell done." << endl;
// set void fraction field
if(verbose_) Info << "- setvoidFraction()" << endl;
voidFractionM().setvoidFraction(NULL,voidfractions_,particleWeights_,particleVolumes_);
if(verbose_) Info << "setvoidFraction done." << endl;
// Info << "skipLagrangeToEulerMapping_: " << skipLagrangeToEulerMapping_
// << " haveEvolvedOnce_: " << haveEvolvedOnce_ << endl;
if(!skipLagrangeToEulerMapping_ || !haveEvolvedOnce_)
{
if(verbose_) Info << "- getDEMdata()" << endl;
getDEMdata();
Info << "nr particles = " << numberOfParticles() << endl;
// search cellID of particles
if(verbose_) Info << "- findCell()" << endl;
locateM().findCell(NULL,positions_,cellIDs_,numberOfParticles());
if(verbose_) Info << "findCell done." << endl;
// set void fraction field
if(verbose_) Info << "- setvoidFraction()" << endl;
voidFractionM().setvoidFraction(NULL,voidfractions_,particleWeights_,particleVolumes_);
if(verbose_) Info << "setvoidFraction done." << endl;
}
// set particles forces
if(verbose_) Info << "- setForce(forces_)" << endl;
for(int index = 0;index < numberOfParticles_; ++index){
@ -124,6 +138,8 @@ bool Foam::cfdemCloudIB::evolve()
// write DEM data
if(verbose_) Info << " -giveDEMdata()" << endl;
giveDEMdata();
haveEvolvedOnce_=true;
}
Info << "evolve done." << endl;

View File

@ -61,6 +61,9 @@ protected:
mutable double **angularVelocities_;
label pRefCell_;
scalar pRefValue_;
mutable bool haveEvolvedOnce_;
mutable bool skipLagrangeToEulerMapping_;
public:

View File

@ -7,7 +7,7 @@
//#define comp // if comp is on - you must use Make/options_comp!
//define multi sphere
#define multisphere
//#define multisphere
// features of 2.1 work also in 2.2
#if defined(version22)

View File

@ -39,6 +39,10 @@ echo ""
if [ ! -f "$CWD/$whitelist" ];then
echo "$whitelist does not exist in $CWD"
else
#--------------------------------------------------------------------------------#
logpath="$(dirname "$(readlink -f ${BASH_SOURCE[0]})")/$logDir"
NLINES=`wc -l < $CWD/$whitelist`
COUNT=0
@ -71,12 +75,13 @@ else
#--------------------------------------------------------------------------------#
#- define variables
logpath="$(dirname "$(readlink -f ${BASH_SOURCE[0]})")/$logDir"
#logpath="$(dirname "$(readlink -f ${BASH_SOURCE[0]})")/$logDir"
logfileName="log_compileCFDEMcoupling""_$LINE"
casePath="$CFDEM_SOLVER_DIR/$LINE"
headerText="$logfileName""_$LINE""-$NOW"
parallel="false"
#--------------------------------------------------------------------------------#
compileSolver $logpath $logfileName $casePath $headerText
compileSolver $logpath $logfileName $casePath $headerText $parallel
#echo "did the solvers compile correcty? - press enter to proceed."
#read

View File

@ -60,6 +60,8 @@ mkdir -p $logDir
casePath="$path"
headerText="$logfileName""-$NOW"
#--------------------------------------------------------------------------------#
# remove old log file
rm "$logpath/$logfileName"*
compileLib $logpath $logfileName $casePath $headerText
done

View File

@ -93,6 +93,7 @@ compileSolver()
casePath="$3"
headerText="$4"
#doClean="$5"
parallel="$5"
#--------------------------------------------------------------------------------#
#- clean up old log file
@ -115,7 +116,13 @@ compileSolver()
rmdepall 2>&1 | tee -a $logpath/$logfileName
wclean 2>&1 | tee -a $logpath/$logfileName
#fi
wmake 2>&1 | tee -a $logpath/$logfileName
# compile parallel?
if [[ $parallel == "true" ]]; then
wmake 2>&1 | tee -a $logpath/$logfileName &
else
wmake 2>&1 | tee -a $logpath/$logfileName
fi
#- keep terminal open
#read
@ -306,6 +313,26 @@ cleanCFDEM()
}
#==================================#
#==================================#
#- function to clean CFDEMcoupling case
cleanCFDEMcase()
{
#--------------------------------------------------------------------------------#
#- define variables
casepath="$1"
#--------------------------------------------------------------------------------#
echo "deleting data at: $casePath :\n"
source $WM_PROJECT_DIR/bin/tools/CleanFunctions
cd $casePath/CFD
cleanCase
rm -r $casePath/DEM/post/*
echo "dummyfile" >> $casePath/DEM/post/dummy
cd $casePath
echo "done"
}
#==================================#
#- function to run a DEM case
@ -443,7 +470,7 @@ CFDrun()
echo 2>&1 | tee -a $logpath/$logfileName
#- clean up case
rm couplingFiles/*
#rm couplingFiles/*
#- run applictaion
$debugMode $solverName 2>&1 | tee -a $logpath/$logfileName

View File

@ -1 +1,11 @@
lagrangian/cfdemParticle/dir
#====================================================='
#- RADL
fvOptions/dir
cylPorousMedia/dir
#====================================================='
#- other
finiteVolume/dir

View File

@ -1,5 +1,11 @@
cfdemSolverPimple/dir
cfdemSolverPisoMS/dir
cfdemSolverPiso/dir
cfdemSolverIB/dir
cfdemSolverPisoScalar/dir
cfdemSolverPimpleImEx/dir
cfdemSolverIBInterLubrication/dir
cfdemSolverIBScalar/dir
cfdemSolverInterDyM/dir
cfdemSolverBubble/dir
cfdemSolverPimple/dir
cfdemSolverPisoMS/dir
cfdemSolverPimpleDyM_22x/dir

View File

@ -6,23 +6,46 @@
# Christoph Goniva - June. 2011, DCS Computing GmbH
#===================================================================#
cfdemSolverPiso/settlingTestMPI/dir
#cfdemSolverPiso/settlingTestMPI/dir
#cfdemSolverPiso/ErgunTestMPI/dir
#cfdemSolverPiso/ErgunTestMPI_cgs/dir
#cfdemSolverPiso/ErgunTestMPI_restart/dir
#cfdemSolverIB/twoSpheresGlowinskiMPI/dir
#cfdemSolverPisoScalar/packedBedTemp/dir
cfdemSolverPiso/ErgunTestMPI/dir
#===================================================================#
# RADL
#cfdemSolverPimpleImEx/settlingTestMPI/dir
#cfdemSolverPimpleImEx/crossFlow/dir
cfdemSolverIB/periodicCase/dir
cfdemSolverIB/cfdemIBPeriodicCubicalBox_fullyPeriodic/dir
#cfdemSolverIBInterLubrication/twoCoatedParticlesRelMotion_smallTest/dir
#cfdemSolverIBScalar/cfdemIBPeriodicCubicalBoxScalar/dir
cfdemSolverPiso/ErgunTestMPI_cgs/dir
#===================================================================#
# NesteJacobs
#Projects/Neste/cfdemSolverBubble/3pFBreactor/dir
#Projects/Neste/cfdemSolverInterDyM/3pFBreactor/dir
cfdemSolverPiso/ErgunTestMPI_restart/dir
#===================================================================#
# not in release:
cfdemSolverIB/twoSpheresGlowinskiMPI/dir
#cfdemSolverPiso/settlingTestBigParticleMPI/dir
#cfdemSolverPiso/ErgunTestCG/dir
#cfdemSolverPiso/ErgunTestM2M/dir
#cfdemSolverPiso/HopperEmptying/dir
cfdemSolverPisoScalar/packedBedTemp/dir
#cfdemSolverPisoMS/settlingTestMPI/dir
#cfdemSolverPisoMS/ErgunTestMPI/dir
#cfdemSolverPimple/ErgunTestMPI/dir
#cfdemSolverInterDyM/twoPhaseSettlingTest/dir
#cfdemSolverInterDyM/ErgunTestMPI/dir
#cfdemSolverInterDyM/granularPiston/dir
#cfdemSolverInterDyM/sugarNcoffee/dir
cfdemSolverPiso/ErgunTestCG/dir
cfdemSolverPimple/ErgunTestMPI/dir
#cfdemSolverBubble/ErgunTestMPI_pureLiquid/dir

View File

@ -68,14 +68,16 @@ GidaspowDrag::GidaspowDrag
U_(sm.mesh().lookupObject<volVectorField> (velFieldName_)),
densityFieldName_(propsDict_.lookup("densityFieldName")),
rho_(sm.mesh().lookupObject<volScalarField> (densityFieldName_)),
voidfractionFieldName_(propsDict_.lookup("voidfractionFieldName")),
voidfraction_(sm.mesh().lookupObject<volScalarField> (voidfractionFieldName_)),
phi_(readScalar(propsDict_.lookup("phi")))
{
//Append the field names to be probed
particleCloud_.probeM().initialize(typeName, "gidaspowDrag.logDat");
particleCloud_.probeM().vectorFields_.append("dragForce"); //first entry must the be the force
particleCloud_.probeM().vectorFields_.append("Urel"); //other are debug
particleCloud_.probeM().scalarFields_.append("KslLag"); //other are debug
particleCloud_.probeM().scalarFields_.append("voidfraction"); //other are debug
particleCloud_.probeM().vectorFields_.append("Urel");
particleCloud_.probeM().scalarFields_.append("KslLag");
particleCloud_.probeM().scalarFields_.append("voidfraction");
particleCloud_.probeM().writeHeader();
if (propsDict_.found("verbose")) verbose_=true;
@ -116,7 +118,7 @@ void GidaspowDrag::setForce() const
vector Ur = U_[cellI]-Us;
scalar magUr = mag(Ur);
scalar ds = 2*particleCloud_.radius(index)*phi_;
scalar voidfraction = particleCloud_.voidfraction(index);
scalar voidfraction = voidfraction_[cellI];
scalar rho = rho_[cellI];
scalar nuf = nufField[cellI];
scalar CdMagUrLag=0;//Cd of the very particle
@ -146,6 +148,18 @@ void GidaspowDrag::setForce() const
if (modelType_=="B")
drag /= voidfraction;
if(verbose_ && index >=0 && index <2)
{
Pout << "cellI = " << cellI << endl;
Pout << "index = " << index << endl;
Pout << "Us = " << Us << endl;
Pout << "Ur = " << Ur << endl;
Pout << "ds = " << ds << endl;
Pout << "rho = " << rho << endl;
Pout << "nuf = " << nuf << endl;
Pout << "voidfraction = " << voidfraction << endl;
Pout << "drag = " << drag << endl;
}
//Set value fields and write the probe
if(probeIt_)

View File

@ -69,6 +69,10 @@ private:
const volScalarField& rho_;
word voidfractionFieldName_;
const volScalarField& voidfraction_;
const scalar phi_;
public:

View File

@ -71,6 +71,7 @@ gradPForce::gradPForce
rho_(sm.mesh().lookupObject<volScalarField> (densityFieldName_)),
useRho_(false),
useU_(false),
addedMassCoeff_(0.0),
interpolation_(false)
{
if (modelType_ == "B")
@ -84,6 +85,12 @@ gradPForce::gradPForce
if (propsDict_.found("verbose")) verbose_=true;
if (propsDict_.found("treatExplicit")) treatExplicit_=true;
if (propsDict_.found("useU")) useU_=true;
if (propsDict_.found("useAddedMass"))
{
addedMassCoeff_ = readScalar(propsDict_.lookup("useAddedMass"));
Info << "gradP will also include added mass with coefficient: " << addedMassCoeff_ << endl;
Info << "WARNING: use fix nve/sphere/addedMass in LIGGGHTS input script to correctly account for added mass effects!" << endl;
}
if (propsDict_.found("interpolation"))
{
Info << "using interpolated value of pressure gradient." << endl;
@ -160,9 +167,9 @@ void gradPForce::setForce() const
// calc particle's pressure gradient force
if (useRho_)
force = -Vs*gradP*rho;
force = -Vs*gradP*rho*(1.0+addedMassCoeff_);
else
force = -Vs*gradP;
force = -Vs*gradP*(1.0+addedMassCoeff_);
if(verbose_ && index >=0 && index <2)
{

View File

@ -81,6 +81,8 @@ private:
bool useU_; // if false: substitution p=0.5*rho*U^2
mutable double addedMassCoeff_; //added mass coefficient
bool interpolation_; // use interpolated field values
public:

View File

@ -67,6 +67,7 @@ viscForce::viscForce
U_(sm.mesh().lookupObject<volVectorField> (velocityFieldName_)),
densityFieldName_(propsDict_.lookup("densityFieldName")),
rho_(sm.mesh().lookupObject<volScalarField> (densityFieldName_)),
addedMassCoeff_(0.0),
interpolation_(false)
{
if (modelType_ == "B")
@ -79,6 +80,14 @@ viscForce::viscForce
}
if (propsDict_.found("verbose")) verbose_=true;
if (propsDict_.found("treatExplicit")) treatExplicit_=true;
if (propsDict_.found("useAddedMass"))
{
addedMassCoeff_ = readScalar(propsDict_.lookup("useAddedMass"));
Info << "viscForce will also include added mass with coefficient: " << addedMassCoeff_ << endl;
Info << "WARNING: use fix nve/sphere/addedMass in LIGGGHTS input script to correctly account for added mass effects!" << endl;
}
if (propsDict_.found("interpolation"))
{
Info << "using interpolated value of pressure gradient." << endl;
@ -158,7 +167,7 @@ void viscForce::setForce() const
// calc the contribution of the deviatoric stress
// to the generalized buoyancy force
force = -Vs*divTau;
force = -Vs*divTau*(1.0+addedMassCoeff_);
if(verbose_ && index >0 && index <2)
{

View File

@ -69,6 +69,8 @@ private:
const volScalarField& rho_;
mutable double addedMassCoeff_; //added mass coefficient
bool interpolation_; // use interpolated field values
public:

View File

@ -127,7 +127,7 @@ void IBVoidFraction::setvoidFraction(double** const& mask,double**& voidfraction
vector cellCentrePosition = particleCloud_.mesh().C()[particleCenterCellID];
scalar centreDist=mag(cellCentrePosition-positionCenter);
vector minPeriodicParticlePos;
vector minPeriodicParticlePos=positionCenter;
if(checkPeriodicCells_) //consider minimal distance to all periodic images of this particle
{
centreDist = minPeriodicDistance(cellCentrePosition, positionCenter, globalBb,
@ -158,11 +158,6 @@ void IBVoidFraction::setvoidFraction(double** const& mask,double**& voidfraction
else if(centreDist<radius && centreVertexDist>radius)
{
//compute lambda
if(!checkPeriodicCells_) //set if no periodic check of cells
{
minPeriodicParticlePos = positionCenter;
}
scalar a = (vertexPosition - cellCentrePosition)
& (vertexPosition - cellCentrePosition);
scalar b = 2. * (vertexPosition - cellCentrePosition)
@ -185,11 +180,6 @@ void IBVoidFraction::setvoidFraction(double** const& mask,double**& voidfraction
else if(centreDist>radius && centreVertexDist<radius)
{
//compute another lambda too
if(!checkPeriodicCells_) //set if no periodic check of cells
{
minPeriodicParticlePos = positionCenter;
}
scalar a = (vertexPosition - cellCentrePosition)
& (vertexPosition - cellCentrePosition);
scalar b = 2.* (vertexPosition - cellCentrePosition)

View File

@ -99,7 +99,6 @@ IBProps
maxCellsPerParticle 1000;
alphaMin 0.30;
scaleUpVol 1.0;
checkPeriodicCells;
}
bigParticleProps
@ -127,7 +126,6 @@ engineIBProps
}
zSplit 8;
xySplit 16;
checkPeriodicCells;
}
// ************************************************************************* //

View File

@ -21,8 +21,6 @@ else
blockMesh
fi
#- run parallel CFD-DEM in new terminal
gnome-terminal --title='cfdemSolverPimple ErgunTestMPI CFD' -e "bash $casePath/parCFDDEMrun.sh"

View File

@ -6,7 +6,7 @@ clc;
% simulation data 1
%====================================%
%path = '../probes/0/p';
path = '../probes/0/p';
path = '../postProcessing/0/p';
columns=22;
headerlines=4;
data = loaddata(path,columns,headerlines);

View File

@ -75,3 +75,4 @@ dummyfile
dummyfile
dummyfile
dummyfile
dummyfile

View File

@ -139,8 +139,11 @@ totalMomentumExchangeProps
}
GidaspowDragProps
{
verbose;
velFieldName "U";
densityFieldName "rho";
voidfractionFieldName "voidfraction";
phi 1;
}
DiFeliceDragProps
{

View File

@ -94,6 +94,7 @@ rm -r $casePath/DEM/post/*
rm -r $casePath/DEM/log.*
rm -r $casePath/DEM/liggghts.restartCFDEM*
rm -r $casePath/CFD/probes
rm -r $casePath/CFD/postProcessing
rm -r $casePath/CFD/lagrangian
rm -r $casePath/CFD/clockData
echo "done"

View File

@ -56,3 +56,5 @@ dummyfile
dummyfile
dummyfile
dummyfile
dummyfile
dummyfile