VoF solvers: rationalize the relationship between VoF solvers

Improve code reuse
Add multiphaseInterDyMFoam
Retire MRFinterFoam -> now handled by interFoam with fvOptions
Update tutorials
This commit is contained in:
Henry
2014-04-29 14:16:41 +01:00
committed by Andrew Heather
parent b87f76cf30
commit 9873774ee9
124 changed files with 3995 additions and 5941 deletions

View File

@ -57,12 +57,12 @@
Info<< "Reading transportProperties\n" << endl; Info<< "Reading transportProperties\n" << endl;
incompressibleTwoPhaseMixture twoPhaseProperties(U, phi); incompressibleTwoPhaseMixture mixture(U, phi);
volScalarField& alphav(twoPhaseProperties.alpha1()); volScalarField& alphav(mixture.alpha1());
alphav.oldTime(); alphav.oldTime();
volScalarField& alphal(twoPhaseProperties.alpha2()); volScalarField& alphal(mixture.alpha2());
Info<< "Creating compressibilityModel\n" << endl; Info<< "Creating compressibilityModel\n" << endl;
autoPtr<barotropicCompressibilityModel> psiModel = autoPtr<barotropicCompressibilityModel> psiModel =
@ -85,5 +85,5 @@
// Create incompressible turbulence model // Create incompressible turbulence model
autoPtr<incompressible::turbulenceModel> turbulence autoPtr<incompressible::turbulenceModel> turbulence
( (
incompressible::turbulenceModel::New(U, phi, twoPhaseProperties) incompressible::turbulenceModel::New(U, phi, mixture)
); );

View File

@ -1,5 +1,6 @@
EXE_INC = \ EXE_INC = \
-ItwoPhaseMixtureThermo \ -ItwoPhaseMixtureThermo \
-I$(LIB_SRC)/transportModels/compressible/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-I$(LIB_SRC)/transportModels/twoPhaseMixture/lnInclude \ -I$(LIB_SRC)/transportModels/twoPhaseMixture/lnInclude \
-I$(LIB_SRC)/transportModels/interfaceProperties/lnInclude \ -I$(LIB_SRC)/transportModels/interfaceProperties/lnInclude \

View File

@ -3,19 +3,19 @@
( (
fvm::ddt(rho, T) fvm::ddt(rho, T)
+ fvm::div(rhoPhi, T) + fvm::div(rhoPhi, T)
- fvm::laplacian(twoPhaseProperties.alphaEff(turbulence->mut()), T) - fvm::laplacian(mixture.alphaEff(turbulence->mut()), T)
+ ( + (
fvc::div(fvc::absolute(phi, U), p) fvc::div(fvc::absolute(phi, U), p)
+ fvc::ddt(rho, K) + fvc::div(rhoPhi, K) + fvc::ddt(rho, K) + fvc::div(rhoPhi, K)
) )
*( *(
alpha1/twoPhaseProperties.thermo1().Cv() alpha1/mixture.thermo1().Cv()
+ alpha2/twoPhaseProperties.thermo2().Cv() + alpha2/mixture.thermo2().Cv()
) )
); );
TEqn.relax(); TEqn.relax();
TEqn.solve(); TEqn.solve();
twoPhaseProperties.correct(); mixture.correct();
} }

View File

@ -16,7 +16,7 @@
fvc::reconstruct fvc::reconstruct
( (
( (
fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1) interface.surfaceTensionForce()
- ghf*fvc::snGrad(rho) - ghf*fvc::snGrad(rho)
- fvc::snGrad(p_rgh) - fvc::snGrad(p_rgh)
) * mesh.magSf() ) * mesh.magSf()

View File

@ -1,6 +1,7 @@
EXE_INC = \ EXE_INC = \
-I.. \ -I.. \
-I../twoPhaseMixtureThermo \ -I../twoPhaseMixtureThermo \
-I$(LIB_SRC)/transportModels/compressible/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-I$(LIB_SRC)/transportModels/twoPhaseMixture/lnInclude \ -I$(LIB_SRC)/transportModels/twoPhaseMixture/lnInclude \
-I$(LIB_SRC)/transportModels/interfaceProperties/lnInclude \ -I$(LIB_SRC)/transportModels/interfaceProperties/lnInclude \

View File

@ -15,7 +15,7 @@
surfaceScalarField phig surfaceScalarField phig
( (
( (
fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1) interface.surfaceTensionForce()
- ghf*fvc::snGrad(rho) - ghf*fvc::snGrad(rho)
)*rAUf*mesh.magSf() )*rAUf*mesh.magSf()
); );

View File

@ -29,19 +29,19 @@
#include "createPhi.H" #include "createPhi.H"
Info<< "Constructing twoPhaseMixtureThermo\n" << endl; Info<< "Constructing twoPhaseMixtureThermo\n" << endl;
twoPhaseMixtureThermo twoPhaseProperties(mesh); twoPhaseMixtureThermo mixture(mesh);
volScalarField& alpha1(twoPhaseProperties.alpha1()); volScalarField& alpha1(mixture.alpha1());
volScalarField& alpha2(twoPhaseProperties.alpha2()); volScalarField& alpha2(mixture.alpha2());
Info<< "Reading thermophysical properties\n" << endl; Info<< "Reading thermophysical properties\n" << endl;
volScalarField& p = twoPhaseProperties.p(); volScalarField& p = mixture.p();
volScalarField& T = twoPhaseProperties.T(); volScalarField& T = mixture.T();
volScalarField& rho1 = twoPhaseProperties.thermo1().rho(); volScalarField& rho1 = mixture.thermo1().rho();
const volScalarField& psi1 = twoPhaseProperties.thermo1().psi(); const volScalarField& psi1 = mixture.thermo1().psi();
volScalarField& rho2 = twoPhaseProperties.thermo2().rho(); volScalarField& rho2 = mixture.thermo2().rho();
const volScalarField& psi2 = twoPhaseProperties.thermo2().psi(); const volScalarField& psi2 = mixture.thermo2().psi();
volScalarField rho volScalarField rho
( (
@ -57,7 +57,7 @@
); );
dimensionedScalar pMin(twoPhaseProperties.lookup("pMin")); dimensionedScalar pMin(mixture.lookup("pMin"));
Info<< "Calculating field g.h\n" << endl; Info<< "Calculating field g.h\n" << endl;
volScalarField gh("gh", g & mesh.C()); volScalarField gh("gh", g & mesh.C());
@ -85,12 +85,12 @@
); );
// Construct interface from alpha1 distribution // Construct interface from alpha1 distribution
interfaceProperties interface(alpha1, U, twoPhaseProperties); interfaceProperties interface(alpha1, U, mixture);
// Construct compressible turbulence model // Construct compressible turbulence model
autoPtr<compressible::turbulenceModel> turbulence autoPtr<compressible::turbulenceModel> turbulence
( (
compressible::turbulenceModel::New(rho, U, rhoPhi, twoPhaseProperties) compressible::turbulenceModel::New(rho, U, rhoPhi, mixture)
); );
Info<< "Creating field kinetic energy K\n" << endl; Info<< "Creating field kinetic energy K\n" << endl;

View File

@ -15,7 +15,7 @@
surfaceScalarField phig surfaceScalarField phig
( (
( (
fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1) interface.surfaceTensionForce()
- ghf*fvc::snGrad(rho) - ghf*fvc::snGrad(rho)
)*rAUf*mesh.magSf() )*rAUf*mesh.magSf()
); );

View File

@ -1,4 +1,5 @@
EXE_INC = \ EXE_INC = \
-I$(LIB_SRC)/transportModels/compressible/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-I$(LIB_SRC)/transportModels/twoPhaseMixture/lnInclude \ -I$(LIB_SRC)/transportModels/twoPhaseMixture/lnInclude \
-I$(LIB_SRC)/finiteVolume/lnInclude -I$(LIB_SRC)/finiteVolume/lnInclude

View File

@ -1,5 +1,7 @@
EXE_INC = \ EXE_INC = \
-I../interFoam \
-ImultiphaseMixtureThermo/lnInclude \ -ImultiphaseMixtureThermo/lnInclude \
-I$(LIB_SRC)/transportModels/compressible/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-I$(LIB_SRC)/transportModels/twoPhaseMixture/lnInclude \ -I$(LIB_SRC)/transportModels/twoPhaseMixture/lnInclude \
-I$(LIB_SRC)/transportModels/interfaceProperties/lnInclude \ -I$(LIB_SRC)/transportModels/interfaceProperties/lnInclude \

View File

@ -2,16 +2,16 @@
fvScalarMatrix TEqn fvScalarMatrix TEqn
( (
fvm::ddt(rho, T) fvm::ddt(rho, T)
+ fvm::div(multiphaseProperties.rhoPhi(), T) + fvm::div(mixture.rhoPhi(), T)
- fvm::laplacian(multiphaseProperties.alphaEff(turbulence->mut()), T) - fvm::laplacian(mixture.alphaEff(turbulence->mut()), T)
+ ( + (
fvc::div(fvc::absolute(phi, U), p) fvc::div(fvc::absolute(phi, U), p)
+ fvc::ddt(rho, K) + fvc::div(multiphaseProperties.rhoPhi(), K) + fvc::ddt(rho, K) + fvc::div(mixture.rhoPhi(), K)
)*multiphaseProperties.rCv() )*mixture.rCv()
); );
TEqn.relax(); TEqn.relax();
TEqn.solve(); TEqn.solve();
multiphaseProperties.correct(); mixture.correct();
} }

View File

