From 5d51595f96ace96292761ba106a94ec7bc107020 Mon Sep 17 00:00:00 2001 From: cfdem Date: Wed, 21 Nov 2012 14:15:25 +0100 Subject: [PATCH] release on 2012-11-21_14-15-25 --- README | 82 ++++++++++++++++++ .../solvers/cfdemSolverPiso/cfdemSolverPiso.C | 2 +- doc/CFDEMcoupling_Manual.pdf | Bin 510502 -> 510502 bytes doc/githubAccess_public.pdf | Bin 361862 -> 361862 bytes src/lagrangian/cfdemParticle/Make/files | 22 ++++- src/lagrangian/cfdemParticle/Make/options | 5 +- .../cfdemParticle/cfdTools/debugInfo.H | 4 +- .../cfdemParticle/cfdemCloud/cfdemCloud.C | 24 ++--- src/lagrangian/cfdemParticle/etc/bashrc | 6 ++ .../cfdemParticle/etc/cfdemSystemTest.sh | 6 ++ src/lagrangian/cfdemParticle/etc/cshrc | 6 ++ .../dataExchangeModel/dataExchangeModel.C | 32 +++++++ .../dataExchangeModel/dataExchangeModel.H | 23 +++++ .../SchillerNaumannDrag/SchillerNaumannDrag.C | 2 +- .../runLiggghts/runLiggghts.C | 10 +-- .../runLiggghts/runLiggghts.H | 2 +- .../CFD/constant/couplingProperties | 11 ++- .../CFD/constant/liggghtsCommands | 5 ++ .../CFD/octave/totalPressureDrop.m | 17 +++- .../ErgunTestMPI/CFD/system/decomposeParDict | 4 +- .../ErgunTestMPI/DEM/in.liggghts_resume | 2 +- .../ErgunTestMPI/parCFDDEMrun.sh | 2 +- .../ErgunTestMPI_restart/DEM/post/dummy | 1 + .../CFD/octave/totalPressureDrop.m | 17 +++- 24 files changed, 248 insertions(+), 37 deletions(-) create mode 100644 README diff --git a/README b/README new file mode 100644 index 00000000..a677e0a8 --- /dev/null +++ b/README @@ -0,0 +1,82 @@ +/*---------------------------------------------------------------------------*\ + 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 Silicon Graphics +International Corp. This offering is not affiliated, approved or endorsed by +Silicon Graphics International Corp., the producer of the OpenFOAM(R) software +and owner of the OpenFOAM(R) trademark. +\*---------------------------------------------------------------------------*/ diff --git a/applications/solvers/cfdemSolverPiso/cfdemSolverPiso.C b/applications/solvers/cfdemSolverPiso/cfdemSolverPiso.C index c14cba22..cc274df8 100644 --- a/applications/solvers/cfdemSolverPiso/cfdemSolverPiso.C +++ b/applications/solvers/cfdemSolverPiso/cfdemSolverPiso.C @@ -80,7 +80,7 @@ int main(int argc, char *argv[]) #include "solverDebugInfo.H" particleCloud.clockM().stop("Coupling"); - particleCloud.clockM().start(16,"Flow"); + particleCloud.clockM().start(26,"Flow"); // Pressure-velocity PISO corrector { // Momentum predictor diff --git a/doc/CFDEMcoupling_Manual.pdf b/doc/CFDEMcoupling_Manual.pdf index ce91bbcd605a2eb492020856a181e717335194a3..c5cdd3a5685fbcb0599a31b1e0c73b6dcc65f97e 100644 GIT binary patch delta 118 zcmZ2BMSj^7`3dbjhDL^lCWfYl7P+)GHdH(wyl%dO;0+R t8>bqY7^j*V8yc7znxv&B85t!drCAzVrkNWVCZ-wM*$`4Oo$D043;?k)BZ>e3 delta 118 zcmZ2BMSj^7`3dbj21dq)1|~qPYhctkxpgvQ>tv?Z$;_>jSz0HvwoYc-I+@+{q?1Xi sp_yr#QIc7rskv!#vZb-9xkXyCfvKsPk-1Ttg@K(7Ar;fPPO-}X0I7H)@c;k- diff --git a/doc/githubAccess_public.pdf b/doc/githubAccess_public.pdf index 4a4c67a1a86d4da577f51d1a36b94f7261216444..bf00a26d003c6f1c8d176592428a45a4183c9d1d 100644 GIT binary patch delta 112 zcmZqc7HjJko6ycr-usg@>oHiT46&uV3r0RYpuA~XO1 diff --git a/src/lagrangian/cfdemParticle/Make/files b/src/lagrangian/cfdemParticle/Make/files index b26fe6cd..e2411291 100644 --- a/src/lagrangian/cfdemParticle/Make/files +++ b/src/lagrangian/cfdemParticle/Make/files @@ -20,18 +20,33 @@ $(forceModels)/forceModel/forceModel.C $(forceModels)/forceModel/newForceModel.C $(forceModels)/noDrag/noDrag.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)/fieldTimeAverage/fieldTimeAverage.C +$(forceModels)/fieldBound/fieldBound.C +$(forceModels)/volWeightedAverage/volWeightedAverage.C +$(forceModels)/totalMomentumExchange/totalMomentumExchange.C $(forceModels)/KochHillDrag/KochHillDrag.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)/viscForce/viscForce.C $(forceModels)/MeiLift/MeiLift.C +$(forceModels)/KochHillDragNLift/KochHillDragNLift.C +$(forceModels)/solidsPressureForce/solidsPressureForce.C +$(forceModels)/periodicPressure/periodicPressure.C +$(forceModels)/periodicPressureControl/periodicPressureControl.C +$(forceModels)/averageSlipVel/averageSlipVel.C $(forceModelsMS)/forceModelMS/forceModelMS.C $(forceModelsMS)/forceModelMS/newForceModelMS.C @@ -42,6 +57,7 @@ $(IOModels)/IOModel/newIOModel.C $(IOModels)/noIO/noIO.C $(IOModels)/basicIO/basicIO.C $(IOModels)/trackIO/trackIO.C +$(IOModels)/sophIO/sophIO.C $(voidFractionModels)/voidFractionModel/voidFractionModel.C $(voidFractionModels)/voidFractionModel/newVoidFractionModel.C @@ -57,22 +73,25 @@ $(locateModels)/locateModel/newLocateModel.C $(locateModels)/standardSearch/standardSearch.C $(locateModels)/engineSearch/engineSearch.C $(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 +$(regionModels)/differentialRegion/differentialRegion.C $(dataExchangeModels)/dataExchangeModel/dataExchangeModel.C $(dataExchangeModels)/dataExchangeModel/newDataExchangeModel.C @@ -80,6 +99,7 @@ $(dataExchangeModels)/oneWayVTK/oneWayVTK.C $(dataExchangeModels)/twoWayFiles/twoWayFiles.C $(dataExchangeModels)/noDataExchange/noDataExchange.C $(dataExchangeModels)/twoWayMPI/twoWayMPI.C +$(dataExchangeModels)/twoWayM2M/twoWayM2M.C $(averagingModels)/averagingModel/averagingModel.C $(averagingModels)/averagingModel/newAveragingModel.C diff --git a/src/lagrangian/cfdemParticle/Make/options b/src/lagrangian/cfdemParticle/Make/options index e24e4695..eb5d1463 100644 --- a/src/lagrangian/cfdemParticle/Make/options +++ b/src/lagrangian/cfdemParticle/Make/options @@ -13,6 +13,7 @@ EXE_INC = \ -I$(LIB_SRC)/lagrangian/basic/lnInclude \ -I$(LIB_SRC)/OpenFOAM/containers/HashTables/labelHashSet \ -I$(CFDEM_LIGGGHTS_SRC_DIR) \ + -I$(CFDEM_M2MLIB_PATH) \ LIB_LIBS = \ $(PLIBS) \ @@ -24,4 +25,6 @@ LIB_LIBS = \ -llagrangian \ -lmpi_cxx \ -L$(CFDEM_LIGGGHTS_SRC_DIR) \ - -l$(CFDEM_LIGGGHTS_LIB_NAME) + -l$(CFDEM_LIGGGHTS_LIB_NAME) \ + -L$(CFDEM_M2MLIB_PATH) \ + -lcouple diff --git a/src/lagrangian/cfdemParticle/cfdTools/debugInfo.H b/src/lagrangian/cfdemParticle/cfdTools/debugInfo.H index 637e738b..3043b6ac 100755 --- a/src/lagrangian/cfdemParticle/cfdTools/debugInfo.H +++ b/src/lagrangian/cfdemParticle/cfdTools/debugInfo.H @@ -72,8 +72,8 @@ meanU_field = vector(0,0,0); meanUs_field = vector(0,0,0); } - meanUs_array /= numberOfParticles(); - meanR_array /= numberOfParticles(); + meanUs_array /= numberOfParticles()+SMALL; + meanR_array /= numberOfParticles()+SMALL; Info <<"=============================================================================" << endl; Info << "Debug Info, only serial and not tested!" << endl; diff --git a/src/lagrangian/cfdemParticle/cfdemCloud/cfdemCloud.C b/src/lagrangian/cfdemParticle/cfdemCloud/cfdemCloud.C index 52f22f9f..65901cfa 100644 --- a/src/lagrangian/cfdemParticle/cfdemCloud/cfdemCloud.C +++ b/src/lagrangian/cfdemParticle/cfdemCloud/cfdemCloud.C @@ -244,9 +244,9 @@ Foam::cfdemCloud::~cfdemCloud() // * * * * * * * * * * * * * * * private Member Functions * * * * * * * * * * * * * // void Foam::cfdemCloud::getDEMdata() { + dataExchangeM().getData("radius","scalar-atom",radii_); dataExchangeM().getData("x","vector-atom",positions_); dataExchangeM().getData("v","vector-atom",velocities_); - dataExchangeM().getData("radius","scalar-atom",radii_); } void Foam::cfdemCloud::giveDEMdata() @@ -372,41 +372,41 @@ bool Foam::cfdemCloud::evolve Info << "\n Coupling..." << endl; doCouple=true; - clockM().start(5,"defineRegion"); + clockM().start(15,"defineRegion"); if(verbose_) Info << "- defineRegion()" << endl; regionM().defineRegion(); if(verbose_) Info << "defineRegion done." << endl; clockM().stop("defineRegion"); // reset vol Fields - clockM().start(6,"resetVolFields"); + clockM().start(16,"resetVolFields"); if(verbose_) Info << "- resetVolFields()" << endl; regionM().resetVolFields(Us); if(verbose_) Info << "resetVolFields done." << endl; clockM().stop("resetVolFields"); if(verbose_) Info << "- getDEMdata()" << endl; - clockM().start(7,"getDEMdata"); + clockM().start(17,"getDEMdata"); getDEMdata(); clockM().stop("getDEMdata"); if(verbose_) Info << "- getDEMdata done." << endl; // search cellID of particles - clockM().start(8,"findCell"); + clockM().start(18,"findCell"); if(verbose_) Info << "- findCell()" << endl; findCells(); if(verbose_) Info << "findCell done." << endl; clockM().stop("findCell"); // set void fraction field - clockM().start(9,"setvoidFraction"); + clockM().start(19,"setvoidFraction"); if(verbose_) Info << "- setvoidFraction()" << endl; voidFractionM().setvoidFraction(regionM().inRegion(),voidfractions_,particleWeights_,particleVolumes_); if(verbose_) Info << "setvoidFraction done." << endl; clockM().stop("setvoidFraction"); // set particles velocity field - clockM().start(10,"setVectorAverage"); + clockM().start(20,"setVectorAverage"); if(verbose_) Info << "- setVectorAverage(Us,velocities_,weights_)" << endl; averagingM().setVectorAverage ( @@ -420,14 +420,14 @@ bool Foam::cfdemCloud::evolve clockM().stop("setVectorAverage"); // set particles forces - clockM().start(11,"setForce"); + clockM().start(21,"setForce"); if(verbose_) Info << "- setForce(forces_)" << endl; setForces(); if(verbose_) Info << "setForce done." << endl; clockM().stop("setForce"); // get next force field - clockM().start(12,"setParticleForceField"); + clockM().start(22,"setParticleForceField"); if(verbose_) Info << "- setParticleForceField()" << endl; averagingM().setVectorSum ( @@ -448,7 +448,7 @@ bool Foam::cfdemCloud::evolve // write DEM data if(verbose_) Info << " -giveDEMdata()" << endl; - clockM().start(13,"giveDEMdata"); + clockM().start(23,"giveDEMdata"); giveDEMdata(); clockM().stop("giveDEMdata"); @@ -460,7 +460,7 @@ bool Foam::cfdemCloud::evolve }//end dataExchangeM().couple() Info << "\n timeStepFraction() = " << dataExchangeM().timeStepFraction() << endl; - clockM().start(14,"interpolateEulerFields"); + clockM().start(24,"interpolateEulerFields"); // update voidFractionField alpha.internalField() = voidFractionM().voidFractionInterp(); alpha.correctBoundaryConditions(); @@ -474,7 +474,7 @@ bool Foam::cfdemCloud::evolve #include "debugInfo.H" } - clockM().start(15,"dumpDEMdata"); + clockM().start(25,"dumpDEMdata"); // do particle IO IOM().dumpDEMdata(); clockM().stop("dumpDEMdata"); diff --git a/src/lagrangian/cfdemParticle/etc/bashrc b/src/lagrangian/cfdemParticle/etc/bashrc index 5a808aeb..e5fd1c8b 100755 --- a/src/lagrangian/cfdemParticle/etc/bashrc +++ b/src/lagrangian/cfdemParticle/etc/bashrc @@ -43,6 +43,9 @@ export CFDEM_LIGGGHTS_LIB_NAME=lmp_$CFDEM_LIGGGHTS_MAKEFILE_NAME #- CFDEM lib name export CFDEM_LIB_NAME=lagrangianCFDEM-$CFDEM_VERSION-$WM_PROJECT_VERSION +#- LMP M2M lib path +export CFDEM_M2MLIB_PATH=$CFDEM_SRC_DIR/subModels/dataExchangeModel/twoWayM2M/library + #- path to test harness export CFDEM_TEST_HARNESS_PATH=$CFDEM_PROJECT_USER_DIR/log/logFilesCFDEM-$CFDEM_VERSION-$WM_PROJECT_VERSION @@ -98,6 +101,9 @@ alias cfdemCompLIG='bash $CFDEM_SRC_DIR/etc/compileLIGGGHTS.sh' #- shortcut to compile CFDEMcoupling alias cfdemCompCFDEM='bash $CFDEM_SRC_DIR/etc/compileCFDEMcoupling.sh' +#- shortcut to compile couple library +alias cfdemCompM2M='bash $CFDEM_SRC_DIR/etc/compileM2Mlib.sh' + #- shortcut to test basic tutorials alias cfdemTestTUT='bash $CFDEM_SRC_DIR/etc/testTutorials.sh' diff --git a/src/lagrangian/cfdemParticle/etc/cfdemSystemTest.sh b/src/lagrangian/cfdemParticle/etc/cfdemSystemTest.sh index 92bee98c..de816b74 100755 --- a/src/lagrangian/cfdemParticle/etc/cfdemSystemTest.sh +++ b/src/lagrangian/cfdemParticle/etc/cfdemSystemTest.sh @@ -25,6 +25,8 @@ checkDirComment "$CFDEM_LIGGGHTS_SRC_DIR" '$CFDEM_LIGGGHTS_SRC_DIR' "yes" checkDirComment "$CFDEM_PROJECT_DIR" '$CFDEM_PROJECT_DIR' "yes" checkDirComment "$CFDEM_PROJECT_USER_DIR" '$CFDEM_PROJECT_USER_DIR' "no" checkDirComment "$CFDEM_SRC_DIR" '$CFDEM_SRC_DIR' "yes" +checkDirComment "$CFDEM_SOLVER_DIR" '$CFDEM_SOLVER_DIR' "yes" +checkDirComment "$CFDEM_TUT_DIR" '$CFDEM_TUT_DIR' "yes" checkDirComment "$CFDEM_LIGGGHTS_SRC_DIR" '$CFDEM_LIGGGHTS_SRC_DIR' "yes" checkDirComment "$CFDEM_LPP_DIR" '$CFDEM_LPP_DIR' "yes" checkDirComment "$CFDEM_PIZZA_DIR" '$CFDEM_PIZZA_DIR' "no" @@ -52,5 +54,9 @@ if [ $checkGPP == "true" ] echo "mpic++:" which mpic++ mpic++ --version + + echo "mpirun:" + which mpirun + mpirun --version fi diff --git a/src/lagrangian/cfdemParticle/etc/cshrc b/src/lagrangian/cfdemParticle/etc/cshrc index 6af88645..e522353e 100755 --- a/src/lagrangian/cfdemParticle/etc/cshrc +++ b/src/lagrangian/cfdemParticle/etc/cshrc @@ -43,6 +43,9 @@ setenv CFDEM_LIGGGHTS_LIB_NAME lmp_$CFDEM_LIGGGHTS_MAKEFILE_NAME #- CFDEM lib name setenv CFDEM_LIB_NAME lagrangianCFDEM-$CFDEM_VERSION-$WM_PROJECT_VERSION +#- LMP M2M lib path +setenv CFDEM_M2MLIB_PATH $CFDEM_SRC_DIR/subModels/dataExchangeModel/twoWayM2M/library + #- path to test harness setenv CFDEM_TEST_HARNESS_PATH $CFDEM_PROJECT_USER_DIR/log/logFilesCFDEM-$CFDEM_VERSION-$WM_PROJECT_VERSION @@ -98,6 +101,9 @@ alias cfdemCompLIG 'bash $CFDEM_SRC_DIR/etc/compileLIGGGHTS.sh' #- shortcut to compile CFDEMcoupling alias cfdemCompCFDEM 'bash $CFDEM_SRC_DIR/etc/compileCFDEMcoupling.sh' +#- shortcut to compile couple library +alias cfdemCompM2M 'bash $CFDEM_SRC_DIR/etc/compileM2Mlib.sh' + #- shortcut to test basic tutorials alias cfdemTestTUT 'bash $CFDEM_SRC_DIR/etc/testTutorials.sh' diff --git a/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/dataExchangeModel/dataExchangeModel.C b/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/dataExchangeModel/dataExchangeModel.C index f8f2f1c4..62f44e4f 100644 --- a/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/dataExchangeModel/dataExchangeModel.C +++ b/src/lagrangian/cfdemParticle/subModels/dataExchangeModel/dataExchangeModel/dataExchangeModel.C @@ -126,6 +126,38 @@ void Foam::dataExchangeModel::allocateArray } //==== +//==== +// int * +void Foam::dataExchangeModel::allocateArray +( + int*& array, + int initVal, + int length +) const +{ + // allocate and init double array + array = new int[length]; + for (int i=0; i firstCouplingStep_)) - strCommand_=createCommand(command_,"pre","no"); + strCommand_=createCommand(command_,"pre","no","post","no"); return runThisCommand(couplingStep); } diff --git a/src/lagrangian/cfdemParticle/subModels/liggghtsCommandModel/runLiggghts/runLiggghts.H b/src/lagrangian/cfdemParticle/subModels/liggghtsCommandModel/runLiggghts/runLiggghts.H index 28ac2c9c..81e2537d 100644 --- a/src/lagrangian/cfdemParticle/subModels/liggghtsCommandModel/runLiggghts/runLiggghts.H +++ b/src/lagrangian/cfdemParticle/subModels/liggghtsCommandModel/runLiggghts/runLiggghts.H @@ -88,7 +88,7 @@ public: const char* command(); - string createCommand(word="",word="",word=""); + string createCommand(word="",word="",word="",word="",word=""); bool runCommand(int); diff --git a/tutorials/cfdemSolverPiso/ErgunTestMPI/CFD/constant/couplingProperties b/tutorials/cfdemSolverPiso/ErgunTestMPI/CFD/constant/couplingProperties index e3c815b4..5587f0da 100644 --- a/tutorials/cfdemSolverPiso/ErgunTestMPI/CFD/constant/couplingProperties +++ b/tutorials/cfdemSolverPiso/ErgunTestMPI/CFD/constant/couplingProperties @@ -32,7 +32,7 @@ couplingInterval 100; voidFractionModel divided; -locateModel engine; +locateModel engine;// meshMotionModel noMeshMotion; @@ -49,8 +49,8 @@ clockModel standardClock;//off; forceModels ( //GidaspowDrag - //DiFeliceDrag - KochHillDrag + DiFeliceDrag + //KochHillDrag gradPForce viscForce //Archimedes @@ -169,6 +169,11 @@ dividedProps } twoWayMPIProps +{ + //maxNumberOfParticles 10100; + liggghtsPath "../DEM/in.liggghts_resume"; +} +twoWayM2MProps { maxNumberOfParticles 10100; liggghtsPath "../DEM/in.liggghts_resume"; diff --git a/tutorials/cfdemSolverPiso/ErgunTestMPI/CFD/constant/liggghtsCommands b/tutorials/cfdemSolverPiso/ErgunTestMPI/CFD/constant/liggghtsCommands index ee883115..6c14add5 100644 --- a/tutorials/cfdemSolverPiso/ErgunTestMPI/CFD/constant/liggghtsCommands +++ b/tutorials/cfdemSolverPiso/ErgunTestMPI/CFD/constant/liggghtsCommands @@ -28,3 +28,8 @@ liggghtsCommandModels runLiggghts ); // ************************************************************************* // + +runLiggghtsProps +{ + preNo false; +} diff --git a/tutorials/cfdemSolverPiso/ErgunTestMPI/CFD/octave/totalPressureDrop.m b/tutorials/cfdemSolverPiso/ErgunTestMPI/CFD/octave/totalPressureDrop.m index e3db0a79..eb2cee05 100644 --- a/tutorials/cfdemSolverPiso/ErgunTestMPI/CFD/octave/totalPressureDrop.m +++ b/tutorials/cfdemSolverPiso/ErgunTestMPI/CFD/octave/totalPressureDrop.m @@ -55,9 +55,20 @@ fprintf('so the result does not depend on density\n') %================================== rhoP = 2000 % particle density in kg/m3 g = 9.81 % gravity m/s2 -Umf = dp^2*(rhoP-rhoG)*g/(150*muG)*(epsilon^3*phip^2)/(1-epsilon) -ReMF = Umf*dp*rhoG/muG % must be <20 !!! -%Umf = sqrt(phip*dp^2/1.75*(rhoP-rhoG)/rhoG*g*epsilon^3) % Re>1000 + +Umf = dp^2*(rhoP-rhoG)*g/(150*muG)*(epsilon^3*phip^2)/(1-epsilon); +ReMF = Umf*dp*rhoG/muG; +if(ReMF<20) + fprintf('applying eqn1 for Umf.\n') +elseif(ReMF>20 && ReMF<1000) + fprintf('applying eqn1 for Umf.\n') +elseif (ReMF>=1000) + fprintf('applying eqn2 for Umf.\n') + Umf = sqrt(dp*(rhoP-rhoG)*g/(1.75*rhoG)*epsilon^3*phip); + ReMF = Umf*dp*rhoG/muG; +end +Umf +ReMF dpUmf= L * ( 150*((1-epsilon)^2/epsilon^3)*((muG.*Umf)/(phip*dp)^2) diff --git a/tutorials/cfdemSolverPiso/ErgunTestMPI/CFD/system/decomposeParDict b/tutorials/cfdemSolverPiso/ErgunTestMPI/CFD/system/decomposeParDict index 38d4bd34..4de14078 100644 --- a/tutorials/cfdemSolverPiso/ErgunTestMPI/CFD/system/decomposeParDict +++ b/tutorials/cfdemSolverPiso/ErgunTestMPI/CFD/system/decomposeParDict @@ -17,7 +17,7 @@ FoamFile // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -numberOfSubdomains 8; +numberOfSubdomains 4; //- Keep owner and neighbour on same processor for faces in zones: // preserveFaceZones (heater solid1 solid3); @@ -30,7 +30,7 @@ numberOfSubdomains 8; simpleCoeffs { - n (2 2 2); + n (2 2 1); delta 0.001; } diff --git a/tutorials/cfdemSolverPiso/ErgunTestMPI/DEM/in.liggghts_resume b/tutorials/cfdemSolverPiso/ErgunTestMPI/DEM/in.liggghts_resume index 4f0b0c53..d177f4a4 100644 --- a/tutorials/cfdemSolverPiso/ErgunTestMPI/DEM/in.liggghts_resume +++ b/tutorials/cfdemSolverPiso/ErgunTestMPI/DEM/in.liggghts_resume @@ -8,7 +8,7 @@ boundary m m m newton off units si -processors 2 2 2 +processors 2 2 1 #read the restart file read_restart ../DEM/liggghts.restart diff --git a/tutorials/cfdemSolverPiso/ErgunTestMPI/parCFDDEMrun.sh b/tutorials/cfdemSolverPiso/ErgunTestMPI/parCFDDEMrun.sh index fd0426d6..fa7d674c 100644 --- a/tutorials/cfdemSolverPiso/ErgunTestMPI/parCFDDEMrun.sh +++ b/tutorials/cfdemSolverPiso/ErgunTestMPI/parCFDDEMrun.sh @@ -19,7 +19,7 @@ logpath=$casePath headerText="run_parallel_cfdemSolverPiso_ErgunTestMPI_CFDDEM" logfileName="log_$headerText" solverName="cfdemSolverPiso" -nrProcs="8" +nrProcs="4" machineFileName="none" # yourMachinefileName | none debugMode="off" # on | off | prof testHarnessPath="$CFDEM_TEST_HARNESS_PATH" diff --git a/tutorials/cfdemSolverPiso/ErgunTestMPI_restart/DEM/post/dummy b/tutorials/cfdemSolverPiso/ErgunTestMPI_restart/DEM/post/dummy index cf58c55e..455632d4 100644 --- a/tutorials/cfdemSolverPiso/ErgunTestMPI_restart/DEM/post/dummy +++ b/tutorials/cfdemSolverPiso/ErgunTestMPI_restart/DEM/post/dummy @@ -25,3 +25,4 @@ dummyfile dummyfile dummyfile dummyfile +dummyfile diff --git a/tutorials/cfdemSolverPisoMS/ErgunTestMPI/CFD/octave/totalPressureDrop.m b/tutorials/cfdemSolverPisoMS/ErgunTestMPI/CFD/octave/totalPressureDrop.m index e03adcd6..6852ab2a 100644 --- a/tutorials/cfdemSolverPisoMS/ErgunTestMPI/CFD/octave/totalPressureDrop.m +++ b/tutorials/cfdemSolverPisoMS/ErgunTestMPI/CFD/octave/totalPressureDrop.m @@ -74,9 +74,20 @@ fprintf('so the result does not depend on pressure\n') %================================== %rhoP = 2000 % particle density in kg/m3 g = 9.81 % gravity m/s2 -Umf = dp^2*(rhoP-rhoG)*g/(150*muG)*(epsilon^3*phip^2)/(1-epsilon) -ReMF = Umf*dp*rhoG/muG % must be <20 !!! -%Umf = sqrt(phip*dp^2/1.75*(rhoP-rhoG)/rhoG*g*epsilon^3) % Re>1000 + +Umf = dp^2*(rhoP-rhoG)*g/(150*muG)*(epsilon^3*phip^2)/(1-epsilon); +ReMF = Umf*dp*rhoG/muG; +if(ReMF<20) + fprintf('applying eqn1 for Umf.\n') +elseif(ReMF>20 && ReMF<1000) + fprintf('applying eqn1 for Umf.\n') +elseif (ReMF>=1000) + fprintf('applying eqn2 for Umf.\n') + Umf = sqrt(dp*(rhoP-rhoG)*g/(1.75*rhoG)*epsilon^3*phip); + ReMF = Umf*dp*rhoG/muG; +end +Umf +ReMF dpUmf= L * ( 150*((1-epsilon)^2/epsilon^3)*((muG.*Umf)/(phip*dp)^2)