18 Commits
3.4.0 ... 3.8.0

Author SHA1 Message Date
b4bc2d67dc update make files, solver-list etc. 2017-11-30 15:39:18 +01:00
5cb9190126 release on 2017-11-30_15-39-15 2017-11-30 15:39:15 +01:00
d03549ba88 typo in comment when using Bfull in checkModelType.H 2017-07-12 15:08:50 +02:00
3ece629585 update make files, solver-list etc. 2017-07-11 17:00:10 +02:00
18319a8bf0 release on 2017-07-11_17-00-06 2017-07-11 17:00:06 +02:00
DCS
641f6c694f new version 3.6.1 2017-02-20 14:37:12 +01:00
DCS
c9953c7afe patch and updates for cfdemPostProc src and tutorial 2017-02-20 14:11:55 +01:00
fbf9d1da77 update make files, solver-list etc. 2017-01-18 09:16:56 +01:00
227331e2d5 release on 2017-01-18_09-16-52 2017-01-18 09:16:52 +01:00
559eff1823 update make files, solver-list etc. 2017-01-17 23:32:08 +01:00
fa665204ef release on 2017-01-17_23-32-04 2017-01-17 23:32:05 +01:00
66eb71e53d update make files, solver-list etc. 2016-09-06 15:31:47 +02:00
dd85e9a32c release on 2016-09-06_15-30-51 2016-09-06 15:30:51 +02:00
6c17991656 update make files, solver-list etc. 2016-09-06 11:39:00 +02:00
e34a598fcc release on 2016-09-06_11-38-57 2016-09-06 11:38:57 +02:00
45a7c96dbb Update eulerian/scalarTransportModelsCFDEM/Make/files 2016-09-05 13:23:50 +02:00
5f9dcb30b5 update make files, solver-list etc. 2016-09-05 10:53:22 +02:00
b2e028fb4b release on 2016-09-05_10-53-18 2016-09-05 10:53:18 +02:00
723 changed files with 56692 additions and 7078 deletions

View File

@ -1,10 +1,12 @@
sinclude $(GENERAL_RULES)/mplib$(WM_MPLIB)
include $(CFDEM_ADD_LIBS_DIR)/$(CFDEM_ADD_LIBS_NAME)
PFLAGS+= -DCFDEMWMPROJECTVERSION="$(CFDEM_WM_PROJECT_VERSION)"
EXE_INC = \
$(PFLAGS) \
$(CFDEM_ADD_INCOMPTURBMOD_PATHS) \
$(PINC) \
$(CFDEM_ADD_INCOMPTURBMOD_PATHS) \
-I$(LIB_SRC)/transportModels \
-I$(LIB_SRC)/transportModels/incompressible/singlePhaseTransportModel \
-I$(LIB_SRC)/finiteVolume/lnInclude \
@ -16,6 +18,7 @@ EXE_INC = \
-I$(LIB_SRC)/dynamicMesh/dynamicFvMesh/lnInclude \
-I$(LIB_SRC)/dynamicMesh/dynamicMesh/lnInclude \
-I$(CFDEM_LIGGGHTS_SRC_DIR)
EXE_LIBS = \
-L$(CFDEM_LIB_DIR)\
$(CFDEM_ADD_INCOMPTURBMOD_LIBS) \

View File

@ -47,15 +47,13 @@ Contributions
#else
#include "turbulenceModel.H"
#endif
#include "superquadric_flag.h"
#include "cfdemCloudIB.H"
#if defined(SUPERQUADRIC_ACTIVE_FLAG)
#if defined(superquadrics_flag)
#include "cfdemCloudIBSuperquadric.H"
#endif
#include "implicitCouple.H"
#include "averagingModel.H"
#include "regionModel.H"
#include "voidFractionModel.H"
#include "dynamicFvMesh.H"
@ -92,7 +90,7 @@ int main(int argc, char *argv[])
// create cfdemCloud
#include "readGravitationalAcceleration.H"
#if defined(SUPERQUADRIC_ACTIVE_FLAG)
#if defined(superquadrics_flag)
cfdemCloudIBSuperquadric particleCloud(mesh);
#else
cfdemCloudIB particleCloud(mesh);
@ -108,7 +106,7 @@ int main(int argc, char *argv[])
//=== dyM ===================
interFace = mag(mesh.lookupObject<volScalarField>("voidfractionNext"));
mesh.update(); //dyM
particleCloud.setMeshHasUpdatedFlag(mesh.update()); //dyM
#if defined(version30)
#include "readTimeControls.H"
@ -121,9 +119,10 @@ int main(int argc, char *argv[])
// do particle stuff
Info << "- evolve()" << endl;
particleCloud.evolve(voidfraction);
particleCloud.evolve(voidfraction, interFace);
// Pressure-velocity PISO corrector
if(particleCloud.solveFlow())
{
// Momentum predictor
@ -216,9 +215,10 @@ int main(int argc, char *argv[])
U -= rUA*fvc::grad(p);
U.correctBoundaryConditions();
}
}
}
} //end solveFlow
laminarTransport.correct();
turbulence->correct();
Info << "particleCloud.calcVelocityCorrection() " << endl;

View File

@ -42,6 +42,21 @@
mesh
);
/*Info<< "\nCreating outside field\n" << endl;
volScalarField outside
(
IOobject
(
"outside",
runTime.timeName(),
mesh,
IOobject::NO_READ,
IOobject::AUTO_WRITE
),
mesh,
scalar(0)
);*/
//========================
// drag law modelling
//========================

View File

