diff --git a/README b/README
deleted file mode 100755
index 2a7f869..0000000
--- a/README
+++ /dev/null
@@ -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 provides models and solvers to realize coupled CFD-DEM simulations
- using LIGGGHTS and OpenFOAM.
- Note: this code is not part of OpenFOAM (see DISCLAIMER).
-\*---------------------------------------------------------------------------*/
-
-
-CFDEM(R) coupling provides an open source parallel coupled CFD-DEM framework
-combining the strengths of LIGGGHTS(R) DEM code and the Open Source
-CFD package OpenFOAM(R)(*). The CFDEM(R)coupling toolbox allows to expand
-standard CFD solvers of OpenFOAM(R)(*) to include a coupling to the DEM
-code LIGGGHTS(R). 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 CFDEM(R)coupling
-- "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.
-
-CFDEM(R)coupling stands for Computational Fluid Dynamics (CFD) -
-Discrete Element Method (DEM) coupling.
-
-CFDEM(R)coupling is an open-source code, distributed freely under the terms of the
-GNU Public License (GPL).
-
-Core development of CFDEM(R)coupling is done by
-Christoph Goniva and Christoph Kloss, both at DCS Computing GmbH, 2012
-
-
-\*---------------------------------------------------------------------------*/
-(*) "OpenFOAM(R)"_of is a registered trade mark of OpenCFD Limited, a wholly owned subsidiary of the ESI Group.
-This offering is not approved or endorsed by OpenCFD Limited, the producer of the OpenFOAM software and owner of the OPENFOAM® and OpenCFD® trade marks.
-\*---------------------------------------------------------------------------*/
diff --git a/applications/.gitignore b/applications/.gitignore
index 4459954..e4a0e5b 100644
--- a/applications/.gitignore
+++ b/applications/.gitignore
@@ -1,7 +1,117 @@
+# C++.gitignore from github
+# Compiled Object files
+*.slo
+*.lo
*.o
-*.d
+*.obj
+
+# Precompiled Headers
+*.gch
+*.pch
+
+# Compiled Dynamic libraries
+*.so
+*.dylib
+*.dll
+
+# Fortran module files
+*.mod
+
+# Compiled Static libraries
+*.lai
+*.la
*.a
-*.dep
-log_*
-log.*
+*.lib
+
+# Executables
+*.exe
+*.out
+*.app
+
+# .gitignore from OpenFOAM-2.1.x
+# git-ls-files --others --exclude-from=.git/info/exclude
+# Lines that start with '#' are comments.
+
+# editor and misc backup files - anywhere
*~
+.*~
+*.bak
+*.bak[0-9][0-9]
+*.orig
+*.orig[0-9][0-9]
+\#*\#
+
+# file-browser settings - anywhere
+.directory
+
+# CVS recovered versions - anywhere
+.#*
+
+# objects and archives - anywhere
+*.[oa]
+*.la
+*.so
+*.jar
+
+# derived files
+lex.yy.c
+
+# Corefiles
+core
+
+# dependency files - anywhere
+*.dep
+
+# lnInclude (symlink) folders - anywhere
+lnInclude
+
+# build folders - anywhere
+linux*Clang*/
+linux*Gcc*/
+linux*Icc*/
+linuxming*/
+SiCortex*Gcc*/
+solaris*Gcc*/
+SunOS*Gcc*/
+platforms/
+
+# reinstate wmake/rules that might look like build folders
+!wmake/rules/*/
+
+# doxygen generated documentation
+doc/Doxygen/html
+doc/Doxygen/latex
+doc/Doxygen/man
+doc/Doxygen/DTAGS
+
+# generated files in the main directory (e.g. ReleaseNotes-?.?.html)
+# and in the doc directory
+*.html
+
+# untracked configuration files
+/etc/prefs.csh
+/etc/prefs.sh
+/etc/config/prefs.csh
+/etc/config/prefs.sh
+
+# source packages - anywhere
+*.tar.bz2
+*.tar.gz
+*.tar
+*.tgz
+*.gtgz
+
+# ignore the persistent .build tag in the main directory
+/.build
+
+# ignore .timeStamp in the main directory
+/.timeStamp
+
+# ignore .tags in the main directory
+/.tags
+
+# ignore eclipse project files in the main directory
+/.cproject
+/.project
+
+# end-of-file
diff --git a/applications/solvers/cfdemSolverIB/Make/options b/applications/solvers/cfdemSolverIB/Make/options
index a51d1da..4175d7d 100755
--- a/applications/solvers/cfdemSolverIB/Make/options
+++ b/applications/solvers/cfdemSolverIB/Make/options
@@ -1,7 +1,7 @@
-include $(CFDEM_ADD_LIBS_DIR)/additionalLibs
+include $(CFDEM_ADD_LIBS_DIR)/$(CFDEM_ADD_LIBS_NAME)
EXE_INC = \
- -I$(LIB_SRC)/turbulenceModels/incompressible/turbulenceModel \
+ $(CFDEM_ADD_INCOMPTURBMOD_PATHS) \
-I$(LIB_SRC)/transportModels \
-I$(LIB_SRC)/transportModels/incompressible/singlePhaseTransportModel \
-I$(LIB_SRC)/finiteVolume/lnInclude \
@@ -11,17 +11,14 @@ EXE_INC = \
-I$(LIB_SRC)/dynamicFvMesh/lnInclude \
-I$(LIB_SRC)/dynamicMesh/lnInclude \
-I$(LIB_SRC)/dynamicMesh/dynamicFvMesh/lnInclude \
- -I$(LIB_SRC)/dynamicMesh/dynamicMesh/lnInclude \
- -I$(LIB_SRC)/fvOptions/lnInclude
+ -I$(LIB_SRC)/dynamicMesh/dynamicMesh/lnInclude
EXE_LIBS = \
-L$(CFDEM_LIB_DIR)\
- -lincompressibleRASModels \
- -lincompressibleLESModels \
+ $(CFDEM_ADD_INCOMPTURBMOD_LIBS) \
-lincompressibleTransportModels \
-lfiniteVolume \
-ldynamicFvMesh \
-ldynamicMesh \
- -lfvOptions \
-l$(CFDEM_LIB_NAME) \
$(CFDEM_ADD_LIB_PATHS) \
$(CFDEM_ADD_LIBS)
diff --git a/applications/solvers/cfdemSolverIB/cfdemSolverIB.C b/applications/solvers/cfdemSolverIB/cfdemSolverIB.C
index 9c930e6..7be29bc 100755
--- a/applications/solvers/cfdemSolverIB/cfdemSolverIB.C
+++ b/applications/solvers/cfdemSolverIB/cfdemSolverIB.C
@@ -39,7 +39,14 @@ Contributions
#include "fvCFD.H"
#include "singlePhaseTransportModel.H"
-#include "turbulenceModel.H"
+#include "OFversion.H"
+
+#if defined(version30)
+ #include "turbulentTransportModel.H"
+ #include "pisoControl.H"
+#else
+ #include "turbulenceModel.H"
+#endif
#include "cfdemCloudIB.H"
#include "implicitCouple.H"
@@ -48,7 +55,7 @@ Contributions
#include "regionModel.H"
#include "voidFractionModel.H"
-#include "dynamicFvMesh.H" //dyM
+#include "dynamicFvMesh.H"
#include "cellSet.H"
@@ -67,12 +74,17 @@ int main(int argc, char *argv[])
#include "createDynamicFvMesh.H"
+ #if defined(version30)
+ pisoControl piso(mesh);
+ #include "createTimeControls.H"
+ #endif
+
#include "createFields.H"
#include "initContinuityErrs.H"
#if defined(version22)
- #include "createFvOptions.H"
+ #include "createFvOptions.H"
#endif
// create cfdemCloud
@@ -91,12 +103,18 @@ int main(int argc, char *argv[])
interFace = mag(mesh.lookupObject("voidfractionNext"));
mesh.update(); //dyM
- #include "readPISOControls.H"
- #include "CourantNo.H"
+ #if defined(version30)
+ #include "readTimeControls.H"
+ #include "CourantNo.H"
+ #include "setDeltaT.H"
+ #else
+ #include "readPISOControls.H"
+ #include "CourantNo.H"
+ #endif
// do particle stuff
Info << "- evolve()" << endl;
- particleCloud.evolve();
+ particleCloud.evolve(voidfraction);
// Pressure-velocity PISO corrector
{
@@ -104,7 +122,7 @@ int main(int argc, char *argv[])
fvVectorMatrix UEqn
(
- fvm::ddt(voidfraction,U)
+ fvm::ddt(U) //fvm::ddt(voidfraction,U)
+ fvm::div(phi, U)
+ turbulence->divDevReff(U)
#if defined(version22)
@@ -119,13 +137,21 @@ int main(int argc, char *argv[])
fvOptions.constrain(UEqn);
#endif
- if (momentumPredictor)
+ #if defined(version30)
+ if (piso.momentumPredictor())
+ #else
+ if (momentumPredictor)
+ #endif
{
solve(UEqn == -fvc::grad(p));
}
// --- PISO loop
- for (int corr=0; corr());
- Info << "TotalForceExp: " << fTotal << endl;
- Info << "TotalForceImp: " << fImpTotal << endl;
+ //Force Checks
+ #include "forceCheckIm.H"
#include "solverDebugInfo.H"
particleCloud.clockM().stop("Coupling");
@@ -111,17 +131,26 @@ int main(int argc, char *argv[])
);
UEqn.relax();
- if (momentumPredictor && (modelType=="B" || modelType=="Bfull"))
- solve(UEqn == - fvc::grad(p) + Ksl/rho*Us);
- else if (momentumPredictor)
- solve(UEqn == - voidfraction*fvc::grad(p) + Ksl/rho*Us);
+
+ #if defined(version30)
+ if (piso.momentumPredictor())
+ #else
+ if (momentumPredictor)
+ #endif
+ {
+ if (modelType=="B" || modelType=="Bfull")
+ solve(UEqn == - fvc::grad(p) + Ksl/rho*Us);
+ else
+ solve(UEqn == - voidfraction*fvc::grad(p) + Ksl/rho*Us);
+ }
// --- PISO loop
-
- //for (int corr=0; corr
+ (
+ p.boundaryField(),
+ (
+ phi.boundaryField()
+ - (mesh.Sf().boundaryField() & U.boundaryField())
+ )/(mesh.magSf().boundaryField()*rUAf.boundaryField()*voidfractionf.boundaryField())
+ );
+ }else
+ {
+ setSnGrad
+ (
+ p.boundaryField(),
+ (
+ phi.boundaryField()
+ - (mesh.Sf().boundaryField() & U.boundaryField())
+ )/(mesh.magSf().boundaryField()*rUAf.boundaryField())
+ );
+ }
+ #endif
+
// Non-orthogonal pressure corrector loop
- for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
+ #if defined(version30)
+ while (piso.correctNonOrthogonal())
+ #else
+ for (int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
+ #endif
{
// Pressure corrector
fvScalarMatrix pEqn
@@ -154,24 +213,29 @@ int main(int argc, char *argv[])
);
pEqn.setReference(pRefCell, pRefValue);
- if
- (
- corr == nCorr-1
- && nonOrth == nNonOrthCorr
- )
- {
- pEqn.solve(mesh.solver("pFinal"));
- }
- else
- {
- pEqn.solve();
- }
+ #if defined(version30)
+ pEqn.solve(mesh.solver(p.select(piso.finalInnerIter())));
+ if (piso.finalNonOrthogonalIter())
+ {
+ phiGes -= pEqn.flux();
+ phi = phiGes;
+ }
+ #else
+ if( corr == nCorr-1 && nonOrth == nNonOrthCorr )
+ #if defined(versionExt32)
+ pEqn.solve(mesh.solutionDict().solver("pFinal"));
+ #else
+ pEqn.solve(mesh.solver("pFinal"));
+ #endif
+ else
+ pEqn.solve();
- if (nonOrth == nNonOrthCorr)
- {
- phiGes -= pEqn.flux();
- phi = phiGes;
- }
+ if (nonOrth == nNonOrthCorr)
+ {
+ phiGes -= pEqn.flux();
+ phi = phiGes;
+ }
+ #endif
} // end non-orthogonal corrector loop
diff --git a/applications/solvers/cfdemSolverPisoSTM/Make/files b/applications/solvers/cfdemSolverPisoSTM/Make/files
new file mode 100644
index 0000000..e74a983
--- /dev/null
+++ b/applications/solvers/cfdemSolverPisoSTM/Make/files
@@ -0,0 +1,3 @@
+cfdemSolverPisoSTM.C
+
+EXE = $(CFDEM_APP_DIR)/cfdemSolverPisoSTM
diff --git a/applications/solvers/cfdemSolverPisoSTM/Make/options b/applications/solvers/cfdemSolverPisoSTM/Make/options
new file mode 100644
index 0000000..0658fe0
--- /dev/null
+++ b/applications/solvers/cfdemSolverPisoSTM/Make/options
@@ -0,0 +1,22 @@
+include $(CFDEM_ADD_LIBS_DIR)/$(CFDEM_ADD_LIBS_NAME)
+
+EXE_INC = \
+ $(CFDEM_ADD_INCOMPTURBMOD_PATHS) \
+ -I$(LIB_SRC)/transportModels \
+ -I$(LIB_SRC)/transportModels/incompressible/singlePhaseTransportModel \
+ -I$(LIB_SRC)/finiteVolume/lnInclude \
+ -I$(LIB_SRC)/meshTools/lnInclude \
+ -I$(CFDEM_SRC_DIR)/lagrangian/cfdemParticle/lnInclude \
+ -I$(CFDEM_SRC_DIR)/lagrangian/cfdemParticle/cfdTools \
+ -I$(CFDEM_SRC_DIR)/eulerian/scalarTransportModelsCFDEM/lnInclude \
+
+EXE_LIBS = \
+ -L$(CFDEM_LIB_DIR)\
+ $(CFDEM_ADD_INCOMPTURBMOD_LIBS) \
+ -lincompressibleTransportModels \
+ -lfiniteVolume \
+ -lmeshTools \
+ -l$(CFDEM_LIB_NAME) \
+ -lscalarTransportModelsCFDEM \
+ $(CFDEM_ADD_LIB_PATHS) \
+ $(CFDEM_ADD_LIBS)
diff --git a/applications/solvers/cfdemSolverPisoSTM/cfdemSolverPisoSTM.C b/applications/solvers/cfdemSolverPisoSTM/cfdemSolverPisoSTM.C
new file mode 100644
index 0000000..3bcea87
--- /dev/null
+++ b/applications/solvers/cfdemSolverPisoSTM/cfdemSolverPisoSTM.C
@@ -0,0 +1,221 @@
+/*---------------------------------------------------------------------------*\
+ CFDEMcoupling - Open Source CFD-DEM coupling
+
+ CFDEMcoupling is part of the CFDEMproject
+ www.cfdem.com
+ Christoph Goniva, christoph.goniva@cfdem.com
+ Copyright (C) 1991-2009 OpenCFD Ltd.
+ Copyright (C) 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, see .
+
+Application
+ cfdemSolverPisoScalar
+
+Description
+ Transient solver for incompressible flow.
+ Turbulence modelling is generic, i.e. laminar, RAS or LES may be selected.
+ The code is an evolution of the solver pisoFoam in OpenFOAM(R) 1.6,
+ where additional functionality for CFD-DEM coupling is added.
+\*---------------------------------------------------------------------------*/
+
+#include "fvCFD.H"
+#include "singlePhaseTransportModel.H"
+#include "turbulenceModel.H"
+
+#include "cfdemCloud.H"
+#include "implicitCouple.H"
+#include "smoothingModel.H"
+#include "forceModel.H"
+
+#include "scalarTransportModel.H"
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+int main(int argc, char *argv[])
+{
+ #include "setRootCase.H"
+ #include "createTime.H"
+ #include "createMesh.H"
+ #include "createFields.H"
+ #include "initContinuityErrs.H"
+
+ // create cfdemCloud
+ #include "readGravitationalAcceleration.H"
+ cfdemCloud particleCloud(mesh);
+ #include "checkModelType.H"
+
+ // create a scalarTransportModel
+ autoPtr stm
+ (
+ scalarTransportModel::New(particleCloud.couplingProperties(),particleCloud)
+ );
+
+ // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+ Info<< "\nStarting time loop\n" << endl;
+ while (runTime.loop())
+ {
+ Info<< "Time = " << runTime.timeName() << nl << endl;
+
+ #include "readPISOControls.H"
+ #include "CourantNo.H"
+
+ // do particle stuff
+ bool hasEvolved = particleCloud.evolve(voidfraction,Us,U);
+
+ if(hasEvolved)
+ {
+ particleCloud.smoothingM().smoothen(particleCloud.forceM(0).impParticleForces());
+ }
+
+ Info << "update Ksl.internalField()" << endl;
+ Ksl = particleCloud.momCoupleM(0).impMomSource();
+ Ksl.correctBoundaryConditions();
+
+
+ #include "solverDebugInfo.H"
+
+ /*// get scalar source from DEM
+ particleCloud.forceM(1).manipulateScalarField(Tsource);
+ Tsource.correctBoundaryConditions();*/
+
+ stm().update();
+
+ /*// solve scalar transport equation
+ fvScalarMatrix TEqn
+ (
+ fvm::ddt(voidfraction,T) - fvm::Sp(fvc::ddt(voidfraction),T)
+ + fvm::div(phi, T) - fvm::Sp(fvc::div(phi),T)
+ - fvm::laplacian(DT*voidfraction, T)
+ ==
+ Tsource
+ );
+ TEqn.relax();
+ TEqn.solve();*/
+
+ if(particleCloud.solveFlow())
+ {
+ // Pressure-velocity PISO corrector
+ {
+ // Momentum predictor
+ fvVectorMatrix UEqn
+ (
+ 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)
+ ==
+ - fvm::Sp(Ksl/rho,U)
+ );
+
+ UEqn.relax();
+ if (momentumPredictor && (modelType=="B" || modelType=="Bfull"))
+ solve(UEqn == - fvc::grad(p) + Ksl/rho*Us);
+ else if (momentumPredictor)
+ solve(UEqn == - voidfraction*fvc::grad(p) + Ksl/rho*Us);
+
+ // --- PISO loop
+
+ //for (int corr=0; corrcorrect();
+ }// end solveFlow
+ else
+ {
+ Info << "skipping flow solution." << endl;
+ }
+
+ runTime.write();
+
+ Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
+ << " ClockTime = " << runTime.elapsedClockTime() << " s"
+ << nl << endl;
+ }
+
+ Info<< "End\n" << endl;
+
+ return 0;
+}
+
+
+// ************************************************************************* //
diff --git a/applications/solvers/cfdemSolverPisoSTM/createFields.H b/applications/solvers/cfdemSolverPisoSTM/createFields.H
new file mode 100644
index 0000000..b2b5654
--- /dev/null
+++ b/applications/solvers/cfdemSolverPisoSTM/createFields.H
@@ -0,0 +1,174 @@
+ Info<< "Reading field p\n" << endl;
+ volScalarField p
+ (
+ IOobject
+ (
+ "p",
+ runTime.timeName(),
+ mesh,
+ IOobject::MUST_READ,
+ IOobject::AUTO_WRITE
+ ),
+ mesh
+ );
+
+ Info<< "Reading physical velocity field U" << endl;
+ Info<< "Note: only if voidfraction at boundary is 1, U is superficial velocity!!!\n" << endl;
+ volVectorField U
+ (
+ IOobject
+ (
+ "U",
+ runTime.timeName(),
+ mesh,
+ IOobject::MUST_READ,
+ IOobject::AUTO_WRITE
+ ),
+ mesh
+ );
+
+//========================
+// drag law modelling
+//========================
+
+ Info<< "\nReading momentum exchange field Ksl\n" << endl;
+ volScalarField Ksl
+ (
+ IOobject
+ (
+ "Ksl",
+ runTime.timeName(),
+ mesh,
+ IOobject::MUST_READ,
+ IOobject::AUTO_WRITE
+ ),
+ mesh
+ //dimensionedScalar("0", dimensionSet(0, 0, -1, 0, 0), 1.0)
+ );
+
+ Info<< "\nReading voidfraction field voidfraction = (Vgas/Vparticle)\n" << endl;
+ volScalarField voidfraction
+ (
+ IOobject
+ (
+ "voidfraction",
+ runTime.timeName(),
+ mesh,
+ IOobject::MUST_READ,
+ IOobject::AUTO_WRITE
+ ),
+ mesh
+ );
+
+ Info<< "\nCreating density field rho\n" << endl;
+ volScalarField rho
+ (
+ IOobject
+ (
+ "rho",
+ runTime.timeName(),
+ mesh,
+ IOobject::READ_IF_PRESENT,
+ IOobject::AUTO_WRITE
+ ),
+ mesh,
+ dimensionedScalar("0", dimensionSet(1, -3, 0, 0, 0), 1.0)
+ );
+
+ Info<< "Reading particle velocity field Us\n" << endl;
+ volVectorField Us
+ (
+ IOobject
+ (
+ "Us",
+ runTime.timeName(),
+ mesh,
+ IOobject::MUST_READ,
+ IOobject::AUTO_WRITE
+ ),
+ mesh
+ );
+
+//========================
+// scalar field modelling
+//========================
+ /* Info<< "\nCreating dummy density field rho = 1\n" << endl;
+ volScalarField T
+ (
+ IOobject
+ (
+ "T",
+ runTime.timeName(),
+ mesh,
+ IOobject::MUST_READ,
+ IOobject::AUTO_WRITE
+ ),
+ mesh//,
+ //dimensionedScalar("0", dimensionSet(0, 0, -1, 1, 0), 273.15)
+ );
+
+ Info<< "\nCreating fluid-particle heat flux field\n" << endl;
+ volScalarField Tsource
+ (
+ IOobject
+ (
+ "Tsource",
+ runTime.timeName(),
+ mesh,
+ IOobject::MUST_READ,
+ IOobject::AUTO_WRITE
+ ),
+ mesh//,
+ //dimensionedScalar("0", dimensionSet(0, 0, -1, 1, 0), 0.0)
+ );
+
+ IOdictionary transportProperties
+ (
+ IOobject
+ (
+ "transportProperties",
+ runTime.constant(),
+ mesh,
+ IOobject::MUST_READ,
+ IOobject::NO_WRITE
+ )
+ );
+
+ dimensionedScalar DT
+ (
+ transportProperties.lookup("DT")
+ );*/
+
+//========================
+
+//# include "createPhi.H"
+#ifndef createPhi_H
+#define createPhi_H
+Info<< "Reading/calculating face flux field phi\n" << endl;
+surfaceScalarField phi
+ (
+ IOobject
+ (
+ "phi",
+ runTime.timeName(),
+ mesh,
+ IOobject::READ_IF_PRESENT,
+ IOobject::AUTO_WRITE
+ ),
+ linearInterpolate(U*voidfraction) & mesh.Sf()
+ );
+#endif
+
+
+
+ label pRefCell = 0;
+ scalar pRefValue = 0.0;
+ setRefCell(p, mesh.solutionDict().subDict("PISO"), pRefCell, pRefValue);
+
+
+ singlePhaseTransportModel laminarTransport(U, phi);
+
+ autoPtr turbulence
+ (
+ incompressible::turbulenceModel::New(U, phi, laminarTransport)
+ );
diff --git a/applications/solvers/cfdemSolverPisoScalar/Make/options b/applications/solvers/cfdemSolverPisoScalar/Make/options
index 68aecd1..6d83afe 100644
--- a/applications/solvers/cfdemSolverPisoScalar/Make/options
+++ b/applications/solvers/cfdemSolverPisoScalar/Make/options
@@ -1,19 +1,20 @@
-include $(CFDEM_ADD_LIBS_DIR)/additionalLibs
+include $(CFDEM_ADD_LIBS_DIR)/$(CFDEM_ADD_LIBS_NAME)
EXE_INC = \
- -I$(LIB_SRC)/turbulenceModels/incompressible/turbulenceModel \
+ $(CFDEM_ADD_INCOMPTURBMOD_PATHS) \
-I$(LIB_SRC)/transportModels \
-I$(LIB_SRC)/transportModels/incompressible/singlePhaseTransportModel \
-I$(LIB_SRC)/finiteVolume/lnInclude \
+ -I$(LIB_SRC)/meshTools/lnInclude \
-I$(CFDEM_SRC_DIR)/lagrangian/cfdemParticle/lnInclude \
-I$(CFDEM_SRC_DIR)/lagrangian/cfdemParticle/cfdTools \
EXE_LIBS = \
-L$(CFDEM_LIB_DIR)\
- -lincompressibleRASModels \
- -lincompressibleLESModels \
+ $(CFDEM_ADD_INCOMPTURBMOD_LIBS) \
-lincompressibleTransportModels \
-lfiniteVolume \
+ -lmeshTools \
-l$(CFDEM_LIB_NAME) \
$(CFDEM_ADD_LIB_PATHS) \
$(CFDEM_ADD_LIBS)
diff --git a/applications/solvers/cfdemSolverPisoScalar/cfdemSolverPisoScalar.C b/applications/solvers/cfdemSolverPisoScalar/cfdemSolverPisoScalar.C
index 2a3e49a..f66e0d3 100644
--- a/applications/solvers/cfdemSolverPisoScalar/cfdemSolverPisoScalar.C
+++ b/applications/solvers/cfdemSolverPisoScalar/cfdemSolverPisoScalar.C
@@ -36,7 +36,14 @@ Description
#include "fvCFD.H"
#include "singlePhaseTransportModel.H"
-#include "turbulenceModel.H"
+
+#include "OFversion.H"
+#if defined(version30)
+ #include "turbulentTransportModel.H"
+ #include "pisoControl.H"
+#else
+ #include "turbulenceModel.H"
+#endif
#include "cfdemCloud.H"
#include "implicitCouple.H"
@@ -50,6 +57,10 @@ int main(int argc, char *argv[])
#include "setRootCase.H"
#include "createTime.H"
#include "createMesh.H"
+ #if defined(version30)
+ pisoControl piso(mesh);
+ #include "createTimeControls.H"
+ #endif
#include "createFields.H"
#include "initContinuityErrs.H"
@@ -64,8 +75,14 @@ int main(int argc, char *argv[])
{
Info<< "Time = " << runTime.timeName() << nl << endl;
- #include "readPISOControls.H"
- #include "CourantNo.H"
+ #if defined(version30)
+ #include "readTimeControls.H"
+ #include "CourantNo.H"
+ #include "setDeltaT.H"
+ #else
+ #include "readPISOControls.H"
+ #include "CourantNo.H"
+ #endif
// do particle stuff
bool hasEvolved = particleCloud.evolve(voidfraction,Us,U);
@@ -114,17 +131,27 @@ int main(int argc, char *argv[])
);
UEqn.relax();
- if (momentumPredictor && (modelType=="B" || modelType=="Bfull"))
- solve(UEqn == - fvc::grad(p) + Ksl/rho*Us);
- else if (momentumPredictor)
- solve(UEqn == - voidfraction*fvc::grad(p) + Ksl/rho*Us);
+ #if defined(version30)
+ if (piso.momentumPredictor())
+ #else
+ if (momentumPredictor)
+ #endif
+ {
+ if(modelType=="B" || modelType=="Bfull")
+ solve(UEqn == - fvc::grad(p) + Ksl/rho*Us);
+ else
+ solve(UEqn == - voidfraction*fvc::grad(p) + Ksl/rho*Us);
+ }
// --- PISO loop
//for (int corr=0; corrt
-(*) This offering is not approved or endorsed by OpenCFD Limited, the producer of the OpenFOAM software and owner of the OPENFOAM® and OpenCFD® trade marks. OPENFOAM® is a registered trade mark of OpenCFD Limited, a wholly owned subsidiary of the ESI Group.
+
(*) This offering is not approved or endorsed by OpenCFD Limited, the producer of the OpenFOAM software and owner of the OPENFOAM® and OpenCFD® trade marks.
@@ -218,24 +218,27 @@ listing below of styles within certain commands.
| forceModel_KochHillDrag | forceModel_LaEuScalarTemp |
| forceModel_MeiLift | forceModel_SchillerNaumannDrag |
| forceModel_ShirgaonkarIB | forceModel_fieldStore |
-| forceModel_gradPForce | forceModel_noDrag |
-| forceModel_particleCellVolume | forceModel_virtualMassForce |
-| forceModel_viscForce | forceSubModel |
-| forceSubModel_ImEx | forceSubModel_ImExCorr |
-| liggghtsCommandModel | liggghtsCommandModel_execute |
-| liggghtsCommandModel_readLiggghtsData | liggghtsCommandModel_runLiggghts |
-| liggghtsCommandModel_writeLiggghts | locateModel |
-| locateModel_engineSearch | locateModel_engineSearchIB |
-| locateModel_standardSearch | meshMotionModel |
-| meshMotionModel_noMeshMotion | momCoupleModel |
-| momCoupleModel_explicitCouple | momCoupleModel_implicitCouple |
-| momCoupleModel_noCouple | probeModel |
-| probeModel_noProbe | regionModel |
+| forceModel_fieldTimeAverage | forceModel_gradPForce |
+| forceModel_noDrag | forceModel_particleCellVolume |
+| forceModel_particleVolume | forceModel_scalarGeneralExchange |
+| forceModel_virtualMassForce | forceModel_viscForce |
+| forceModel_volWeightedAverage | forceSubModel |
+| forceSubModel_ImEx | liggghtsCommandModel |
+| liggghtsCommandModel_execute | liggghtsCommandModel_readLiggghtsData |
+| liggghtsCommandModel_runLiggghts | liggghtsCommandModel_writeLiggghts |
+| locateModel | locateModel_engineSearch |
+| locateModel_engineSearchIB | locateModel_standardSearch |
+| meshMotionModel | meshMotionModel_noMeshMotion |
+| momCoupleModel | momCoupleModel_explicitCouple |
+| momCoupleModel_implicitCouple | momCoupleModel_noCouple |
+| probeModel | probeModel_noProbe |
+| probeModel_particleProbe | regionModel |
| regionModel_allRegion | smoothingModel |
| smoothingModel_constDiffSmoothing | smoothingModel_noSmoothing |
| voidfractionModel | voidfractionModel_GaussVoidFraction |
| voidfractionModel_IBVoidFraction | voidfractionModel_bigParticleVoidFraction |
-| voidfractionModel_centreVoidFraction | voidfractionModel_dividedVoidFraction
+ |
| voidfractionModel_centreVoidFraction | voidfractionModel_dividedVoidFraction |
+| voidfractionModel_noVoidFractionVoidFraction | voidfractionModel_trilinearVoidFraction
|