@ -1,7 +1,7 @@
fvVectorMatrix UEqn fvVectorMatrix UEqn
( (
fvm::ddt(rho, U) fvm::ddt(rho, U)
+ fvm::div(multiphaseProperties.rhoPhi(), U) + fvm::div(mixture.rhoPhi(), U)
+ turbulence->divDevRhoReff(U) + turbulence->divDevRhoReff(U)
); );
@ -16,7 +16,7 @@
fvc::reconstruct fvc::reconstruct
( (
( (
multiphaseProperties.surfaceTensionForce() mixture.surfaceTensionForce()
- ghf*fvc::snGrad(rho) - ghf*fvc::snGrad(rho)
- fvc::snGrad(p_rgh) - fvc::snGrad(p_rgh)
) * mesh.magSf() ) * mesh.magSf()

View File

@ -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) 2013 OpenFOAM Foundation \\ / A nd | Copyright (C) 2013-2014 OpenFOAM Foundation
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -76,9 +76,9 @@ int main(int argc, char *argv[])
// --- Pressure-velocity PIMPLE corrector loop // --- Pressure-velocity PIMPLE corrector loop
while (pimple.loop()) while (pimple.loop())
{ {
multiphaseProperties.solve(); mixture.solve();
solve(fvm::ddt(rho) + fvc::div(multiphaseProperties.rhoPhi())); solve(fvm::ddt(rho) + fvc::div(mixture.rhoPhi()));
#include "UEqn.H" #include "UEqn.H"
#include "TEqn.H" #include "TEqn.H"

View File

@ -29,10 +29,10 @@
#include "createPhi.H" #include "createPhi.H"
Info<< "Constructing multiphaseMixtureThermo\n" << endl; Info<< "Constructing multiphaseMixtureThermo\n" << endl;
multiphaseMixtureThermo multiphaseProperties(U, phi); multiphaseMixtureThermo mixture(U, phi);
volScalarField& p = multiphaseProperties.p(); volScalarField& p = mixture.p();
volScalarField& T = multiphaseProperties.T(); volScalarField& T = mixture.T();
volScalarField rho volScalarField rho
( (
@ -43,12 +43,12 @@
mesh, mesh,
IOobject::READ_IF_PRESENT IOobject::READ_IF_PRESENT
), ),
multiphaseProperties.rho() mixture.rho()
); );
Info<< max(rho) << min(rho); Info<< max(rho) << min(rho);
dimensionedScalar pMin(multiphaseProperties.lookup("pMin")); dimensionedScalar pMin(mixture.lookup("pMin"));
Info<< "Calculating field g.h\n" << endl; Info<< "Calculating field g.h\n" << endl;
@ -62,8 +62,8 @@
( (
rho, rho,
U, U,
multiphaseProperties.rhoPhi(), mixture.rhoPhi(),
multiphaseProperties mixture
) )
); );

View File

@ -1,4 +1,5 @@
EXE_INC = \ EXE_INC = \
-I$(LIB_SRC)/transportModels/compressible/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \ -I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-I$(LIB_SRC)/finiteVolume/lnInclude -I$(LIB_SRC)/finiteVolume/lnInclude

View File

@ -15,7 +15,7 @@
surfaceScalarField phig surfaceScalarField phig
( (
( (
multiphaseProperties.surfaceTensionForce() mixture.surfaceTensionForce()
- ghf*fvc::snGrad(rho) - ghf*fvc::snGrad(rho)
)*rAUf*mesh.magSf() )*rAUf*mesh.magSf()
); );
@ -32,13 +32,13 @@
)/(mesh.magSf().boundaryField()*rAUf.boundaryField()) )/(mesh.magSf().boundaryField()*rAUf.boundaryField())
); );
PtrList<fvScalarMatrix> p_rghEqnComps(multiphaseProperties.phases().size()); PtrList<fvScalarMatrix> p_rghEqnComps(mixture.phases().size());
label phasei = 0; label phasei = 0;
forAllConstIter forAllConstIter
( (
PtrDictionary<phaseModel>, PtrDictionary<phaseModel>,
multiphaseProperties.phases(), mixture.phases(),
phase phase
) )
{ {
@ -74,7 +74,7 @@
forAllConstIter forAllConstIter
( (
PtrDictionary<phaseModel>, PtrDictionary<phaseModel>,
multiphaseProperties.phases(), mixture.phases(),
phase phase
) )
{ {
@ -105,14 +105,14 @@
if (pimple.finalNonOrthogonalIter()) if (pimple.finalNonOrthogonalIter())
{ {
// p = max(p_rgh + multiphaseProperties.rho()*gh, pMin); // p = max(p_rgh + mixture.rho()*gh, pMin);
// p_rgh = p - multiphaseProperties.rho()*gh; // p_rgh = p - mixture.rho()*gh;
phasei = 0; phasei = 0;
forAllIter forAllIter
( (
PtrDictionary<phaseModel>, PtrDictionary<phaseModel>,
multiphaseProperties.phases(), mixture.phases(),
phase phase
) )
{ {
@ -129,11 +129,11 @@
} }
} }
p = max(p_rgh + multiphaseProperties.rho()*gh, pMin); p = max(p_rgh + mixture.rho()*gh, pMin);
// Update densities from change in p_rgh // Update densities from change in p_rgh
multiphaseProperties.correctRho(p_rgh - p_rgh_0); mixture.correctRho(p_rgh - p_rgh_0);
rho = multiphaseProperties.rho(); rho = mixture.rho();
K = 0.5*magSqr(U); K = 0.5*magSqr(U);

View File

@ -4,7 +4,6 @@ set -x
wclean wclean
wclean interDyMFoam wclean interDyMFoam
wclean MRFInterFoam
wclean porousInterFoam wclean porousInterFoam
wclean LTSInterFoam wclean LTSInterFoam
wclean interMixingFoam wclean interMixingFoam

View File

@ -4,7 +4,6 @@ set -x
wmake wmake
wmake interDyMFoam wmake interDyMFoam
wmake MRFInterFoam
wmake porousInterFoam wmake porousInterFoam
wmake LTSInterFoam wmake LTSInterFoam
wmake interMixingFoam wmake interMixingFoam

View File

@ -40,8 +40,7 @@ Description
#include "fvCFD.H" #include "fvCFD.H"
#include "CMULES.H" #include "CMULES.H"
#include "subCycle.H" #include "subCycle.H"
#include "interfaceProperties.H" #include "immiscibleIncompressibleTwoPhaseMixture.H"
#include "incompressibleTwoPhaseMixture.H"
#include "turbulenceModel.H" #include "turbulenceModel.H"
#include "fvcSmooth.H" #include "fvcSmooth.H"
#include "pimpleControl.H" #include "pimpleControl.H"
@ -82,12 +81,12 @@ int main(int argc, char *argv[])
{ {
#include "alphaControls.H" #include "alphaControls.H"
twoPhaseProperties.correct();
#define LTSSOLVE #define LTSSOLVE
#include "alphaEqnSubCycle.H" #include "alphaEqnSubCycle.H"
#undef LTSSOLVE #undef LTSSOLVE
mixture.correct();
turbulence->correct(); turbulence->correct();
#include "UEqn.H" #include "UEqn.H"

View File

@ -5,16 +5,14 @@ EXE_INC = \
-I$(LIB_SRC)/transportModels/incompressible/lnInclude \ -I$(LIB_SRC)/transportModels/incompressible/lnInclude \
-I$(LIB_SRC)/transportModels/interfaceProperties/lnInclude \ -I$(LIB_SRC)/transportModels/interfaceProperties/lnInclude \
-I$(LIB_SRC)/turbulenceModels/incompressible/turbulenceModel \ -I$(LIB_SRC)/turbulenceModels/incompressible/turbulenceModel \
-I$(LIB_SRC)/transportModels/immiscibleIncompressibleTwoPhaseMixture/lnInclude \
-I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude \
-I$(LIB_SRC)/fvOptions/lnInclude \ -I$(LIB_SRC)/fvOptions/lnInclude \
-I$(LIB_SRC)/sampling/lnInclude -I$(LIB_SRC)/sampling/lnInclude
EXE_LIBS = \ EXE_LIBS = \
-linterfaceProperties \ -limmiscibleIncompressibleTwoPhaseMixture \
-ltwoPhaseMixture \
-ltwoPhaseProperties \
-lincompressibleTransportModels \
-lincompressibleTurbulenceModel \ -lincompressibleTurbulenceModel \
-lincompressibleRASModels \ -lincompressibleRASModels \
-lincompressibleLESModels \ -lincompressibleLESModels \

View File

@ -1,3 +0,0 @@
MRFInterFoam.C
EXE = $(FOAM_APPBIN)/MRFInterFoam

View File

@ -1,38 +0,0 @@
surfaceScalarField muEff
(
"muEff",
twoPhaseProperties.muf()
+ fvc::interpolate(rho*turbulence->nut())
);
fvVectorMatrix UEqn
(
fvm::ddt(rho, U)
+ fvm::div(rhoPhi, U)
- fvm::laplacian(muEff, U)
- (fvc::grad(U) & fvc::grad(muEff))
//- fvc::div(muEff*(fvc::interpolate(dev(fvc::grad(U))) & mesh.Sf()))
==
fvOptions(rho, U)
);
mrfZones.addCoriolis(rho, UEqn);
UEqn.relax();
fvOptions.constrain(UEqn);
if (pimple.momentumPredictor())
{
solve
(
UEqn
==
fvc::reconstruct
(
(
fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1)
- ghf*fvc::snGrad(rho)
- fvc::snGrad(p_rgh)
) * mesh.magSf()
)
);
}

View File

@ -1,2 +0,0 @@
IOMRFZoneList mrfZones(mesh);
mrfZones.correctBoundaryVelocity(U);

View File

@ -1,72 +0,0 @@
{
volScalarField rAU("rAU", 1.0/UEqn.A());
surfaceScalarField rAUf("rAUf", fvc::interpolate(rAU));
volVectorField HbyA("HbyA", U);
HbyA = rAU*UEqn.H();
surfaceScalarField phiHbyA
(
"phiHbyA",
(fvc::interpolate(HbyA) & mesh.Sf())
+ fvc::interpolate(rho*rAU)*fvc::ddtCorr(U, phi)
);
adjustPhi(phiHbyA, U, p_rgh);
mrfZones.makeRelative(phiHbyA);
surfaceScalarField phig
(
(
fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1)
- ghf*fvc::snGrad(rho)
)*rAUf*mesh.magSf()
);
phiHbyA += phig;
// Update the fixedFluxPressure BCs to ensure flux consistency
setSnGrad<fixedFluxPressureFvPatchScalarField>
(
p_rgh.boundaryField(),
(
phiHbyA.boundaryField()
- mrfZones.relative(mesh.Sf().boundaryField() & U.boundaryField())
)/(mesh.magSf().boundaryField()*rAUf.boundaryField())
);
while (pimple.correctNonOrthogonal())
{
fvScalarMatrix p_rghEqn
(
fvm::laplacian(rAUf, p_rgh) == fvc::div(phiHbyA)
);
p_rghEqn.setReference(pRefCell, getRefCellValue(p_rgh, pRefCell));
p_rghEqn.solve(mesh.solver(p_rgh.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter())
{
phi = phiHbyA - p_rghEqn.flux();
U = HbyA + rAU*fvc::reconstruct((phig - p_rghEqn.flux())/rAUf);
U.correctBoundaryConditions();
fvOptions.correct(U);
}
}
#include "continuityErrs.H"
p == p_rgh + rho*gh;
if (p_rgh.needReference())
{
p += dimensionedScalar
(
"p",
p.dimensions(),
pRefValue - getRefCellValue(p, pRefCell)
);
p_rgh = p - rho*gh;
}
}

View File

@ -1,21 +0,0 @@
{
const scalarField& V = mesh.V();
forAll(mesh.cellZones(), czi)
{
const labelList& cellLabels = mesh.cellZones()[czi];
scalar phaseVolume = 0;
forAll(cellLabels, cli)
{
label celli = cellLabels[cli];
phaseVolume += alpha1[celli]*V[celli];
}
reduce(phaseVolume, sumOp<scalar>());
Info<< "Phase volume in zone " << mesh.cellZones()[czi].name()
<< " = " << phaseVolume*1e6 << " ml " << endl;
}
}

View File

@ -1,23 +1,21 @@
EXE_INC = -ggdb3 \ EXE_INC = \
-I$(LIB_SRC)/transportModels/twoPhaseMixture/lnInclude \ -I$(LIB_SRC)/transportModels/twoPhaseMixture/lnInclude \
-I$(LIB_SRC)/transportModels \ -I$(LIB_SRC)/transportModels \
-I$(LIB_SRC)/transportModels/incompressible/lnInclude \ -I$(LIB_SRC)/transportModels/incompressible/lnInclude \
-I$(LIB_SRC)/transportModels/interfaceProperties/lnInclude \ -I$(LIB_SRC)/transportModels/interfaceProperties/lnInclude \
-I$(LIB_SRC)/turbulenceModels/incompressible/turbulenceModel \ -I$(LIB_SRC)/turbulenceModels/incompressible/turbulenceModel \
-I$(LIB_SRC)/transportModels/immiscibleIncompressibleTwoPhaseMixture/lnInclude \
-I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \
-I$(LIB_SRC)/fvOptions/lnInclude \ -I$(LIB_SRC)/fvOptions/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \
-I$(LIB_SRC)/sampling/lnInclude -I$(LIB_SRC)/sampling/lnInclude
EXE_LIBS = \ EXE_LIBS = \
-ltwoPhaseMixture \ -limmiscibleIncompressibleTwoPhaseMixture \
-linterfaceProperties \
-ltwoPhaseProperties \
-lincompressibleTransportModels \
-lincompressibleTurbulenceModel \ -lincompressibleTurbulenceModel \
-lincompressibleRASModels \ -lincompressibleRASModels \
-lincompressibleLESModels \ -lincompressibleLESModels \
-lfiniteVolume \ -lfiniteVolume \
-lmeshTools \
-lfvOptions \ -lfvOptions \
-lmeshTools \
-lsampling -lsampling

View File

@ -3,10 +3,14 @@
fvm::ddt(rho, U) fvm::ddt(rho, U)
+ fvm::div(rhoPhi, U) + fvm::div(rhoPhi, U)
+ turbulence->divDevRhoReff(rho, U) + turbulence->divDevRhoReff(rho, U)
==
fvOptions(rho, U)
); );
UEqn.relax(); UEqn.relax();
fvOptions.constrain(UEqn);
if (pimple.momentumPredictor()) if (pimple.momentumPredictor())
{ {
solve solve
@ -16,10 +20,12 @@
fvc::reconstruct fvc::reconstruct
( (
( (
fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1) mixture.surfaceTensionForce()
- ghf*fvc::snGrad(rho) - ghf*fvc::snGrad(rho)
- fvc::snGrad(p_rgh) - fvc::snGrad(p_rgh)
) * mesh.magSf() ) * mesh.magSf()
) )
); );
fvOptions.correct(U);
} }