@ -1,14 +1,17 @@
sinclude $(GENERAL_RULES)/mplib$(WM_MPLIB)
include $(CFDEM_ADD_LIBS_DIR)/$(CFDEM_ADD_LIBS_NAME)
PFLAGS+= -DCFDEMWMPROJECTVERSION="$(CFDEM_WM_PROJECT_VERSION)"
EXE_INC = \
$(PFLAGS) \
$(CFDEM_ADD_INCOMPTURBMOD_PATHS) \
$(PINC) \
$(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$(LIB_SRC)/fvOptions/lnInclude \
-I$(CFDEM_SRC_DIR)/lagrangian/cfdemParticle/lnInclude \
-I$(CFDEM_SRC_DIR)/lagrangian/cfdemParticle/cfdTools \
-I$(CFDEM_LIGGGHTS_SRC_DIR)
@ -19,6 +22,7 @@ EXE_LIBS = \
-lincompressibleTransportModels \
-lfiniteVolume \
-lmeshTools \
-lfvOptions \
-l$(CFDEM_LIB_NAME) \
$(CFDEM_ADD_LIB_PATHS) \
$(CFDEM_ADD_LIBS)

View File

@ -44,14 +44,18 @@ Description
#else
#include "turbulenceModel.H"
#endif
#if defined(versionv1606plus) || defined(version40)
#include "fvOptions.H"
#else
#include "fvIOoptionList.H"
#endif
#include "fixedFluxPressureFvPatchScalarField.H"
#include "cfdemCloud.H"
#if defined(anisotropicRotation)
#include "cfdemCloudRotation.H"
#endif
#include "superquadric_flag.h"
#if defined(SUPERQUADRIC_ACTIVE_FLAG)
#if defined(superquadrics_flag)
#include "cfdemCloudRotationSuperquadric.H"
#endif
#include "implicitCouple.H"
@ -72,13 +76,15 @@ int main(int argc, char *argv[])
#include "createTimeControls.H"
#endif
#include "createFields.H"
#include "createFvOptions.H"
#include "initContinuityErrs.H"
// create cfdemCloud
#include "readGravitationalAcceleration.H"
#include "checkImCoupleM.H"
#if defined(anisotropicRotation)
cfdemCloudRotation particleCloud(mesh);
#elif defined(SUPERQUADRIC_ACTIVE_FLAG)
#elif defined(superquadrics_flag)
cfdemCloudRotationSuperquadric particleCloud(mesh);
#else
cfdemCloud particleCloud(mesh);
@ -89,8 +95,6 @@ int main(int argc, char *argv[])
Info<< "\nStarting time loop\n" << endl;
while (runTime.loop())
{
particleCloud.clockM().start(1,"Global");
Info<< "Time = " << runTime.timeName() << nl << endl;
#if defined(version30)
@ -103,18 +107,21 @@ int main(int argc, char *argv[])
#endif
// do particle stuff
particleCloud.clockM().start(1,"Global");
particleCloud.clockM().start(2,"Coupling");
bool hasEvolved = particleCloud.evolve(voidfraction,Us,U);
if(hasEvolved)
{
particleCloud.smoothingM().smoothen(particleCloud.forceM(0).impParticleForces());
particleCloud.smoothingM().smoothenAbsolutField(particleCloud.forceM(0).impParticleForces());
}
Info << "update Ksl.internalField()" << endl;
Ksl = particleCloud.momCoupleM(0).impMomSource();
Ksl = particleCloud.momCoupleM(particleCloud.registryM().getProperty("implicitCouple_index")).impMomSource();
Ksl.correctBoundaryConditions();
surfaceScalarField voidfractionf = fvc::interpolate(voidfraction);
phi = voidfractionf*phiByVoidfraction;
//Force Checks
#include "forceCheckIm.H"
@ -136,9 +143,11 @@ int main(int argc, char *argv[])
+ particleCloud.divVoidfractionTau(U, voidfraction)
==
- fvm::Sp(Ksl/rho,U)
+ fvOptions(U)
);
UEqn.relax();
fvOptions.constrain(UEqn);
#if defined(version30)
if (piso.momentumPredictor())
@ -150,6 +159,8 @@ int main(int argc, char *argv[])
solve(UEqn == - fvc::grad(p) + Ksl/rho*Us);
else
solve(UEqn == - voidfraction*fvc::grad(p) + Ksl/rho*Us);
fvOptions.correct(U);
}
// --- PISO loop
@ -168,18 +179,22 @@ int main(int argc, char *argv[])
U = rUA*UEqn.H();
#ifdef version23
phi = ( fvc::interpolate(U*voidfraction) & mesh.Sf() )
+ rUAfvoidfraction*fvc::ddtCorr(U, phi);
phi = ( fvc::interpolate(U) & mesh.Sf() )
+ rUAfvoidfraction*fvc::ddtCorr(U, phiByVoidfraction);
#else
phi = ( fvc::interpolate(U*voidfraction) & mesh.Sf() )
+ fvc::ddtPhiCorr(rUAvoidfraction, U, phi);
phi = ( fvc::interpolate(U) & mesh.Sf() )
+ fvc::ddtPhiCorr(rUAvoidfraction, U, phiByVoidfraction);
#endif
surfaceScalarField phiS(fvc::interpolate(Us*voidfraction) & mesh.Sf());
surfaceScalarField phiGes = phi + rUAf*(fvc::interpolate(Ksl/rho) * phiS);
surfaceScalarField phiS(fvc::interpolate(Us) & mesh.Sf());
phi += rUAf*(fvc::interpolate(Ksl/rho) * phiS);
if (modelType=="A")
rUAvoidfraction = volScalarField("(voidfraction2|A(U))",rUA*voidfraction*voidfraction);
// Update the fixedFluxPressure BCs to ensure flux consistency
#include "fixedFluxPressureHandling.H"
// Non-orthogonal pressure corrector loop
#if defined(version30)
while (piso.correctNonOrthogonal())
@ -190,7 +205,7 @@ int main(int argc, char *argv[])
// Pressure corrector
fvScalarMatrix pEqn
(
fvm::laplacian(rUAvoidfraction, p) == fvc::div(phiGes) + particleCloud.ddtVoidfraction()
fvm::laplacian(rUAvoidfraction, p) == fvc::div(voidfractionf*phi) + particleCloud.ddtVoidfraction()
);
pEqn.setReference(pRefCell, pRefValue);
@ -198,8 +213,7 @@ int main(int argc, char *argv[])
pEqn.solve(mesh.solver(p.select(piso.finalInnerIter())));
if (piso.finalNonOrthogonalIter())
{
phiGes -= pEqn.flux();
phi = phiGes;
phiByVoidfraction = phi - pEqn.flux()/voidfractionf;
}
#else
if( corr == nCorr-1 && nonOrth == nNonOrthCorr )
@ -213,13 +227,13 @@ int main(int argc, char *argv[])
if (nonOrth == nNonOrthCorr)
{
phiGes -= pEqn.flux();
phi = phiGes;
phiByVoidfraction = phi - pEqn.flux()/voidfractionf;
}
#endif
} // end non-orthogonal corrector loop
phi = voidfractionf*phiByVoidfraction;
#include "continuityErrorPhiPU.H"
if (modelType=="B" || modelType=="Bfull")
@ -228,10 +242,12 @@ int main(int argc, char *argv[])
U -= voidfraction*rUA*fvc::grad(p) - Ksl/rho*Us*rUA;
U.correctBoundaryConditions();
fvOptions.correct(U);
} // end piso loop
}
laminarTransport.correct();
turbulence->correct();
}// end solveFlow
else

View File

@ -60,7 +60,7 @@
mesh
);
Info<< "\nCreating dummy density field rho\n" << endl;
Info<< "\nCreating density field rho\n" << endl;
volScalarField rho
(
IOobject
@ -109,7 +109,19 @@ surfaceScalarField phi
);
#endif
Info<< "Generating interstitial face flux field phiByVoidfraction\n" << endl;
surfaceScalarField phiByVoidfraction
(
IOobject
(
"phiByVoidfraction",
runTime.timeName(),
mesh,
IOobject::NO_READ,
IOobject::NO_WRITE
),
linearInterpolate(U) & mesh.Sf()
);
label pRefCell = 0;
scalar pRefValue = 0.0;

View File

