mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
MMULES: new development of the MULES limiter to support limiting the sum of phase-fractions
multiphaseInterFoam: Upgraded to use the new MMULES algorithm
This commit is contained in:
@ -27,11 +27,13 @@ License
|
|||||||
#include "alphaContactAngleFvPatchScalarField.H"
|
#include "alphaContactAngleFvPatchScalarField.H"
|
||||||
#include "Time.H"
|
#include "Time.H"
|
||||||
#include "subCycle.H"
|
#include "subCycle.H"
|
||||||
#include "fvCFD.H"
|
#include "MULES.H"
|
||||||
|
#include "fvcSnGrad.H"
|
||||||
|
#include "fvcFlux.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * Static Member Data * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * Static Member Data * * * * * * * * * * * * //
|
||||||
|
|
||||||
const scalar Foam::multiphaseMixture::convertToRad =
|
const Foam::scalar Foam::multiphaseMixture::convertToRad =
|
||||||
Foam::constant::mathematical::pi/180.0;
|
Foam::constant::mathematical::pi/180.0;
|
||||||
|
|
||||||
|
|
||||||
@ -249,10 +251,6 @@ void Foam::multiphaseMixture::solve()
|
|||||||
|
|
||||||
label nAlphaSubCycles(readLabel(pimpleDict.lookup("nAlphaSubCycles")));
|
label nAlphaSubCycles(readLabel(pimpleDict.lookup("nAlphaSubCycles")));
|
||||||
|
|
||||||
label nAlphaCorr(readLabel(pimpleDict.lookup("nAlphaCorr")));
|
|
||||||
|
|
||||||
bool cycleAlpha(Switch(pimpleDict.lookup("cycleAlpha")));
|
|
||||||
|
|
||||||
scalar cAlpha(readScalar(pimpleDict.lookup("cAlpha")));
|
scalar cAlpha(readScalar(pimpleDict.lookup("cAlpha")));
|
||||||
|
|
||||||
|
|
||||||
@ -269,7 +267,7 @@ void Foam::multiphaseMixture::solve()
|
|||||||
!(++alphaSubCycle).end();
|
!(++alphaSubCycle).end();
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
solveAlphas(nAlphaCorr, cycleAlpha, cAlpha);
|
solveAlphas(cAlpha);
|
||||||
rhoPhiSum += (runTime.deltaT()/totalDeltaT)*rhoPhi_;
|
rhoPhiSum += (runTime.deltaT()/totalDeltaT)*rhoPhi_;
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -277,7 +275,7 @@ void Foam::multiphaseMixture::solve()
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
solveAlphas(nAlphaCorr, cycleAlpha, cAlpha);
|
solveAlphas(cAlpha);
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -481,8 +479,6 @@ Foam::multiphaseMixture::nearInterface() const
|
|||||||
|
|
||||||
void Foam::multiphaseMixture::solveAlphas
|
void Foam::multiphaseMixture::solveAlphas
|
||||||
(
|
(
|
||||||
const label nAlphaCorr,
|
|
||||||
const bool cycleAlpha,
|
|
||||||
const scalar cAlpha
|
const scalar cAlpha
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
@ -490,92 +486,108 @@ void Foam::multiphaseMixture::solveAlphas
|
|||||||
nSolves++;
|
nSolves++;
|
||||||
|
|
||||||
word alphaScheme("div(phi,alpha)");
|
word alphaScheme("div(phi,alpha)");
|
||||||
word alphacScheme("div(phirb,alpha)");
|
word alpharScheme("div(phirb,alpha)");
|
||||||
|
|
||||||
tmp<fv::convectionScheme<scalar> > mvConvection
|
|
||||||
(
|
|
||||||
fv::convectionScheme<scalar>::New
|
|
||||||
(
|
|
||||||
mesh_,
|
|
||||||
alphaTable_,
|
|
||||||
phi_,
|
|
||||||
mesh_.divScheme(alphaScheme)
|
|
||||||
)
|
|
||||||
);
|
|
||||||
|
|
||||||
surfaceScalarField phic(mag(phi_/mesh_.magSf()));
|
surfaceScalarField phic(mag(phi_/mesh_.magSf()));
|
||||||
phic = min(cAlpha*phic, max(phic));
|
phic = min(cAlpha*phic, max(phic));
|
||||||
|
|
||||||
for (int gCorr=0; gCorr<nAlphaCorr; gCorr++)
|
PtrList<surfaceScalarField> phiAlphaCorrs(phases_.size());
|
||||||
|
int phasei = 0;
|
||||||
|
|
||||||
|
forAllIter(PtrDictionary<phase>, phases_, iter)
|
||||||
{
|
{
|
||||||
phase* refPhasePtr = &refPhase_;
|
phase& alpha = iter();
|
||||||
|
|
||||||
if (cycleAlpha)
|
phiAlphaCorrs.set
|
||||||
{
|
(
|
||||||
PtrDictionary<phase>::iterator refPhaseIter = phases_.begin();
|
phasei,
|
||||||
for (label i=0; i<nSolves%phases_.size(); i++)
|
new surfaceScalarField
|
||||||
{
|
|
||||||
++refPhaseIter;
|
|
||||||
}
|
|
||||||
refPhasePtr = &refPhaseIter();
|
|
||||||
}
|
|
||||||
|
|
||||||
phase& refPhase = *refPhasePtr;
|
|
||||||
|
|
||||||
volScalarField refPhaseNew(refPhase);
|
|
||||||
refPhaseNew == 1.0;
|
|
||||||
|
|
||||||
rhoPhi_ = phi_*refPhase.rho();
|
|
||||||
|
|
||||||
forAllIter(PtrDictionary<phase>, phases_, iter)
|
|
||||||
{
|
|
||||||
phase& alpha = iter();
|
|
||||||
|
|
||||||
if (&alpha == &refPhase) continue;
|
|
||||||
|
|
||||||
fvScalarMatrix alphaEqn
|
|
||||||
(
|
(
|
||||||
fvm::ddt(alpha)
|
fvc::flux
|
||||||
+ mvConvection->fvmDiv(phi_, alpha)
|
|
||||||
);
|
|
||||||
|
|
||||||
forAllIter(PtrDictionary<phase>, phases_, iter2)
|
|
||||||
{
|
|
||||||
phase& alpha2 = iter2();
|
|
||||||
|
|
||||||
if (&alpha2 == &alpha) continue;
|
|
||||||
|
|
||||||
surfaceScalarField phir(phic*nHatf(alpha, alpha2));
|
|
||||||
surfaceScalarField phirb12
|
|
||||||
(
|
(
|
||||||
-fvc::flux(-phir, alpha2, alphacScheme)
|
phi_,
|
||||||
);
|
alpha,
|
||||||
|
alphaScheme
|
||||||
|
)
|
||||||
|
)
|
||||||
|
);
|
||||||
|
|
||||||
alphaEqn += fvm::div(phirb12, alpha, alphacScheme);
|
surfaceScalarField& phiAlphaCorr = phiAlphaCorrs[phasei];
|
||||||
}
|
|
||||||
|
|
||||||
alphaEqn.solve(mesh_.solver("alpha"));
|
forAllIter(PtrDictionary<phase>, phases_, iter2)
|
||||||
|
{
|
||||||
|
phase& alpha2 = iter2();
|
||||||
|
|
||||||
rhoPhi_ += alphaEqn.flux()*(alpha.rho() - refPhase.rho());
|
if (&alpha2 == &alpha) continue;
|
||||||
|
|
||||||
Info<< alpha.name() << " volume fraction, min, max = "
|
surfaceScalarField phir(phic*nHatf(alpha, alpha2));
|
||||||
<< alpha.weightedAverage(mesh_.V()).value()
|
|
||||||
<< ' ' << min(alpha).value()
|
|
||||||
<< ' ' << max(alpha).value()
|
|
||||||
<< endl;
|
|
||||||
|
|
||||||
refPhaseNew == refPhaseNew - alpha;
|
phiAlphaCorr += fvc::flux
|
||||||
|
(
|
||||||
|
-fvc::flux(-phir, alpha2, alpharScheme),
|
||||||
|
alpha,
|
||||||
|
alpharScheme
|
||||||
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
refPhase == refPhaseNew;
|
MULES::limit
|
||||||
|
(
|
||||||
|
geometricOneField(),
|
||||||
|
alpha,
|
||||||
|
phi_,
|
||||||
|
phiAlphaCorr,
|
||||||
|
zeroField(),
|
||||||
|
zeroField(),
|
||||||
|
1,
|
||||||
|
0,
|
||||||
|
3,
|
||||||
|
true
|
||||||
|
);
|
||||||
|
|
||||||
Info<< refPhase.name() << " volume fraction, min, max = "
|
phasei++;
|
||||||
<< refPhase.weightedAverage(mesh_.V()).value()
|
|
||||||
<< ' ' << min(refPhase).value()
|
|
||||||
<< ' ' << max(refPhase).value()
|
|
||||||
<< endl;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
|
MULES::limitSum(phiAlphaCorrs);
|
||||||
|
|
||||||
|
rhoPhi_ = 0.0*phi_*refPhase_.rho();
|
||||||
|
volScalarField sumAlpha("sumAlpha", 0.0*refPhase_);
|
||||||
|
phasei = 0;
|
||||||
|
|
||||||
|
forAllIter(PtrDictionary<phase>, phases_, iter)
|
||||||
|
{
|
||||||
|
phase& alpha = iter();
|
||||||
|
|
||||||
|
surfaceScalarField& phiAlpha = phiAlphaCorrs[phasei];
|
||||||
|
phiAlpha += upwind<scalar>(mesh_, phi_).flux(alpha);
|
||||||
|
|
||||||
|
MULES::explicitSolve
|
||||||
|
(
|
||||||
|
geometricOneField(),
|
||||||
|
alpha,
|
||||||
|
phiAlpha,
|
||||||
|
zeroField(),
|
||||||
|
zeroField()
|
||||||
|
);
|
||||||
|
|
||||||
|
rhoPhi_ += phiAlpha*alpha.rho();
|
||||||
|
|
||||||
|
Info<< alpha.name() << " volume fraction, min, max = "
|
||||||
|
<< alpha.weightedAverage(mesh_.V()).value()
|
||||||
|
<< ' ' << min(alpha).value()
|
||||||
|
<< ' ' << max(alpha).value()
|
||||||
|
<< endl;
|
||||||
|
|
||||||
|
sumAlpha += alpha;
|
||||||
|
|
||||||
|
phasei++;
|
||||||
|
}
|
||||||
|
|
||||||
|
Info<< "Phase-sum volume fraction, min, max = "
|
||||||
|
<< sumAlpha.weightedAverage(mesh_.V()).value()
|
||||||
|
<< ' ' << min(sumAlpha).value()
|
||||||
|
<< ' ' << max(sumAlpha).value()
|
||||||
|
<< endl;
|
||||||
|
|
||||||
calcAlphas();
|
calcAlphas();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -168,12 +168,7 @@ private:
|
|||||||
|
|
||||||
void calcAlphas();
|
void calcAlphas();
|
||||||
|
|
||||||
void solveAlphas
|
void solveAlphas(const scalar cAlpha);
|
||||||
(
|
|
||||||
const label nAlphaCorr,
|
|
||||||
const bool cycleAlpha,
|
|
||||||
const scalar cAlpha
|
|
||||||
);
|
|
||||||
|
|
||||||
tmp<surfaceVectorField> nHatfv
|
tmp<surfaceVectorField> nHatfv
|
||||||
(
|
(
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd.
|
\\ / A nd | Copyright (C) 2006-2011 OpenCFD Ltd.
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -80,4 +80,60 @@ void Foam::MULES::implicitSolve
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
void Foam::MULES::limitSum(UPtrList<scalarField>& phiPsiCorrs)
|
||||||
|
{
|
||||||
|
forAll(phiPsiCorrs[0], facei)
|
||||||
|
{
|
||||||
|
scalar sumPos = 0;
|
||||||
|
scalar sumNeg = 0;
|
||||||
|
|
||||||
|
for (int phasei=0; phasei<phiPsiCorrs.size(); phasei++)
|
||||||
|
{
|
||||||
|
if (phiPsiCorrs[phasei][facei] > 0)
|
||||||
|
{
|
||||||
|
sumPos += phiPsiCorrs[phasei][facei];
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
sumNeg += phiPsiCorrs[phasei][facei];
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
scalar sum = sumPos + sumNeg;
|
||||||
|
|
||||||
|
if (sum > 0 && sumPos > VSMALL)
|
||||||
|
{
|
||||||
|
scalar lambda = -sumNeg/sumPos;
|
||||||
|
|
||||||
|
for (int phasei=0; phasei<phiPsiCorrs.size(); phasei++)
|
||||||
|
{
|
||||||
|
if (phiPsiCorrs[phasei][facei] > 0)
|
||||||
|
{
|
||||||
|
phiPsiCorrs[phasei][facei] *= lambda;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else if (sum < 0 && sumNeg < -VSMALL)
|
||||||
|
{
|
||||||
|
scalar lambda = -sumPos/sumNeg;
|
||||||
|
|
||||||
|
for (int phasei=0; phasei<phiPsiCorrs.size(); phasei++)
|
||||||
|
{
|
||||||
|
if (phiPsiCorrs[phasei][facei] < 0)
|
||||||
|
{
|
||||||
|
phiPsiCorrs[phasei][facei] *= lambda;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
for (int phasei=0; phasei<phiPsiCorrs.size(); phasei++)
|
||||||
|
{
|
||||||
|
phiPsiCorrs[phasei][facei] = 0;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2004-2010 OpenCFD Ltd.
|
\\ / A nd | Copyright (C) 2006-2011 OpenCFD Ltd.
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -45,18 +45,27 @@ SourceFiles
|
|||||||
#include "volFields.H"
|
#include "volFields.H"
|
||||||
#include "surfaceFieldsFwd.H"
|
#include "surfaceFieldsFwd.H"
|
||||||
#include "primitiveFieldsFwd.H"
|
#include "primitiveFieldsFwd.H"
|
||||||
#include "zero.H"
|
|
||||||
#include "geometricOneField.H"
|
#include "geometricOneField.H"
|
||||||
|
#include "zero.H"
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
namespace Foam
|
namespace Foam
|
||||||
{
|
{
|
||||||
|
namespace MULES
|
||||||
|
{
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
namespace MULES
|
template<class RhoType, class SpType, class SuType>
|
||||||
{
|
void explicitSolve
|
||||||
|
(
|
||||||
|
const RhoType& rho,
|
||||||
|
volScalarField& psi,
|
||||||
|
const surfaceScalarField& phiPsi,
|
||||||
|
const SpType& Sp,
|
||||||
|
const SuType& Su
|
||||||
|
);
|
||||||
|
|
||||||
template<class RhoType, class SpType, class SuType>
|
template<class RhoType, class SpType, class SuType>
|
||||||
void explicitSolve
|
void explicitSolve
|
||||||
@ -117,10 +126,29 @@ void limiter
|
|||||||
const label nLimiterIter
|
const label nLimiterIter
|
||||||
);
|
);
|
||||||
|
|
||||||
} // End namespace MULES
|
template<class RhoType, class SpType, class SuType>
|
||||||
|
void limit
|
||||||
|
(
|
||||||
|
const RhoType& rho,
|
||||||
|
const volScalarField& psi,
|
||||||
|
const surfaceScalarField& phi,
|
||||||
|
surfaceScalarField& phiPsi,
|
||||||
|
const SpType& Sp,
|
||||||
|
const SuType& Su,
|
||||||
|
const scalar psiMax,
|
||||||
|
const scalar psiMin,
|
||||||
|
const label nLimiterIter,
|
||||||
|
const bool returnCorr
|
||||||
|
);
|
||||||
|
|
||||||
|
void limitSum(UPtrList<scalarField>& phiPsiCorrs);
|
||||||
|
|
||||||
|
template<class SurfaceScalarFieldList>
|
||||||
|
void limitSum(SurfaceScalarFieldList& phiPsiCorrs);
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|
||||||
|
} // End namespace MULES
|
||||||
} // End namespace Foam
|
} // End namespace Foam
|
||||||
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
||||||
|
|||||||
@ -2,7 +2,7 @@
|
|||||||
========= |
|
========= |
|
||||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||||
\\ / O peration |
|
\\ / O peration |
|
||||||
\\ / A nd | Copyright (C) 2004-2011 OpenCFD Ltd.
|
\\ / A nd | Copyright (C) 2006-2011 OpenCFD Ltd.
|
||||||
\\/ M anipulation |
|
\\/ M anipulation |
|
||||||
-------------------------------------------------------------------------------
|
-------------------------------------------------------------------------------
|
||||||
License
|
License
|
||||||
@ -43,58 +43,14 @@ void Foam::MULES::explicitSolve
|
|||||||
(
|
(
|
||||||
const RhoType& rho,
|
const RhoType& rho,
|
||||||
volScalarField& psi,
|
volScalarField& psi,
|
||||||
const surfaceScalarField& phi,
|
const surfaceScalarField& phiPsi,
|
||||||
surfaceScalarField& phiPsi,
|
|
||||||
const SpType& Sp,
|
const SpType& Sp,
|
||||||
const SuType& Su,
|
const SuType& Su
|
||||||
const scalar psiMax,
|
|
||||||
const scalar psiMin
|
|
||||||
)
|
)
|
||||||
{
|
{
|
||||||
Info<< "MULES: Solving for " << psi.name() << endl;
|
Info<< "MULES: Solving for " << psi.name() << endl;
|
||||||
|
|
||||||
const fvMesh& mesh = psi.mesh();
|
const fvMesh& mesh = psi.mesh();
|
||||||
psi.correctBoundaryConditions();
|
|
||||||
|
|
||||||
surfaceScalarField phiBD(upwind<scalar>(psi.mesh(), phi).flux(psi));
|
|
||||||
|
|
||||||
surfaceScalarField& phiCorr = phiPsi;
|
|
||||||
phiCorr -= phiBD;
|
|
||||||
|
|
||||||
scalarField allLambda(mesh.nFaces(), 1.0);
|
|
||||||
|
|
||||||
slicedSurfaceScalarField lambda
|
|
||||||
(
|
|
||||||
IOobject
|
|
||||||
(
|
|
||||||
"lambda",
|
|
||||||
mesh.time().timeName(),
|
|
||||||
mesh,
|
|
||||||
IOobject::NO_READ,
|
|
||||||
IOobject::NO_WRITE,
|
|
||||||
false
|
|
||||||
),
|
|
||||||
mesh,
|
|
||||||
dimless,
|
|
||||||
allLambda,
|
|
||||||
false // Use slices for the couples
|
|
||||||
);
|
|
||||||
|
|
||||||
limiter
|
|
||||||
(
|
|
||||||
allLambda,
|
|
||||||
rho,
|
|
||||||
psi,
|
|
||||||
phiBD,
|
|
||||||
phiCorr,
|
|
||||||
Sp,
|
|
||||||
Su,
|
|
||||||
psiMax,
|
|
||||||
psiMin,
|
|
||||||
3
|
|
||||||
);
|
|
||||||
|
|
||||||
phiPsi = phiBD + lambda*phiCorr;
|
|
||||||
|
|
||||||
scalarField& psiIf = psi;
|
scalarField& psiIf = psi;
|
||||||
const scalarField& psi0 = psi.oldTime();
|
const scalarField& psi0 = psi.oldTime();
|
||||||
@ -127,6 +83,25 @@ void Foam::MULES::explicitSolve
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class RhoType, class SpType, class SuType>
|
||||||
|
void Foam::MULES::explicitSolve
|
||||||
|
(
|
||||||
|
const RhoType& rho,
|
||||||
|
volScalarField& psi,
|
||||||
|
const surfaceScalarField& phi,
|
||||||
|
surfaceScalarField& phiPsi,
|
||||||
|
const SpType& Sp,
|
||||||
|
const SuType& Su,
|
||||||
|
const scalar psiMax,
|
||||||
|
const scalar psiMin
|
||||||
|
)
|
||||||
|
{
|
||||||
|
psi.correctBoundaryConditions();
|
||||||
|
limit(rho, psi, phi, phiPsi, Sp, Su, psiMax, psiMin, 3, false);
|
||||||
|
explicitSolve(rho, psi, phiPsi, Sp, Su);
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
template<class RhoType, class SpType, class SuType>
|
template<class RhoType, class SpType, class SuType>
|
||||||
void Foam::MULES::implicitSolve
|
void Foam::MULES::implicitSolve
|
||||||
(
|
(
|
||||||
@ -614,4 +589,100 @@ void Foam::MULES::limiter
|
|||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class RhoType, class SpType, class SuType>
|
||||||
|
void Foam::MULES::limit
|
||||||
|
(
|
||||||
|
const RhoType& rho,
|
||||||
|
const volScalarField& psi,
|
||||||
|
const surfaceScalarField& phi,
|
||||||
|
surfaceScalarField& phiPsi,
|
||||||
|
const SpType& Sp,
|
||||||
|
const SuType& Su,
|
||||||
|
const scalar psiMax,
|
||||||
|
const scalar psiMin,
|
||||||
|
const label nLimiterIter,
|
||||||
|
const bool returnCorr
|
||||||
|
)
|
||||||
|
{
|
||||||
|
const fvMesh& mesh = psi.mesh();
|
||||||
|
|
||||||
|
surfaceScalarField phiBD(upwind<scalar>(psi.mesh(), phi).flux(psi));
|
||||||
|
|
||||||
|
surfaceScalarField& phiCorr = phiPsi;
|
||||||
|
phiCorr -= phiBD;
|
||||||
|
|
||||||
|
scalarField allLambda(mesh.nFaces(), 1.0);
|
||||||
|
|
||||||
|
slicedSurfaceScalarField lambda
|
||||||
|
(
|
||||||
|
IOobject
|
||||||
|
(
|
||||||
|
"lambda",
|
||||||
|
mesh.time().timeName(),
|
||||||
|
mesh,
|
||||||
|
IOobject::NO_READ,
|
||||||
|
IOobject::NO_WRITE,
|
||||||
|
false
|
||||||
|
),
|
||||||
|
mesh,
|
||||||
|
dimless,
|
||||||
|
allLambda,
|
||||||
|
false // Use slices for the couples
|
||||||
|
);
|
||||||
|
|
||||||
|
limiter
|
||||||
|
(
|
||||||
|
allLambda,
|
||||||
|
rho,
|
||||||
|
psi,
|
||||||
|
phiBD,
|
||||||
|
phiCorr,
|
||||||
|
Sp,
|
||||||
|
Su,
|
||||||
|
psiMax,
|
||||||
|
psiMin,
|
||||||
|
nLimiterIter
|
||||||
|
);
|
||||||
|
|
||||||
|
if (returnCorr)
|
||||||
|
{
|
||||||
|
phiCorr *= lambda;
|
||||||
|
}
|
||||||
|
else
|
||||||
|
{
|
||||||
|
phiPsi = phiBD + lambda*phiCorr;
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
|
template<class SurfaceScalarFieldList>
|
||||||
|
void Foam::MULES::limitSum(SurfaceScalarFieldList& phiPsiCorrs)
|
||||||
|
{
|
||||||
|
{
|
||||||
|
UPtrList<scalarField> phiPsiCorrsInternal(phiPsiCorrs.size());
|
||||||
|
forAll(phiPsiCorrs, phasei)
|
||||||
|
{
|
||||||
|
phiPsiCorrsInternal.set(phasei, &phiPsiCorrs[phasei]);
|
||||||
|
}
|
||||||
|
|
||||||
|
limitSum(phiPsiCorrsInternal);
|
||||||
|
}
|
||||||
|
|
||||||
|
forAll(phiPsiCorrs[0].boundaryField(), patchi)
|
||||||
|
{
|
||||||
|
UPtrList<scalarField> phiPsiCorrsPatch(phiPsiCorrs.size());
|
||||||
|
forAll(phiPsiCorrs, phasei)
|
||||||
|
{
|
||||||
|
phiPsiCorrsPatch.set
|
||||||
|
(
|
||||||
|
phasei,
|
||||||
|
&phiPsiCorrs[phasei].boundaryField()[patchi]
|
||||||
|
);
|
||||||
|
}
|
||||||
|
|
||||||
|
limitSum(phiPsiCorrsPatch);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
// ************************************************************************* //
|
||||||
|
|||||||
@ -1,51 +0,0 @@
|
|||||||
/*--------------------------------*- 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 volVectorField;
|
|
||||||
location "0";
|
|
||||||
object U;
|
|
||||||
}
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
dimensions [0 1 -1 0 0 0 0];
|
|
||||||
|
|
||||||
internalField uniform (0 0 0);
|
|
||||||
|
|
||||||
boundaryField
|
|
||||||
{
|
|
||||||
leftWall
|
|
||||||
{
|
|
||||||
type fixedValue;
|
|
||||||
value uniform (0 0 0);
|
|
||||||
}
|
|
||||||
rightWall
|
|
||||||
{
|
|
||||||
type fixedValue;
|
|
||||||
value uniform (0 0 0);
|
|
||||||
}
|
|
||||||
lowerWall
|
|
||||||
{
|
|
||||||
type fixedValue;
|
|
||||||
value uniform (0 0 0);
|
|
||||||
}
|
|
||||||
atmosphere
|
|
||||||
{
|
|
||||||
type fluxCorrectedVelocity;
|
|
||||||
value uniform (0 0 0);
|
|
||||||
}
|
|
||||||
defaultFaces
|
|
||||||
{
|
|
||||||
type empty;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
|
||||||
@ -1,79 +0,0 @@
|
|||||||
/*--------------------------------*- 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 volScalarField;
|
|
||||||
location "0";
|
|
||||||
object alphaair;
|
|
||||||
}
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
dimensions [0 0 0 0 0 0 0];
|
|
||||||
|
|
||||||
internalField uniform 0;
|
|
||||||
|
|
||||||
boundaryField
|
|
||||||
{
|
|
||||||
leftWall
|
|
||||||
{
|
|
||||||
type alphaContactAngle;
|
|
||||||
thetaProperties
|
|
||||||
(
|
|
||||||
( water air ) 90 0 0 0
|
|
||||||
( oil air ) 90 0 0 0
|
|
||||||
( mercury air ) 90 0 0 0
|
|
||||||
( water oil ) 90 0 0 0
|
|
||||||
( water mercury ) 90 0 0 0
|
|
||||||
( oil mercury ) 90 0 0 0
|
|
||||||
);
|
|
||||||
value uniform 0;
|
|
||||||
}
|
|
||||||
rightWall
|
|
||||||
{
|
|
||||||
type alphaContactAngle;
|
|
||||||
thetaProperties
|
|
||||||
(
|
|
||||||
( water air ) 90 0 0 0
|
|
||||||
( oil air ) 90 0 0 0
|
|
||||||
( mercury air ) 90 0 0 0
|
|
||||||
( water oil ) 90 0 0 0
|
|
||||||
( water mercury ) 90 0 0 0
|
|
||||||
( oil mercury ) 90 0 0 0
|
|
||||||
);
|
|
||||||
value uniform 1;
|
|
||||||
}
|
|
||||||
lowerWall
|
|
||||||
{
|
|
||||||
type alphaContactAngle;
|
|
||||||
thetaProperties
|
|
||||||
(
|
|
||||||
( water air ) 90 0 0 0
|
|
||||||
( oil air ) 90 0 0 0
|
|
||||||
( mercury air ) 90 0 0 0
|
|
||||||
( water oil ) 90 0 0 0
|
|
||||||
( water mercury ) 90 0 0 0
|
|
||||||
( oil mercury ) 90 0 0 0
|
|
||||||
);
|
|
||||||
value uniform 0;
|
|
||||||
}
|
|
||||||
atmosphere
|
|
||||||
{
|
|
||||||
type inletOutlet;
|
|
||||||
inletValue uniform 1;
|
|
||||||
value uniform 1;
|
|
||||||
}
|
|
||||||
defaultFaces
|
|
||||||
{
|
|
||||||
type empty;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
|
||||||
@ -1,49 +0,0 @@
|
|||||||
/*--------------------------------*- 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 volScalarField;
|
|
||||||
location "0";
|
|
||||||
object alphamercury;
|
|
||||||
}
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
dimensions [0 0 0 0 0 0 0];
|
|
||||||
|
|
||||||
internalField uniform 0;
|
|
||||||
|
|
||||||
boundaryField
|
|
||||||
{
|
|
||||||
leftWall
|
|
||||||
{
|
|
||||||
type zeroGradient;
|
|
||||||
}
|
|
||||||
rightWall
|
|
||||||
{
|
|
||||||
type zeroGradient;
|
|
||||||
}
|
|
||||||
lowerWall
|
|
||||||
{
|
|
||||||
type zeroGradient;
|
|
||||||
}
|
|
||||||
atmosphere
|
|
||||||
{
|
|
||||||
type inletOutlet;
|
|
||||||
inletValue uniform 0;
|
|
||||||
value uniform 0;
|
|
||||||
}
|
|
||||||
defaultFaces
|
|
||||||
{
|
|
||||||
type empty;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
|
||||||
@ -1,49 +0,0 @@
|
|||||||
/*--------------------------------*- 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 volScalarField;
|
|
||||||
location "0";
|
|
||||||
object alphaoil;
|
|
||||||
}
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
dimensions [0 0 0 0 0 0 0];
|
|
||||||
|
|
||||||
internalField uniform 0;
|
|
||||||
|
|
||||||
boundaryField
|
|
||||||
{
|
|
||||||
leftWall
|
|
||||||
{
|
|
||||||
type zeroGradient;
|
|
||||||
}
|
|
||||||
rightWall
|
|
||||||
{
|
|
||||||
type zeroGradient;
|
|
||||||
}
|
|
||||||
lowerWall
|
|
||||||
{
|
|
||||||
type zeroGradient;
|
|
||||||
}
|
|
||||||
atmosphere
|
|
||||||
{
|
|
||||||
type inletOutlet;
|
|
||||||
inletValue uniform 0;
|
|
||||||
value uniform 0;
|
|
||||||
}
|
|
||||||
defaultFaces
|
|
||||||
{
|
|
||||||
type empty;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
|
||||||
@ -1,47 +0,0 @@
|
|||||||
/*--------------------------------*- 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 volScalarField;
|
|
||||||
location "0";
|
|
||||||
object alphas;
|
|
||||||
}
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
dimensions [0 0 0 0 0 0 0];
|
|
||||||
|
|
||||||
internalField uniform 0;
|
|
||||||
|
|
||||||
boundaryField
|
|
||||||
{
|
|
||||||
leftWall
|
|
||||||
{
|
|
||||||
type zeroGradient;
|
|
||||||
}
|
|
||||||
rightWall
|
|
||||||
{
|
|
||||||
type zeroGradient;
|
|
||||||
}
|
|
||||||
lowerWall
|
|
||||||
{
|
|
||||||
type zeroGradient;
|
|
||||||
}
|
|
||||||
atmosphere
|
|
||||||
{
|
|
||||||
type zeroGradient;
|
|
||||||
}
|
|
||||||
defaultFaces
|
|
||||||
{
|
|
||||||
type empty;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
|
||||||
@ -1,49 +0,0 @@
|
|||||||
/*--------------------------------*- 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 volScalarField;
|
|
||||||
location "0";
|
|
||||||
object alphawater;
|
|
||||||
}
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
dimensions [0 0 0 0 0 0 0];
|
|
||||||
|
|
||||||
internalField uniform 0;
|
|
||||||
|
|
||||||
boundaryField
|
|
||||||
{
|
|
||||||
leftWall
|
|
||||||
{
|
|
||||||
type zeroGradient;
|
|
||||||
}
|
|
||||||
rightWall
|
|
||||||
{
|
|
||||||
type zeroGradient;
|
|
||||||
}
|
|
||||||
lowerWall
|
|
||||||
{
|
|
||||||
type zeroGradient;
|
|
||||||
}
|
|
||||||
atmosphere
|
|
||||||
{
|
|
||||||
type inletOutlet;
|
|
||||||
inletValue uniform 0;
|
|
||||||
value uniform 0;
|
|
||||||
}
|
|
||||||
defaultFaces
|
|
||||||
{
|
|
||||||
type empty;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
|
||||||
@ -1,59 +0,0 @@
|
|||||||
/*--------------------------------*- 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 volScalarField;
|
|
||||||
object p_rgh;
|
|
||||||
}
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
dimensions [1 -1 -2 0 0 0 0];
|
|
||||||
|
|
||||||
internalField uniform 0;
|
|
||||||
|
|
||||||
boundaryField
|
|
||||||
{
|
|
||||||
leftWall
|
|
||||||
{
|
|
||||||
type buoyantPressure;
|
|
||||||
value uniform 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
rightWall
|
|
||||||
{
|
|
||||||
type buoyantPressure;
|
|
||||||
value uniform 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
lowerWall
|
|
||||||
{
|
|
||||||
type buoyantPressure;
|
|
||||||
value uniform 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
atmosphere
|
|
||||||
{
|
|
||||||
type totalPressure;
|
|
||||||
p0 uniform 0;
|
|
||||||
U U;
|
|
||||||
phi phi;
|
|
||||||
rho rho;
|
|
||||||
psi none;
|
|
||||||
gamma 1;
|
|
||||||
value uniform 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
defaultFaces
|
|
||||||
{
|
|
||||||
type empty;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
|
||||||
@ -1,9 +1,11 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
cd ${0%/*} || exit 1 # run from this directory
|
||||||
|
|
||||||
# Source tutorial clean functions
|
# Source tutorial clean functions
|
||||||
. $WM_PROJECT_DIR/bin/tools/CleanFunctions
|
. $WM_PROJECT_DIR/bin/tools/CleanFunctions
|
||||||
|
|
||||||
cleanCase
|
cleanCase
|
||||||
|
|
||||||
\rm -rf 0
|
\rm -rf 0
|
||||||
cp -r 0.org 0
|
|
||||||
|
|
||||||
|
# ----------------------------------------------------------------- end-of-file
|
||||||
|
|||||||
@ -7,6 +7,9 @@ cd ${0%/*} || exit 1 # run from this directory
|
|||||||
# Set application name
|
# Set application name
|
||||||
application=`getApplication`
|
application=`getApplication`
|
||||||
|
|
||||||
|
\rm -rf 0
|
||||||
|
cp -r 0.org 0
|
||||||
|
|
||||||
runApplication blockMesh
|
runApplication blockMesh
|
||||||
runApplication setFields
|
runApplication setFields
|
||||||
runApplication $application
|
runApplication $application
|
||||||
|
|||||||
@ -17,7 +17,7 @@ FoamFile
|
|||||||
|
|
||||||
application multiphaseInterFoam;
|
application multiphaseInterFoam;
|
||||||
|
|
||||||
startFrom latestTime;
|
startFrom startTime;
|
||||||
|
|
||||||
startTime 0;
|
startTime 0;
|
||||||
|
|
||||||
|
|||||||
@ -77,7 +77,7 @@ solvers
|
|||||||
maxIter 20;
|
maxIter 20;
|
||||||
}
|
}
|
||||||
|
|
||||||
"(U|alpha)"
|
U
|
||||||
{
|
{
|
||||||
solver smoothSolver;
|
solver smoothSolver;
|
||||||
smoother GaussSeidel;
|
smoother GaussSeidel;
|
||||||
@ -96,11 +96,9 @@ solvers
|
|||||||
|
|
||||||
PIMPLE
|
PIMPLE
|
||||||
{
|
{
|
||||||
nCorrectors 4;
|
nCorrectors 2;
|
||||||
nNonOrthogonalCorrectors 0;
|
nNonOrthogonalCorrectors 0;
|
||||||
nAlphaCorr 4;
|
|
||||||
nAlphaSubCycles 4;
|
nAlphaSubCycles 4;
|
||||||
cycleAlpha yes;
|
|
||||||
cAlpha 2;
|
cAlpha 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
@ -1,51 +0,0 @@
|
|||||||
/*--------------------------------*- 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 volVectorField;
|
|
||||||
location "0";
|
|
||||||
object U;
|
|
||||||
}
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
dimensions [0 1 -1 0 0 0 0];
|
|
||||||
|
|
||||||
internalField uniform (0 0 0);
|
|
||||||
|
|
||||||
boundaryField
|
|
||||||
{
|
|
||||||
leftWall
|
|
||||||
{
|
|
||||||
type fixedValue;
|
|
||||||
value uniform (0 0 0);
|
|
||||||
}
|
|
||||||
rightWall
|
|
||||||
{
|
|
||||||
type fixedValue;
|
|
||||||
value uniform (0 0 0);
|
|
||||||
}
|
|
||||||
lowerWall
|
|
||||||
{
|
|
||||||
type fixedValue;
|
|
||||||
value uniform (0 0 0);
|
|
||||||
}
|
|
||||||
atmosphere
|
|
||||||
{
|
|
||||||
type fluxCorrectedVelocity;
|
|
||||||
value uniform (0 0 0);
|
|
||||||
}
|
|
||||||
defaultFaces
|
|
||||||
{
|
|
||||||
type empty;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
|
||||||
@ -1,79 +0,0 @@
|
|||||||
/*--------------------------------*- 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 volScalarField;
|
|
||||||
location "0";
|
|
||||||
object alphaair;
|
|
||||||
}
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
dimensions [0 0 0 0 0 0 0];
|
|
||||||
|
|
||||||
internalField uniform 0;
|
|
||||||
|
|
||||||
boundaryField
|
|
||||||
{
|
|
||||||
leftWall
|
|
||||||
{
|
|
||||||
type alphaContactAngle;
|
|
||||||
thetaProperties
|
|
||||||
(
|
|
||||||
( water air ) 90 0 0 0
|
|
||||||
( oil air ) 90 0 0 0
|
|
||||||
( mercury air ) 90 0 0 0
|
|
||||||
( water oil ) 90 0 0 0
|
|
||||||
( water mercury ) 90 0 0 0
|
|
||||||
( oil mercury ) 90 0 0 0
|
|
||||||
);
|
|
||||||
value uniform 0;
|
|
||||||
}
|
|
||||||
rightWall
|
|
||||||
{
|
|
||||||
type alphaContactAngle;
|
|
||||||
thetaProperties
|
|
||||||
(
|
|
||||||
( water air ) 90 0 0 0
|
|
||||||
( oil air ) 90 0 0 0
|
|
||||||
( mercury air ) 90 0 0 0
|
|
||||||
( water oil ) 90 0 0 0
|
|
||||||
( water mercury ) 90 0 0 0
|
|
||||||
( oil mercury ) 90 0 0 0
|
|
||||||
);
|
|
||||||
value uniform 1;
|
|
||||||
}
|
|
||||||
lowerWall
|
|
||||||
{
|
|
||||||
type alphaContactAngle;
|
|
||||||
thetaProperties
|
|
||||||
(
|
|
||||||
( water air ) 90 0 0 0
|
|
||||||
( oil air ) 90 0 0 0
|
|
||||||
( mercury air ) 90 0 0 0
|
|
||||||
( water oil ) 90 0 0 0
|
|
||||||
( water mercury ) 90 0 0 0
|
|
||||||
( oil mercury ) 90 0 0 0
|
|
||||||
);
|
|
||||||
value uniform 0;
|
|
||||||
}
|
|
||||||
atmosphere
|
|
||||||
{
|
|
||||||
type inletOutlet;
|
|
||||||
inletValue uniform 1;
|
|
||||||
value uniform 1;
|
|
||||||
}
|
|
||||||
defaultFaces
|
|
||||||
{
|
|
||||||
type empty;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
|
||||||
@ -1,49 +0,0 @@
|
|||||||
/*--------------------------------*- 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 volScalarField;
|
|
||||||
location "0";
|
|
||||||
object alphamercury;
|
|
||||||
}
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
dimensions [0 0 0 0 0 0 0];
|
|
||||||
|
|
||||||
internalField uniform 0;
|
|
||||||
|
|
||||||
boundaryField
|
|
||||||
{
|
|
||||||
leftWall
|
|
||||||
{
|
|
||||||
type zeroGradient;
|
|
||||||
}
|
|
||||||
rightWall
|
|
||||||
{
|
|
||||||
type zeroGradient;
|
|
||||||
}
|
|
||||||
lowerWall
|
|
||||||
{
|
|
||||||
type zeroGradient;
|
|
||||||
}
|
|
||||||
atmosphere
|
|
||||||
{
|
|
||||||
type inletOutlet;
|
|
||||||
inletValue uniform 0;
|
|
||||||
value uniform 0;
|
|
||||||
}
|
|
||||||
defaultFaces
|
|
||||||
{
|
|
||||||
type empty;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
|
||||||
@ -1,49 +0,0 @@
|
|||||||
/*--------------------------------*- 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 volScalarField;
|
|
||||||
location "0";
|
|
||||||
object alphaoil;
|
|
||||||
}
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
dimensions [0 0 0 0 0 0 0];
|
|
||||||
|
|
||||||
internalField uniform 0;
|
|
||||||
|
|
||||||
boundaryField
|
|
||||||
{
|
|
||||||
leftWall
|
|
||||||
{
|
|
||||||
type zeroGradient;
|
|
||||||
}
|
|
||||||
rightWall
|
|
||||||
{
|
|
||||||
type zeroGradient;
|
|
||||||
}
|
|
||||||
lowerWall
|
|
||||||
{
|
|
||||||
type zeroGradient;
|
|
||||||
}
|
|
||||||
atmosphere
|
|
||||||
{
|
|
||||||
type inletOutlet;
|
|
||||||
inletValue uniform 0;
|
|
||||||
value uniform 0;
|
|
||||||
}
|
|
||||||
defaultFaces
|
|
||||||
{
|
|
||||||
type empty;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
|
||||||
@ -1,47 +0,0 @@
|
|||||||
/*--------------------------------*- 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 volScalarField;
|
|
||||||
location "0";
|
|
||||||
object alphas;
|
|
||||||
}
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
dimensions [0 0 0 0 0 0 0];
|
|
||||||
|
|
||||||
internalField uniform 0;
|
|
||||||
|
|
||||||
boundaryField
|
|
||||||
{
|
|
||||||
leftWall
|
|
||||||
{
|
|
||||||
type zeroGradient;
|
|
||||||
}
|
|
||||||
rightWall
|
|
||||||
{
|
|
||||||
type zeroGradient;
|
|
||||||
}
|
|
||||||
lowerWall
|
|
||||||
{
|
|
||||||
type zeroGradient;
|
|
||||||
}
|
|
||||||
atmosphere
|
|
||||||
{
|
|
||||||
type zeroGradient;
|
|
||||||
}
|
|
||||||
defaultFaces
|
|
||||||
{
|
|
||||||
type empty;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
|
||||||
@ -1,49 +0,0 @@
|
|||||||
/*--------------------------------*- 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 volScalarField;
|
|
||||||
location "0";
|
|
||||||
object alphawater;
|
|
||||||
}
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
dimensions [0 0 0 0 0 0 0];
|
|
||||||
|
|
||||||
internalField uniform 0;
|
|
||||||
|
|
||||||
boundaryField
|
|
||||||
{
|
|
||||||
leftWall
|
|
||||||
{
|
|
||||||
type zeroGradient;
|
|
||||||
}
|
|
||||||
rightWall
|
|
||||||
{
|
|
||||||
type zeroGradient;
|
|
||||||
}
|
|
||||||
lowerWall
|
|
||||||
{
|
|
||||||
type zeroGradient;
|
|
||||||
}
|
|
||||||
atmosphere
|
|
||||||
{
|
|
||||||
type inletOutlet;
|
|
||||||
inletValue uniform 0;
|
|
||||||
value uniform 0;
|
|
||||||
}
|
|
||||||
defaultFaces
|
|
||||||
{
|
|
||||||
type empty;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
|
||||||
@ -1,59 +0,0 @@
|
|||||||
/*--------------------------------*- 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 volScalarField;
|
|
||||||
object p_rgh;
|
|
||||||
}
|
|
||||||
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
|
|
||||||
|
|
||||||
dimensions [1 -1 -2 0 0 0 0];
|
|
||||||
|
|
||||||
internalField uniform 0;
|
|
||||||
|
|
||||||
boundaryField
|
|
||||||
{
|
|
||||||
leftWall
|
|
||||||
{
|
|
||||||
type buoyantPressure;
|
|
||||||
value uniform 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
rightWall
|
|
||||||
{
|
|
||||||
type buoyantPressure;
|
|
||||||
value uniform 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
lowerWall
|
|
||||||
{
|
|
||||||
type buoyantPressure;
|
|
||||||
value uniform 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
atmosphere
|
|
||||||
{
|
|
||||||
type totalPressure;
|
|
||||||
p0 uniform 0;
|
|
||||||
U U;
|
|
||||||
phi phi;
|
|
||||||
rho rho;
|
|
||||||
psi none;
|
|
||||||
gamma 1;
|
|
||||||
value uniform 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
defaultFaces
|
|
||||||
{
|
|
||||||
type empty;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
// ************************************************************************* //
|
|
||||||
@ -1,9 +1,11 @@
|
|||||||
#!/bin/sh
|
#!/bin/sh
|
||||||
|
cd ${0%/*} || exit 1 # run from this directory
|
||||||
|
|
||||||
# Source tutorial clean functions
|
# Source tutorial clean functions
|
||||||
. $WM_PROJECT_DIR/bin/tools/CleanFunctions
|
. $WM_PROJECT_DIR/bin/tools/CleanFunctions
|
||||||
|
|
||||||
cleanCase
|
cleanCase
|
||||||
|
|
||||||
\rm -rf 0
|
\rm -rf 0
|
||||||
cp -r 0.org 0
|
|
||||||
|
|
||||||
|
# ----------------------------------------------------------------- end-of-file
|
||||||
|
|||||||
@ -7,8 +7,12 @@ cd ${0%/*} || exit 1 # run from this directory
|
|||||||
# Set application name
|
# Set application name
|
||||||
application=`getApplication`
|
application=`getApplication`
|
||||||
|
|
||||||
|
cp -r 0.org 0
|
||||||
|
|
||||||
runApplication blockMesh
|
runApplication blockMesh
|
||||||
runApplication setFields
|
runApplication setFields
|
||||||
runApplication $application
|
runApplication decomposePar
|
||||||
|
runParallel $application 4
|
||||||
|
runApplication reconstructPar
|
||||||
|
|
||||||
# ----------------------------------------------------------------- end-of-file
|
# ----------------------------------------------------------------- end-of-file
|
||||||
|
|||||||
@ -90,11 +90,9 @@ solvers
|
|||||||
PIMPLE
|
PIMPLE
|
||||||
{
|
{
|
||||||
momentumPredictor no;
|
momentumPredictor no;
|
||||||
nCorrectors 4;
|
nCorrectors 2;
|
||||||
nNonOrthogonalCorrectors 0;
|
nNonOrthogonalCorrectors 0;
|
||||||
nAlphaCorr 4;
|
|
||||||
nAlphaSubCycles 4;
|
nAlphaSubCycles 4;
|
||||||
cycleAlpha yes;
|
|
||||||
cAlpha 2;
|
cAlpha 2;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user