mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
ENH: added DPMFoam, DPM drag models and Goldschmidt tutorial case
This commit is contained in:
7
applications/solvers/lagrangian/DPMFoam/Allwclean
Executable file
7
applications/solvers/lagrangian/DPMFoam/Allwclean
Executable file
@ -0,0 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
cd ${0%/*} || exit 1
|
||||
set -x
|
||||
|
||||
wclean DPMTurbulenceModels
|
||||
wclean
|
||||
7
applications/solvers/lagrangian/DPMFoam/Allwmake
Executable file
7
applications/solvers/lagrangian/DPMFoam/Allwmake
Executable file
@ -0,0 +1,7 @@
|
||||
#!/bin/sh
|
||||
|
||||
cd ${0%/*} || exit 1
|
||||
set -x
|
||||
|
||||
wmake DPMTurbulenceModels
|
||||
wmake
|
||||
51
applications/solvers/lagrangian/DPMFoam/CourantNo.H
Normal file
51
applications/solvers/lagrangian/DPMFoam/CourantNo.H
Normal file
@ -0,0 +1,51 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2013 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM 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.
|
||||
|
||||
OpenFOAM 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 OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Global
|
||||
CourantNo
|
||||
|
||||
Description
|
||||
Calculates and outputs the mean and maximum Courant Numbers.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
scalar CoNum = 0.0;
|
||||
scalar meanCoNum = 0.0;
|
||||
|
||||
if (mesh.nInternalFaces())
|
||||
{
|
||||
scalarField sumPhi
|
||||
(
|
||||
fvc::surfaceSum(mag(phic))().internalField()
|
||||
);
|
||||
|
||||
CoNum = 0.5*gMax(sumPhi/mesh.V().field())*runTime.deltaTValue();
|
||||
|
||||
meanCoNum =
|
||||
0.5*(gSum(sumPhi)/gSum(mesh.V().field()))*runTime.deltaTValue();
|
||||
}
|
||||
|
||||
Info<< "Courant Number mean: " << meanCoNum
|
||||
<< " max: " << CoNum << endl;
|
||||
|
||||
// ************************************************************************* //
|
||||
143
applications/solvers/lagrangian/DPMFoam/DPMFoam.C
Normal file
143
applications/solvers/lagrangian/DPMFoam/DPMFoam.C
Normal file
@ -0,0 +1,143 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2013 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM 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.
|
||||
|
||||
OpenFOAM 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 OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Application
|
||||
DPMFoam
|
||||
|
||||
Description
|
||||
Transient solver for the coupled transport of a single kinematic particle
|
||||
could including the effect of the volume fraction of particles on the
|
||||
continuous phase.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "fvCFD.H"
|
||||
#include "singlePhaseTransportModel.H"
|
||||
#include "PhaseIncompressibleTurbulenceModel.H"
|
||||
#include "pimpleControl.H"
|
||||
#include "fixedFluxPressureFvPatchScalarField.H"
|
||||
|
||||
#ifdef MPPIC
|
||||
#include "basicKinematicMPPICCloud.H"
|
||||
#define basicKinematicTypeCloud basicKinematicMPPICCloud
|
||||
#else
|
||||
#include "basicKinematicCollidingCloud.H"
|
||||
#define basicKinematicTypeCloud basicKinematicCollidingCloud
|
||||
#endif
|
||||
|
||||
int main(int argc, char *argv[])
|
||||
{
|
||||
argList::addOption
|
||||
(
|
||||
"cloudName",
|
||||
"name",
|
||||
"specify alternative cloud name. default is 'kinematicCloud'"
|
||||
);
|
||||
|
||||
#include "setRootCase.H"
|
||||
#include "createTime.H"
|
||||
#include "createMesh.H"
|
||||
#include "readGravitationalAcceleration.H"
|
||||
#include "createFields.H"
|
||||
#include "initContinuityErrs.H"
|
||||
|
||||
pimpleControl pimple(mesh);
|
||||
|
||||
Info<< "\nStarting time loop\n" << endl;
|
||||
|
||||
while (runTime.run())
|
||||
{
|
||||
#include "readTimeControls.H"
|
||||
#include "CourantNo.H"
|
||||
#include "setDeltaT.H"
|
||||
|
||||
runTime++;
|
||||
|
||||
Info<< "Time = " << runTime.timeName() << nl << endl;
|
||||
|
||||
continuousPhaseTransport.correct();
|
||||
muc = rhoc*continuousPhaseTransport.nu();
|
||||
|
||||
Info<< "Evolving " << kinematicCloud.name() << endl;
|
||||
kinematicCloud.evolve();
|
||||
|
||||
// Update continuous phase volume fraction field
|
||||
alphac = max(1.0 - kinematicCloud.theta(), alphacMin);
|
||||
alphac.correctBoundaryConditions();
|
||||
alphacf = fvc::interpolate(alphac);
|
||||
alphaPhic = alphacf*phic;
|
||||
|
||||
fvVectorMatrix cloudSU(kinematicCloud.SU(Uc));
|
||||
volVectorField cloudVolSUSu
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"cloudVolSUSu",
|
||||
runTime.timeName(),
|
||||
mesh
|
||||
),
|
||||
mesh,
|
||||
dimensionedVector
|
||||
(
|
||||
"0",
|
||||
cloudSU.dimensions()/dimVolume,
|
||||
vector::zero
|
||||
),
|
||||
zeroGradientFvPatchVectorField::typeName
|
||||
);
|
||||
|
||||
cloudVolSUSu.internalField() = - cloudSU.source()/mesh.V();
|
||||
cloudVolSUSu.correctBoundaryConditions();
|
||||
cloudSU.source() = vector::zero;
|
||||
|
||||
// --- Pressure-velocity PIMPLE corrector loop
|
||||
while (pimple.loop())
|
||||
{
|
||||
#include "UcEqn.H"
|
||||
|
||||
// --- PISO loop
|
||||
while (pimple.correct())
|
||||
{
|
||||
#include "pEqn.H"
|
||||
}
|
||||
|
||||
if (pimple.turbCorr())
|
||||
{
|
||||
continuousPhaseTurbulence->correct();
|
||||
}
|
||||
}
|
||||
|
||||
runTime.write();
|
||||
|
||||
Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
|
||||
<< " ClockTime = " << runTime.elapsedClockTime() << " s"
|
||||
<< nl << endl;
|
||||
}
|
||||
|
||||
Info<< "End\n" << endl;
|
||||
|
||||
return 0;
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,61 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2013 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM 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.
|
||||
|
||||
OpenFOAM 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 OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "PhaseIncompressibleTurbulenceModel.H"
|
||||
#include "singlePhaseTransportModel.H"
|
||||
#include "addToRunTimeSelectionTable.H"
|
||||
#include "makeTurbulenceModel.H"
|
||||
|
||||
#include "laminar.H"
|
||||
#include "RASModel.H"
|
||||
#include "LESModel.H"
|
||||
|
||||
makeBaseTurbulenceModel
|
||||
(
|
||||
volScalarField,
|
||||
geometricOneField,
|
||||
incompressibleTurbulenceModel,
|
||||
PhaseIncompressibleTurbulenceModel,
|
||||
singlePhaseTransportModel
|
||||
);
|
||||
|
||||
#define makeRASModel(Type) \
|
||||
makeTemplatedTurbulenceModel \
|
||||
(singlePhaseTransportModelPhaseIncompressibleTurbulenceModel, RAS, Type)
|
||||
|
||||
#define makeLESModel(Type) \
|
||||
makeTemplatedTurbulenceModel \
|
||||
(singlePhaseTransportModelPhaseIncompressibleTurbulenceModel, LES, Type)
|
||||
|
||||
#include "kEpsilon.H"
|
||||
makeRASModel(kEpsilon);
|
||||
|
||||
#include "Smagorinsky.H"
|
||||
makeLESModel(Smagorinsky);
|
||||
|
||||
#include "kEqn.H"
|
||||
makeLESModel(kEqn);
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,3 @@
|
||||
DPMTurbulenceModels.C
|
||||
|
||||
LIB = $(FOAM_LIBBIN)/libDPMTurbulenceModels
|
||||
@ -0,0 +1,9 @@
|
||||
EXE_INC = \
|
||||
-I$(LIB_SRC)/foam/lnInclude \
|
||||
-I$(LIB_SRC)/finiteVolume/lnInclude \
|
||||
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
|
||||
-I$(LIB_SRC)/transportModels \
|
||||
-I$(LIB_SRC)/transportModels/incompressible/singlePhaseTransportModel \
|
||||
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
|
||||
-I$(LIB_SRC)/TurbulenceModels/incompressible/lnInclude \
|
||||
-I$(LIB_SRC)/TurbulenceModels/phaseIncompressible/lnInclude
|
||||
3
applications/solvers/lagrangian/DPMFoam/Make/files
Normal file
3
applications/solvers/lagrangian/DPMFoam/Make/files
Normal file
@ -0,0 +1,3 @@
|
||||
DPMFoam.C
|
||||
|
||||
EXE = $(FOAM_APPBIN)/DPMFoam
|
||||
33
applications/solvers/lagrangian/DPMFoam/Make/options
Normal file
33
applications/solvers/lagrangian/DPMFoam/Make/options
Normal file
@ -0,0 +1,33 @@
|
||||
EXE_INC = \
|
||||
-I./DPMTurbulenceModels/lnInclude \
|
||||
-I$(LIB_SRC)/finiteVolume/lnInclude \
|
||||
-I$(LIB_SRC)/meshTools/lnInclude \
|
||||
-I$(LIB_SRC)/lagrangian/basic/lnInclude \
|
||||
-I$(LIB_SRC)/lagrangian/intermediate/lnInclude \
|
||||
-I$(LIB_SRC)/thermophysicalModels/specie/lnInclude \
|
||||
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
|
||||
-I$(LIB_SRC)/thermophysicalModels/reactionThermo/lnInclude \
|
||||
-I$(LIB_SRC)/thermophysicalModels/radiation/lnInclude \
|
||||
-I$(LIB_SRC)/transportModels \
|
||||
-I$(LIB_SRC)/transportModels/incompressible/singlePhaseTransportModel \
|
||||
-I$(LIB_SRC)/TurbulenceModels/turbulenceModels/lnInclude \
|
||||
-I$(LIB_SRC)/TurbulenceModels/incompressible/lnInclude \
|
||||
-I$(LIB_SRC)/TurbulenceModels/phaseIncompressible/lnInclude \
|
||||
-I$(LIB_SRC)/regionModels/regionModel/lnInclude \
|
||||
-I$(LIB_SRC)/regionModels/surfaceFilmModels/lnInclude \
|
||||
|
||||
EXE_LIBS = \
|
||||
-lfiniteVolume \
|
||||
-lmeshTools \
|
||||
-llagrangian \
|
||||
-llagrangianIntermediate \
|
||||
-lthermophysicalFunctions \
|
||||
-lspecie \
|
||||
-lradiationModels \
|
||||
-lincompressibleTransportModels \
|
||||
-lturbulenceModels \
|
||||
-lincompressibleTurbulenceModels \
|
||||
-lDPMTurbulenceModels \
|
||||
-lregionModels \
|
||||
-lsurfaceFilmModels \
|
||||
-lsampling
|
||||
32
applications/solvers/lagrangian/DPMFoam/UcEqn.H
Normal file
32
applications/solvers/lagrangian/DPMFoam/UcEqn.H
Normal file
@ -0,0 +1,32 @@
|
||||
fvVectorMatrix UcEqn
|
||||
(
|
||||
fvm::ddt(alphac, Uc) + fvm::div(alphaPhic, Uc)
|
||||
- fvm::Sp(fvc::ddt(alphac) + fvc::div(alphaPhic), Uc)
|
||||
+ continuousPhaseTurbulence->divDevRhoReff(Uc)
|
||||
==
|
||||
(1.0/rhoc)*cloudSU
|
||||
);
|
||||
|
||||
UcEqn.relax();
|
||||
|
||||
volScalarField rAUc(1.0/UcEqn.A());
|
||||
surfaceScalarField rAUcf("Dp", fvc::interpolate(rAUc));
|
||||
|
||||
surfaceScalarField phicForces
|
||||
(
|
||||
(fvc::interpolate(rAUc*cloudVolSUSu/rhoc) & mesh.Sf())
|
||||
+ rAUcf*(g & mesh.Sf())
|
||||
);
|
||||
|
||||
if (pimple.momentumPredictor())
|
||||
{
|
||||
solve
|
||||
(
|
||||
UcEqn
|
||||
==
|
||||
fvc::reconstruct
|
||||
(
|
||||
phicForces/rAUcf - fvc::snGrad(p)*mesh.magSf()
|
||||
)
|
||||
);
|
||||
}
|
||||
48
applications/solvers/lagrangian/DPMFoam/continuityErrs.H
Normal file
48
applications/solvers/lagrangian/DPMFoam/continuityErrs.H
Normal file
@ -0,0 +1,48 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2013 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM 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.
|
||||
|
||||
OpenFOAM 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 OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Global
|
||||
continuityErrs
|
||||
|
||||
Description
|
||||
Calculates and prints the continuity errors.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
{
|
||||
volScalarField contErr(fvc::ddt(alphac) + fvc::div(alphacf*phic));
|
||||
|
||||
scalar sumLocalContErr = runTime.deltaTValue()*
|
||||
mag(contErr)().weightedAverage(mesh.V()).value();
|
||||
|
||||
scalar globalContErr = runTime.deltaTValue()*
|
||||
contErr.weightedAverage(mesh.V()).value();
|
||||
cumulativeContErr += globalContErr;
|
||||
|
||||
Info<< "time step continuity errors : sum local = " << sumLocalContErr
|
||||
<< ", global = " << globalContErr
|
||||
<< ", cumulative = " << cumulativeContErr
|
||||
<< endl;
|
||||
}
|
||||
|
||||
// ************************************************************************* //
|
||||
166
applications/solvers/lagrangian/DPMFoam/createFields.H
Normal file
166
applications/solvers/lagrangian/DPMFoam/createFields.H
Normal file
@ -0,0 +1,166 @@
|
||||
Info<< "\nReading transportProperties\n" << endl;
|
||||
|
||||
IOdictionary transportProperties
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"transportProperties",
|
||||
runTime.constant(),
|
||||
mesh,
|
||||
IOobject::MUST_READ_IF_MODIFIED,
|
||||
IOobject::NO_WRITE
|
||||
)
|
||||
);
|
||||
|
||||
word contiuousPhaseName(transportProperties.lookup("contiuousPhaseName"));
|
||||
|
||||
dimensionedScalar rhocValue
|
||||
(
|
||||
IOobject::groupName("rho", contiuousPhaseName),
|
||||
dimDensity,
|
||||
transportProperties.lookup
|
||||
(
|
||||
IOobject::groupName("rho", contiuousPhaseName)
|
||||
)
|
||||
);
|
||||
|
||||
volScalarField rhoc
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
rhocValue.name(),
|
||||
runTime.timeName(),
|
||||
mesh,
|
||||
IOobject::NO_READ,
|
||||
IOobject::AUTO_WRITE
|
||||
),
|
||||
mesh,
|
||||
rhocValue
|
||||
);
|
||||
|
||||
Info<< "Reading field U\n" << endl;
|
||||
volVectorField Uc
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
IOobject::groupName("U", contiuousPhaseName),
|
||||
runTime.timeName(),
|
||||
mesh,
|
||||
IOobject::MUST_READ,
|
||||
IOobject::AUTO_WRITE
|
||||
),
|
||||
mesh
|
||||
);
|
||||
|
||||
Info<< "Reading field p\n" << endl;
|
||||
volScalarField p
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
"p",
|
||||
runTime.timeName(),
|
||||
mesh,
|
||||
IOobject::MUST_READ,
|
||||
IOobject::AUTO_WRITE
|
||||
),
|
||||
mesh
|
||||
);
|
||||
|
||||
|
||||
Info<< "Reading/calculating continuous-phase face flux field phic\n"
|
||||
<< endl;
|
||||
|
||||
surfaceScalarField phic
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
IOobject::groupName("phi", contiuousPhaseName),
|
||||
runTime.timeName(),
|
||||
mesh,
|
||||
IOobject::READ_IF_PRESENT,
|
||||
IOobject::AUTO_WRITE
|
||||
),
|
||||
linearInterpolate(Uc) & mesh.Sf()
|
||||
);
|
||||
|
||||
label pRefCell = 0;
|
||||
scalar pRefValue = 0.0;
|
||||
setRefCell(p, mesh.solutionDict().subDict("PIMPLE"), pRefCell, pRefValue);
|
||||
|
||||
Info<< "Creating turbulence model\n" << endl;
|
||||
|
||||
singlePhaseTransportModel continuousPhaseTransport(Uc, phic);
|
||||
|
||||
volScalarField muc
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
IOobject::groupName("mu", contiuousPhaseName),
|
||||
runTime.timeName(),
|
||||
mesh,
|
||||
IOobject::NO_READ,
|
||||
IOobject::AUTO_WRITE
|
||||
),
|
||||
rhoc*continuousPhaseTransport.nu()
|
||||
);
|
||||
|
||||
Info << "Creating field alphac\n" << endl;
|
||||
// alphac must be constructed before the cloud
|
||||
// so that the drag-models can find it
|
||||
volScalarField alphac
|
||||
(
|
||||
IOobject
|
||||
(
|
||||
IOobject::groupName("alpha", contiuousPhaseName),
|
||||
runTime.timeName(),
|
||||
mesh,
|
||||
IOobject::READ_IF_PRESENT,
|
||||
IOobject::AUTO_WRITE
|
||||
),
|
||||
mesh,
|
||||
dimensionedScalar("0", dimless, 0)
|
||||
);
|
||||
|
||||
word kinematicCloudName("kinematicCloud");
|
||||
args.optionReadIfPresent("cloudName", kinematicCloudName);
|
||||
|
||||
Info<< "Constructing kinematicCloud " << kinematicCloudName << endl;
|
||||
basicKinematicTypeCloud kinematicCloud
|
||||
(
|
||||
kinematicCloudName,
|
||||
rhoc,
|
||||
Uc,
|
||||
muc,
|
||||
g
|
||||
);
|
||||
|
||||
// Particle fraction upper limit
|
||||
scalar alphacMin
|
||||
(
|
||||
1.0
|
||||
- readScalar
|
||||
(
|
||||
kinematicCloud.particleProperties().subDict("constantProperties")
|
||||
.lookup("alphaMax")
|
||||
)
|
||||
);
|
||||
|
||||
// Update alphac from the particle locations
|
||||
alphac = max(1.0 - kinematicCloud.theta(), alphacMin);
|
||||
alphac.correctBoundaryConditions();
|
||||
|
||||
surfaceScalarField alphacf("alphacf", fvc::interpolate(alphac));
|
||||
surfaceScalarField alphaPhic("alphaPhic", alphacf*phic);
|
||||
|
||||
autoPtr<PhaseIncompressibleTurbulenceModel<singlePhaseTransportModel> >
|
||||
continuousPhaseTurbulence
|
||||
(
|
||||
PhaseIncompressibleTurbulenceModel<singlePhaseTransportModel>::New
|
||||
(
|
||||
alphac,
|
||||
Uc,
|
||||
alphaPhic,
|
||||
phic,
|
||||
continuousPhaseTransport
|
||||
)
|
||||
);
|
||||
52
applications/solvers/lagrangian/DPMFoam/pEqn.H
Normal file
52
applications/solvers/lagrangian/DPMFoam/pEqn.H
Normal file
@ -0,0 +1,52 @@
|
||||
{
|
||||
volVectorField HbyA("HbyA", Uc);
|
||||
HbyA = rAUc*UcEqn.H();
|
||||
|
||||
surfaceScalarField phiHbyA
|
||||
(
|
||||
"phiHbyA",
|
||||
(
|
||||
(fvc::interpolate(HbyA) & mesh.Sf())
|
||||
+ alphacf*rAUcf*fvc::ddtCorr(Uc, phic)
|
||||
+ phicForces
|
||||
)
|
||||
);
|
||||
|
||||
// Update the fixedFluxPressure BCs to ensure flux consistency
|
||||
setSnGrad<fixedFluxPressureFvPatchScalarField>
|
||||
(
|
||||
p.boundaryField(),
|
||||
(
|
||||
phiHbyA.boundaryField()
|
||||
- (mesh.Sf().boundaryField() & Uc.boundaryField())
|
||||
)/(mesh.magSf().boundaryField()*rAUcf.boundaryField())
|
||||
);
|
||||
|
||||
// Non-orthogonal pressure corrector loop
|
||||
while (pimple.correctNonOrthogonal())
|
||||
{
|
||||
fvScalarMatrix pEqn
|
||||
(
|
||||
fvm::laplacian(alphacf*rAUcf, p)
|
||||
==
|
||||
fvc::ddt(alphac) + fvc::div(alphacf*phiHbyA)
|
||||
);
|
||||
|
||||
pEqn.setReference(pRefCell, pRefValue);
|
||||
|
||||
pEqn.solve(mesh.solver(p.select(pimple.finalInnerIter())));
|
||||
|
||||
if (pimple.finalNonOrthogonalIter())
|
||||
{
|
||||
phic = phiHbyA - pEqn.flux()/alphacf;
|
||||
|
||||
p.relax();
|
||||
|
||||
Uc = HbyA
|
||||
+ rAUc*fvc::reconstruct((phicForces - pEqn.flux()/alphacf)/rAUcf);
|
||||
Uc.correctBoundaryConditions();
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
#include "continuityErrs.H"
|
||||
@ -30,6 +30,9 @@ License
|
||||
|
||||
#include "SphereDragForce.H"
|
||||
#include "NonSphereDragForce.H"
|
||||
#include "WenYuDragForce.H"
|
||||
#include "ErgunWenYuDragForce.H"
|
||||
#include "PlessisMasliyahDragForce.H"
|
||||
|
||||
#include "SaffmanMeiLiftForce.H"
|
||||
#include "TomiyamaLiftForce.H"
|
||||
@ -48,6 +51,9 @@ License
|
||||
makeParticleForceModel(CloudType); \
|
||||
makeParticleForceModelType(SphereDragForce, CloudType); \
|
||||
makeParticleForceModelType(NonSphereDragForce, CloudType); \
|
||||
makeParticleForceModelType(WenYuDragForce, CloudType); \
|
||||
makeParticleForceModelType(ErgunWenYuDragForce, CloudType); \
|
||||
makeParticleForceModelType(PlessisMasliyahDragForce, CloudType); \
|
||||
makeParticleForceModelType(SaffmanMeiLiftForce, CloudType); \
|
||||
makeParticleForceModelType(TomiyamaLiftForce, CloudType); \
|
||||
makeParticleForceModelType(GravityForce, CloudType); \
|
||||
|
||||
@ -0,0 +1,128 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2013 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM 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.
|
||||
|
||||
OpenFOAM 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 OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "ErgunWenYuDragForce.H"
|
||||
#include "volFields.H"
|
||||
|
||||
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
|
||||
|
||||
template<class CloudType>
|
||||
Foam::scalar Foam::ErgunWenYuDragForce<CloudType>::CdRe
|
||||
(
|
||||
const scalar Re
|
||||
) const
|
||||
{
|
||||
if (Re > 1000.0)
|
||||
{
|
||||
return 0.44*Re;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 24.0*(1.0 + 0.15*pow(Re, 0.687));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
template<class CloudType>
|
||||
Foam::ErgunWenYuDragForce<CloudType>::ErgunWenYuDragForce
|
||||
(
|
||||
CloudType& owner,
|
||||
const fvMesh& mesh,
|
||||
const dictionary& dict
|
||||
)
|
||||
:
|
||||
ParticleForce<CloudType>(owner, mesh, dict, typeName, true),
|
||||
alphac_
|
||||
(
|
||||
this->mesh().template lookupObject<volScalarField>
|
||||
(
|
||||
this->coeffs().lookup("alphac")
|
||||
)
|
||||
)
|
||||
{}
|
||||
|
||||
|
||||
template<class CloudType>
|
||||
Foam::ErgunWenYuDragForce<CloudType>::ErgunWenYuDragForce
|
||||
(
|
||||
const ErgunWenYuDragForce<CloudType>& df
|
||||
)
|
||||
:
|
||||
ParticleForce<CloudType>(df),
|
||||
alphac_
|
||||
(
|
||||
this->mesh().template lookupObject<volScalarField>
|
||||
(
|
||||
this->coeffs().lookup("alphac")
|
||||
)
|
||||
)
|
||||
{}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||
|
||||
template<class CloudType>
|
||||
Foam::ErgunWenYuDragForce<CloudType>::~ErgunWenYuDragForce()
|
||||
{}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
template<class CloudType>
|
||||
Foam::forceSuSp Foam::ErgunWenYuDragForce<CloudType>::calcCoupled
|
||||
(
|
||||
const typename CloudType::parcelType& p,
|
||||
const scalar dt,
|
||||
const scalar mass,
|
||||
const scalar Re,
|
||||
const scalar muc
|
||||
) const
|
||||
{
|
||||
scalar alphac(alphac_[p.cell()]);
|
||||
|
||||
if (alphac < 0.8)
|
||||
{
|
||||
return forceSuSp
|
||||
(
|
||||
vector::zero,
|
||||
(mass/p.rho())
|
||||
*(150.0*(1.0 - alphac) + 1.75*Re)*muc/(alphac*sqr(p.d()))
|
||||
);
|
||||
}
|
||||
else
|
||||
{
|
||||
return forceSuSp
|
||||
(
|
||||
vector::zero,
|
||||
(mass/p.rho())
|
||||
*0.75*CdRe(alphac*Re)*muc*pow(alphac, -2.65)/sqr(p.d())
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,127 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2013 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM 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.
|
||||
|
||||
OpenFOAM 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 OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Class
|
||||
Foam::ErgunWenYuDragForce
|
||||
|
||||
Description
|
||||
Ergun-Wen-Yu drag model for solid spheres.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef ErgunWenYuDragForce_H
|
||||
#define ErgunWenYuDragForce_H
|
||||
|
||||
#include "ParticleForce.H"
|
||||
#include "volFieldsFwd.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
/*---------------------------------------------------------------------------*\
|
||||
Class ErgunWenYuDragForce Declaration
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
template<class CloudType>
|
||||
class ErgunWenYuDragForce
|
||||
:
|
||||
public ParticleForce<CloudType>
|
||||
{
|
||||
// Private Data
|
||||
|
||||
//- Reference to the carrier volume fraction field
|
||||
const volScalarField& alphac_;
|
||||
|
||||
|
||||
// Private Member Functions
|
||||
|
||||
//- Drag coefficient multiplied by Reynolds number
|
||||
scalar CdRe(const scalar Re) const;
|
||||
|
||||
|
||||
public:
|
||||
|
||||
//- Runtime type information
|
||||
TypeName("ErgunWenYuDrag");
|
||||
|
||||
|
||||
// Constructors
|
||||
|
||||
//- Construct from mesh
|
||||
ErgunWenYuDragForce
|
||||
(
|
||||
CloudType& owner,
|
||||
const fvMesh& mesh,
|
||||
const dictionary& dict
|
||||
);
|
||||
|
||||
//- Construct copy
|
||||
ErgunWenYuDragForce(const ErgunWenYuDragForce<CloudType>& df);
|
||||
|
||||
//- Construct and return a clone
|
||||
virtual autoPtr<ParticleForce<CloudType> > clone() const
|
||||
{
|
||||
return autoPtr<ParticleForce<CloudType> >
|
||||
(
|
||||
new ErgunWenYuDragForce<CloudType>(*this)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
//- Destructor
|
||||
virtual ~ErgunWenYuDragForce();
|
||||
|
||||
|
||||
// Member Functions
|
||||
|
||||
// Evaluation
|
||||
|
||||
//- Calculate the coupled force
|
||||
virtual forceSuSp calcCoupled
|
||||
(
|
||||
const typename CloudType::parcelType& p,
|
||||
const scalar dt,
|
||||
const scalar mass,
|
||||
const scalar Re,
|
||||
const scalar muc
|
||||
) const;
|
||||
};
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#ifdef NoRepository
|
||||
# include "ErgunWenYuDragForce.C"
|
||||
#endif
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,131 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2013 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM 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.
|
||||
|
||||
OpenFOAM 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 OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "PlessisMasliyahDragForce.H"
|
||||
#include "volFields.H"
|
||||
|
||||
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
|
||||
|
||||
template<class CloudType>
|
||||
Foam::scalar Foam::PlessisMasliyahDragForce<CloudType>::CdRe
|
||||
(
|
||||
const scalar Re
|
||||
) const
|
||||
{
|
||||
if (Re > 1000.0)
|
||||
{
|
||||
return 0.44*Re;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 24.0*(1.0 + 0.15*pow(Re, 0.687));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
template<class CloudType>
|
||||
Foam::PlessisMasliyahDragForce<CloudType>::PlessisMasliyahDragForce
|
||||
(
|
||||
CloudType& owner,
|
||||
const fvMesh& mesh,
|
||||
const dictionary& dict
|
||||
)
|
||||
:
|
||||
ParticleForce<CloudType>(owner, mesh, dict, typeName, true),
|
||||
alphac_
|
||||
(
|
||||
this->mesh().template lookupObject<volScalarField>
|
||||
(
|
||||
this->coeffs().lookup("alphac")
|
||||
)
|
||||
)
|
||||
{}
|
||||
|
||||
|
||||
template<class CloudType>
|
||||
Foam::PlessisMasliyahDragForce<CloudType>::PlessisMasliyahDragForce
|
||||
(
|
||||
const PlessisMasliyahDragForce<CloudType>& df
|
||||
)
|
||||
:
|
||||
ParticleForce<CloudType>(df),
|
||||
alphac_
|
||||
(
|
||||
this->mesh().template lookupObject<volScalarField>
|
||||
(
|
||||
this->coeffs().lookup("alphac")
|
||||
)
|
||||
)
|
||||
{}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||
|
||||
template<class CloudType>
|
||||
Foam::PlessisMasliyahDragForce<CloudType>::~PlessisMasliyahDragForce()
|
||||
{}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
template<class CloudType>
|
||||
Foam::forceSuSp Foam::PlessisMasliyahDragForce<CloudType>::calcCoupled
|
||||
(
|
||||
const typename CloudType::parcelType& p,
|
||||
const scalar dt,
|
||||
const scalar mass,
|
||||
const scalar Re,
|
||||
const scalar muc
|
||||
) const
|
||||
{
|
||||
scalar alphac(alphac_[p.cell()]);
|
||||
|
||||
scalar cbrtAlphap(pow(1.0 - alphac, 1.0/3.0));
|
||||
|
||||
scalar A =
|
||||
26.8*pow3(alphac)
|
||||
/(
|
||||
sqr(cbrtAlphap)
|
||||
*(1.0 - cbrtAlphap)
|
||||
*sqr(1.0 - sqr(cbrtAlphap))
|
||||
+ SMALL
|
||||
);
|
||||
|
||||
scalar B =
|
||||
sqr(alphac)
|
||||
/sqr(1.0 - sqr(cbrtAlphap));
|
||||
|
||||
return forceSuSp
|
||||
(
|
||||
vector::zero,
|
||||
(mass/p.rho())
|
||||
*(A*(1.0 - alphac) + B*Re)*muc/(alphac*sqr(p.d()))
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,127 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2013 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM 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.
|
||||
|
||||
OpenFOAM 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 OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Class
|
||||
Foam::PlessisMasliyahDragForce
|
||||
|
||||
Description
|
||||
PlessisMasliyahDragForce drag model for solid spheres.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef PlessisMasliyahDragForce_H
|
||||
#define PlessisMasliyahDragForce_H
|
||||
|
||||
#include "ParticleForce.H"
|
||||
#include "volFieldsFwd.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
/*---------------------------------------------------------------------------*\
|
||||
Class PlessisMasliyahDragForce Declaration
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
template<class CloudType>
|
||||
class PlessisMasliyahDragForce
|
||||
:
|
||||
public ParticleForce<CloudType>
|
||||
{
|
||||
// Private Data
|
||||
|
||||
//- Reference to the carrier volume fraction field
|
||||
const volScalarField& alphac_;
|
||||
|
||||
|
||||
// Private Member Functions
|
||||
|
||||
//- Drag coefficient multiplied by Reynolds number
|
||||
scalar CdRe(const scalar Re) const;
|
||||
|
||||
|
||||
public:
|
||||
|
||||
//- Runtime type information
|
||||
TypeName("PlessisMasliyahDragForce");
|
||||
|
||||
|
||||
// Constructors
|
||||
|
||||
//- Construct from mesh
|
||||
PlessisMasliyahDragForce
|
||||
(
|
||||
CloudType& owner,
|
||||
const fvMesh& mesh,
|
||||
const dictionary& dict
|
||||
);
|
||||
|
||||
//- Construct copy
|
||||
PlessisMasliyahDragForce(const PlessisMasliyahDragForce<CloudType>& df);
|
||||
|
||||
//- Construct and return a clone
|
||||
virtual autoPtr<ParticleForce<CloudType> > clone() const
|
||||
{
|
||||
return autoPtr<ParticleForce<CloudType> >
|
||||
(
|
||||
new PlessisMasliyahDragForce<CloudType>(*this)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
//- Destructor
|
||||
virtual ~PlessisMasliyahDragForce();
|
||||
|
||||
|
||||
// Member Functions
|
||||
|
||||
// Evaluation
|
||||
|
||||
//- Calculate the coupled force
|
||||
virtual forceSuSp calcCoupled
|
||||
(
|
||||
const typename CloudType::parcelType& p,
|
||||
const scalar dt,
|
||||
const scalar mass,
|
||||
const scalar Re,
|
||||
const scalar muc
|
||||
) const;
|
||||
};
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#ifdef NoRepository
|
||||
# include "PlessisMasliyahDragForce.C"
|
||||
#endif
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,113 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2013 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM 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.
|
||||
|
||||
OpenFOAM 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 OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#include "WenYuDragForce.H"
|
||||
#include "volFields.H"
|
||||
|
||||
// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * //
|
||||
|
||||
template<class CloudType>
|
||||
Foam::scalar Foam::WenYuDragForce<CloudType>::CdRe(const scalar Re) const
|
||||
{
|
||||
if (Re > 1000.0)
|
||||
{
|
||||
return 0.44*Re;
|
||||
}
|
||||
else
|
||||
{
|
||||
return 24.0*(1.0 + 0.15*pow(Re, 0.687));
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
|
||||
|
||||
template<class CloudType>
|
||||
Foam::WenYuDragForce<CloudType>::WenYuDragForce
|
||||
(
|
||||
CloudType& owner,
|
||||
const fvMesh& mesh,
|
||||
const dictionary& dict
|
||||
)
|
||||
:
|
||||
ParticleForce<CloudType>(owner, mesh, dict, typeName, true),
|
||||
alphac_
|
||||
(
|
||||
this->mesh().template lookupObject<volScalarField>
|
||||
(
|
||||
this->coeffs().lookup("alphac")
|
||||
)
|
||||
)
|
||||
{}
|
||||
|
||||
|
||||
template<class CloudType>
|
||||
Foam::WenYuDragForce<CloudType>::WenYuDragForce
|
||||
(
|
||||
const WenYuDragForce<CloudType>& df
|
||||
)
|
||||
:
|
||||
ParticleForce<CloudType>(df),
|
||||
alphac_
|
||||
(
|
||||
this->mesh().template lookupObject<volScalarField>
|
||||
(
|
||||
this->coeffs().lookup("alphac")
|
||||
)
|
||||
)
|
||||
{}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * //
|
||||
|
||||
template<class CloudType>
|
||||
Foam::WenYuDragForce<CloudType>::~WenYuDragForce()
|
||||
{}
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * //
|
||||
|
||||
template<class CloudType>
|
||||
Foam::forceSuSp Foam::WenYuDragForce<CloudType>::calcCoupled
|
||||
(
|
||||
const typename CloudType::parcelType& p,
|
||||
const scalar dt,
|
||||
const scalar mass,
|
||||
const scalar Re,
|
||||
const scalar muc
|
||||
) const
|
||||
{
|
||||
scalar alphac(alphac_[p.cell()]);
|
||||
|
||||
return forceSuSp
|
||||
(
|
||||
vector::zero,
|
||||
(mass/p.rho())
|
||||
*0.75*CdRe(alphac*Re)*muc*pow(alphac, -2.65)/sqr(p.d())
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,127 @@
|
||||
/*---------------------------------------------------------------------------*\
|
||||
========= |
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2013 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
|
||||
OpenFOAM 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.
|
||||
|
||||
OpenFOAM 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 OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
Class
|
||||
Foam::WenYuDragForce
|
||||
|
||||
Description
|
||||
Wen-Yu drag model for solid spheres.
|
||||
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
#ifndef WenYuDragForce_H
|
||||
#define WenYuDragForce_H
|
||||
|
||||
#include "ParticleForce.H"
|
||||
#include "volFieldsFwd.H"
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
namespace Foam
|
||||
{
|
||||
|
||||
/*---------------------------------------------------------------------------*\
|
||||
Class WenYuDragForce Declaration
|
||||
\*---------------------------------------------------------------------------*/
|
||||
|
||||
template<class CloudType>
|
||||
class WenYuDragForce
|
||||
:
|
||||
public ParticleForce<CloudType>
|
||||
{
|
||||
// Private Data
|
||||
|
||||
//- Reference to the carrier volume fraction field
|
||||
const volScalarField& alphac_;
|
||||
|
||||
|
||||
// Private Member Functions
|
||||
|
||||
//- Drag coefficient multiplied by Reynolds number
|
||||
scalar CdRe(const scalar Re) const;
|
||||
|
||||
|
||||
public:
|
||||
|
||||
//- Runtime type information
|
||||
TypeName("WenYuDragForce");
|
||||
|
||||
|
||||
// Constructors
|
||||
|
||||
//- Construct from mesh
|
||||
WenYuDragForce
|
||||
(
|
||||
CloudType& owner,
|
||||
const fvMesh& mesh,
|
||||
const dictionary& dict
|
||||
);
|
||||
|
||||
//- Construct copy
|
||||
WenYuDragForce(const WenYuDragForce<CloudType>& df);
|
||||
|
||||
//- Construct and return a clone
|
||||
virtual autoPtr<ParticleForce<CloudType> > clone() const
|
||||
{
|
||||
return autoPtr<ParticleForce<CloudType> >
|
||||
(
|
||||
new WenYuDragForce<CloudType>(*this)
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
//- Destructor
|
||||
virtual ~WenYuDragForce();
|
||||
|
||||
|
||||
// Member Functions
|
||||
|
||||
// Evaluation
|
||||
|
||||
//- Calculate the coupled force
|
||||
virtual forceSuSp calcCoupled
|
||||
(
|
||||
const typename CloudType::parcelType& p,
|
||||
const scalar dt,
|
||||
const scalar mass,
|
||||
const scalar Re,
|
||||
const scalar muc
|
||||
) const;
|
||||
};
|
||||
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
} // End namespace Foam
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#ifdef NoRepository
|
||||
# include "WenYuDragForce.C"
|
||||
#endif
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
#endif
|
||||
|
||||
// ************************************************************************* //
|
||||
54
tutorials/lagrangian/DPMFoam/Goldschmidt/0/U.air
Normal file
54
tutorials/lagrangian/DPMFoam/Goldschmidt/0/U.air
Normal file
@ -0,0 +1,54 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: dev |
|
||||
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format binary;
|
||||
class volVectorField;
|
||||
location "0";
|
||||
object U.air;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
dimensions [0 1 -1 0 0 0 0];
|
||||
|
||||
internalField uniform (0 0 0);
|
||||
|
||||
boundaryField
|
||||
{
|
||||
walls
|
||||
{
|
||||
type fixedValue;
|
||||
value uniform (0 0 0);
|
||||
}
|
||||
|
||||
top
|
||||
{
|
||||
type pressureInletOutletVelocity;
|
||||
phi phi.air;
|
||||
inletValue uniform (0 0 0);
|
||||
value uniform (0 0 0);
|
||||
}
|
||||
|
||||
bottom
|
||||
{
|
||||
type interstitialInletVelocity;
|
||||
inletVelocity uniform (0 0 1.875);
|
||||
value uniform (0 0 1.875);
|
||||
phi phi.air;
|
||||
alpha alpha.air;
|
||||
}
|
||||
|
||||
frontAndBack
|
||||
{
|
||||
type symmetry;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
50
tutorials/lagrangian/DPMFoam/Goldschmidt/0/p
Normal file
50
tutorials/lagrangian/DPMFoam/Goldschmidt/0/p
Normal file
@ -0,0 +1,50 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: dev |
|
||||
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class volScalarField;
|
||||
object p;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
dimensions [0 2 -2 0 0 0 0];
|
||||
|
||||
internalField uniform 0;
|
||||
|
||||
boundaryField
|
||||
{
|
||||
walls
|
||||
{
|
||||
type fixedFluxPressure;
|
||||
phi phi.air;
|
||||
value $internalField;
|
||||
}
|
||||
|
||||
bottom
|
||||
{
|
||||
type fixedFluxPressure;
|
||||
phi phi.air;
|
||||
value $internalField;
|
||||
}
|
||||
|
||||
top
|
||||
{
|
||||
type fixedValue;
|
||||
phi phi.air;
|
||||
value $internalField;
|
||||
}
|
||||
|
||||
frontAndBack
|
||||
{
|
||||
type symmetry;
|
||||
}
|
||||
}
|
||||
|
||||
// ************************************************************************* //
|
||||
22
tutorials/lagrangian/DPMFoam/Goldschmidt/constant/g
Normal file
22
tutorials/lagrangian/DPMFoam/Goldschmidt/constant/g
Normal file
@ -0,0 +1,22 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: dev |
|
||||
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class uniformDimensionedVectorField;
|
||||
location "constant";
|
||||
object g;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
dimensions [0 1 -2 0 0 0 0];
|
||||
value ( 0 0 -9.81 );
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
File diff suppressed because it is too large
Load Diff
@ -0,0 +1,188 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: dev |
|
||||
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
location "constant";
|
||||
object particleProperties;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
solution
|
||||
{
|
||||
active true;
|
||||
coupled true;
|
||||
transient yes;
|
||||
cellValueSourceCorrection off;
|
||||
|
||||
interpolationSchemes
|
||||
{
|
||||
rho.air cell;
|
||||
U.air cellPoint;
|
||||
mu.air cell;
|
||||
}
|
||||
|
||||
integrationSchemes
|
||||
{
|
||||
U Euler;
|
||||
}
|
||||
|
||||
sourceTerms
|
||||
{
|
||||
schemes
|
||||
{
|
||||
U semiImplicit 1;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
constantProperties
|
||||
{
|
||||
parcelTypeId 1;
|
||||
|
||||
rhoMin 1e-15;
|
||||
minParticleMass 1e-15;
|
||||
|
||||
rho0 2526;
|
||||
youngsModulus 1e8;
|
||||
poissonsRatio 0.35;
|
||||
|
||||
constantVolume false;
|
||||
|
||||
alphaMax 0.99;
|
||||
}
|
||||
|
||||
subModels
|
||||
{
|
||||
particleForces
|
||||
{
|
||||
ErgunWenYuDrag
|
||||
{
|
||||
alphac alpha.air;
|
||||
}
|
||||
gravity;
|
||||
}
|
||||
|
||||
injectionModels
|
||||
{
|
||||
model1
|
||||
{
|
||||
type manualInjection;
|
||||
massTotal 0;
|
||||
parcelBasisType fixed;
|
||||
nParticle 1;
|
||||
SOI 0;
|
||||
positionsFile "kinematicCloudPositions";
|
||||
U0 ( 0 0 0 );
|
||||
sizeDistribution
|
||||
{
|
||||
type fixedValue;
|
||||
fixedValueDistribution
|
||||
{
|
||||
value 0.0025;
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
dispersionModel none;
|
||||
|
||||
patchInteractionModel localInteraction;
|
||||
|
||||
localInteractionCoeffs
|
||||
{
|
||||
patches
|
||||
(
|
||||
top
|
||||
{
|
||||
type rebound;
|
||||
e 0.97;
|
||||
mu 0.09;
|
||||
}
|
||||
bottom
|
||||
{
|
||||
type rebound;
|
||||
e 0.97;
|
||||
mu 0.09;
|
||||
}
|
||||
walls
|
||||
{
|
||||
type rebound;
|
||||
e 0.97;
|
||||
mu 0.09;
|
||||
}
|
||||
frontAndBack
|
||||
{
|
||||
type rebound;
|
||||
e 0.97;
|
||||
mu 0.09;
|
||||
}
|
||||
);
|
||||
}
|
||||
|
||||
StandardWallInteractionCoeffs
|
||||
{
|
||||
type rebound;
|
||||
e 0.97;
|
||||
mu 0.09;
|
||||
}
|
||||
|
||||
heatTransferModel none;
|
||||
|
||||
surfaceFilmModel none;
|
||||
|
||||
collisionModel pairCollision;
|
||||
|
||||
pairCollisionCoeffs
|
||||
{
|
||||
maxInteractionDistance 0.0025;
|
||||
|
||||
writeReferredParticleCloud no;
|
||||
|
||||
pairModel pairSpringSliderDashpot;
|
||||
|
||||
pairSpringSliderDashpotCoeffs
|
||||
{
|
||||
useEquivalentSize no;
|
||||
alpha 0.02;
|
||||
b 1.5;
|
||||
mu 0.10;
|
||||
cohesionEnergyDensity 0;
|
||||
collisionResolutionSteps 12;
|
||||
};
|
||||
|
||||
wallModel wallSpringSliderDashpot;
|
||||
|
||||
wallSpringSliderDashpotCoeffs
|
||||
{
|
||||
useEquivalentSize no;
|
||||
collisionResolutionSteps 12;
|
||||
youngsModulus 1e8;
|
||||
poissonsRatio 0.23;
|
||||
alpha 0.01;
|
||||
b 1.5;
|
||||
mu 0.09;
|
||||
cohesionEnergyDensity 0;
|
||||
};
|
||||
|
||||
UName U.air;
|
||||
}
|
||||
|
||||
stochasticCollisionModel none;
|
||||
|
||||
radiation off;
|
||||
}
|
||||
|
||||
|
||||
cloudFunctions
|
||||
{}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,82 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: dev |
|
||||
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
object blockMeshDict;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
convertToMeters 0.001;
|
||||
|
||||
vertices
|
||||
(
|
||||
(-7.5 -75 0)
|
||||
( 7.5 -75 0)
|
||||
( 7.5 75 0)
|
||||
(-7.5 75 0)
|
||||
(-7.5 -75 450)
|
||||
( 7.5 -75 450)
|
||||
( 7.5 75 450)
|
||||
(-7.5 75 450)
|
||||
);
|
||||
|
||||
blocks
|
||||
(
|
||||
//hex (0 1 2 3 4 5 6 7) (1 15 45) simpleGrading (1 1 1)
|
||||
hex (0 1 2 3 4 5 6 7) (2 30 90) simpleGrading (1 1 1)
|
||||
);
|
||||
|
||||
edges
|
||||
(
|
||||
);
|
||||
|
||||
boundary
|
||||
(
|
||||
top
|
||||
{
|
||||
type wall;
|
||||
faces
|
||||
(
|
||||
(4 5 6 7)
|
||||
);
|
||||
}
|
||||
|
||||
bottom
|
||||
{
|
||||
type wall;
|
||||
faces
|
||||
(
|
||||
(0 1 2 3)
|
||||
);
|
||||
}
|
||||
|
||||
walls
|
||||
{
|
||||
type wall;
|
||||
faces
|
||||
(
|
||||
(0 1 5 4)
|
||||
(2 3 7 6)
|
||||
);
|
||||
}
|
||||
|
||||
frontAndBack
|
||||
{
|
||||
type symmetry;
|
||||
faces
|
||||
(
|
||||
(1 2 6 5)
|
||||
(3 0 4 7)
|
||||
);
|
||||
}
|
||||
);
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,25 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: dev |
|
||||
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
location "constant";
|
||||
object transportProperties;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
contiuousPhaseName air;
|
||||
|
||||
rho.air 1.2;
|
||||
|
||||
transportModel Newtonian;
|
||||
nu 1e-05;
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,20 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: dev |
|
||||
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
location "constant";
|
||||
object turbulenceProperties.air;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
simulationType laminar;
|
||||
|
||||
// ************************************************************************* //
|
||||
48
tutorials/lagrangian/DPMFoam/Goldschmidt/system/controlDict
Normal file
48
tutorials/lagrangian/DPMFoam/Goldschmidt/system/controlDict
Normal file
@ -0,0 +1,48 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: dev |
|
||||
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
location "system";
|
||||
object controlDict;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
application DPMFoam;
|
||||
|
||||
startFrom latestTime;
|
||||
|
||||
startTime 0;
|
||||
|
||||
stopAt endTime;
|
||||
|
||||
endTime 10;
|
||||
|
||||
deltaT 2e-5;
|
||||
|
||||
writeControl runTime;
|
||||
|
||||
writeInterval 0.01;
|
||||
|
||||
purgeWrite 0;
|
||||
|
||||
writeFormat binary;
|
||||
|
||||
writePrecision 6;
|
||||
|
||||
writeCompression uncompressed;
|
||||
|
||||
timeFormat general;
|
||||
|
||||
timePrecision 6;
|
||||
|
||||
runTimeModifiable yes;
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,28 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: dev |
|
||||
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
location "system";
|
||||
object decomposeParDict;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
numberOfSubdomains 6;
|
||||
|
||||
method simple;
|
||||
|
||||
simpleCoeffs
|
||||
{
|
||||
n ( 1 6 1 );
|
||||
delta 0.001;
|
||||
}
|
||||
|
||||
// ************************************************************************* //
|
||||
57
tutorials/lagrangian/DPMFoam/Goldschmidt/system/fvSchemes
Normal file
57
tutorials/lagrangian/DPMFoam/Goldschmidt/system/fvSchemes
Normal file
@ -0,0 +1,57 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: dev |
|
||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
object fvSchemes;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
ddtSchemes
|
||||
{
|
||||
default Euler;
|
||||
}
|
||||
|
||||
gradSchemes
|
||||
{
|
||||
default Gauss linear;
|
||||
}
|
||||
|
||||
divSchemes
|
||||
{
|
||||
default none;
|
||||
|
||||
div(alphaPhic,U.air) Gauss linearUpwindV unlimited;
|
||||
div(((alpha.air*nuEff)*dev2(T(grad(U.air))))) Gauss linear;
|
||||
}
|
||||
|
||||
laplacianSchemes
|
||||
{
|
||||
default Gauss linear corrected;
|
||||
}
|
||||
|
||||
interpolationSchemes
|
||||
{
|
||||
default linear;
|
||||
}
|
||||
|
||||
snGradSchemes
|
||||
{
|
||||
default corrected;
|
||||
}
|
||||
|
||||
fluxRequired
|
||||
{
|
||||
default no;
|
||||
p;
|
||||
kinematicCloud:theta;
|
||||
}
|
||||
|
||||
// ************************************************************************* //
|
||||
76
tutorials/lagrangian/DPMFoam/Goldschmidt/system/fvSolution
Normal file
76
tutorials/lagrangian/DPMFoam/Goldschmidt/system/fvSolution
Normal file
@ -0,0 +1,76 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: dev |
|
||||
| \\ / A nd | Web: www.OpenFOAM.com |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
location "system";
|
||||
object fvSolution;
|
||||
}
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
solvers
|
||||
{
|
||||
"(p|kinematicCloud:theta)"
|
||||
{
|
||||
solver GAMG;
|
||||
tolerance 1e-06;
|
||||
relTol 0.01;
|
||||
smoother GaussSeidel;
|
||||
cacheAgglomeration true;
|
||||
nCellsInCoarsestLevel 10;
|
||||
agglomerator faceAreaPair;
|
||||
mergeLevels 1;
|
||||
}
|
||||
|
||||
"(p|kinematicCloud:theta)Final"
|
||||
{
|
||||
solver GAMG;
|
||||
tolerance 1e-06;
|
||||
relTol 0;
|
||||
smoother GaussSeidel;
|
||||
cacheAgglomeration true;
|
||||
nCellsInCoarsestLevel 10;
|
||||
agglomerator faceAreaPair;
|
||||
mergeLevels 1;
|
||||
}
|
||||
|
||||
"(U.air|k|omega)"
|
||||
{
|
||||
solver PBiCG;
|
||||
preconditioner DILU;
|
||||
tolerance 1e-05;
|
||||
relTol 0.1;
|
||||
}
|
||||
|
||||
"(U.air|k|omega)Final"
|
||||
{
|
||||
solver PBiCG;
|
||||
preconditioner DILU;
|
||||
tolerance 1e-05;
|
||||
relTol 0;
|
||||
}
|
||||
}
|
||||
|
||||
PIMPLE
|
||||
{
|
||||
nOuterCorrectors 1;
|
||||
nCorrectors 2;
|
||||
momentumPredictor yes;
|
||||
nNonOrthogonalCorrectors 0;
|
||||
pRefCell 0;
|
||||
pRefValue 0;
|
||||
}
|
||||
|
||||
relaxationFactors
|
||||
{
|
||||
}
|
||||
|
||||
|
||||
// ************************************************************************* //
|
||||
@ -0,0 +1,29 @@
|
||||
/*--------------------------------*- C++ -*----------------------------------*\
|
||||
| ========= | |
|
||||
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
|
||||
| \\ / O peration | Version: dev |
|
||||
| \\ / A nd | Web: www.OpenFOAM.org |
|
||||
| \\/ M anipulation | |
|
||||
\*---------------------------------------------------------------------------*/
|
||||
FoamFile
|
||||
{
|
||||
version 2.0;
|
||||
format ascii;
|
||||
class dictionary;
|
||||
object mapFieldsDict;
|
||||
}
|
||||
|
||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||
|
||||
// List of pairs of source/target patches for mapping
|
||||
patchMap
|
||||
(
|
||||
);
|
||||
|
||||
// List of target patches cutting the source domain (these need to be
|
||||
// handled specially e.g. interpolated from internal values)
|
||||
cuttingPatches
|
||||
(
|
||||
);
|
||||
|
||||
// ************************************************************************* //
|
||||
Reference in New Issue
Block a user