@ -1,10 +1,12 @@
sinclude $(GENERAL_RULES)/mplib$(WM_MPLIB)
include $(CFDEM_ADD_LIBS_DIR)/$(CFDEM_ADD_LIBS_NAME)
PFLAGS+= -DCFDEMWMPROJECTVERSION="$(CFDEM_WM_PROJECT_VERSION)"
EXE_INC = \
$(PFLAGS) \
$(CFDEM_ADD_INCOMPTURBMOD_PATHS) \
$(PINC) \
$(CFDEM_ADD_INCOMPTURBMOD_PATHS) \
-I$(LIB_SRC)/transportModels \
-I$(LIB_SRC)/transportModels/incompressible/singlePhaseTransportModel \
-I$(LIB_SRC)/finiteVolume/lnInclude \
@ -12,6 +14,7 @@ EXE_INC = \
-I$(CFDEM_SRC_DIR)/lagrangian/cfdemParticle/lnInclude \
-I$(CFDEM_SRC_DIR)/lagrangian/cfdemParticle/cfdTools \
-I$(CFDEM_SRC_DIR)/eulerian/scalarTransportModelsCFDEM/lnInclude \
-I$(CFDEM_LIGGGHTS_SRC_DIR)
EXE_LIBS = \
-L$(CFDEM_LIB_DIR)\

View File

@ -43,8 +43,17 @@ Description
#else
#include "turbulenceModel.H"
#endif
#if defined(versionv1606plus) || defined(version40)
#include "fvOptions.H"
#else
#include "fvIOoptionList.H"
#endif
#include "fixedFluxPressureFvPatchScalarField.H"
#include "cfdemCloud.H"
#ifdef MS
#include "cfdemCloudMS.H"
#else
#include "cfdemCloud.H"
#endif
#if defined(anisotropicRotation)
#include "cfdemCloudRotation.H"
#endif
@ -66,14 +75,20 @@ int main(int argc, char *argv[])
#include "createTimeControls.H"
#endif
#include "createFields.H"
#include "createFvOptions.H"
#include "initContinuityErrs.H"
// create cfdemCloud
#include "readGravitationalAcceleration.H"
#include "checkImCoupleM.H"
#if defined(anisotropicRotation)
cfdemCloudRotation particleCloud(mesh);
#else
cfdemCloud particleCloud(mesh);
#ifdef MS
cfdemCloudMS particleCloud(mesh);
#else
cfdemCloud particleCloud(mesh);
#endif
#endif
#include "checkModelType.H"
@ -87,8 +102,6 @@ int main(int argc, char *argv[])
Info<< "\nStarting time loop\n" << endl;
while (runTime.loop())
{
particleCloud.clockM().start(1,"Global");
Info<< "Time = " << runTime.timeName() << nl << endl;
#if defined(version30)
@ -101,18 +114,21 @@ int main(int argc, char *argv[])
#endif
// do particle stuff
particleCloud.clockM().start(1,"Global");
particleCloud.clockM().start(2,"Coupling");
bool hasEvolved = particleCloud.evolve(voidfraction,Us,U);
if(hasEvolved)
{
particleCloud.smoothingM().smoothen(particleCloud.forceM(0).impParticleForces());
particleCloud.smoothingM().smoothenAbsolutField(particleCloud.forceM(0).impParticleForces());
}
Info << "update Ksl.internalField()" << endl;
Ksl = particleCloud.momCoupleM(0).impMomSource();
Ksl = particleCloud.momCoupleM(particleCloud.registryM().getProperty("implicitCouple_index")).impMomSource();
Ksl.correctBoundaryConditions();
surfaceScalarField voidfractionf = fvc::interpolate(voidfraction);
phi = voidfractionf*phiByVoidfraction;
//Force Checks
#include "forceCheckIm.H"
@ -121,26 +137,9 @@ int main(int argc, char *argv[])
particleCloud.clockM().start(26,"Flow");
/*// get scalar source from DEM
particleCloud.forceM(1).manipulateScalarField(Tsource);
Tsource.correctBoundaryConditions();*/
//Scalar transport if desired. Use "none" (noTransport) if no scalar transport is desired
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();*/
particleCloud.clockM().start(26,"Flow");
if(particleCloud.solveFlow())
{
// Pressure-velocity PISO corrector
@ -154,9 +153,11 @@ int main(int argc, char *argv[])
+ particleCloud.divVoidfractionTau(U, voidfraction)
==
- fvm::Sp(Ksl/rho,U)
+ fvOptions(U)
);
UEqn.relax();
fvOptions.constrain(UEqn);
#if defined(version30)
if (piso.momentumPredictor())
@ -168,6 +169,8 @@ int main(int argc, char *argv[])
solve(UEqn == - fvc::grad(p) + Ksl/rho*Us);
else
solve(UEqn == - voidfraction*fvc::grad(p) + Ksl/rho*Us);
fvOptions.correct(U);
}
// --- PISO loop
@ -186,43 +189,20 @@ int main(int argc, char *argv[])
U = rUA*UEqn.H();
#ifdef version23
phi = ( fvc::interpolate(U*voidfraction) & mesh.Sf() )
+ rUAfvoidfraction*fvc::ddtCorr(U, phi);
phi = ( fvc::interpolate(U) & mesh.Sf() )
+ rUAfvoidfraction*fvc::ddtCorr(U, phiByVoidfraction);
#else
phi = ( fvc::interpolate(U*voidfraction) & mesh.Sf() )
+ fvc::ddtPhiCorr(rUAvoidfraction, U, phi);
phi = ( fvc::interpolate(U) & mesh.Sf() )
+ fvc::ddtPhiCorr(rUAvoidfraction, U, phiByVoidfraction);
#endif
surfaceScalarField phiS(fvc::interpolate(Us*voidfraction) & mesh.Sf());
surfaceScalarField phiGes = phi + rUAf*(fvc::interpolate(Ksl/rho) * phiS);
surfaceScalarField phiS(fvc::interpolate(Us) & mesh.Sf());
phi += rUAf*(fvc::interpolate(Ksl/rho) * phiS);
if (modelType=="A")
rUAvoidfraction = volScalarField("(voidfraction2|A(U))",rUA*voidfraction*voidfraction);
// Update the fixedFluxPressure BCs to ensure flux consistency
#ifndef versionExt32
if (modelType=="A")
{
surfaceScalarField voidfractionf(fvc::interpolate(voidfraction));
setSnGrad<fixedFluxPressureFvPatchScalarField>
(
p.boundaryField(),
(
phi.boundaryField()
- (mesh.Sf().boundaryField() & U.boundaryField())
)/(mesh.magSf().boundaryField()*rUAf.boundaryField()*voidfractionf.boundaryField())
);
}else
{
setSnGrad<fixedFluxPressureFvPatchScalarField>
(
p.boundaryField(),
(
phi.boundaryField()
- (mesh.Sf().boundaryField() & U.boundaryField())
)/(mesh.magSf().boundaryField()*rUAf.boundaryField())
);
}
#endif
#include "fixedFluxPressureHandling.H"
// Non-orthogonal pressure corrector loop
#if defined(version30)
@ -234,7 +214,7 @@ int main(int argc, char *argv[])
// Pressure corrector
fvScalarMatrix pEqn
(
fvm::laplacian(rUAvoidfraction, p) == fvc::div(phiGes) + particleCloud.ddtVoidfraction()
fvm::laplacian(rUAvoidfraction, p) == fvc::div(voidfractionf*phi) + particleCloud.ddtVoidfraction()
);
pEqn.setReference(pRefCell, pRefValue);
@ -242,8 +222,7 @@ int main(int argc, char *argv[])
pEqn.solve(mesh.solver(p.select(piso.finalInnerIter())));
if (piso.finalNonOrthogonalIter())
{
phiGes -= pEqn.flux();
phi = phiGes;
phiByVoidfraction = phi - pEqn.flux()/voidfractionf;
}
#else
if( corr == nCorr-1 && nonOrth == nNonOrthCorr )
@ -257,13 +236,13 @@ int main(int argc, char *argv[])
if (nonOrth == nNonOrthCorr)
{
phiGes -= pEqn.flux();
phi = phiGes;
phiByVoidfraction = phi - pEqn.flux()/voidfractionf;
}
#endif
} // end non-orthogonal corrector loop
phi = voidfractionf*phiByVoidfraction;
#include "continuityErrorPhiPU.H"
if (modelType=="B" || modelType=="Bfull")
@ -272,10 +251,12 @@ int main(int argc, char *argv[])
U -= voidfraction*rUA*fvc::grad(p) - Ksl/rho*Us*rUA;
U.correctBoundaryConditions();
fvOptions.correct(U);
} // end piso loop
}
laminarTransport.correct();
turbulence->correct();
}// end solveFlow
else

