diff --git a/README b/README deleted file mode 100644 index a677e0a8..00000000 --- a/README +++ /dev/null @@ -1,82 +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 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/doc/CFDEMcoupling_Manual.html b/doc/CFDEMcoupling_Manual.html index 00b2ab32..175b3086 100644 --- a/doc/CFDEMcoupling_Manual.html +++ b/doc/CFDEMcoupling_Manual.html @@ -207,14 +207,14 @@ listing below of styles within certain commands. liggghtsCommandModel_readLiggghtsDataliggghtsCommandModel_runLiggghts liggghtsCommandModel_writeLiggghtslocateModel locateModel_engineSearchlocateModel_engineSearchIB -locateModel_standardSearchmeshMotionModel -meshMotionModel_noMeshMotionmomCoupleModel -momCoupleModel_explicitCouplemomCoupleModel_implicitCouple -momCoupleModel_noCoupleregionModel -regionModel_allRegionvoidfractionModel -voidfractionModel_GaussVoidFractionvoidfractionModel_IBVoidFraction -voidfractionModel_bigParticleVoidFractionvoidfractionModel_centreVoidFraction -voidfractionModel_dividedVoidFraction +locateModel_standardSearchlocateModel_turboEngineSearch +meshMotionModelmeshMotionModel_noMeshMotion +momCoupleModelmomCoupleModel_explicitCouple +momCoupleModel_implicitCouplemomCoupleModel_noCouple +regionModelregionModel_allRegion +voidfractionModelvoidfractionModel_GaussVoidFraction +voidfractionModel_IBVoidFractionvoidfractionModel_bigParticleVoidFraction +voidfractionModel_centreVoidFractionvoidfractionModel_dividedVoidFraction diff --git a/doc/CFDEMcoupling_Manual.pdf b/doc/CFDEMcoupling_Manual.pdf index 88bf3701..718fba14 100644 Binary files a/doc/CFDEMcoupling_Manual.pdf and b/doc/CFDEMcoupling_Manual.pdf differ diff --git a/doc/CFDEMcoupling_Manual.txt b/doc/CFDEMcoupling_Manual.txt index acf8cc02..a0e342ac 100644 --- a/doc/CFDEMcoupling_Manual.txt +++ b/doc/CFDEMcoupling_Manual.txt @@ -434,6 +434,7 @@ listing below of styles within certain commands. "locateModel_engineSearch"_locateModel_engineSearch.html, "locateModel_engineSearchIB"_locateModel_engineSearchIB.html, "locateModel_standardSearch"_locateModel_standardSearch.html, +"locateModel_turboEngineSearch"_locateModel_turboEngineSearch.html, "meshMotionModel"_meshMotionModel.html, "meshMotionModel_noMeshMotion"_meshMotionModel_noMeshMotion.html, "momCoupleModel"_momCoupleModel.html, diff --git a/doc/githubAccess_public.pdf b/doc/githubAccess_public.pdf index 4e9c8d22..01bba353 100644 Binary files a/doc/githubAccess_public.pdf and b/doc/githubAccess_public.pdf differ diff --git a/doc/locateModel_turboEngineSearch.html b/doc/locateModel_turboEngineSearch.html new file mode 100644 index 00000000..a6367e6a --- /dev/null +++ b/doc/locateModel_turboEngineSearch.html @@ -0,0 +1,56 @@ + +
CFDEMproject WWW Site - CFDEM Commands +
+ + + + +
+ +

locateModel_turboEngineSearch command +

+

Syntax: +

+

Defined in couplingProperties dictionary. +

+
locateModel turboEngine;
+turboEngineProps
+{
+    faceDecomp switch1;
+    treeSearch switch2;
+} 
+
+ +

Examples: +

+
locateModel turboEngine;
+turboEngineProps
+{
+    faceDecomp false;
+    treeSearch false;
+} 
+
+

Description: +

+

The locateModel "turboEngine" locates the CFD cell and cellID corresponding to a given position. The algorithm is improved compared to engine search to show better parallel performance. +

+

The turboEngineSearch locate Model can be used with different settings to use different algorithms: +

+ +

Restrictions: none. +

+

Related commands: +

+