View File

@ -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) 2011 OpenFOAM Foundation \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -41,7 +41,7 @@ if (mesh.nInternalFaces())
{ {
scalarField sumPhi scalarField sumPhi
( (
pos(alpha1 - 0.01)*pos(0.99 - alpha1) mixture.nearInterface()().internalField()
*fvc::surfaceSum(mag(phi))().internalField() *fvc::surfaceSum(mag(phi))().internalField()
); );

View File

@ -3,13 +3,13 @@
word alpharScheme("div(phirb,alpha)"); word alpharScheme("div(phirb,alpha)");
// Standard face-flux compression coefficient // Standard face-flux compression coefficient
surfaceScalarField phic(interface.cAlpha()*mag(phi/mesh.magSf())); surfaceScalarField phic(mixture.cAlpha()*mag(phi/mesh.magSf()));
// Add the optional isotropic compression contribution // Add the optional isotropic compression contribution
if (icAlpha > 0) if (icAlpha > 0)
{ {
phic *= (1.0 - icAlpha); phic *= (1.0 - icAlpha);
phic += (interface.cAlpha()*icAlpha)*fvc::interpolate(mag(U)); phic += (mixture.cAlpha()*icAlpha)*fvc::interpolate(mag(U));
} }
// Do not compress interface at non-coupled boundary faces // Do not compress interface at non-coupled boundary faces
@ -74,12 +74,12 @@
alpha2 = 1.0 - alpha1; alpha2 = 1.0 - alpha1;
interface.correct(); mixture.correct();
} }
for (int aCorr=0; aCorr<nAlphaCorr; aCorr++) for (int aCorr=0; aCorr<nAlphaCorr; aCorr++)
{ {
surfaceScalarField phir(phic*interface.nHatf()); surfaceScalarField phir(phic*mixture.nHatf());
tmp<surfaceScalarField> tphiAlphaUn tmp<surfaceScalarField> tphiAlphaUn
( (
@ -132,7 +132,7 @@
alpha2 = 1.0 - alpha1; alpha2 = 1.0 - alpha1;
interface.correct(); mixture.correct();
} }
rhoPhi = tphiAlpha()*(rho1 - rho2) + phi*rho2; rhoPhi = tphiAlpha()*(rho1 - rho2) + phi*rho2;

View File

@ -30,13 +30,13 @@
Info<< "Reading transportProperties\n" << endl; Info<< "Reading transportProperties\n" << endl;
incompressibleTwoPhaseMixture twoPhaseProperties(U, phi); immiscibleIncompressibleTwoPhaseMixture mixture(U, phi);
volScalarField& alpha1(twoPhaseProperties.alpha1()); volScalarField& alpha1(mixture.alpha1());
volScalarField& alpha2(twoPhaseProperties.alpha2()); volScalarField& alpha2(mixture.alpha2());
const dimensionedScalar& rho1 = twoPhaseProperties.rho1(); const dimensionedScalar& rho1 = mixture.rho1();
const dimensionedScalar& rho2 = twoPhaseProperties.rho2(); const dimensionedScalar& rho2 = mixture.rho2();
// Need to store rho for ddt(rho, U) // Need to store rho for ddt(rho, U)
@ -70,14 +70,10 @@
); );
// Construct interface from alpha1 distribution
interfaceProperties interface(alpha1, U, twoPhaseProperties);
// Construct incompressible turbulence model // Construct incompressible turbulence model
autoPtr<incompressible::turbulenceModel> turbulence autoPtr<incompressible::turbulenceModel> turbulence
( (
incompressible::turbulenceModel::New(U, phi, twoPhaseProperties) incompressible::turbulenceModel::New(U, phi, mixture)
); );
#include "readGravitationalAcceleration.H" #include "readGravitationalAcceleration.H"
@ -131,7 +127,9 @@
p_rgh = p - rho*gh; p_rgh = p - rho*gh;
} }
fv::IOoptionList fvOptions(mesh); fv::IOoptionList fvOptions(mesh);
// MULES Correction
tmp<surfaceScalarField> tphiAlphaCorr0; tmp<surfaceScalarField> tphiAlphaCorr0;

View File

@ -5,6 +5,7 @@ EXE_INC = \
-I$(LIB_SRC)/transportModels/incompressible/lnInclude \ -I$(LIB_SRC)/transportModels/incompressible/lnInclude \
-I$(LIB_SRC)/transportModels/interfaceProperties/lnInclude \ -I$(LIB_SRC)/transportModels/interfaceProperties/lnInclude \
-I$(LIB_SRC)/turbulenceModels/incompressible/turbulenceModel \ -I$(LIB_SRC)/turbulenceModels/incompressible/turbulenceModel \
-I$(LIB_SRC)/transportModels/immiscibleIncompressibleTwoPhaseMixture/lnInclude \
-I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/dynamicMesh/lnInclude \ -I$(LIB_SRC)/dynamicMesh/lnInclude \
-I$(LIB_SRC)/dynamicFvMesh/lnInclude \ -I$(LIB_SRC)/dynamicFvMesh/lnInclude \
@ -13,10 +14,7 @@ EXE_INC = \
-I$(LIB_SRC)/sampling/lnInclude -I$(LIB_SRC)/sampling/lnInclude
EXE_LIBS = \ EXE_LIBS = \
-ltwoPhaseMixture \ -limmiscibleIncompressibleTwoPhaseMixture \
-linterfaceProperties \
-ltwoPhaseProperties \
-lincompressibleTransportModels \
-lincompressibleTurbulenceModel \ -lincompressibleTurbulenceModel \
-lincompressibleRASModels \ -lincompressibleRASModels \
-lincompressibleLESModels \ -lincompressibleLESModels \

View File

@ -36,8 +36,7 @@ Description
#include "dynamicFvMesh.H" #include "dynamicFvMesh.H"
#include "CMULES.H" #include "CMULES.H"
#include "subCycle.H" #include "subCycle.H"
#include "interfaceProperties.H" #include "immiscibleIncompressibleTwoPhaseMixture.H"
#include "incompressibleTwoPhaseMixture.H"
#include "turbulenceModel.H" #include "turbulenceModel.H"
#include "pimpleControl.H" #include "pimpleControl.H"
#include "fvIOoptionList.H" #include "fvIOoptionList.H"
@ -121,7 +120,7 @@ int main(int argc, char *argv[])
// Make the flux relative to the mesh motion // Make the flux relative to the mesh motion
fvc::makeRelative(phi, U); fvc::makeRelative(phi, U);
interface.correct(); mixture.correct();
} }
if (mesh.changing() && checkMeshCourantNo) if (mesh.changing() && checkMeshCourantNo)
@ -131,11 +130,9 @@ int main(int argc, char *argv[])
} }
#include "alphaControls.H" #include "alphaControls.H"
twoPhaseProperties.correct();
#include "alphaEqnSubCycle.H" #include "alphaEqnSubCycle.H"
interface.correct();
mixture.correct();
#include "UEqn.H" #include "UEqn.H"

View File

@ -22,7 +22,7 @@
surfaceScalarField phig surfaceScalarField phig
( (
( (
fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1) mixture.surfaceTensionForce()
- ghf*fvc::snGrad(rho) - ghf*fvc::snGrad(rho)
)*rAUf*mesh.magSf() )*rAUf*mesh.magSf()
); );