View File

@ -105,7 +105,7 @@
),
mesh//,
//dimensionedScalar("0", dimensionSet(0, 0, -1, 1, 0), 273.15)
);
);*/
Info<< "\nCreating fluid-particle heat flux field\n" << endl;
volScalarField Tsource
@ -115,14 +115,14 @@
"Tsource",
runTime.timeName(),
mesh,
IOobject::MUST_READ,
IOobject::AUTO_WRITE
IOobject::NO_READ,
IOobject::NO_WRITE
),
mesh//,
//dimensionedScalar("0", dimensionSet(0, 0, -1, 1, 0), 0.0)
mesh,
dimensionedScalar("0", dimensionSet(0, 0, -1, 1, 0), 0.0)
);
IOdictionary transportProperties
/*IOdictionary transportProperties
(
IOobject
(
@ -159,7 +159,19 @@ surfaceScalarField phi
);
#endif
Info<< "Generating interstitial face flux field phiByVoidfraction\n" << endl;
surfaceScalarField phiByVoidfraction
(
IOobject
(
"phiByVoidfraction",
runTime.timeName(),
mesh,
IOobject::NO_READ,
IOobject::NO_WRITE
),
linearInterpolate(U) & mesh.Sf()
);
label pRefCell = 0;
scalar pRefValue = 0.0;

View File

@ -1,22 +1,27 @@
sinclude $(GENERAL_RULES)/mplib$(WM_MPLIB)
include $(CFDEM_ADD_LIBS_DIR)/$(CFDEM_ADD_LIBS_NAME)
PFLAGS+= -DCFDEMWMPROJECTVERSION="$(CFDEM_WM_PROJECT_VERSION)"
EXE_INC = \
$(PFLAGS) \
$(CFDEM_ADD_INCOMPTURBMOD_PATHS) \
$(PINC) \
$(CFDEM_ADD_INCOMPTURBMOD_PATHS) \
-I$(LIB_SRC)/transportModels \
-I$(LIB_SRC)/transportModels/incompressible/singlePhaseTransportModel \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/radiation/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \
-I$(CFDEM_SRC_DIR)/lagrangian/cfdemParticle/lnInclude \
-I$(CFDEM_SRC_DIR)/lagrangian/cfdemParticle/cfdTools \
-I$(CFDEM_LIGGGHTS_SRC_DIR)
EXE_LIBS = \
-L$(CFDEM_LIB_DIR)\
$(CFDEM_ADD_INCOMPTURBMOD_LIBS) \
-lincompressibleTransportModels \
-lfiniteVolume \
-lradiationModels \
-lmeshTools \
-l$(CFDEM_LIB_NAME) \
$(CFDEM_ADD_LIB_PATHS) \

View File

@ -44,6 +44,7 @@ Description
#else
#include "turbulenceModel.H"
#endif
#include "radiationModel.H"
#include "fixedFluxPressureFvPatchScalarField.H"
#include "cfdemCloud.H"
#if defined(anisotropicRotation)
@ -66,10 +67,12 @@ int main(int argc, char *argv[])
#include "createTimeControls.H"
#endif
#include "createFields.H"
#include "createIncompressibleRadiationModel.H"
#include "initContinuityErrs.H"
// create cfdemCloud
#include "readGravitationalAcceleration.H"
#include "checkImCoupleM.H"
#if defined(anisotropicRotation)
cfdemCloudRotation particleCloud(mesh);
#else
@ -100,13 +103,16 @@ int main(int argc, char *argv[])
if(hasEvolved)
{
particleCloud.smoothingM().smoothen(particleCloud.forceM(0).impParticleForces());
particleCloud.smoothingM().smoothenAbsolutField(particleCloud.forceM(0).impParticleForces());
}
Info << "update Ksl.internalField()" << endl;
Ksl = particleCloud.momCoupleM(0).impMomSource();
Ksl = particleCloud.momCoupleM(particleCloud.registryM().getProperty("implicitCouple_index")).impMomSource();
Ksl.correctBoundaryConditions();
surfaceScalarField voidfractionf = fvc::interpolate(voidfraction);
phi = voidfractionf*phiByVoidfraction;
//Force Checks
#include "forceCheckIm.H"
@ -118,18 +124,26 @@ int main(int argc, char *argv[])
// get scalar source from DEM
particleCloud.forceM(1).manipulateScalarField(Tsource);
Tsource.correctBoundaryConditions();
particleCloud.forceM(1).commToDEM();
// solve scalar transport equation
{
alphat = turbulence->nut()/Prt;
alphat.correctBoundaryConditions();
volScalarField alphaEff("alphaEff", turbulence->nu()/Pr + alphat);
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)
- fvm::laplacian(alphaEff*voidfraction, T)
==
Tsource
+ radiation->ST(rhoCpRef, T)
);
TEqn.relax();
TEqn.solve();
radiation->correct();
}
if(particleCloud.solveFlow())
{
@ -176,43 +190,20 @@ int main(int argc, char *argv[])
U = rUA*UEqn.H();
#ifdef version23
phi = ( fvc::interpolate(U*voidfraction) & mesh.Sf() )
+ rUAfvoidfraction*fvc::ddtCorr(U, phi);
phi = ( fvc::interpolate(U) & mesh.Sf() )
+ rUAfvoidfraction*fvc::ddtCorr(U, phiByVoidfraction);
#else
phi = ( fvc::interpolate(U*voidfraction) & mesh.Sf() )
+ fvc::ddtPhiCorr(rUAvoidfraction, U, phi);
phi = ( fvc::interpolate(U) & mesh.Sf() )
+ fvc::ddtPhiCorr(rUAvoidfraction, U, phiByVoidfraction);
#endif
surfaceScalarField phiS(fvc::interpolate(Us*voidfraction) & mesh.Sf());
surfaceScalarField phiGes = phi + rUAf*(fvc::interpolate(Ksl/rho) * phiS);
surfaceScalarField phiS(fvc::interpolate(Us) & mesh.Sf());
phi += rUAf*(fvc::interpolate(Ksl/rho) * phiS);
if (modelType=="A")
rUAvoidfraction = volScalarField("(voidfraction2|A(U))",rUA*voidfraction*voidfraction);
// Update the fixedFluxPressure BCs to ensure flux consistency
#ifndef versionExt32
if (modelType=="A")
{
surfaceScalarField voidfractionf(fvc::interpolate(voidfraction));
setSnGrad<fixedFluxPressureFvPatchScalarField>
(
p.boundaryField(),
(
phi.boundaryField()
- (mesh.Sf().boundaryField() & U.boundaryField())
)/(mesh.magSf().boundaryField()*rUAf.boundaryField()*voidfractionf.boundaryField())
);
}else
{
setSnGrad<fixedFluxPressureFvPatchScalarField>
(
p.boundaryField(),
(
phi.boundaryField()
- (mesh.Sf().boundaryField() & U.boundaryField())
)/(mesh.magSf().boundaryField()*rUAf.boundaryField())
);
}
#endif
#include "fixedFluxPressureHandling.H"
// Non-orthogonal pressure corrector loop
#if defined(version30)
@ -224,7 +215,7 @@ int main(int argc, char *argv[])
// Pressure corrector
fvScalarMatrix pEqn
(
fvm::laplacian(rUAvoidfraction, p) == fvc::div(phiGes) + particleCloud.ddtVoidfraction()
fvm::laplacian(rUAvoidfraction, p) == fvc::div(voidfractionf*phi) + particleCloud.ddtVoidfraction()
);
pEqn.setReference(pRefCell, pRefValue);
@ -232,8 +223,7 @@ int main(int argc, char *argv[])
pEqn.solve(mesh.solver(p.select(piso.finalInnerIter())));
if (piso.finalNonOrthogonalIter())
{
phiGes -= pEqn.flux();
phi = phiGes;
phiByVoidfraction = phi - pEqn.flux()/voidfractionf;
}
#else
if( corr == nCorr-1 && nonOrth == nNonOrthCorr )
@ -247,13 +237,13 @@ int main(int argc, char *argv[])
if (nonOrth == nNonOrthCorr)
{
phiGes -= pEqn.flux();
phi = phiGes;
phiByVoidfraction = phi - pEqn.flux()/voidfractionf;
}
#endif
} // end non-orthogonal corrector loop
phi = voidfractionf*phiByVoidfraction;
#include "continuityErrorPhiPU.H"
if (modelType=="B" || modelType=="Bfull")
@ -266,6 +256,7 @@ int main(int argc, char *argv[])
} // end piso loop
}
laminarTransport.correct();
turbulence->correct();
}// end solveFlow
else

View File

@ -92,7 +92,7 @@
//========================
// scalar field modelling
//========================
Info<< "\nCreating dummy density field rho = 1\n" << endl;
Info<< "\nCreating T field\n" << endl;
volScalarField T
(
IOobject
@ -134,11 +134,27 @@
)
);
dimensionedScalar DT
// kinematic turbulent thermal thermal conductivity m2/s
Info<< "Reading field alphat\n" << endl;
volScalarField alphat
(
transportProperties.lookup("DT")
IOobject
(
"alphat",
runTime.timeName(),
mesh,
IOobject::MUST_READ,
IOobject::AUTO_WRITE
),
mesh
);
// Laminar Prandtl number
dimensionedScalar Pr("Pr", dimless, transportProperties);
// Turbulent Prandtl number
dimensionedScalar Prt("Prt", dimless, transportProperties);
//========================
//# include "createPhi.H"
@ -159,7 +175,19 @@ surfaceScalarField phi
);
#endif
Info<< "Generating interstitial face flux field phiByVoidfraction\n" << endl;
surfaceScalarField phiByVoidfraction
(
IOobject
(
"phiByVoidfraction",
runTime.timeName(),
mesh,
IOobject::NO_READ,
IOobject::NO_WRITE
),
linearInterpolate(U) & mesh.Sf()
);
label pRefCell = 0;
scalar pRefValue = 0.0;

View File

@ -1,15 +1,18 @@
sinclude $(GENERAL_RULES)/mplib$(WM_MPLIB)
include $(CFDEM_ADD_LIBS_DIR)/$(CFDEM_ADD_LIBS_NAME)
PFLAGS+= -DCFDEMWMPROJECTVERSION="$(CFDEM_WM_PROJECT_VERSION)"
EXE_INC = \
$(PFLAGS) \
$(CFDEM_ADD_INCOMPTURBMOD_PATHS) \
$(PINC) \
$(CFDEM_ADD_INCOMPTURBMOD_PATHS) \
-I$(LIB_SRC)/transportModels \
-I$(LIB_SRC)/transportModels/incompressible/singlePhaseTransportModel \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(CFDEM_SRC_DIR)/lagrangian/cfdemParticle/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \
-I$(CFDEM_LIGGGHTS_SRC_DIR)
EXE_LIBS = \

View File

@ -71,14 +71,14 @@ int main(int argc, char *argv[])
int DEM_dump_Interval=1000;
particleCloud.reAllocArrays();
double **positions_;
double **velocities_;
double **radii_;
double **voidfractions_;
double **particleWeights_;
double **particleVolumes_;
double **particleV_;
double **cellIDs_;
double **positions_(NULL);
double **velocities_(NULL);
double **radii_(NULL);
double **voidfractions_(NULL);
double **particleWeights_(NULL);
double **particleVolumes_(NULL);
double **particleV_(NULL);
double **cellIDs_(NULL);
particleCloud.dataExchangeM().allocateArray(positions_,0.,3);
particleCloud.dataExchangeM().allocateArray(velocities_,0.,3);
@ -114,8 +114,11 @@ int main(int argc, char *argv[])
particleCloud.setPos(positions_);
particleCloud.voidFractionM().setvoidFraction(NULL,voidfractions_,particleWeights_,particleVolumes_,particleV_);
voidfraction.internalField() = particleCloud.voidFractionM().voidFractionInterp();
#if defined(versionv1612plus) || defined(version40)
voidfraction = particleCloud.voidFractionM().voidFractionInterp();
#else
voidfraction.internalField() = particleCloud.voidFractionM().voidFractionInterp();
#endif
voidfraction.correctBoundaryConditions();
particleCloud.averagingM().setVectorAverage
@ -129,6 +132,10 @@ int main(int argc, char *argv[])
false
);
//write Us field
Us = particleCloud.averagingM().UsInterp();
Us.correctBoundaryConditions();
for (int i=0;i<particleCloud.nrForceModels();i++) particleCloud.forceM(i).setForce();
runTime.write();

4
doc/.gitignore vendored
View File

@ -1,3 +1,7 @@
#ignore .rst build files
*.rst
_tmp/*
# C++.gitignore from github
# Compiled Object files
*.slo

View File

@ -1,245 +0,0 @@
<HTML>
<CENTER><A HREF = "http://www.cfdem.com">CFDEMproject WWW Site</A>
</CENTER>
<HR>
<H2><CENTER>CFDEMcoupling Documentation
</CENTER></H2>
<HR>
<CENTER><IMG SRC = "Portfolio_CFDEMcoupling.png">
</CENTER>
<HR>
<H3>1. Contents
</H3>
<P>The CFDEMcoupling documentation is organized into the following sections. If you find any errors or omissions in this manual or have suggestions for useful information to add, please send an email to the developers so the CFDEMcoupling documentation can be improved.
</P>
1.1 <A HREF = "#1_1">About CFDEMcoupling</A><BR>
1.2 <A HREF = "#1_2">Installation</A><BR>
1.3 <A HREF = "#1_3">Tutorials</A><BR>
1.4 <A HREF = "#1_4">couplingProperties dictionary</A><BR>
1.5 <A HREF = "#1_5">liggghtsCommands dictionary</A><BR>
1.6 <A HREF = "#cmd_5">Models and solvers</A> <BR>
<HR>
<A NAME = "1_1"></A><H4>1.1 About CFDEMcoupling
</H4>
<P>CFDEM coupling provides an open source parallel coupled CFD-DEM framework combining the strengths of <A HREF = "http://www.cfdem.com">LIGGGHTS</A> DEM code and the Open Source CFD package <A HREF = "http://www.openfoam.com">OpenFOAM(R)(*)</A>. The CFDEMcoupling toolbox allows to expand standard CFD solvers of <A HREF = "http://www.openfoam.com">OpenFOAM(R)(*)</A> to include a coupling to the DEM code <A HREF = "http://www.cfdem.com">LIGGGHTS</A>. 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.
</P>
<P>The coupled solvers run fully parallel on distributed-memory clusters. Features are:
</P>
<UL><LI>its modular approach allows users to easily implement new models
<LI>its MPI parallelization enables to use it for large scale problems
<LI>the <A HREF = "http://www.cfdem.com">forum</A> on CFD-DEM gives the possibility to exchange with other users / developers
<LI>the use of GIT allows to easily update to the latest version
<LI>basic documentation is provided
</UL>
<P>The file structure:
</P>
<UL><LI><I>src</I> directory including the source files of the coupling toolbox and models
<LI><I>applications</I> directory including the solver files for coupled CFD-DEM simulations
<LI><I>doc</I> directory including the documentation of CFDEMcoupling
<LI><I>tutorials</I> directory including basic tutorial cases showing the functionality
</UL>
<P>Details on installation are given on the <A HREF = "http://www.cfdem.com">CFDEMproject WWW Site</A> .
The functionality of this CFD-DEM framework is described via <A HREF = "#_1_2">tutorial cases</A> showing how to use different solvers and models.
</P>
<P>CFDEMcoupling stands for Computational Fluid Dynamics (CFD) -Discrete Element Method (DEM) coupling.
</P>
<P>CFDEMcoupling is an open-source code, distributed freely under the terms of the GNU Public License (GPL).
</P>
<P>Core development of CFDEMcoupling is done by Christoph Goniva and Christoph Kloss, both at DCS Computing GmbH, 2012
</P>
<P>This documentation was written by Christoph Goniva, DCS Computing GmbH, 2012
</P>
<HR>
<P>(*) 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.
</P>
<HR>
<A NAME = "1_2"></A><H4>1.2 Installation
</H4>
<P>Please follow the installation routine provided at www.cfdem.com.
In order to get the latest code version, please use the git repository at http://github.com (<A HREF = "githubAccess_public.html">githubAccess</A>).
</P>
<HR>
<A NAME = "1_3"></A><H4>1.3 Tutorials
</H4>
<P><B>General:</B>
</P>
<P>Each solver of the CFDEMcoupling comes with at least one tutorial example, showing its functionality and correct usage. Provided that the installation is correct, the tutorials can be run via "Allrun.sh" shell scripts. These scripts perform all necessary steps (preprocessing, run, postprocessing, visualization).
</P>
<P><B>Location:</B>
</P>
<P>The tutorials can be found in the directory $CFDEM_PROJECT_DIR/tutorials, which can be reached by typing "cfdemTut"
</P>
<P><B>Structure:</B>
</P>
<P>Each case is structured in a directory called "CFD" covering the CFD relevant settings and data, and a dirctory called "DEM" covering the DEM relevant settings and data. This allows to easily expand a pure CFD or DEM simulation case to a coupled case.
</P>
<P><B>Usage:</B>
</P>
<P>Provided that the installation is correct, the tutorials can be run via "Allrun.sh" shell script, executed by typing "./Allrun.sh". The successful run of the script might need some third party software (e.g. octave, evince, etc.).
</P>
<P><B>Settings:</B>
</P>
<P>The main settings of a simulation are done via dictionaries:
</P>
<P>The DEM setup of each case is defined by a <A HREF = "http://www.cfdem.com">LIGGGHTS</A> input file located in $caseDir/DEM (e.g. in.liggghts_init). For details on the <A HREF = "http://www.cfdem.com">LIGGGHTS</A> setup, please have a look at the <A HREF = "http://www.cfdem.com">LIGGGHTS</A> manual.
</P>
<P>Standard CFD settings are defined in $caseDir/CFD/constant (e.g. transportProperties, RASproperties, etc.) and $caseDir/CFD/system (e.g. fvSchemes, controlDict). You can find more information on that in <A HREF = "http://www.openfoam.com">OpenFOAM(R)(*)</A> documentations (www.openFoam.com)(*).
</P>
<P>Settings of the coupling routines are defined in $caseDir/CFD/constant/<A HREF = "#1_3">couplingProperies</A> (e.g. force models, data exchange model, etc.) and $caseDir/CFD/constant/<A HREF = "#1_3">liggghtsCommands</A> (allows to execute a LIGGGHTS command during a coupled simulation).
</P>
<HR>
<A NAME = "1_4"></A><H4>1.4 "couplingProperties" dictionary
</H4>
<P><B>General:</B>
</P>
<P>In the "couplingProperties" dictionary the setup of the coupling routines of the CFD-DEM simulation are defined.
</P>
<P><B>Location:</B> $caseDir/CFD/constant
</P>
<P><B>Structure:</B>
</P>
<P>The dictionary is divided into two parts, "sub-models & settings" and "sub-model properties".
</P>
<P>In "sub-models & settings" the following routines must be specified:
</P>
<UL><LI>modelType
<LI>couplingInterval
<LI>voidFractionModel
<LI>locateModel
<LI>meshMotionModel
<LI>regionModel
<LI>IOModel
<LI>dataExchangeModel
<LI>averagingModel
<LI>forceModels
<LI>momCoupleModels
<LI>turbulenceModelType
</UL>
<P>In "sub-model properties" sub-dictionaries might be defined to specify model specific parameters.
</P>
<P><B>Settings:</B>
</P>
<P>Reasonable example settings for the "couplingProperties" dictionary are given in the tutorial cases.
</P>
<PRE>modelType
</PRE>
<P>"modelType" refers to the formulation of the equations to be solved. Choose "A", "B" or "Bfull", according to Zhou et al. (2010): "Discrete particle simulation of particle-fluid flow: model formulations and their applicability", JFM. "A" requires the use of the force models gradPForce and viscForce, whereas "B" requires the force model "Archimedes". "Bfull" refers to model type I.
</P>
<PRE>couplingInterval
</PRE>
<P>The coupling interval determines the time passing between two CFD-DEM data exchanges.
</P>
<P>A useful procedure would be:
1) Set the DEM timestep in the in.xxx file according to the needs of the pure DEM problem.
2) Set the "couplingInterval", which refers to the DEM timesteps. Depending on the problem you will need to have a close (small couplingInterval) or loose coupling.
3) Choose the CFD timestep in the controlDict. It must be equal to or smaller than the coupling time, otherwise you will get the error: "Error - TS bigger than coupling interval!".
</P>
<P>Example: DEMts=0.00001s, couplingInterval=10 exchange data (=couple) will happen every 0.0001s.
</P>
<HR>
<H4><A NAME = "1_5"></A>1.5 "liggghtsCommands" dictionary
</H4>
<P><B>General:</B>
</P>
<P>In the "liggghtsCommands" dictionary liggghts commands being executed during a coupled CFD-DEM simulation are specified.
</P>
<P><B>Location:</B> $caseDir/CFD/constant
</P>
<P><B>Structure:</B>
</P>
<P>The dictionary is divided into two parts, first a list of "liggghtsCommandModels" is defined, then the settings for each model must be specified.
</P>
<P><B>Settings:</B>
</P>
<P>Reasonable example settings for the "liggghtsCommands" dictionary are given in the tutorial cases.
</P>
<HR>
<H4><A NAME = "cmd_5"></A><A NAME = "comm"></A>1.6 Models/Solvers
</H4>
<P>This section lists all CFDEMcoupling sub-models and solvers alphabetically, with a separate
listing below of styles within certain commands.
</P>
<DIV ALIGN=center><TABLE BORDER=1 >
<TR ALIGN="center"><TD ><A HREF = "IOModel.html">IOModel</A></TD><TD ><A HREF = "IOModel_basicIO.html">IOModel_basicIO</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "IOModel_noIO.html">IOModel_noIO</A></TD><TD ><A HREF = "IOModel_sophIO.html">IOModel_sophIO</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "IOModel_trackIO.html">IOModel_trackIO</A></TD><TD ><A HREF = "averagingModel.html">averagingModel</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "averagingModel_dense.html">averagingModel_dense</A></TD><TD ><A HREF = "averagingModel_dilute.html">averagingModel_dilute</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "cfdemSolverIB.html">cfdemSolverIB</A></TD><TD ><A HREF = "cfdemSolverPiso.html">cfdemSolverPiso</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "cfdemSolverPisoScalar.html">cfdemSolverPisoScalar</A></TD><TD ><A HREF = "clockModel.html">clockModel</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "clockModel_noClock.html">clockModel_noClock</A></TD><TD ><A HREF = "clockModel_standardClock.html">clockModel_standardClock</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "dataExchangeModel.html">dataExchangeModel</A></TD><TD ><A HREF = "dataExchangeModel_noDataExchange.html">dataExchangeModel_noDataExchange</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "dataExchangeModel_oneWayVTK.html">dataExchangeModel_oneWayVTK</A></TD><TD ><A HREF = "dataExchangeModel_twoWayFiles.html">dataExchangeModel_twoWayFiles</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "dataExchangeModel_twoWayMPI.html">dataExchangeModel_twoWayMPI</A></TD><TD ><A HREF = "forceModel.html">forceModel</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "forceModel_Archimedes.html">forceModel_Archimedes</A></TD><TD ><A HREF = "forceModel_ArchimedesIB.html">forceModel_ArchimedesIB</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "forceModel_DiFeliceDrag.html">forceModel_DiFeliceDrag</A></TD><TD ><A HREF = "forceModel_GidaspowDrag.html">forceModel_GidaspowDrag</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "forceModel_KochHillDrag.html">forceModel_KochHillDrag</A></TD><TD ><A HREF = "forceModel_LaEuScalarTemp.html">forceModel_LaEuScalarTemp</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "forceModel_MeiLift.html">forceModel_MeiLift</A></TD><TD ><A HREF = "forceModel_SchillerNaumannDrag.html">forceModel_SchillerNaumannDrag</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "forceModel_ShirgaonkarIB.html">forceModel_ShirgaonkarIB</A></TD><TD ><A HREF = "forceModel_fieldStore.html">forceModel_fieldStore</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "forceModel_fieldTimeAverage.html">forceModel_fieldTimeAverage</A></TD><TD ><A HREF = "forceModel_gradPForce.html">forceModel_gradPForce</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "forceModel_noDrag.html">forceModel_noDrag</A></TD><TD ><A HREF = "forceModel_particleCellVolume.html">forceModel_particleCellVolume</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "forceModel_particleVolume.html">forceModel_particleVolume</A></TD><TD ><A HREF = "forceModel_scalarGeneralExchange.html">forceModel_scalarGeneralExchange</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "forceModel_virtualMassForce.html">forceModel_virtualMassForce</A></TD><TD ><A HREF = "forceModel_viscForce.html">forceModel_viscForce</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "forceModel_volWeightedAverage.html">forceModel_volWeightedAverage</A></TD><TD ><A HREF = "forceSubModel.html">forceSubModel</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "forceSubModel_ImEx.html">forceSubModel_ImEx</A></TD><TD ><A HREF = "liggghtsCommandModel.html">liggghtsCommandModel</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "liggghtsCommandModel_execute.html">liggghtsCommandModel_execute</A></TD><TD ><A HREF = "liggghtsCommandModel_readLiggghtsData.html">liggghtsCommandModel_readLiggghtsData</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "liggghtsCommandModel_runLiggghts.html">liggghtsCommandModel_runLiggghts</A></TD><TD ><A HREF = "liggghtsCommandModel_writeLiggghts.html">liggghtsCommandModel_writeLiggghts</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "locateModel.html">locateModel</A></TD><TD ><A HREF = "locateModel_engineSearch.html">locateModel_engineSearch</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "locateModel_engineSearchIB.html">locateModel_engineSearchIB</A></TD><TD ><A HREF = "locateModel_standardSearch.html">locateModel_standardSearch</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "meshMotionModel.html">meshMotionModel</A></TD><TD ><A HREF = "meshMotionModel_noMeshMotion.html">meshMotionModel_noMeshMotion</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "momCoupleModel.html">momCoupleModel</A></TD><TD ><A HREF = "momCoupleModel_explicitCouple.html">momCoupleModel_explicitCouple</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "momCoupleModel_implicitCouple.html">momCoupleModel_implicitCouple</A></TD><TD ><A HREF = "momCoupleModel_noCouple.html">momCoupleModel_noCouple</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "probeModel.html">probeModel</A></TD><TD ><A HREF = "probeModel_noProbe.html">probeModel_noProbe</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "probeModel_particleProbe.html">probeModel_particleProbe</A></TD><TD ><A HREF = "regionModel.html">regionModel</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "regionModel_allRegion.html">regionModel_allRegion</A></TD><TD ><A HREF = "scalarTransportModel.html">scalarTransportModel</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "smoothingModel.html">smoothingModel</A></TD><TD ><A HREF = "smoothingModel_constDiffSmoothing.html">smoothingModel_constDiffSmoothing</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "smoothingModel_noSmoothing.html">smoothingModel_noSmoothing</A></TD><TD ><A HREF = "voidFractionModel.html">voidfractionModel</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "voidFractionModel_GaussVoidFraction.html">voidfractionModel_GaussVoidFraction</A></TD><TD ><A HREF = "voidFractionModel_IBVoidFraction.html">voidfractionModel_IBVoidFraction</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "voidFractionModel_bigParticleVoidFraction.html">voidfractionModel_bigParticleVoidFraction</A></TD><TD ><A HREF = "voidFractionModel_centreVoidFraction.html">voidfractionModel_centreVoidFraction</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "voidFractionModel_dividedVoidFraction.html">voidfractionModel_dividedVoidFraction</A></TD><TD ><A HREF = "voidFractionModel_noVoidFraction.html">voidfractionModel_noVoidFractionVoidFraction</A></TD></TR>
<TR ALIGN="center"><TD ><A HREF = "voidFractionModel_trilinearVoidFraction.html">voidfractionModel_trilinearVoidFraction</A>
</TD></TR></TABLE></DIV>
</HTML>

View File

@ -0,0 +1 @@
_build/html/CFDEMcoupling_Manual.html

Binary file not shown.

BIN
doc/Eqs/Ksl.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 2.4 KiB

BIN
doc/Eqs/NavierStokesLiquSoli.png Executable file

Binary file not shown.

After

Width:  |  Height:  |  Size: 7.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.7 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 5.0 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 15 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 4.1 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 1.9 KiB

View File

@ -1,40 +0,0 @@
<HTML>
<CENTER><A HREF = "http://www.cfdem.com">CFDEMproject WWW Site</A> - <A HREF = "CFDEMcoupling_Manual.html#comm">CFDEM Commands</A>
</CENTER>
<HR>
<H3>IOModel command
</H3>
<P><B>Syntax:</B>
</P>
<P>Defined in couplingProperties dictionary.
</P>
<PRE>IOModel "model";
</PRE>
<UL><LI>model = name of IO-model to be applied
</UL>
<P><B>Examples:</B>
</P>
<P>IOModel "off";
</P>
<P>Note: This examples list might not be complete - please look for other models (IOModel_XY) in this documentation.
</P>
<P><B>Description:</B>
</P>
<P>The IO-model is the base class to write data (e.g. particle properties) to files.
</P>
<P><B>Restrictions:</B>
</P>
<P>none.
</P>
<P><B>Related commands:</B>
</P>
<P>Note: This examples list may be incomplete - please look for other models (IOModel_XY) in this documentation.
</P>
<P><B>Default:</B> none.
</P>
</HTML>

View File

@ -1,32 +0,0 @@
<HTML>
<CENTER><A HREF = "http://www.cfdem.com">CFDEMproject WWW Site</A> - <A HREF = "CFDEMcoupling_Manual.html#comm">CFDEM Commands</A>
</CENTER>
<HR>
<H3>IOModel_basicIO command
</H3>
<P><B>Syntax:</B>
</P>
<P>Defined in couplingProperties dictionary.
</P>
<PRE>IOModel "basicIO";
</PRE>
<P><B>Examples:</B>
</P>
<PRE>IOModel "basicIO";
</PRE>
<P><B>Description:</B>
</P>
<P>The basic IO-model writes particle positions velocities and radii to files. The default output directory ($casePath/CFD/proc*/time/lagrangian). Using the keyword "serialOutput;" in couplingProperties the IO is serial to the directory ($casePath/CFD/lagrangian). In the latter case only the data on processor 0 is written! Data is written every write time of the CFD simulation.
</P>
<P><B>Restrictions:</B> None.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "IOModel.html">IOModel</A>
</P>
</HTML>