locateModel +

+ diff --git a/doc/locateModel_turboEngineSearch.txt b/doc/locateModel_turboEngineSearch.txt new file mode 100644 index 00000000..72425788 --- /dev/null +++ b/doc/locateModel_turboEngineSearch.txt @@ -0,0 +1,49 @@ +"CFDEMproject WWW Site"_lws - "CFDEM Commands"_lc :c + +:link(lws,http://www.cfdem.com) +:link(lc,CFDEMcoupling_Manual.html#comm) + +:line + +locateModel_turboEngineSearch command :h3 + +[Syntax:] + +Defined in couplingProperties dictionary. + +locateModel turboEngine; +turboEngineProps +\{ + faceDecomp switch1; + treeSearch switch2; +\} :pre + +{switch1} = time to start the averaging (default 0) :ulb,l +{switch2} = names of the finite volume scalar fields to be temporally averaged :l +:ule + +[Examples:] + +locateModel turboEngine; +turboEngineProps +\{ + faceDecomp false; + treeSearch false; +\} :pre + +[Description:] + +The locateModel "turboEngine" locates the CFD cell and cellID corresponding to a given position. The algorithm is improved compared to engine search to show better parallel performance. + +The turboEngineSearch locate Model can be used with different settings to use different algorithms: + +faceDecomp false; treeSearch false; will execute some geometric (linear) search using the last known cellID (recommended) :ulb,l +faceDecomp false; treeSearch true; will use a recursive tree structure to find the cell. :l +:ule + +[Restrictions:] none. + +[Related commands:] + +"locateModel"_locateModel.html + diff --git a/src/lagrangian/cfdemParticle/Make/files b/src/lagrangian/cfdemParticle/Make/files index d97f4781..276ddec6 100644 --- a/src/lagrangian/cfdemParticle/Make/files +++ b/src/lagrangian/cfdemParticle/Make/files @@ -1,5 +1,6 @@ cfdemCloud = cfdemCloud forceModels = subModels/forceModel +forceModelsMS = subModels/forceModelMS IOModels = subModels/IOModel voidFractionModels = subModels/voidFractionModel locateModels = subModels/locateModel @@ -13,23 +14,37 @@ liggghtsCommandModels = subModels/liggghtsCommandModel $(cfdemCloud)/cfdemCloud.C derived/cfdemCloudIB/cfdemCloudIB.C +derived/cfdemCloudMS/cfdemCloudMS.C $(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)/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 + +$(forceModelsMS)/forceModelMS/forceModelMS.C +$(forceModelsMS)/forceModelMS/newForceModelMS.C +$(forceModelsMS)/DiFeliceDragMS/DiFeliceDragMS.C $(IOModels)/IOModel/IOModel.C $(IOModels)/IOModel/newIOModel.C @@ -40,6 +55,7 @@ $(voidFractionModels)/voidFractionModel/voidFractionModel.C $(voidFractionModels)/voidFractionModel/newVoidFractionModel.C $(voidFractionModels)/centreVoidFraction/centreVoidFraction.C $(voidFractionModels)/dividedVoidFraction/dividedVoidFraction.C +$(voidFractionModels)/dividedVoidFractionMS/dividedVoidFractionMS.C $(voidFractionModels)/bigParticleVoidFraction/bigParticleVoidFraction.C $(voidFractionModels)/GaussVoidFraction/GaussVoidFraction.C $(voidFractionModels)/IBVoidFraction/IBVoidFraction.C @@ -48,12 +64,14 @@ $(locateModels)/locateModel/locateModel.C $(locateModels)/locateModel/newLocateModel.C $(locateModels)/standardSearch/standardSearch.C $(locateModels)/engineSearch/engineSearch.C +$(locateModels)/turboEngineSearch/turboEngineSearch.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 @@ -64,6 +82,7 @@ $(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 diff --git a/src/lagrangian/cfdemParticle/subModels/locateModel/turboEngineSearch/turboEngineSearch.C b/src/lagrangian/cfdemParticle/subModels/locateModel/turboEngineSearch/turboEngineSearch.C new file mode 100644 index 00000000..5b336561 --- /dev/null +++ b/src/lagrangian/cfdemParticle/subModels/locateModel/turboEngineSearch/turboEngineSearch.C @@ -0,0 +1,136 @@ +/*---------------------------------------------------------------------------*\ + 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(R). Note: this code is not part of OpenFOAM(R) (see DISCLAIMER). +\*---------------------------------------------------------------------------*/ + +#include "error.H" + +#include "turboEngineSearch.H" +#include "addToRunTimeSelectionTable.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // + +defineTypeNameAndDebug(turboEngineSearch, 0); + +addToRunTimeSelectionTable +( + locateModel, + turboEngineSearch, + dictionary +); + + +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +// Construct from components +turboEngineSearch::turboEngineSearch +( + const dictionary& dict, + cfdemCloud& sm +) +: + locateModel(dict,sm), + propsDict_(dict.subDict(typeName + "Props")), + treeSearch_(propsDict_.lookup("treeSearch")), + #ifdef version16ext + searchEngine_(particleCloud_.mesh(),false), //(particleCloud_.mesh(),faceDecomp_) + #elif defined(version21) + searchEngine_(particleCloud_.mesh(),polyMesh::FACEPLANES), // FACEPLANES or FACECENTRETETS; FACEDIAGTETS not stable + #endif + bb_(particleCloud_.mesh().points(),false) +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +turboEngineSearch::~turboEngineSearch() +{} + + +// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // + +label turboEngineSearch::findCell +( + double** const& mask, + double**& positions, + double**& cellIDs, + int size +) const +{ + bool first=true; + vector position; + for(int index = 0;index < size; ++index) + { + cellIDs[index][0]=-1; + + if(mask[index][0] && particleCloud_.radius(index) > SMALL) + { + // create pos vector + for(int i=0;i<3;i++) position[i] = positions[index][i]; + + // find cell + if(first) + { + cellIDs[index][0] =searchEngine_.findCell(position,cellIDs[index][0],treeSearch_); + first=false; + } + else + { + if(bb_.contains(position)) + cellIDs[index][0] =searchEngine_.findCell(position,cellIDs[index][0],treeSearch_); + else + cellIDs[index][0] =-1; + } + } + } + + return 1; +} + +label turboEngineSearch::findSingleCell +( + vector& position, + label& oldCellID +) const +{ + // find cell + return searchEngine_.findCell(position,oldCellID,treeSearch_); +} + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// ************************************************************************* // diff --git a/src/lagrangian/cfdemParticle/subModels/locateModel/turboEngineSearch/turboEngineSearch.H b/src/lagrangian/cfdemParticle/subModels/locateModel/turboEngineSearch/turboEngineSearch.H new file mode 100644 index 00000000..570a1605 --- /dev/null +++ b/src/lagrangian/cfdemParticle/subModels/locateModel/turboEngineSearch/turboEngineSearch.H @@ -0,0 +1,117 @@ +/*---------------------------------------------------------------------------*\ + 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(R). Note: this code is not part of OpenFOAM(R) (see DISCLAIMER). + +Class + turboEngineSearch + +SourceFiles + turboEngineSearch.C + +\*---------------------------------------------------------------------------*/ + +#ifndef turboEngineSearch_H +#define turboEngineSearch_H + +#include "locateModel.H" + +#include "meshSearch.H" + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +namespace Foam +{ + +/*---------------------------------------------------------------------------*\ + Class noDrag Declaration +\*---------------------------------------------------------------------------*/ + +class turboEngineSearch +: + public locateModel +{ + +private: + + dictionary propsDict_; + + Switch faceDecomp_; + + Switch treeSearch_; + + meshSearch searchEngine_; + + boundBox bb_; + +public: + + //- Runtime type information + TypeName("turboEngine"); + + + // Constructors + + //- Construct from components + turboEngineSearch + ( + const dictionary& dict, + cfdemCloud& sm + ); + + // Destructor + + ~turboEngineSearch(); + + + // Member Functions + label findCell + ( + double** const& mask, + double**& positions, + double**& cellIDs, + int size + ) const; + + label findSingleCell + ( + vector& position, + label& oldCellID + ) const; +}; + + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +} // End namespace Foam + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +#endif + +// ************************************************************************* //