View File

@ -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) 2011-2013 OpenFOAM Foundation \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -40,8 +40,7 @@ Description
#include "fvCFD.H" #include "fvCFD.H"
#include "CMULES.H" #include "CMULES.H"
#include "subCycle.H" #include "subCycle.H"
#include "interfaceProperties.H" #include "immiscibleIncompressibleTwoPhaseMixture.H"
#include "incompressibleTwoPhaseMixture.H"
#include "turbulenceModel.H" #include "turbulenceModel.H"
#include "pimpleControl.H" #include "pimpleControl.H"
#include "fvIOoptionList.H" #include "fvIOoptionList.H"
@ -84,11 +83,9 @@ int main(int argc, char *argv[])
while (pimple.loop()) while (pimple.loop())
{ {
#include "alphaControls.H" #include "alphaControls.H"
twoPhaseProperties.correct();
#include "alphaEqnSubCycle.H" #include "alphaEqnSubCycle.H"
interface.correct();
mixture.correct();
#include "UEqn.H" #include "UEqn.H"

View File

@ -1,5 +1,6 @@
incompressibleThreePhaseMixture/threePhaseMixture.C incompressibleThreePhaseMixture/incompressibleThreePhaseMixture.C
threePhaseInterfaceProperties/threePhaseInterfaceProperties.C threePhaseInterfaceProperties/threePhaseInterfaceProperties.C
immiscibleIncompressibleThreePhaseMixture/immiscibleIncompressibleThreePhaseMixture.C
interMixingFoam.C interMixingFoam.C
EXE = $(FOAM_APPBIN)/interMixingFoam EXE = $(FOAM_APPBIN)/interMixingFoam

View File

@ -1,6 +1,7 @@
EXE_INC = \ EXE_INC = \
-I.. \ -I.. \
-I$(LIB_SRC)/transportModels/twoPhaseMixture/lnInclude \ -I$(LIB_SRC)/transportModels/twoPhaseMixture/lnInclude \
-IimmiscibleIncompressibleThreePhaseMixture \
-IincompressibleThreePhaseMixture \ -IincompressibleThreePhaseMixture \
-IthreePhaseInterfaceProperties \ -IthreePhaseInterfaceProperties \
-I$(LIB_SRC)/transportModels/interfaceProperties/lnInclude \ -I$(LIB_SRC)/transportModels/interfaceProperties/lnInclude \

View File

@ -12,7 +12,7 @@
IOobject::NO_READ, IOobject::NO_READ,
IOobject::NO_WRITE IOobject::NO_WRITE
), ),
interface.cAlpha()*mag(phi/mesh.magSf())*interface.nHatf() mixture.cAlpha()*mag(phi/mesh.magSf())*mixture.nHatf()
); );
for (int gCorr=0; gCorr<nAlphaCorr; gCorr++) for (int gCorr=0; gCorr<nAlphaCorr; gCorr++)

View File

@ -28,17 +28,17 @@
#include "createPhi.H" #include "createPhi.H"
threePhaseMixture threePhaseProperties(U, phi); immiscibleIncompressibleThreePhaseMixture mixture(U, phi);
volScalarField& alpha1(threePhaseProperties.alpha1()); volScalarField& alpha1(mixture.alpha1());
volScalarField& alpha2(threePhaseProperties.alpha2()); volScalarField& alpha2(mixture.alpha2());
volScalarField& alpha3(threePhaseProperties.alpha3()); volScalarField& alpha3(mixture.alpha3());
const dimensionedScalar& rho1 = threePhaseProperties.rho1(); const dimensionedScalar& rho1 = mixture.rho1();
const dimensionedScalar& rho2 = threePhaseProperties.rho2(); const dimensionedScalar& rho2 = mixture.rho2();
const dimensionedScalar& rho3 = threePhaseProperties.rho3(); const dimensionedScalar& rho3 = mixture.rho3();
dimensionedScalar D23(threePhaseProperties.lookup("D23")); dimensionedScalar D23(mixture.lookup("D23"));
// Need to store rho for ddt(rho, U) // Need to store rho for ddt(rho, U)
volScalarField rho volScalarField rho
@ -73,14 +73,10 @@
); );
// Construct interface from alpha distribution
threePhaseInterfaceProperties interface(threePhaseProperties);
// Construct incompressible turbulence model // Construct incompressible turbulence model
autoPtr<incompressible::turbulenceModel> turbulence autoPtr<incompressible::turbulenceModel> turbulence
( (
incompressible::turbulenceModel::New(U, phi, threePhaseProperties) incompressible::turbulenceModel::New(U, phi, mixture)
); );

View File

@ -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) 2013 OpenFOAM Foundation \\ / A nd | Copyright (C) 2014 OpenFOAM Foundation
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -21,37 +21,26 @@ License
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Global
CourantNo
Description
Calculates and outputs the mean and maximum Courant Numbers.
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
scalar maxAlphaCo #include "immiscibleIncompressibleThreePhaseMixture.H"
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
Foam::immiscibleIncompressibleThreePhaseMixture::
immiscibleIncompressibleThreePhaseMixture
( (
readScalar(runTime.controlDict().lookup("maxAlphaCo")) const volVectorField& U,
); const surfaceScalarField& phi
)
scalar alphaCoNum = 0.0; :
scalar meanAlphaCoNum = 0.0; incompressibleThreePhaseMixture(U, phi),
threePhaseInterfaceProperties
if (mesh.nInternalFaces())
{
scalarField sumPhi
( (
multiphaseProperties.nearInterface()().internalField() static_cast<incompressibleThreePhaseMixture&>(*this)
* fvc::surfaceSum(mag(phi))().internalField() )
); {}
alphaCoNum = 0.5*gMax(sumPhi/mesh.V().field())*runTime.deltaTValue();
meanAlphaCoNum =
0.5*(gSum(sumPhi)/gSum(mesh.V().field()))*runTime.deltaTValue();
}
Info<< "Interface Courant Number mean: " << meanAlphaCoNum
<< " max: " << alphaCoNum << endl;
// ************************************************************************* // // ************************************************************************* //

View File