View File

@ -1,32 +0,0 @@
<HTML>
<CENTER><A HREF = "http://www.cfdem.com">CFDEMproject WWW Site</A> - <A HREF = "CFDEMcoupling_Manual.html#comm">CFDEM Commands</A>
</CENTER>
<HR>
<H3>IOModel_noIO command
</H3>
<P><B>Syntax:</B>
</P>
<P>Defined in couplingProperties dictionary.
</P>
<PRE>IOModel "off";
</PRE>
<P><B>Examples:</B>
</P>
<PRE>IOModel "off";
</PRE>
<P><B>Description:</B>
</P>
<P>The noIO-model is a dummy IO model.
</P>
<P><B>Restrictions:</B> None.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "IOModel.html">IOModel</A>
</P>
</HTML>

View File

@ -1,32 +0,0 @@
<HTML>
<CENTER><A HREF = "http://www.cfdem.com">CFDEMproject WWW Site</A> - <A HREF = "CFDEMcoupling_Manual.html#comm">CFDEM Commands</A>
</CENTER>
<HR>
<H3>IOModel_sophIO command
</H3>
<P><B>Syntax:</B>
</P>
<P>Defined in couplingProperties dictionary.
</P>
<PRE>IOModel "sophIO";
</PRE>
<P><B>Examples:</B>
</P>
<PRE>IOModel "sophIO";
</PRE>
<P><B>Description:</B>
</P>
<P>The sophIO-model is based on basicIO model and additionally writes voidfraction, implicit forces, explicit forces. Data is written every write time of the CFD simulation.
</P>
<P><B>Restrictions:</B> None.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "IOModel.html">IOModel</A>
</P>
</HTML>

View File

@ -1,32 +0,0 @@
<HTML>
<CENTER><A HREF = "http://www.cfdem.com">CFDEMproject WWW Site</A> - <A HREF = "CFDEMcoupling_Manual.html#comm">CFDEM Commands</A>
</CENTER>
<HR>
<H3>IOModel_trackIO command
</H3>
<P><B>Syntax:</B>
</P>
<P>Defined in couplingProperties dictionary.
</P>
<PRE>IOModel "trackIO";
</PRE>
<P><B>Examples:</B>
</P>
<PRE>IOModel "trackIO";
</PRE>
<P><B>Description:</B>
</P>
<P>The trackIO-model is based on sophIO model and additionally writes fields necessary to use the particleTracks utility (which needs a particleTrackProperties file in the constant dir). The particleTracks utility generates tracks of the particles and writes them to a vtk file.
</P>
<P><B>Restrictions:</B> None.
</P>
<P><B>Related commands:</B>
</P>
<P><A HREF = "IOModel.html">IOModel</A>
</P>
</HTML>

Binary file not shown.

Before

Width:  |  Height:  |  Size: 28 KiB

Binary file not shown.

BIN
doc/_build/doctrees/IOModel.doctree vendored Normal file

Binary file not shown.

Binary file not shown.

BIN
doc/_build/doctrees/IOModel_noIO.doctree vendored Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
doc/_build/doctrees/clockModel.doctree vendored Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
doc/_build/doctrees/environment.pickle vendored Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
doc/_build/doctrees/forceModel.doctree vendored Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
doc/_build/doctrees/fvOptions.doctree vendored Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

BIN
doc/_build/doctrees/locateModel.doctree vendored Normal file

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Binary file not shown.

Some files were not shown because too many files have changed in this diff Show More