@ -0,0 +1,92 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2014 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::immiscibleIncompressibleThreePhaseMixture
Description
An immiscible incompressible two-phase mixture transport model
SourceFiles
immiscibleIncompressibleThreePhaseMixture.C
\*---------------------------------------------------------------------------*/
#ifndef immiscibleIncompressibleThreePhaseMixture_H
#define immiscibleIncompressibleThreePhaseMixture_H
#include "incompressibleThreePhaseMixture.H"
#include "threePhaseInterfaceProperties.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
/*---------------------------------------------------------------------------*\
Class immiscibleIncompressibleThreePhaseMixture Declaration
\*---------------------------------------------------------------------------*/
class immiscibleIncompressibleThreePhaseMixture
:
public incompressibleThreePhaseMixture,
public threePhaseInterfaceProperties
{
public:
// Constructors
//- Construct from components
immiscibleIncompressibleThreePhaseMixture
(
const volVectorField& U,
const surfaceScalarField& phi
);
//- Destructor
virtual ~immiscibleIncompressibleThreePhaseMixture()
{}
// Member Functions
//- Correct the transport and interface properties
virtual void correct()
{
incompressibleThreePhaseMixture::correct();
threePhaseInterfaceProperties::correct();
}
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //

View File

@ -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) 2011-2013 OpenFOAM Foundation \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -23,7 +23,7 @@ License
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
#include "threePhaseMixture.H" #include "incompressibleThreePhaseMixture.H"
#include "addToRunTimeSelectionTable.H" #include "addToRunTimeSelectionTable.H"
#include "surfaceFields.H" #include "surfaceFields.H"
#include "fvc.H" #include "fvc.H"
@ -31,7 +31,7 @@ License
// * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * // // * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * * //
//- Calculate and return the laminar viscosity //- Calculate and return the laminar viscosity
void Foam::threePhaseMixture::calcNu() void Foam::incompressibleThreePhaseMixture::calcNu()
{ {
nuModel1_->correct(); nuModel1_->correct();
nuModel2_->correct(); nuModel2_->correct();
@ -44,7 +44,7 @@ void Foam::threePhaseMixture::calcNu()
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
Foam::threePhaseMixture::threePhaseMixture Foam::incompressibleThreePhaseMixture::incompressibleThreePhaseMixture
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi const surfaceScalarField& phi
@ -163,7 +163,8 @@ Foam::threePhaseMixture::threePhaseMixture
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
Foam::tmp<Foam::volScalarField> Foam::threePhaseMixture::mu() const Foam::tmp<Foam::volScalarField>
Foam::incompressibleThreePhaseMixture::mu() const
{ {
return tmp<volScalarField> return tmp<volScalarField>
( (
@ -178,7 +179,8 @@ Foam::tmp<Foam::volScalarField> Foam::threePhaseMixture::mu() const
} }
Foam::tmp<Foam::surfaceScalarField> Foam::threePhaseMixture::muf() const Foam::tmp<Foam::surfaceScalarField>
Foam::incompressibleThreePhaseMixture::muf() const
{ {
surfaceScalarField alpha1f(fvc::interpolate(alpha1_)); surfaceScalarField alpha1f(fvc::interpolate(alpha1_));
surfaceScalarField alpha2f(fvc::interpolate(alpha2_)); surfaceScalarField alpha2f(fvc::interpolate(alpha2_));
@ -197,7 +199,8 @@ Foam::tmp<Foam::surfaceScalarField> Foam::threePhaseMixture::muf() const
} }
Foam::tmp<Foam::surfaceScalarField> Foam::threePhaseMixture::nuf() const Foam::tmp<Foam::surfaceScalarField>
Foam::incompressibleThreePhaseMixture::nuf() const
{ {
surfaceScalarField alpha1f(fvc::interpolate(alpha1_)); surfaceScalarField alpha1f(fvc::interpolate(alpha1_));
surfaceScalarField alpha2f(fvc::interpolate(alpha2_)); surfaceScalarField alpha2f(fvc::interpolate(alpha2_));
@ -218,7 +221,7 @@ Foam::tmp<Foam::surfaceScalarField> Foam::threePhaseMixture::nuf() const
} }
bool Foam::threePhaseMixture::read() bool Foam::incompressibleThreePhaseMixture::read()
{ {
if (transportModel::read()) if (transportModel::read())
{ {

View File

@ -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) 2011-2013 OpenFOAM Foundation \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -22,17 +22,17 @@ License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Class Class
threePhaseMixture incompressibleThreePhaseMixture
Description Description
SourceFiles SourceFiles
threePhaseMixture.C incompressibleThreePhaseMixture.C
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
#ifndef threePhaseMixture_H #ifndef incompressibleThreePhaseMixture_H
#define threePhaseMixture_H #define incompressibleThreePhaseMixture_H
#include "incompressible/transportModel/transportModel.H" #include "incompressible/transportModel/transportModel.H"
#include "IOdictionary.H" #include "IOdictionary.H"
@ -46,10 +46,10 @@ namespace Foam
{ {
/*---------------------------------------------------------------------------*\ /*---------------------------------------------------------------------------*\
Class threePhaseMixture Declaration Class incompressibleThreePhaseMixture Declaration
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
class threePhaseMixture class incompressibleThreePhaseMixture
: :
public IOdictionary, public IOdictionary,
public transportModel public transportModel
@ -89,7 +89,7 @@ public:
// Constructors // Constructors
//- Construct from components //- Construct from components
threePhaseMixture incompressibleThreePhaseMixture
( (
const volVectorField& U, const volVectorField& U,
const surfaceScalarField& phi const surfaceScalarField& phi
@ -97,7 +97,7 @@ public:
//- Destructor //- Destructor
~threePhaseMixture() ~incompressibleThreePhaseMixture()
{} {}

View File

@ -33,8 +33,7 @@ Description
#include "fvCFD.H" #include "fvCFD.H"
#include "CMULES.H" #include "CMULES.H"
#include "subCycle.H" #include "subCycle.H"
#include "threePhaseMixture.H" #include "immiscibleIncompressibleThreePhaseMixture.H"
#include "threePhaseInterfaceProperties.H"
#include "turbulenceModel.H" #include "turbulenceModel.H"
#include "pimpleControl.H" #include "pimpleControl.H"
#include "fvIOoptionList.H" #include "fvIOoptionList.H"
@ -78,13 +77,9 @@ int main(int argc, char *argv[])
while (pimple.loop()) while (pimple.loop())
{ {
#include "alphaControls.H" #include "alphaControls.H"
threePhaseProperties.correct();
#include "alphaEqnsSubCycle.H" #include "alphaEqnsSubCycle.H"
interface.correct();
#define twoPhaseProperties threePhaseProperties mixture.correct();
#include "UEqn.H" #include "UEqn.H"

View File

@ -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) 2011-2013 OpenFOAM Foundation \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -37,6 +37,7 @@ Description
#include "surfaceInterpolate.H" #include "surfaceInterpolate.H"
#include "fvcDiv.H" #include "fvcDiv.H"
#include "fvcGrad.H" #include "fvcGrad.H"
#include "fvcSnGrad.H"
// * * * * * * * * * * * * * * * Static Member Data * * * * * * * * * * * * // // * * * * * * * * * * * * * * * Static Member Data * * * * * * * * * * * * //
@ -166,7 +167,7 @@ void Foam::threePhaseInterfaceProperties::calculateK()
Foam::threePhaseInterfaceProperties::threePhaseInterfaceProperties Foam::threePhaseInterfaceProperties::threePhaseInterfaceProperties
( (
const threePhaseMixture& mixture const incompressibleThreePhaseMixture& mixture
) )
: :
mixture_(mixture), mixture_(mixture),
@ -212,4 +213,25 @@ Foam::threePhaseInterfaceProperties::threePhaseInterfaceProperties
} }
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
Foam::tmp<Foam::surfaceScalarField>
Foam::threePhaseInterfaceProperties::surfaceTensionForce() const
{
return fvc::interpolate(sigmaK())*fvc::snGrad(mixture_.alpha1());
}
Foam::tmp<Foam::volScalarField>
Foam::threePhaseInterfaceProperties::nearInterface() const
{
return max
(
pos(mixture_.alpha1() - 0.01)*pos(0.99 - mixture_.alpha1()),
pos(mixture_.alpha2() - 0.01)*pos(0.99 - mixture_.alpha2())
);
}
// ************************************************************************* // // ************************************************************************* //

View File

@ -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) 2011-2012 OpenFOAM Foundation \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -37,7 +37,7 @@ SourceFiles
#ifndef threePhaseInterfaceProperties_H #ifndef threePhaseInterfaceProperties_H
#define threePhaseInterfaceProperties_H #define threePhaseInterfaceProperties_H
#include "threePhaseMixture.H" #include "incompressibleThreePhaseMixture.H"
#include "surfaceFields.H" #include "surfaceFields.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@ -53,7 +53,7 @@ class threePhaseInterfaceProperties
{ {
// Private data // Private data
const threePhaseMixture& mixture_; const incompressibleThreePhaseMixture& mixture_;
//- Compression coefficient //- Compression coefficient
scalar cAlpha_; scalar cAlpha_;
@ -98,7 +98,10 @@ public:
// Constructors // Constructors
//- Construct from volume fraction field alpha and IOdictionary //- Construct from volume fraction field alpha and IOdictionary
threePhaseInterfaceProperties(const threePhaseMixture& mixture); threePhaseInterfaceProperties
(
const incompressibleThreePhaseMixture& mixture
);
// Member Functions // Member Functions
@ -138,6 +141,12 @@ public:
return sigma()*K_; return sigma()*K_;
} }
tmp<surfaceScalarField> surfaceTensionForce() const;
//- Indicator of the proximity of the interface
// Field values are 1 near and 0 away for the interface.
tmp<volScalarField> nearInterface() const;
void correct() void correct()
{ {
calculateK(); calculateK();

View File

@ -11,13 +11,13 @@
(fvc::interpolate(HbyA) & mesh.Sf()) (fvc::interpolate(HbyA) & mesh.Sf())
+ fvc::interpolate(rho*rAU)*fvc::ddtCorr(U, phi) + fvc::interpolate(rho*rAU)*fvc::ddtCorr(U, phi)
); );
adjustPhi(phiHbyA, U, p_rgh); adjustPhi(phiHbyA, U, p_rgh);
fvOptions.makeRelative(phiHbyA);
surfaceScalarField phig surfaceScalarField phig
( (
( (
fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1) mixture.surfaceTensionForce()
- ghf*fvc::snGrad(rho) - ghf*fvc::snGrad(rho)
)*rAUf*mesh.magSf() )*rAUf*mesh.magSf()
); );
@ -30,7 +30,7 @@
p_rgh.boundaryField(), p_rgh.boundaryField(),
( (
phiHbyA.boundaryField() phiHbyA.boundaryField()
- (mesh.Sf().boundaryField() & U.boundaryField()) - fvOptions.relative(mesh.Sf().boundaryField() & U.boundaryField())
)/(mesh.magSf().boundaryField()*rAUf.boundaryField()) )/(mesh.magSf().boundaryField()*rAUf.boundaryField())
); );

View File

@ -4,6 +4,7 @@ EXE_INC = \
-I$(LIB_SRC)/transportModels \ -I$(LIB_SRC)/transportModels \
-I$(LIB_SRC)/transportModels/incompressible/lnInclude \ -I$(LIB_SRC)/transportModels/incompressible/lnInclude \
-I$(LIB_SRC)/transportModels/interfaceProperties/lnInclude \ -I$(LIB_SRC)/transportModels/interfaceProperties/lnInclude \
-I$(LIB_SRC)/transportModels/immiscibleIncompressibleTwoPhaseMixture/lnInclude \
-I$(LIB_SRC)/turbulenceModels/incompressible/turbulenceModel \ -I$(LIB_SRC)/turbulenceModels/incompressible/turbulenceModel \
-I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/meshTools/lnInclude \
@ -11,9 +12,7 @@ EXE_INC = \
-I$(LIB_SRC)/sampling/lnInclude -I$(LIB_SRC)/sampling/lnInclude
EXE_LIBS = \ EXE_LIBS = \
-ltwoPhaseMixture \ -limmiscibleIncompressibleTwoPhaseMixture \
-linterfaceProperties \
-ltwoPhaseProperties \
-lincompressibleTransportModels \ -lincompressibleTransportModels \
-lincompressibleTurbulenceModel \ -lincompressibleTurbulenceModel \
-lincompressibleRASModels \ -lincompressibleRASModels \

View File

@ -1,12 +1,12 @@
surfaceScalarField muEff surfaceScalarField muEff
( (
"muEff", "muEff",
twoPhaseProperties.muf() mixture.muf()
+ fvc::interpolate(rho*turbulence->nut()) + fvc::interpolate(rho*turbulence->nut())
); );
// Calculate and cache mu for the porous media // Calculate and cache mu for the porous media
volScalarField mu(twoPhaseProperties.mu()); volScalarField mu(mixture.mu());
fvVectorMatrix UEqn fvVectorMatrix UEqn
( (
@ -33,7 +33,7 @@
fvc::reconstruct fvc::reconstruct
( (
( (
fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1) mixture.surfaceTensionForce()
- ghf*fvc::snGrad(rho) - ghf*fvc::snGrad(rho)
- fvc::snGrad(p_rgh) - fvc::snGrad(p_rgh)
) * mesh.magSf() ) * mesh.magSf()

View File

@ -41,8 +41,7 @@ Description
#include "fvCFD.H" #include "fvCFD.H"
#include "CMULES.H" #include "CMULES.H"
#include "subCycle.H" #include "subCycle.H"
#include "interfaceProperties.H" #include "immiscibleIncompressibleTwoPhaseMixture.H"
#include "incompressibleTwoPhaseMixture.H"
#include "turbulenceModel.H" #include "turbulenceModel.H"
#include "IOporosityModelList.H" #include "IOporosityModelList.H"
#include "pimpleControl.H" #include "pimpleControl.H"
@ -87,11 +86,9 @@ int main(int argc, char *argv[])
while (pimple.loop()) while (pimple.loop())
{ {
#include "alphaControls.H" #include "alphaControls.H"
twoPhaseProperties.correct();
#include "alphaEqnSubCycle.H" #include "alphaEqnSubCycle.H"
interface.correct();
mixture.correct();
#include "UEqn.H" #include "UEqn.H"

View File

@ -17,7 +17,7 @@
fvc::reconstruct fvc::reconstruct
( (
( (
fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1) interface.surfaceTensionForce()
- ghf*fvc::snGrad(rho) - ghf*fvc::snGrad(rho)
- fvc::snGrad(p_rgh) - fvc::snGrad(p_rgh)
) * mesh.magSf() ) * mesh.magSf()

View File

@ -5,7 +5,7 @@
surfaceScalarField phir("phir", phic*interface.nHatf()); surfaceScalarField phir("phir", phic*interface.nHatf());
Pair<tmp<volScalarField> > vDotAlphal = Pair<tmp<volScalarField> > vDotAlphal =
twoPhaseProperties->vDotAlphal(); mixture->vDotAlphal();
const volScalarField& vDotcAlphal = vDotAlphal[0](); const volScalarField& vDotcAlphal = vDotAlphal[0]();
const volScalarField& vDotvAlphal = vDotAlphal[1](); const volScalarField& vDotvAlphal = vDotAlphal[1]();
const volScalarField vDotvmcAlphal(vDotvAlphal - vDotcAlphal); const volScalarField vDotvmcAlphal(vDotvAlphal - vDotcAlphal);

View File

@ -30,15 +30,15 @@
Info<< "Creating phaseChangeTwoPhaseMixture\n" << endl; Info<< "Creating phaseChangeTwoPhaseMixture\n" << endl;
autoPtr<phaseChangeTwoPhaseMixture> twoPhaseProperties = autoPtr<phaseChangeTwoPhaseMixture> mixture =
phaseChangeTwoPhaseMixture::New(U, phi); phaseChangeTwoPhaseMixture::New(U, phi);
volScalarField& alpha1(twoPhaseProperties->alpha1()); volScalarField& alpha1(mixture->alpha1());
volScalarField& alpha2(twoPhaseProperties->alpha2()); volScalarField& alpha2(mixture->alpha2());
const dimensionedScalar& rho1 = twoPhaseProperties->rho1(); const dimensionedScalar& rho1 = mixture->rho1();
const dimensionedScalar& rho2 = twoPhaseProperties->rho2(); const dimensionedScalar& rho2 = mixture->rho2();
const dimensionedScalar& pSat = twoPhaseProperties->pSat(); const dimensionedScalar& pSat = mixture->pSat();
// Need to store rho for ddt(rho, U) // Need to store rho for ddt(rho, U)
@ -58,12 +58,12 @@
// Construct interface from alpha1 distribution // Construct interface from alpha1 distribution
interfaceProperties interface(alpha1, U, twoPhaseProperties()); interfaceProperties interface(alpha1, U, mixture());
// Construct incompressible turbulence model // Construct incompressible turbulence model
autoPtr<incompressible::turbulenceModel> turbulence autoPtr<incompressible::turbulenceModel> turbulence
( (
incompressible::turbulenceModel::New(U, phi, twoPhaseProperties()) incompressible::turbulenceModel::New(U, phi, mixture())
); );

View File

@ -154,7 +154,7 @@ int main(int argc, char *argv[])
dimensionedScalar("0", dimMass/dimTime, 0) dimensionedScalar("0", dimMass/dimTime, 0)
); );
twoPhaseProperties->correct(); mixture->correct();
#include "alphaEqnSubCycle.H" #include "alphaEqnSubCycle.H"
interface.correct(); interface.correct();

View File

@ -22,7 +22,7 @@
surfaceScalarField phig surfaceScalarField phig
( (
( (
fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1) interface.surfaceTensionForce()
- ghf*fvc::snGrad(rho) - ghf*fvc::snGrad(rho)
)*rAUf*mesh.magSf() )*rAUf*mesh.magSf()
); );
@ -39,7 +39,7 @@
)/(mesh.magSf().boundaryField()*rAUf.boundaryField()) )/(mesh.magSf().boundaryField()*rAUf.boundaryField())
); );
Pair<tmp<volScalarField> > vDotP = twoPhaseProperties->vDotP(); Pair<tmp<volScalarField> > vDotP = mixture->vDotP();
const volScalarField& vDotcP = vDotP[0](); const volScalarField& vDotcP = vDotP[0]();
const volScalarField& vDotvP = vDotP[1](); const volScalarField& vDotvP = vDotP[1]();

View File

@ -100,7 +100,7 @@ int main(int argc, char *argv[])
dimensionedScalar("0", dimMass/dimTime, 0) dimensionedScalar("0", dimMass/dimTime, 0)
); );
twoPhaseProperties->correct(); mixture->correct();
#include "alphaEqnSubCycle.H" #include "alphaEqnSubCycle.H"
interface.correct(); interface.correct();

View File

@ -16,7 +16,7 @@
surfaceScalarField phig surfaceScalarField phig
( (
( (
fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1) interface.surfaceTensionForce()
- ghf*fvc::snGrad(rho) - ghf*fvc::snGrad(rho)
)*rAUf*mesh.magSf() )*rAUf*mesh.magSf()
); );
@ -33,7 +33,7 @@
)/(mesh.magSf().boundaryField()*rAUf.boundaryField()) )/(mesh.magSf().boundaryField()*rAUf.boundaryField())
); );
Pair<tmp<volScalarField> > vDotP = twoPhaseProperties->vDotP(); Pair<tmp<volScalarField> > vDotP = mixture->vDotP();
const volScalarField& vDotcP = vDotP[0](); const volScalarField& vDotcP = vDotP[0]();
const volScalarField& vDotvP = vDotP[1](); const volScalarField& vDotvP = vDotP[1]();

View File

@ -4,5 +4,6 @@ set -x
wclean libso multiphaseMixture wclean libso multiphaseMixture
wclean wclean
wclean multiphaseInterDyMFoam
# ----------------------------------------------------------------- end-of-file # ----------------------------------------------------------------- end-of-file

View File

@ -4,5 +4,6 @@ set -x
wmake libso multiphaseMixture wmake libso multiphaseMixture
wmake wmake
wmake multiphaseInterDyMFoam
# ----------------------------------------------------------------- end-of-file # ----------------------------------------------------------------- end-of-file

View File

@ -1,31 +0,0 @@
fvVectorMatrix UEqn
(
fvm::ddt(rho, U)
+ fvm::div(mixture.rhoPhi(), U)
+ turbulence->divDevRhoReff(rho, U)
==
fvOptions(rho, U)
);
UEqn.relax();
fvOptions.constrain(UEqn);
if (pimple.momentumPredictor())
{
solve
(
UEqn
==
fvc::reconstruct
(
(
mixture.surfaceTensionForce()
- ghf*fvc::snGrad(rho)
- fvc::snGrad(p_rgh)
) * mesh.magSf()
)
);
fvOptions.correct(U);
}

View File

@ -44,6 +44,7 @@
); );
rho.oldTime(); rho.oldTime();
const surfaceScalarField& rhoPhi(mixture.rhoPhi());
// Construct incompressible turbulence model // Construct incompressible turbulence model
autoPtr<incompressible::turbulenceModel> turbulence autoPtr<incompressible::turbulenceModel> turbulence

View File

@ -0,0 +1,3 @@
multiphaseInterDyMFoam.C
EXE = $(FOAM_APPBIN)/multiphaseInterDyMFoam

View File

@ -1,24 +1,30 @@
EXE_INC = \ EXE_INC = \
-I.. \ -I.. \
-I$(LIB_SRC)/transportModels/twoPhaseMixture/lnInclude \ -I../../interFoam/interDyMFoam \
-I../../interFoam \
-I../multiphaseMixture/lnInclude \
-I$(LIB_SRC)/transportModels \ -I$(LIB_SRC)/transportModels \
-I$(LIB_SRC)/transportModels/incompressible/lnInclude \ -I$(LIB_SRC)/transportModels/incompressible/lnInclude \
-I$(LIB_SRC)/transportModels/interfaceProperties/lnInclude \ -I$(LIB_SRC)/transportModels/interfaceProperties/lnInclude \
-I$(LIB_SRC)/turbulenceModels/incompressible/turbulenceModel \ -I$(LIB_SRC)/turbulenceModels/incompressible/turbulenceModel \
-I$(LIB_SRC)/finiteVolume/lnInclude \ -I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \ -I$(LIB_SRC)/dynamicMesh/lnInclude \
-I$(LIB_SRC)/dynamicFvMesh/lnInclude \
-I$(LIB_SRC)/fvOptions/lnInclude \ -I$(LIB_SRC)/fvOptions/lnInclude \
-I$(LIB_SRC)/meshTools/lnInclude \
-I$(LIB_SRC)/sampling/lnInclude -I$(LIB_SRC)/sampling/lnInclude
EXE_LIBS = \ EXE_LIBS = \
-ltwoPhaseMixture \ -lmultiphaseInterFoam \
-linterfaceProperties \ -linterfaceProperties \
-ltwoPhaseProperties \
-lincompressibleTransportModels \ -lincompressibleTransportModels \
-lincompressibleTurbulenceModel \ -lincompressibleTurbulenceModel \
-lincompressibleRASModels \ -lincompressibleRASModels \
-lincompressibleLESModels \ -lincompressibleLESModels \
-lfiniteVolume \ -lfiniteVolume \
-lmeshTools \ -ldynamicMesh \
-ldynamicFvMesh \
-ltopoChangerFvMesh \
-lfvOptions \ -lfvOptions \
-lmeshTools \
-lsampling -lsampling

View File

@ -22,27 +22,20 @@ License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Application Application
MRFInterFoam multiphaseInterFoam
Description Description
Solver for 2 incompressible, isothermal immiscible fluids using a VOF Solver for n incompressible fluids which captures the interfaces and
(volume of fluid) phase-fraction based interface capturing approach. includes surface-tension and contact-angle effects for each phase.
The momentum and other fluid properties are of the "mixture" and a single
momentum equation is solved.
Turbulence modelling is generic, i.e. laminar, RAS or LES may be selected. Turbulence modelling is generic, i.e. laminar, RAS or LES may be selected.
For a two-fluid approach see twoPhaseEulerFoam.
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
#include "fvCFD.H" #include "fvCFD.H"
#include "CMULES.H" #include "dynamicFvMesh.H"
#include "subCycle.H" #include "multiphaseMixture.H"
#include "interfaceProperties.H"
#include "incompressibleTwoPhaseMixture.H"
#include "turbulenceModel.H" #include "turbulenceModel.H"
#include "IOMRFZoneList.H"
#include "pimpleControl.H" #include "pimpleControl.H"
#include "fvIOoptionList.H" #include "fvIOoptionList.H"
#include "fixedFluxPressureFvPatchScalarField.H" #include "fixedFluxPressureFvPatchScalarField.H"
@ -53,16 +46,31 @@ int main(int argc, char *argv[])
{ {
#include "setRootCase.H" #include "setRootCase.H"
#include "createTime.H" #include "createTime.H"
#include "createMesh.H" #include "createDynamicFvMesh.H"
#include "initContinuityErrs.H" #include "initContinuityErrs.H"
#include "createFields.H"
#include "createMRFZones.H"
#include "readTimeControls.H"
pimpleControl pimple(mesh); pimpleControl pimple(mesh);
#include "createFields.H"
#include "readTimeControls.H"
#include "createPrghCorrTypes.H" #include "createPrghCorrTypes.H"
volScalarField rAU
(
IOobject
(
"rAU",
runTime.timeName(),
mesh,
IOobject::READ_IF_PRESENT,
IOobject::AUTO_WRITE
),
mesh,
dimensionedScalar("rAUf", dimTime/rho.dimensions(), 1.0)
);
#include "correctPhi.H" #include "correctPhi.H"
#include "createUf.H"
#include "CourantNo.H" #include "CourantNo.H"
#include "setInitialDeltaT.H" #include "setInitialDeltaT.H"
@ -72,9 +80,10 @@ int main(int argc, char *argv[])
while (runTime.run()) while (runTime.run())
{ {
#include "readTimeControls.H" #include "readControls.H"
#include "CourantNo.H" #include "CourantNo.H"
#include "alphaCourantNo.H" #include "alphaCourantNo.H"
#include "setDeltaT.H" #include "setDeltaT.H"
runTime++; runTime++;
@ -84,13 +93,43 @@ int main(int argc, char *argv[])
// --- Pressure-velocity PIMPLE corrector loop // --- Pressure-velocity PIMPLE corrector loop
while (pimple.loop()) while (pimple.loop())
{ {
#include "alphaControls.H" if (pimple.firstIter() || moveMeshOuterCorrectors)
{
scalar timeBeforeMeshUpdate = runTime.elapsedCpuTime();
twoPhaseProperties.correct(); mesh.update();
#include "alphaEqnSubCycle.H" if (mesh.changing())
interface.correct(); {
#include "zonePhaseVolumes.H" Info<< "Execution time for mesh.update() = "
<< runTime.elapsedCpuTime() - timeBeforeMeshUpdate
<< " s" << endl;
gh = g & mesh.C();
ghf = g & mesh.Cf();
}
if (mesh.changing() && correctPhi)
{
// Calculate absolute flux from the mapped surface velocity
phi = mesh.Sf() & Uf;
#include "correctPhi.H"
// Make the flux relative to the mesh motion
fvc::makeRelative(phi, U);
mixture.correct();
}
if (mesh.changing() && checkMeshCourantNo)
{
#include "meshCourantNo.H"
}
}
mixture.solve();
rho = mixture.rho();
#include "UEqn.H" #include "UEqn.H"

View File

@ -298,10 +298,7 @@ Foam::multiphaseMixture::surfaceTensionForce() const
void Foam::multiphaseMixture::solve() void Foam::multiphaseMixture::solve()
{ {
forAllIter(PtrDictionary<phase>, phases_, iter) correct();
{
iter().correct();
}
const Time& runTime = mesh_.time(); const Time& runTime = mesh_.time();
@ -347,7 +344,12 @@ void Foam::multiphaseMixture::solve()
void Foam::multiphaseMixture::correct() void Foam::multiphaseMixture::correct()
{} {
forAllIter(PtrDictionary<phase>, phases_, iter)
{
iter().correct();
}
}
Foam::tmp<Foam::surfaceVectorField> Foam::multiphaseMixture::nHatfv Foam::tmp<Foam::surfaceVectorField> Foam::multiphaseMixture::nHatfv

View File

@ -1,72 +0,0 @@
{
volScalarField rAU("rAU", 1.0/UEqn.A());
surfaceScalarField rAUf("rAUf", fvc::interpolate(rAU));
volVectorField HbyA("HbyA", U);
HbyA = rAU*UEqn.H();
surfaceScalarField phiHbyA
(
"phiHbyA",
(fvc::interpolate(HbyA) & mesh.Sf())
+ fvc::interpolate(rho*rAU)*fvc::ddtCorr(U, phi)
);
adjustPhi(phiHbyA, U, p_rgh);
fvOptions.makeRelative(phiHbyA);
surfaceScalarField phig
(
(
mixture.surfaceTensionForce()
- ghf*fvc::snGrad(rho)
)*rAUf*mesh.magSf()
);
phiHbyA += phig;
// Update the fixedFluxPressure BCs to ensure flux consistency
setSnGrad<fixedFluxPressureFvPatchScalarField>
(
p_rgh.boundaryField(),
(
phiHbyA.boundaryField()
- fvOptions.relative(mesh.Sf().boundaryField() & U.boundaryField())
)/(mesh.magSf().boundaryField()*rAUf.boundaryField())
);
while (pimple.correctNonOrthogonal())
{
fvScalarMatrix p_rghEqn
(
fvm::laplacian(rAUf, p_rgh) == fvc::div(phiHbyA)
);
p_rghEqn.setReference(pRefCell, getRefCellValue(p_rgh, pRefCell));
p_rghEqn.solve(mesh.solver(p_rgh.select(pimple.finalInnerIter())));
if (pimple.finalNonOrthogonalIter())
{
phi = phiHbyA - p_rghEqn.flux();
U = HbyA + rAU*fvc::reconstruct((phig - p_rghEqn.flux())/rAUf);
U.correctBoundaryConditions();
fvOptions.correct(U);
}
}
#include "continuityErrs.H"
p == p_rgh + rho*gh;
if (p_rgh.needReference())
{
p += dimensionedScalar
(
"p",
p.dimensions(),
pRefValue - getRefCellValue(p, pRefCell)
);
p_rgh = p - rho*gh;
}
}

View File

@ -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) 2011 OpenFOAM Foundation \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -22,7 +22,7 @@ License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Global Global
CourantNo alphaCourantNo
Description Description
Calculates and outputs the mean and maximum Courant Numbers. Calculates and outputs the mean and maximum Courant Numbers.
@ -41,8 +41,8 @@ if (mesh.nInternalFaces())
{ {
scalarField sumPhi scalarField sumPhi
( (
mixture.nearInterface()().internalField() pos(alpha1 - 0.01)*pos(0.99 - alpha1)
* fvc::surfaceSum(mag(phi))().internalField() *fvc::surfaceSum(mag(phi))().internalField()
); );
alphaCoNum = 0.5*gMax(sumPhi/mesh.V().field())*runTime.deltaTValue(); alphaCoNum = 0.5*gMax(sumPhi/mesh.V().field())*runTime.deltaTValue();

View File

@ -29,18 +29,18 @@
#include "createPhi.H" #include "createPhi.H"
Info<< "Reading transportProperties\n" << endl; Info<< "Reading transportProperties\n" << endl;
incompressibleTwoPhaseMixture twoPhaseProperties(U, phi); incompressibleTwoPhaseMixture mixture(U, phi);
volScalarField& alpha1(twoPhaseProperties.alpha1()); volScalarField& alpha1(mixture.alpha1());
volScalarField& alpha2(twoPhaseProperties.alpha2()); volScalarField& alpha2(mixture.alpha2());
const dimensionedScalar& rho1 = twoPhaseProperties.rho1(); const dimensionedScalar& rho1 = mixture.rho1();
const dimensionedScalar& rho2 = twoPhaseProperties.rho2(); const dimensionedScalar& rho2 = mixture.rho2();
dimensionedScalar Dab(twoPhaseProperties.lookup("Dab")); dimensionedScalar Dab(mixture.lookup("Dab"));
// Read the reciprocal of the turbulent Schmidt number // Read the reciprocal of the turbulent Schmidt number
dimensionedScalar alphatab(twoPhaseProperties.lookup("alphatab")); dimensionedScalar alphatab(mixture.lookup("alphatab"));
// Need to store rho for ddt(rho, U) // Need to store rho for ddt(rho, U)
volScalarField rho("rho", alpha1*rho1 + alpha2*rho2); volScalarField rho("rho", alpha1*rho1 + alpha2*rho2);
@ -66,7 +66,7 @@
// Construct incompressible turbulence model // Construct incompressible turbulence model
autoPtr<incompressible::turbulenceModel> turbulence autoPtr<incompressible::turbulenceModel> turbulence
( (
incompressible::turbulenceModel::New(U, phi, twoPhaseProperties) incompressible::turbulenceModel::New(U, phi, mixture)
); );
Info<< "Calculating field g.h\n" << endl; Info<< "Calculating field g.h\n" << endl;

View File

@ -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) 2011-2013 OpenFOAM Foundation \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -70,7 +70,7 @@ int main(int argc, char *argv[])
Info<< "Time = " << runTime.timeName() << nl << endl; Info<< "Time = " << runTime.timeName() << nl << endl;
twoPhaseProperties.correct(); mixture.correct();
#include "alphaEqnSubCycle.H" #include "alphaEqnSubCycle.H"
#include "alphaDiffusionEqn.H" #include "alphaDiffusionEqn.H"

View File

@ -7,5 +7,7 @@ wmake $makeType twoPhaseMixture
wmake $makeType interfaceProperties wmake $makeType interfaceProperties
wmake $makeType twoPhaseProperties wmake $makeType twoPhaseProperties
wmake $makeType incompressible wmake $makeType incompressible
wmake $makeType compressible
wmake $makeType immiscibleIncompressibleTwoPhaseMixture
# ----------------------------------------------------------------- end-of-file # ----------------------------------------------------------------- end-of-file

View File

@ -0,0 +1,3 @@
compressibleTransportModel/compressibleTransportModel.C
LIB = $(FOAM_LIBBIN)/libcompressibleTransportModels

View File

@ -0,0 +1,5 @@
EXE_INC = \
-I$(LIB_SRC)/finiteVolume/lnInclude
LIB_LIBS = \
-lfiniteVolume

View File

@ -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) 2011-2012 OpenFOAM Foundation \\ / A nd | Copyright (C) 2014 OpenFOAM Foundation
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -21,40 +21,29 @@ License
You should have received a copy of the GNU General Public License You should have received a copy of the GNU General Public License
along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>. along with OpenFOAM. If not, see <http://www.gnu.org/licenses/>.
Global
CourantNo
Description
Calculates and outputs the mean and maximum Courant Numbers.
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
scalar maxAlphaCo #include "compressibleTransportModel.H"
(
readScalar(runTime.controlDict().lookup("maxAlphaCo"))
);
scalar alphaCoNum = 0.0; // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
scalar meanAlphaCoNum = 0.0;
if (mesh.nInternalFaces()) namespace Foam
{ {
scalarField sumPhi defineTypeNameAndDebug(compressibleTransportModel, 0);
(
max
(
pos(alpha1 - 0.01)*pos(0.99 - alpha1),
pos(alpha2 - 0.01)*pos(0.99 - alpha2)
)*fvc::surfaceSum(mag(phi))().internalField()
);
alphaCoNum = 0.5*gMax(sumPhi/mesh.V().field())*runTime.deltaTValue();
meanAlphaCoNum =
0.5*(gSum(sumPhi)/gSum(mesh.V().field()))*runTime.deltaTValue();
} }
Info<< "Interface Courant Number mean: " << meanAlphaCoNum
<< " max: " << alphaCoNum << endl; // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
Foam::compressibleTransportModel::compressibleTransportModel
()
{}
// * * * * * * * * * * * * * * * * Destructors * * * * * * * * * * * * * * * //
Foam::compressibleTransportModel::~compressibleTransportModel()
{}
// ************************************************************************* // // ************************************************************************* //

View File

@ -0,0 +1,104 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2014 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::compressibleTransportModel
Description
Base-class for all transport models used by the compressible turbulence
models.
SourceFiles
compressibleTransportModel.C
\*---------------------------------------------------------------------------*/
#ifndef compressibleTransportModel_H
#define compressibleTransportModel_H
#include "primitiveFieldsFwd.H"
#include "volFieldsFwd.H"
#include "surfaceFieldsFwd.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
/*---------------------------------------------------------------------------*\
Class compressibleTransportModel Declaration
\*---------------------------------------------------------------------------*/
class compressibleTransportModel
{
// Private Member Functions
//- Disallow copy construct
compressibleTransportModel(const compressibleTransportModel&);
//- Disallow default bitwise assignment
void operator=(const compressibleTransportModel&);
public:
//- Runtime type information
TypeName("compressibleTransportModel");
// Constructors
//- Construct from components
compressibleTransportModel
();
//- Destructor
virtual ~compressibleTransportModel();
// Member Functions
//- Return the dynamic laminar viscosity
virtual tmp<volScalarField> mu() const = 0;
//- Return the dynamic laminar viscosity for patch
virtual tmp<scalarField> mu(const label patchi) const = 0;
//- Return the laminar viscosity
virtual tmp<volScalarField> nu() const = 0;
//- Return the laminar viscosity for patch
virtual tmp<scalarField> nu(const label patchi) const = 0;
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //

View File

@ -0,0 +1,3 @@
immiscibleIncompressibleTwoPhaseMixture.C
LIB = $(FOAM_LIBBIN)/libimmiscibleIncompressibleTwoPhaseMixture

View File

@ -0,0 +1,13 @@
EXE_INC = \
-I.. \
-I../incompressible/lnInclude \
-I../interfaceProperties/lnInclude \
-I../twoPhaseMixture/lnInclude \
-I$(LIB_SRC)/finiteVolume/lnInclude
LIB_LIBS = \
-ltwoPhaseMixture \
-lincompressibleTransportModels \
-linterfaceProperties \
-ltwoPhaseProperties \
-lfiniteVolume

View File

@ -0,0 +1,43 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2014 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 "immiscibleIncompressibleTwoPhaseMixture.H"
// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
Foam::immiscibleIncompressibleTwoPhaseMixture::
immiscibleIncompressibleTwoPhaseMixture
(
const volVectorField& U,
const surfaceScalarField& phi
)
:
incompressibleTwoPhaseMixture(U, phi),
interfaceProperties(alpha1(), U, *this)
{}
// ************************************************************************* //

View File

@ -0,0 +1,92 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 2014 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::immiscibleIncompressibleTwoPhaseMixture
Description
An immiscible incompressible two-phase mixture transport model
SourceFiles
immiscibleIncompressibleTwoPhaseMixture.C
\*---------------------------------------------------------------------------*/
#ifndef immiscibleIncompressibleTwoPhaseMixture_H
#define immiscibleIncompressibleTwoPhaseMixture_H
#include "incompressibleTwoPhaseMixture.H"
#include "interfaceProperties.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
namespace Foam
{
/*---------------------------------------------------------------------------*\
Class immiscibleIncompressibleTwoPhaseMixture Declaration
\*---------------------------------------------------------------------------*/
class immiscibleIncompressibleTwoPhaseMixture
:
public incompressibleTwoPhaseMixture,
public interfaceProperties
{
public:
// Constructors
//- Construct from components
immiscibleIncompressibleTwoPhaseMixture
(
const volVectorField& U,
const surfaceScalarField& phi
);
//- Destructor
virtual ~immiscibleIncompressibleTwoPhaseMixture()
{}
// Member Functions
//- Correct the transport and interface properties
virtual void correct()
{
incompressibleTwoPhaseMixture::correct();
interfaceProperties::correct();
}
};
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
} // End namespace Foam
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
#endif
// ************************************************************************* //

View File

@ -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) 2011-2013 OpenFOAM Foundation \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -206,4 +206,20 @@ Foam::interfaceProperties::interfaceProperties
} }
// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * //
Foam::tmp<Foam::surfaceScalarField>
Foam::interfaceProperties::surfaceTensionForce() const
{
return fvc::interpolate(sigmaK())*fvc::snGrad(alpha1_);
}
Foam::tmp<Foam::volScalarField>
Foam::interfaceProperties::nearInterface() const
{
return pos(alpha1_ - 0.01)*pos(0.99 - alpha1_);
}
// ************************************************************************* // // ************************************************************************* //

View File

@ -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) 2011 OpenFOAM Foundation \\ / A nd | Copyright (C) 2011-2014 OpenFOAM Foundation
\\/ M anipulation | \\/ M anipulation |
------------------------------------------------------------------------------- -------------------------------------------------------------------------------
License License
@ -142,6 +142,12 @@ public:
return sigma_*K_; return sigma_*K_;
} }
tmp<surfaceScalarField> surfaceTensionForce() const;
//- Indicator of the proximity of the interface
// Field values are 1 near and 0 away for the interface.
tmp<volScalarField> nearInterface() const;
void correct() void correct()
{ {
calculateK(); calculateK();

File diff suppressed because it is too large Load Diff

View File

@ -4,7 +4,7 @@ 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
keepCases="damBreak capillaryRise" keepCases="damBreak capillaryRise mixerVessel2D"
loseCases="damBreakFine" loseCases="damBreakFine"
for case in $keepCases for case in $keepCases

View File

@ -52,13 +52,10 @@ cloneCase damBreak damBreakFine
) )
# Do capillaryRise # Do capillaryRise
( (cd capillaryRise && foamRunTutorials)
cd capillaryRise || exit
# Do mixerVessel2D
(cd mixerVessel2D && foamRunTutorials)
runApplication blockMesh
cp 0/alpha.water.org 0/alpha.water
runApplication setFields
runApplication `getApplication`
)
# ----------------------------------------------------------------- end-of-file # ----------------------------------------------------------------- end-of-file

View File

@ -0,0 +1,14 @@
#!/bin/sh
cd ${0%/*} || exit 1 # run from this directory
# Source tutorial run functions
. $WM_PROJECT_DIR/bin/tools/RunFunctions
application=`getApplication`
runApplication blockMesh
cp 0/alpha.water.org 0/alpha.water
runApplication setFields
runApplication $application
# ----------------------------------------------------------------- end-of-file

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 | | \\ / O peration | Version: 2.3.x |
| \\ / A nd | Web: www.OpenFOAM.org | | \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
@ -32,6 +32,7 @@ FoamFile
walls walls
{ {
type wall; type wall;
inGroups 1(wall);
nFaces 800; nFaces 800;
startFace 15620; startFace 15620;
} }

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 | | \\ / O peration | Version: 2.3.x |
| \\ / A nd | Web: www.OpenFOAM.org | | \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 | | \\ / O peration | Version: 2.3.x |
| \\ / A nd | Web: www.OpenFOAM.org | | \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 | | \\ / O peration | Version: 2.3.x |
| \\ / A nd | Web: www.OpenFOAM.org | | \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -7,6 +7,8 @@ cd ${0%/*} || exit 1 # run from this directory
application=`getApplication` application=`getApplication`
runApplication ./makeMesh runApplication ./makeMesh
cp 0/alpha.water.org 0/alpha.water
runApplication setFields
runApplication $application runApplication $application
# ----------------------------------------------------------------- end-of-file # ----------------------------------------------------------------- end-of-file

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 | | \\ / O peration | Version: 2.3.x |
| \\ / A nd | Web: www.OpenFOAM.org | | \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 | | \\ / O peration | Version: 2.3.x |
| \\ / A nd | Web: www.OpenFOAM.org | | \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 | | \\ / O peration | Version: 2.3.x |
| \\ / A nd | Web: www.OpenFOAM.org | | \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 | | \\ / O peration | Version: 2.3.x |
| \\ / A nd | Web: www.OpenFOAM.org | | \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
@ -20,12 +20,14 @@ FoamFile
rotor rotor
{ {
type wall; type wall;
inGroups 1(wall);
nFaces 192; nFaces 192;
startFace 5952; startFace 5952;
} }
stator stator
{ {
type wall; type wall;
inGroups 1(wall);
nFaces 192; nFaces 192;
startFace 6144; startFace 6144;
} }

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 | | \\ / O peration | Version: 2.3.x |
| \\ / A nd | Web: www.OpenFOAM.org | | \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 | | \\ / O peration | Version: 2.3.x |
| \\ / A nd | Web: www.OpenFOAM.org | | \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 | | \\ / O peration | Version: 2.3.x |
| \\ / A nd | Web: www.OpenFOAM.org | | \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/
@ -15,7 +15,7 @@ FoamFile
} }
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
application MRFInterFoam; application interFoam;
startFrom startTime; startFrom startTime;

View File

@ -0,0 +1,37 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.x |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object fvOptions;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
MRF1
{
type MRFSource;
active yes;
selectionMode cellZone;
cellZone rotor;
MRFSourceCoeffs
{
// Fixed patches (by default they 'move' with the MRF zone)
nonRotatingPatches ();
origin (0 0 0);
axis (0 0 1);
omega constant 6.2831853;
}
}
// ************************************************************************* //

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 | | \\ / O peration | Version: 2.3.x |
| \\ / A nd | Web: www.OpenFOAM.org | | \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 | | \\ / O peration | Version: 2.3.x |
| \\ / A nd | Web: www.OpenFOAM.org | | \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

View File

@ -1,7 +1,7 @@
/*--------------------------------*- C++ -*----------------------------------*\ /*--------------------------------*- C++ -*----------------------------------*\
| ========= | | | ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox | | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 2.3.0 | | \\ / O peration | Version: 2.3.x |
| \\ / A nd | Web: www.OpenFOAM.org | | \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | | | \\/ M anipulation | |
\*---------------------------------------------------------------------------*/ \*---------------------------------------------------------------------------*/

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