Steady universal (compressible and incompressible) flow solvers. Author: Hrvoje Jasak and Ilaria De Dominicis. Merge: Hrvoje Jasak.

This commit is contained in:
Hrvoje Jasak 2016-05-26 14:34:25 +01:00
commit 249db95e94
97 changed files with 9164 additions and 89 deletions

View file

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

View file

@ -0,0 +1,13 @@
EXE_INC = \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-I$(LIB_SRC)/turbulenceModels \
-I$(LIB_SRC)/turbulenceModels/compressible/RAS/RASModel
EXE_LIBS = \
-lfiniteVolume \
-lmeshTools \
-lbasicThermophysicalModels \
-lspecie \
-lcompressibleRASModels \
-llduSolvers

View file

@ -0,0 +1,18 @@
// Solve the momentum equation
U.storePrevIter();
fvVectorMatrix UEqn
(
fvm::ddt(rho, U)
+ fvm::div(phi, U)
+ turbulence->divDevRhoReff(U)
);
UEqn.relax();
eqnResidual = solve
(
UEqn == -fvc::grad(p)
).initialResidual();
maxResidual = max(eqnResidual, maxResidual);

View file

@ -0,0 +1,7 @@
if (compressible)
{
if (psisPtr)
{
delete psisPtr;
}
}

View file

@ -0,0 +1,9 @@
// check convergence
if (maxResidual < convergenceCriterion)
{
Info<< "reached convergence criterion: " << convergenceCriterion << endl;
runTime.writeAndEnd();
Info<< "latestTime = " << runTime.timeName() << endl;
}

View file

@ -0,0 +1,41 @@
volScalarField rho
(
IOobject
(
"rho",
runTime.timeName(),
mesh,
IOobject::NO_READ,
IOobject::AUTO_WRITE
),
thermo.rho()
);
rho.oldTime();
Info<< "\nReading field U\n" << endl;
volVectorField U
(
IOobject
(
"U",
runTime.timeName(),
mesh,
IOobject::MUST_READ,
IOobject::AUTO_WRITE
),
mesh
);
# include "compressibleCreatePhi.H"
Info<< "Creating turbulence model\n" << endl;
autoPtr<compressible::RASModel> turbulence
(
compressible::RASModel::New
(
rho,
U,
phi,
thermo
)
);

View file

@ -0,0 +1,51 @@
Info<< "Reading thermophysical properties\n" << endl;
volScalarField* pPtr = NULL;
volScalarField* hPtr = NULL;
const volScalarField* TPtr = NULL;
volScalarField* psisPtr = NULL;
basicThermo* thermoPtr = NULL;
Switch compressible;
{
dictionary pimple = mesh.solutionDict().subDict("PIMPLE");
compressible = Switch(pimple.lookup("compressible"));
if (compressible)
{
thermoPtr =
(
basicPsiThermo::New(mesh)
).ptr();
pPtr = &(thermoPtr->p());
hPtr = &(thermoPtr->h());
TPtr = &(thermoPtr->T());
psisPtr = new volScalarField
(
"psi",
thermoPtr->psi()/thermoPtr->Cp()*thermoPtr->Cv()
);
}
else
{
thermoPtr =
(
basicRhoThermo::New(mesh)
).ptr();
pPtr = &(thermoPtr->p());
hPtr = &(thermoPtr->h());
TPtr = &(thermoPtr->T());
psisPtr = const_cast<volScalarField*>(&(thermoPtr->psi()));
}
}
basicThermo& thermo = *thermoPtr;
volScalarField& p = *pPtr;
volScalarField& h = *hPtr;
const volScalarField& T = *TPtr;
volScalarField& psis = *psisPtr;

View file

@ -0,0 +1,48 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | foam-extend: Open Source CFD
\\ / O peration | Version: 3.2
\\ / A nd | Web: http://www.foam-extend.org
\\/ M anipulation | For copyright notice see file Copyright
-------------------------------------------------------------------------------
License
This file is part of foam-extend.
foam-extend 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.
foam-extend 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 foam-extend. If not, see <http://www.gnu.org/licenses/>.
Global
continuityErrs
Description
Calculates and prints the continuity errors.
\*---------------------------------------------------------------------------*/
{
volScalarField divErr = fvc::ddt(psi, p);
scalar sumLocalDivErr =
mag(divErr)().weightedAverage(mesh.V()).value();
scalar globalDivErr =
divErr.weightedAverage(mesh.V()).value();
Info<< "time step divFlux errors: "
<< "maximum = " << max(divErr.internalField())
<< ", sum local = " << sumLocalDivErr
<< ", global = " << globalDivErr
<< endl;
}
// ************************************************************************* //

View file

@ -0,0 +1,36 @@
{
// Solve the enthalpy equation
// Calculate face velocity from flux
surfaceScalarField faceU
(
"faceU",
phi/fvc::interpolate(rho)
);
fvScalarMatrix hEqn
(
fvm::ddt(rho, h)
+ fvm::div(phi, h)
- fvm::laplacian(turbulence->alphaEff(), h)
==
fvc::div(faceU, p, "div(U,p)")
- p*fvc::div(faceU)
// ddt(p) term removed: steady-state. HJ, 27/Apr/2010
// Viscous heating: note sign (devRhoReff has a minus in it)
- (turbulence->devRhoReff() && fvc::grad(U))
);
hEqn.relax();
eqnResidual = hEqn.solve().initialResidual();
maxResidual = max(eqnResidual, maxResidual);
// Bounding of enthalpy taken out
thermo.correct();
if (compressible)
{
psis = thermo.psi()/thermo.Cp()*thermo.Cv();
}
}

View file

@ -0,0 +1,7 @@
// initialize values for convergence checks
scalar eqnResidual = 1, maxResidual = 0;
scalar convergenceCriterion = 0;
pimple.readIfPresent("convergence", convergenceCriterion);

View file

@ -0,0 +1,79 @@
{
volScalarField rUA = 1.0/UEqn.A();
surfaceScalarField psisf = fvc::interpolate(psis);
surfaceScalarField rhof = fvc::interpolate(rho);
// Needs to be outside of loop since p is changing, but psi and rho are not
surfaceScalarField rhoReff = rhof - psisf*fvc::interpolate(p);
for (int corr = 0; corr < nCorr; corr++)
{
U = rUA*UEqn.H();
// Calculate phi for boundary conditions
phi = rhof*fvc::interpolate(U) & mesh.Sf();
surfaceScalarField phid2 = rhoReff/rhof*phi;
surfaceScalarField phid("phid", psisf/rhof*phi);
p.storePrevIter();
for (int nonOrth = 0; nonOrth <= nNonOrthCorr; nonOrth++)
{
fvScalarMatrix pEqn
(
fvm::ddt(psis, p)
+ fvm::div(phid, p)
+ fvc::div(phid2)
- fvm::laplacian(rho*rUA, p)
);
// Retain the residual from the first pressure solution
eqnResidual = pEqn.solve().initialResidual();
if (corr == 0 && nonOrth == 0)
{
maxResidual = max(eqnResidual, maxResidual);
}
// Calculate the flux
if (nonOrth == nNonOrthCorr)
{
phi = phid2 + pEqn.flux();
}
}
// Use custom continuity error check
# include "universalContinuityErrs.H"
// Relax the pressure
p.relax();
U -= rUA*fvc::grad(p);
U.correctBoundaryConditions();
}
// Bound the pressure
if (min(p) < pMin || max(p) > pMax)
{
p.max(pMin);
p.min(pMax);
p.correctBoundaryConditions();
}
// Bound the velocity
volScalarField magU = mag(U);
if (max(magU) > UMax)
{
volScalarField Ulimiter = pos(magU - UMax)*UMax/(magU + smallU)
+ neg(magU - UMax);
Ulimiter.max(scalar(0));
Ulimiter.min(scalar(1));
U *= Ulimiter;
U.correctBoundaryConditions();
}
}

View file

@ -0,0 +1,20 @@
// Read field bounds
dictionary fieldBounds = mesh.solutionDict().subDict("fieldBounds");
// Pressure bounds
dimensionedScalar pMin("pMin", p.dimensions(), 0);
dimensionedScalar pMax("pMax", p.dimensions(), GREAT);
fieldBounds.lookup(p.name()) >> pMin.value() >> pMax.value();
// Temperature bounds
dimensionedScalar TMin("TMin", T.dimensions(), 0);
dimensionedScalar TMax("TMax", T.dimensions(), GREAT);
fieldBounds.lookup(T.name()) >> TMin.value() >> TMax.value();
// Velocity bound
dimensionedScalar UMax("UMax", U.dimensions(), GREAT);
fieldBounds.lookup(U.name()) >> UMax.value();
dimensionedScalar smallU("smallU", dimVelocity, 1e-10);

View file

@ -0,0 +1,15 @@
{
// Calculate density from pressure
rho.storePrevIter();
rho = thermo.rho()();
// Bound rho
volScalarField R = thermo.Cp() - thermo.Cv();
volScalarField rhoMin = pMin/(R*TMax);
volScalarField rhoMax = pMax/(R*TMin);
rho = Foam::min(rho, rhoMax);
rho = Foam::max(rho, rhoMin);
rho.relax();
}

View file

@ -0,0 +1,94 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | foam-extend: Open Source CFD
\\ / O peration | Version: 3.2
\\ / A nd | Web: http://www.foam-extend.org
\\/ M anipulation | For copyright notice see file Copyright
-------------------------------------------------------------------------------
License
This file is part of foam-extend.
foam-extend 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.
foam-extend 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 foam-extend. If not, see <http://www.gnu.org/licenses/>.
Application
steadyUniversalFoam
Description
Steady-state solver for incompressible and compressible turbulent flow.
Author
Hrvoje Jasak, Wikki Ltd. All rights reserved.
\*---------------------------------------------------------------------------*/
#include "fvCFD.H"
#include "basicPsiThermo.H"
#include "basicRhoThermo.H"
#include "RASModel.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
int main(int argc, char *argv[])
{
# include "setRootCase.H"
# include "createTime.H"
# include "createMesh.H"
# include "createThermo.H"
# include "createFields.H"
# include "readPIMPLEControls.H"
# include "initContinuityErrs.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Info<< "\nStarting time loop\n" << endl;
while (runTime.loop())
{
Info<< "Time = " << runTime.timeName() << nl << endl;
# include "readPIMPLEControls.H"
# include "readFieldBounds.H"
# include "initConvergenceCheck.H"
# include "UEqn.H"
# include "pEqn.H"
# include "hEqn.H"
# include "rhoFromP.H"
// Correct turbulence
turbulence->correct();
runTime.write();
Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
<< " ClockTime = " << runTime.elapsedClockTime() << " s"
<< nl << endl;
# include "convergenceCheck.H"
}
# include "clearThermo.H"
Info<< "End\n" << endl;
return(0);
}
// ************************************************************************* //

View file

@ -0,0 +1,49 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | foam-extend: Open Source CFD
\\ / O peration | Version: 3.2
\\ / A nd | Web: http://www.foam-extend.org
\\/ M anipulation | For copyright notice see file Copyright
-------------------------------------------------------------------------------
License
This file is part of foam-extend.
foam-extend 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.
foam-extend 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 foam-extend. If not, see <http://www.gnu.org/licenses/>.
Global
continuityErrs
Description
Calculates and prints the continuity errors.
\*---------------------------------------------------------------------------*/
{
volScalarField contErr = fvc::ddt(rho) + fvc::div(phi);
sumLocalContErr = runTime.deltaT().value()*
mag(contErr)().weightedAverage(mesh.V()).value();
globalContErr = runTime.deltaT().value()*
contErr.weightedAverage(mesh.V()).value();
cumulativeContErr += globalContErr;
Info<< "time step continuity errors : sum local = " << sumLocalContErr
<< ", global = " << globalContErr
<< ", cumulative = " << cumulativeContErr
<< endl;
}
// ************************************************************************* //

View file

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

View file

@ -0,0 +1,13 @@
EXE_INC = \
-I$(LIB_SRC)/finiteVolume/lnInclude \
-I$(LIB_SRC)/thermophysicalModels/basic/lnInclude \
-I$(LIB_SRC)/turbulenceModels \
-I$(LIB_SRC)/turbulenceModels/compressible/RAS/RASModel
EXE_LIBS = \
-lfiniteVolume \
-lmeshTools \
-lbasicThermophysicalModels \
-lspecie \
-lcompressibleRASModels \
-llduSolvers

View file

@ -0,0 +1,21 @@
// Solve the momentum equation
U.storePrevIter();
fvVectorMatrix UEqn
(
fvm::ddt(rho, U)
+ fvm::div(phi, U)
+ turbulence->divDevRhoReff(U)
);
// MRF: add Coriolis force
mrfZones.addCoriolis(rho, UEqn);
UEqn.relax();
eqnResidual = solve
(
UEqn == -fvc::grad(p)
).initialResidual();
maxResidual = max(eqnResidual, maxResidual);

View file

@ -0,0 +1,7 @@
if (compressible)
{
if (psisPtr)
{
delete psisPtr;
}
}

View file

@ -0,0 +1,9 @@
// check convergence
if (maxResidual < convergenceCriterion)
{
Info<< "reached convergence criterion: " << convergenceCriterion << endl;
runTime.writeAndEnd();
Info<< "latestTime = " << runTime.timeName() << endl;
}

View file

@ -0,0 +1,82 @@
volScalarField rho
(
IOobject
(
"rho",
runTime.timeName(),
mesh,
IOobject::NO_READ,
IOobject::AUTO_WRITE
),
thermo.rho()
);
rho.oldTime();
Info<< "\nReading field U\n" << endl;
volVectorField U
(
IOobject
(
"U",
runTime.timeName(),
mesh,
IOobject::MUST_READ,
IOobject::AUTO_WRITE
),
mesh
);
# include "compressibleCreatePhi.H"
Info<< "Creating turbulence model\n" << endl;
autoPtr<compressible::RASModel> turbulence
(
compressible::RASModel::New
(
rho,
U,
phi,
thermo
)
);
// Create MRF zones
MRFZones mrfZones(mesh);
mrfZones.correctBoundaryVelocity(U);
// Create relative velocity
volVectorField Urel
(
IOobject
(
"Urel",
runTime.timeName(),
mesh,
IOobject::NO_READ,
IOobject::AUTO_WRITE
),
U
);
mrfZones.relativeVelocity(Urel);
// Create rotational velocity (= omega x r)
volVectorField Urot
(
"Urot",
U - Urel
);
// Create rothalpy, in two steps to preserve boundary conditions
volScalarField i
(
IOobject
(
"i",
runTime.timeName(),
mesh,
IOobject::MUST_READ,
IOobject::AUTO_WRITE
),
mesh
);
i == h - 0.5*(magSqr(Urot) - magSqr(Urel));

View file

@ -0,0 +1,51 @@
Info<< "Reading thermophysical properties\n" << endl;
volScalarField* pPtr = NULL;
volScalarField* hPtr = NULL;
const volScalarField* TPtr = NULL;
volScalarField* psisPtr = NULL;
basicThermo* thermoPtr = NULL;
Switch compressible;
{
dictionary pimple = mesh.solutionDict().subDict("PIMPLE");
compressible = Switch(pimple.lookup("compressible"));
if (compressible)
{
thermoPtr =
(
basicPsiThermo::New(mesh)
).ptr();
pPtr = &(thermoPtr->p());
hPtr = &(thermoPtr->h());
TPtr = &(thermoPtr->T());
psisPtr = new volScalarField
(
"psi",
thermoPtr->psi()/thermoPtr->Cp()*thermoPtr->Cv()
);
}
else
{
thermoPtr =
(
basicRhoThermo::New(mesh)
).ptr();
pPtr = &(thermoPtr->p());
hPtr = &(thermoPtr->h());
TPtr = &(thermoPtr->T());
psisPtr = const_cast<volScalarField*>(&(thermoPtr->psi()));
}
}
basicThermo& thermo = *thermoPtr;
volScalarField& p = *pPtr;
volScalarField& h = *hPtr;
const volScalarField& T = *TPtr;
volScalarField& psis = *psisPtr;

View file

@ -0,0 +1,48 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | foam-extend: Open Source CFD
\\ / O peration | Version: 3.2
\\ / A nd | Web: http://www.foam-extend.org
\\/ M anipulation | For copyright notice see file Copyright
-------------------------------------------------------------------------------
License
This file is part of foam-extend.
foam-extend 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.
foam-extend 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 foam-extend. If not, see <http://www.gnu.org/licenses/>.
Global
continuityErrs
Description
Calculates and prints the continuity errors.
\*---------------------------------------------------------------------------*/
{
volScalarField divErr = fvc::ddt(psi, p);
scalar sumLocalDivErr =
mag(divErr)().weightedAverage(mesh.V()).value();
scalar globalDivErr =
divErr.weightedAverage(mesh.V()).value();
Info<< "time step divFlux errors: "
<< "maximum = " << max(divErr.internalField())
<< ", sum local = " << sumLocalDivErr
<< ", global = " << globalDivErr
<< endl;
}
// ************************************************************************* //

View file

@ -0,0 +1,31 @@
{
// Create relative velocity
Urel == U;
mrfZones.relativeVelocity(Urel);
// Create rotational velocity (= omega x r)
Urot == U - Urel;
fvScalarMatrix iEqn
(
fvm::ddt(rho, i)
+ fvm::div(phi, i)
- fvm::laplacian(turbulence->alphaEff(), i)
==
// Viscous heating: note sign (devRhoReff has a minus in it)
- (turbulence->devRhoReff() && fvc::grad(U))
);
iEqn.relax();
eqnResidual = iEqn.solve().initialResidual();
maxResidual = max(eqnResidual, maxResidual);
// From rothalpy, calculate enthalpy after solution of rothalpy equation
h = i + 0.5*(magSqr(Urot) - magSqr(Urel));
h.correctBoundaryConditions();
// Update thermo for new h
thermo.correct();
psis = thermo.psi()/thermo.Cp()*thermo.Cv();
}

View file

@ -0,0 +1,7 @@
// initialize values for convergence checks
scalar eqnResidual = 1, maxResidual = 0;
scalar convergenceCriterion = 0;
pimple.readIfPresent("convergence", convergenceCriterion);

View file

@ -0,0 +1,79 @@
{
volScalarField rUA = 1.0/UEqn.A();
surfaceScalarField psisf = fvc::interpolate(psis);
surfaceScalarField rhof = fvc::interpolate(rho);
// Needs to be outside of loop since p is changing, but psi and rho are not
surfaceScalarField rhoReff = rhof - psisf*fvc::interpolate(p);
for (int corr = 0; corr < nCorr; corr++)
{
U = rUA*UEqn.H();
// Calculate phi for boundary conditions
phi = rhof*fvc::interpolate(U) & mesh.Sf();
surfaceScalarField phid2 = rhoReff/rhof*phi;
surfaceScalarField phid("phid", psisf/rhof*phi);
p.storePrevIter();
for (int nonOrth = 0; nonOrth <= nNonOrthCorr; nonOrth++)
{
fvScalarMatrix pEqn
(
fvm::ddt(psis, p)
+ fvm::div(phid, p)
+ fvc::div(phid2)
- fvm::laplacian(rho*rUA, p)
);
// Retain the residual from the first pressure solution
eqnResidual = pEqn.solve().initialResidual();
if (corr == 0 && nonOrth == 0)
{
maxResidual = max(eqnResidual, maxResidual);
}
// Calculate the flux
if (nonOrth == nNonOrthCorr)
{
phi = phid2 + pEqn.flux();
}
}
// Use custom continuity error check
# include "universalContinuityErrs.H"
// Relax the pressure
p.relax();
U -= rUA*fvc::grad(p);
U.correctBoundaryConditions();
}
// Bound the pressure
if (min(p) < pMin || max(p) > pMax)
{
p.max(pMin);
p.min(pMax);
p.correctBoundaryConditions();
}
// Bound the velocity
volScalarField magU = mag(U);
if (max(magU) > UMax)
{
volScalarField Ulimiter = pos(magU - UMax)*UMax/(magU + smallU)
+ neg(magU - UMax);
Ulimiter.max(scalar(0));
Ulimiter.min(scalar(1));
U *= Ulimiter;
U.correctBoundaryConditions();
}
}

View file

@ -0,0 +1,20 @@
// Read field bounds
dictionary fieldBounds = mesh.solutionDict().subDict("fieldBounds");
// Pressure bounds
dimensionedScalar pMin("pMin", p.dimensions(), 0);
dimensionedScalar pMax("pMax", p.dimensions(), GREAT);
fieldBounds.lookup(p.name()) >> pMin.value() >> pMax.value();
// Temperature bounds
dimensionedScalar TMin("TMin", T.dimensions(), 0);
dimensionedScalar TMax("TMax", T.dimensions(), GREAT);
fieldBounds.lookup(T.name()) >> TMin.value() >> TMax.value();
// Velocity bound
dimensionedScalar UMax("UMax", U.dimensions(), GREAT);
fieldBounds.lookup(U.name()) >> UMax.value();
dimensionedScalar smallU("smallU", dimVelocity, 1e-10);

View file

@ -0,0 +1,15 @@
{
// Calculate density from pressure
rho.storePrevIter();
rho = thermo.rho()();
// Bound rho
volScalarField R = thermo.Cp() - thermo.Cv();
volScalarField rhoMin = pMin/(R*TMax);
volScalarField rhoMax = pMax/(R*TMin);
rho = Foam::min(rho, rhoMax);
rho = Foam::max(rho, rhoMin);
rho.relax();
}

View file

@ -0,0 +1,101 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | foam-extend: Open Source CFD
\\ / O peration | Version: 3.2
\\ / A nd | Web: http://www.foam-extend.org
\\/ M anipulation | For copyright notice see file Copyright
-------------------------------------------------------------------------------
License
This file is part of foam-extend.
foam-extend 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.
foam-extend 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 foam-extend. If not, see <http://www.gnu.org/licenses/>.
Application
steadyUniversalMRFFoam
Description
Steady-state solver for incompressible and compressible turbulent flow
with MRF zones.
Author
Ilaria De Dominicis, General Electric Power, (March 2016)
Contributor
Hrvoje Jasak, Wikki Ltd.
GE CONFIDENTIAL INFORMATION 2016 General Electric Company. All Rights Reserved
\*---------------------------------------------------------------------------*/
#include "fvCFD.H"
#include "basicPsiThermo.H"
#include "basicRhoThermo.H"
#include "RASModel.H"
#include "MRFZones.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
int main(int argc, char *argv[])
{
# include "setRootCase.H"
# include "createTime.H"
# include "createMesh.H"
# include "createThermo.H"
# include "createFields.H"
# include "readPIMPLEControls.H"
# include "initContinuityErrs.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Info<< "\nStarting time loop\n" << endl;
while (runTime.loop())
{
Info<< "Time = " << runTime.timeName() << nl << endl;
# include "readPIMPLEControls.H"
# include "readFieldBounds.H"
# include "initConvergenceCheck.H"
# include "UEqn.H"
# include "pEqn.H"
# include "iEqn.H"
# include "rhoFromP.H"
// Correct turbulence
turbulence->correct();
runTime.write();
Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
<< " ClockTime = " << runTime.elapsedClockTime() << " s"
<< nl << endl;
# include "convergenceCheck.H"
}
# include "clearThermo.H"
Info<< "End\n" << endl;
return(0);
}
// ************************************************************************* //

View file

@ -0,0 +1,49 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | foam-extend: Open Source CFD
\\ / O peration | Version: 3.2
\\ / A nd | Web: http://www.foam-extend.org
\\/ M anipulation | For copyright notice see file Copyright
-------------------------------------------------------------------------------
License
This file is part of foam-extend.
foam-extend 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.
foam-extend 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 foam-extend. If not, see <http://www.gnu.org/licenses/>.
Global
continuityErrs
Description
Calculates and prints the continuity errors.
\*---------------------------------------------------------------------------*/
{
volScalarField contErr = fvc::ddt(rho) + fvc::div(phi);
sumLocalContErr = runTime.deltaT().value()*
mag(contErr)().weightedAverage(mesh.V()).value();
globalContErr = runTime.deltaT().value()*
contErr.weightedAverage(mesh.V()).value();
cumulativeContErr += globalContErr;
Info<< "time step continuity errors : sum local = " << sumLocalContErr
<< ", global = " << globalContErr
<< ", cumulative = " << cumulativeContErr
<< endl;
}
// ************************************************************************* //

View file

@ -284,17 +284,27 @@ void GGIInterpolation<MasterPatch, SlavePatch>::maskedMasterToSlave
if (this->doTransform() && pTraits<Type>::rank > 0)
{
// Transform master data to slave
Field<Type> transformFF;
Field<Type> transformFF(ff.size());
if (reverseT_.size() == 1)
{
// Constant transform
transformFF = transform(reverseT_[0], ff);
// Transform only masked elements. HJ, 25/May/2016
forAll (mask, maskI)
{
transformFF[mask[maskI]] =
transform(reverseT_[0], ff[mask[maskI]]);
}
}
else
{
// Full patch transform
transformFF = transform(reverseT_, ff);
// Transform only masked elements. HJ, 25/May/2016
forAll (mask, maskI)
{
transformFF[mask[maskI]] =
transform(reverseT_[mask[maskI]], ff[mask[maskI]]);
}
}
GGIInterpolation<MasterPatch, SlavePatch>::maskedInterpolate
@ -445,16 +455,26 @@ void GGIInterpolation<MasterPatch, SlavePatch>::maskedSlaveToMaster
if (this->doTransform() && pTraits<Type>::rank > 0)
{
// Transform slave data to master
Field<Type> transformFF;
Field<Type> transformFF(ff.size());
if (forwardT_.size() == 1)
{
// Constant transform
transformFF = transform(forwardT_[0], ff);
// Transform only masked elements. HJ, 25/May/2016
forAll (mask, maskI)
{
transformFF[mask[maskI]] =
transform(forwardT_[0], ff[mask[maskI]]);
}
}
else
{
// Full patch transform
transformFF = transform(forwardT_, ff);
// Transform only masked elements. HJ, 25/May/2016
forAll (mask, maskI)
{
transformFF[mask[maskI]] =
transform(forwardT_[mask[maskI]], ff[mask[maskI]]);
}
}
GGIInterpolation<MasterPatch, SlavePatch>::maskedInterpolate

View file

@ -141,6 +141,7 @@ void Foam::mapDistribute::distribute
}
}
}
field.transfer(newField);
}
else if (commsType == Pstream::nonBlocking)
@ -174,7 +175,9 @@ void Foam::mapDistribute::distribute
if (domain != Pstream::myProcNo() && map.size())
{
List<T>& subField = sendFields[domain];
subField.setSize(map.size());
forAll(map, i)
{
subField[i] = field[map[i]];
@ -219,6 +222,7 @@ void Foam::mapDistribute::distribute
List<T>& subField = sendFields[Pstream::myProcNo()];
subField.setSize(map.size());
forAll(map, i)
{
subField[i] = field[map[i]];
@ -230,7 +234,6 @@ void Foam::mapDistribute::distribute
field.setSize(constructSize);
// Receive sub field from myself (sendFields[Pstream::myProcNo()])
{
const labelList& map = constructMap[Pstream::myProcNo()];

View file

@ -89,6 +89,10 @@ Foam::tmp<Foam::Field<Type> > Foam::ggiPolyPatch::fastExpand
shadow().receiveAddr();
}
#if 1
// New version: mapDistribute
if (Pstream::parRun())
{
// Optimised mapDistribute
@ -124,13 +128,15 @@ Foam::tmp<Foam::Field<Type> > Foam::ggiPolyPatch::fastExpand
return texpandField;
}
#if 0
#else
// Variant 2: global gather-scatter. Original version
// Note: expandField is filled with nans in unused part
// HJ, 25/May/2016
tmp<Field<Type> > texpandField
(
new Field<Type>(zone().size()) // filled with nans
new Field<Type>(zone().size())
);
Field<Type>& expandField = texpandField();
@ -237,96 +243,98 @@ Foam::tmp<Foam::Field<Type> > Foam::ggiPolyPatch::fastExpand
}
}
return texpandField;
// #else
// Variant 3: unpacked mapDistribute
if (Pstream::parRun())
{
// Send subField to other processors
for (label domainI = 0; domainI < Pstream::nProcs(); domainI++)
{
const labelList& curMap = map().subMap()[domainI];
// // Variant 3: unpacked mapDistribute
// if (Pstream::parRun())
// {
// // Send subField to other processors
// for (label domainI = 0; domainI < Pstream::nProcs(); domainI++)
// {
// const labelList& curMap = map().subMap()[domainI];
if (domainI != Pstream::myProcNo() && curMap.size())
{
Pout<< "Sending " << curMap.size()
<< " from " << Pstream::myProcNo()
<< " to " << domainI
<< endl;
OPstream toNbr(Pstream::blocking, domainI);
toNbr << List<Type>(UIndirectList<Type>(ff, curMap));
}
}
// if (domainI != Pstream::myProcNo() && curMap.size())
// {
// Pout<< "Sending " << curMap.size()
// << " from " << Pstream::myProcNo()
// << " to " << domainI
// << endl;
// OPstream toNbr(Pstream::blocking, domainI);
// toNbr << List<Type>(UIndirectList<Type>(ff, curMap));
// }
// }
// Subset myself
{
const labelList& mySubMap = map().subMap()[Pstream::myProcNo()];
// // Subset myself
// {
// const labelList& mySubMap = map().subMap()[Pstream::myProcNo()];
List<Type> subField(mySubMap.size());
forAll (mySubMap, i)
{
subField[i] = ff[mySubMap[i]];
}
// List<Type> subField(mySubMap.size());
// forAll (mySubMap, i)
// {
// subField[i] = ff[mySubMap[i]];
// }
// Receive sub field from myself (subField)
const labelList& curMap =
map().constructMap()[Pstream::myProcNo()];
// // Receive sub field from myself (subField)
// const labelList& curMap =
// map().constructMap()[Pstream::myProcNo()];
forAll (curMap, i)
{
expandField[curMap[i]] = subField[i];
}
}
// forAll (curMap, i)
// {
// expandField[curMap[i]] = subField[i];
// }
// }
// Receive sub field from neighbour
for (label domainI = 0; domainI < Pstream::nProcs(); domainI++)
{
const labelList& curMap = map().constructMap()[domainI];
// // Receive sub field from neighbour
// for (label domainI = 0; domainI < Pstream::nProcs(); domainI++)
// {
// const labelList& curMap = map().constructMap()[domainI];
if (domainI != Pstream::myProcNo() && curMap.size())
{
IPstream fromNbr(Pstream::blocking, domainI);
List<Type> recvField(fromNbr);
Pout<< "Receiving " << recvField.size()
<< " (" << curMap.size()
<< ") from " << domainI
<< " to " << Pstream::myProcNo()
<< endl;
// if (domainI != Pstream::myProcNo() && curMap.size())
// {
// IPstream fromNbr(Pstream::blocking, domainI);
// List<Type> recvField(fromNbr);
// Pout<< "Receiving " << recvField.size()
// << " (" << curMap.size()
// << ") from " << domainI
// << " to " << Pstream::myProcNo()
// << endl;
if (curMap.size() != recvField.size())
{
FatalErrorIn
(
"tmp<Field<Type> > ggiPolyPatch::fastExpand\n"
"(\n"
" const Field<Type>& ff\n"
") const"
) << "Expected from processor " << domainI << " size "
<< curMap.size() << " but received "
<< recvField.size() << " elements."
<< abort(FatalError);
}
// if (curMap.size() != recvField.size())
// {
// FatalErrorIn
// (
// "tmp<Field<Type> > ggiPolyPatch::fastExpand\n"
// "(\n"
// " const Field<Type>& ff\n"
// ") const"
// ) << "Expected from processor " << domainI << " size "
// << curMap.size() << " but received "
// << recvField.size() << " elements."
// << abort(FatalError);
// }
forAll (curMap, i)
{
expandField[curMap[i]] = recvField[i];
}
}
}
// forAll (curMap, i)
// {
// expandField[curMap[i]] = recvField[i];
// }
// }
// }
return texpandField;
}
else
{
// Serial. Expand the field to zone size
// return texpandField;
// }
// else
// {
// // Serial. Expand the field to zone size
const labelList& zAddr = zoneAddressing();
// const labelList& zAddr = zoneAddressing();
forAll (zAddr, i)
{
expandField[zAddr[i]] = ff[i];
}
}
// forAll (zAddr, i)
// {
// expandField[zAddr[i]] = ff[i];
// }
// }
#endif
}

View file

@ -308,7 +308,7 @@ void RNGkEpsilon::correct()
const tmp<volTensorField> tgradU = fvc::grad(U_);
const volTensorField& gradU = tgradU();
volScalarField S2 = (gradU && dev(twoSymm(tgradU)));
volScalarField S2 = (gradU && dev(twoSymm(gradU)));
volScalarField G("RASModel::G", mut_*S2);

View file

@ -442,9 +442,11 @@ void kOmegaSST::correct()
divU += fvc::div(mesh_.phi());
}
tmp<volTensorField> tgradU = fvc::grad(U_);
volScalarField S2(2*magSqr(symm(tgradU())));
volScalarField GbyMu((tgradU() && dev(twoSymm(tgradU()))));
const tmp<volTensorField> tgradU = fvc::grad(U_);
const volTensorField& gradU = tgradU();
volScalarField S2(2*magSqr(symm(gradU)));
volScalarField GbyMu((gradU && dev(twoSymm(gradU))));
volScalarField G("RASModel::G", mut_*GbyMu);
tgradU.clear();

View file

@ -0,0 +1,116 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | For copyright notice see file Copyright |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object T;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 1 0 0 0];
internalField uniform 305.66;
boundaryField
{
GVINLET
{
type fixedValue;
value uniform 305.66;
}
GVOUTLET
{
type ggiEnthalpyJump;
patchType ggi;
rotating false;
value uniform 305.66;
}
GVCYCLIC
{
type cyclic;
}
GVBLADE
{
type zeroGradient;
}
GVHUB
{
type zeroGradient;
}
GVSHROUD
{
type zeroGradient;
}
RUINLET
{
type ggiEnthalpyJump;
patchType ggi;
rotating true;
value uniform 305.66;
}
RUOUTLET
{
type ggiEnthalpyJump;
patchType ggi;
rotating true;
value uniform 305.66;
}
RUCYCLIC1
{
type cyclicGgi;
}
RUCYCLIC2
{
type cyclicGgi;
}
RUBLADE
{
type zeroGradient;
}
RUHUB
{
type zeroGradient;
}
RUSHROUD
{
type zeroGradient;
}
DTINLET
{
type ggiEnthalpyJump;
patchType ggi;
rotating false;
value uniform 305.66;
}
DTOUTLET
{
type zeroGradient;
}
DTCYCLIC1
{
type cyclicGgi;
}
DTCYCLIC2
{
type cyclicGgi;
}
DTHUB
{
type zeroGradient;
}
DTSHROUD
{
type zeroGradient;
}
}
// ************************************************************************* //

View file

@ -0,0 +1,114 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volVectorField;
object U;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 -1 0 0 0 0];
internalField uniform (0.1 0.1 -1);
boundaryField
{
GVINLET
{
type fixedValue;
value uniform (0 0 -1);
}
GVOUTLET
{
type ggi;
value uniform (0 0 -1);
}
GVCYCLIC
{
type cyclic;
}
GVBLADE
{
type fixedValue;
value uniform (0 0 0);
}
GVHUB
{
type fixedValue;
value uniform (0 0 0);
}
GVSHROUD
{
type fixedValue;
value uniform (0 0 0);
}
RUINLET
{
type ggi;
value uniform (0 0 -1);
}
RUOUTLET
{
type ggi;
value uniform (0 0 -1);
}
RUCYCLIC1
{
type cyclicGgi;
}
RUCYCLIC2
{
type cyclicGgi;
}
RUBLADE
{
type fixedValue;
value uniform (0 0 0);
}
RUHUB
{
type fixedValue;
value uniform (0 0 0);
}
RUSHROUD
{
type fixedValue;
value uniform (0 0 0);
}
DTINLET
{
type ggi;
value uniform (0 0 -1);
}
DTOUTLET
{
type zeroGradient;
}
DTCYCLIC1
{
type cyclicGgi;
}
DTCYCLIC2
{
type cyclicGgi;
}
DTHUB
{
type fixedValue;
value uniform (0 0 0);
}
DTSHROUD
{
type fixedValue;
value uniform (0 0 0);
}
}
// ************************************************************************* //

View file

@ -0,0 +1,130 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | For copyright notice see file Copyright |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object alphat;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -1 -1 0 0 0 0];
internalField uniform 0;
boundaryField
{
GVINLET
{
type calculated;
value uniform 0;
}
GVOUTLET
{
type ggi;
value uniform 0;
}
GVCYCLIC
{
type cyclic;
value uniform 0;
}
GVBLADE
{
type alphatWallFunction;
Prt 0.85;
value uniform 0;
}
GVHUB
{
type alphatWallFunction;
Prt 0.85;
value uniform 0;
}
GVSHROUD
{
type alphatWallFunction;
Prt 0.85;
value uniform 0;
}
RUINLET
{
type ggi;
value uniform 0;
}
RUOUTLET
{
type ggi;
value uniform 0;
}
RUCYCLIC1
{
type cyclicGgi;
value uniform 0;
}
RUCYCLIC2
{
type cyclicGgi;
value uniform 0;
}
RUBLADE
{
type alphatWallFunction;
Prt 0.85;
value uniform 0;
}
RUHUB
{
type alphatWallFunction;
Prt 0.85;
value uniform 0;
}
RUSHROUD
{
type alphatWallFunction;
Prt 0.85;
value uniform 0;
}
DTINLET
{
type ggi;
value uniform 0;
}
DTOUTLET
{
type calculated;
value uniform 0;
}
DTCYCLIC1
{
type cyclicGgi;
value uniform 0;
}
DTCYCLIC2
{
type cyclicGgi;
value uniform 0;
}
DTHUB
{
type alphatWallFunction;
Prt 0.85;
value uniform 0;
}
DTSHROUD
{
type alphatWallFunction;
Prt 0.85;
value uniform 0;
}
}
// ************************************************************************* //

View file

@ -0,0 +1,157 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | For copyright notice see file Copyright |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object epsilon;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 2 -3 0 0 0 0];
internalField uniform 14.855;
boundaryField
{
GVINLET
{
type fixedValue;
value uniform 14.855;
}
GVOUTLET
{
type ggi;
patchType ggi;
value uniform 14.855;
}
GVCYCLIC
{
type cyclic;
value uniform 14.855;
}
GVBLADE
{
type compressible::epsilonWallFunction;
refValue uniform 0;
value uniform 14.855;
Cmu 0.09;
kappa 0.41;
E 9.8;
}
GVHUB
{
type compressible::epsilonWallFunction;
refValue uniform 0;
value uniform 14.855;
Cmu 0.09;
kappa 0.41;
E 9.8;
}
GVSHROUD
{
type compressible::epsilonWallFunction;
refValue uniform 0;
value uniform 14.855;
Cmu 0.09;
kappa 0.41;
E 9.8;
}
RUINLET
{
type ggi;
patchType ggi;
value uniform 14.855;
}
RUOUTLET
{
type ggi;
patchType ggi;
value uniform 14.855;
}
RUCYCLIC1
{
type cyclicGgi;
value uniform 14.855;
}
RUCYCLIC2
{
type cyclicGgi;
value uniform 14.855;
}
RUBLADE
{
type compressible::epsilonWallFunction;
refValue uniform 0;
value uniform 14.855;
Cmu 0.09;
kappa 0.41;
E 9.8;
}
RUHUB
{
type compressible::epsilonWallFunction;
refValue uniform 0;
value uniform 14.855;
Cmu 0.09;
kappa 0.41;
E 9.8;
}
RUSHROUD
{
type compressible::epsilonWallFunction;
refValue uniform 0;
value uniform 14.855;
Cmu 0.09;
kappa 0.41;
E 9.8;
}
DTINLET
{
type ggi;
patchType ggi;
value uniform 14.855;
}
DTOUTLET
{
type zeroGradient;
}
DTCYCLIC1
{
type cyclicGgi;
value uniform 14.855;
}
DTCYCLIC2
{
type cyclicGgi;
value uniform 14.855;
}
DTHUB
{
type compressible::epsilonWallFunction;
refValue uniform 0;
value uniform 14.855;
Cmu 0.09;
kappa 0.41;
E 9.8;
}
DTSHROUD
{
type compressible::epsilonWallFunction;
refValue uniform 0;
value uniform 14.855;
Cmu 0.09;
kappa 0.41;
E 9.8;
}
}
// ************************************************************************* //

View file

@ -0,0 +1,138 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | For copyright notice see file Copyright |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "20";
object i;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 2 -2 0 0 0 0];
internalField uniform 307494;
boundaryField
{
GVINLET
{
type fixedEnthalpy;
value uniform 307494;
}
GVOUTLET
{
type ggiEnthalpyJump;
patchType ggi;
rotating false;
value uniform 307494;
}
GVCYCLIC
{
type cyclic;
value uniform 307494;
}
GVBLADE
{
type gradientEnthalpy;
gradient uniform 0;
value uniform 307000;
}
GVHUB
{
type gradientEnthalpy;
gradient uniform 0;
value uniform 307494;
}
GVSHROUD
{
type gradientEnthalpy;
gradient uniform 0;
value uniform 307494;
}
RUINLET
{
type ggiEnthalpyJump;
patchType ggi;
rotating true;
value uniform 307494;
}
RUOUTLET
{
type ggiEnthalpyJump;
patchType ggi;
rotating true;
value uniform 307494;
}
RUCYCLIC1
{
type cyclicGgi;
value uniform 307494;
}
RUCYCLIC2
{
type cyclicGgi;
value uniform 307494;
}
RUBLADE
{
type gradientEnthalpy;
gradient uniform 307494;
}
RUHUB
{
type gradientEnthalpy;
gradient uniform 307494;
}
RUSHROUD
{
type gradientEnthalpy;
gradient uniform 307494;
}
DTINLET
{
type ggiEnthalpyJump;
patchType ggi;
rotating false;
value uniform 305.66;
}
DTOUTLET
{
type gradientEnthalpy;
gradient uniform 0;
value uniform 307494;
}
DTCYCLIC1
{
type cyclicGgi;
value uniform 307494;
}
DTCYCLIC2
{
type cyclicGgi;
value uniform 307494;
}
DTHUB
{
type gradientEnthalpy;
gradient uniform 0;
value uniform 307494;
}
DTSHROUD
{
type gradientEnthalpy;
gradient uniform 0;
value uniform 307494;
}
}
// ************************************************************************* //

View file

@ -0,0 +1,121 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | For copyright notice see file Copyright |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object k;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 2 -2 0 0 0 0];
internalField uniform 0.375;
boundaryField
{
GVINLET
{
type fixedValue;
value uniform 0.375;
}
GVOUTLET
{
type ggi;
value uniform 0.375;
}
GVCYCLIC
{
type cyclic;
value uniform 0.375;
}
GVBLADE
{
type compressible::kqRWallFunction;
value uniform 0.375;
}
GVHUB
{
type compressible::kqRWallFunction;
value uniform 0.375;
}
GVSHROUD
{
type compressible::kqRWallFunction;
value uniform 0.375;
}
RUINLET
{
type ggi;
value uniform 0.375;
}
RUOUTLET
{
type ggi;
value uniform 0.375;
}
RUCYCLIC1
{
type cyclicGgi;
value uniform 0.375;
}
RUCYCLIC2
{
type cyclicGgi;
value uniform 0.375;
}
RUBLADE
{
type compressible::kqRWallFunction;
value uniform 0.375;
}
RUHUB
{
type compressible::kqRWallFunction;
value uniform 0.375;
}
RUSHROUD
{
type compressible::kqRWallFunction;
value uniform 0.375;
}
DTINLET
{
type ggi;
value uniform 0.375;
}
DTOUTLET
{
type zeroGradient;
}
DTCYCLIC1
{
type cyclicGgi;
value uniform 0.375;
}
DTCYCLIC2
{
type cyclicGgi;
value uniform 0.375;
}
DTHUB
{
type compressible::kqRWallFunction;
value uniform 0.375;
}
DTSHROUD
{
type compressible::kqRWallFunction;
value uniform 0.375;
}
}
// ************************************************************************* //

View file

@ -0,0 +1,146 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | For copyright notice see file Copyright |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object mut;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -1 -1 0 0 0 0];
internalField uniform 0;
boundaryField
{
GVINLET
{
type calculated;
value uniform 0;
}
GVOUTLET
{
type ggi;
value uniform 0;
}
GVCYCLIC
{
type cyclic;
value uniform 0;
}
GVBLADE
{
type mutWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 0;
}
GVHUB
{
type mutWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 0;
}
GVSHROUD
{
type mutWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 0;
}
RUINLET
{
type ggi;
value uniform 0;
}
RUOUTLET
{
type ggi;
value uniform 0;
}
RUCYCLIC1
{
type cyclicGgi;
value uniform 0;
}
RUCYCLIC2
{
type cyclicGgi;
value uniform 0;
}
RUBLADE
{
type mutWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 0;
}
RUHUB
{
type mutWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 0;
}
RUSHROUD
{
type mutWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 0;
}
DTINLET
{
type ggi;
value uniform 0;
}
DTOUTLET
{
type calculated;
value uniform 0;
}
DTCYCLIC1
{
type cyclicGgi;
value uniform 0;
}
DTCYCLIC2
{
type cyclicGgi;
value uniform 0;
}
DTHUB
{
type mutWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 0;
}
DTSHROUD
{
type mutWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 0;
}
}
// ************************************************************************* //

View file

@ -0,0 +1,110 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object p;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -1 -2 0 0 0 0];
internalField uniform 100000;
boundaryField
{
GVINLET
{
type zeroGradient;
}
GVOUTLET
{
type ggi;
patchType ggi;
value uniform 100000;
}
GVCYCLIC
{
type cyclic;
}
GVBLADE
{
type zeroGradient;
}
GVHUB
{
type zeroGradient;
}
GVSHROUD
{
type zeroGradient;
}
RUINLET
{
type ggi;
patchType ggi;
value uniform 100000;
}
RUOUTLET
{
type ggi;
patchType ggi;
value uniform 100000;
}
RUCYCLIC1
{
type cyclicGgi;
}
RUCYCLIC2
{
type cyclicGgi;
}
RUBLADE
{
type zeroGradient;
}
RUHUB
{
type zeroGradient;
}
RUSHROUD
{
type zeroGradient;
}
DTINLET
{
type ggi;
patchType ggi;
value uniform 100000;
}
DTOUTLET
{
type fixedValue;
value uniform 100000;
}
DTCYCLIC1
{
type cyclicGgi;
}
DTCYCLIC2
{
type cyclicGgi;
}
DTHUB
{
type zeroGradient;
}
DTSHROUD
{
type zeroGradient;
}
}
// ************************************************************************* //

View file

@ -0,0 +1,8 @@
#!/bin/sh
# Source tutorial clean functions
. $WM_PROJECT_DIR/bin/tools/CleanFunctions
cleanCase
\rm -rf 0
\cp -r save 0

View file

@ -0,0 +1,20 @@
#!/bin/sh
# Source tutorial run functions
. $WM_PROJECT_DIR/bin/tools/RunFunctions
application=steadyUniversalMRFFoam
#Create the mesh:
m4 < constant/polyMesh/blockMeshDict.m4 > constant/polyMesh/blockMeshDict
runApplication blockMesh
transformPoints -scale "(1 20 1)"
transformPoints -cylToCart "((0 0 0) (0 0 1) (1 0 0))"
# Set 0-directory and create GGI set:
\rm -rf 0
\cp -r save 0
runApplication setSet -batch setBatchGgi
runApplication setsToZones -noFlipMap
runApplication $application

View file

@ -0,0 +1,31 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object MRFZones;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
1
(
rotor
{
//patches (rotor);
// Fixed patches (by default they 'move' with the MRF zone)
nonRotatingPatches ( RUSHROUD );
origin origin [0 1 0 0 0 0 0] (0 0 0);
axis axis [0 0 0 0 0 0 0] (0 0 1);
omega omega [0 0 -1 0 0 0 0] -366;
}
)
// ************************************************************************* //

View file

@ -0,0 +1,191 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object RASProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
RASModel kEpsilon;
turbulence on;
printCoeffs on;
laminarCoeffs
{
}
kEpsilonCoeffs
{
Cmu 0.09;
C1 1.44;
C2 1.92;
alphaEps 0.76923;
}
RNGkEpsilonCoeffs
{
Cmu 0.0845;
C1 1.42;
C2 1.68;
alphak 1.39;
alphaEps 1.39;
eta0 4.38;
beta 0.012;
}
kOmegaSSTCoeffs
{
alphaK1 0.85034;
alphaK2 1.0;
alphaOmega1 0.5;
alphaOmega2 0.85616;
gamma1 0.5532;
gamma2 0.4403;
beta1 0.0750;
beta2 0.0828;
betaStar 0.09;
a1 0.31;
c1 10;
Cmu 0.09;
}
NonlinearKEShihCoeffs
{
Cmu 0.09;
C1 1.44;
C2 1.92;
alphak 1;
alphaEps 0.76932;
A1 1.25;
A2 1000;
Ctau1 -4;
Ctau2 13;
Ctau3 -2;
alphaKsi 0.9;
}
LienCubicKECoeffs
{
C1 1.44;
C2 1.92;
alphak 1;
alphaEps 0.76923;
A1 1.25;
A2 1000;
Ctau1 -4;
Ctau2 13;
Ctau3 -2;
alphaKsi 0.9;
}
QZetaCoeffs
{
Cmu 0.09;
C1 1.44;
C2 1.92;
alphaZeta 0.76923;
anisotropic no;
}
LaunderSharmaKECoeffs
{
Cmu 0.09;
C1 1.44;
C2 1.92;
alphaEps 0.76923;
}
LamBremhorstKECoeffs
{
Cmu 0.09;
C1 1.44;
C2 1.92;
alphaEps 0.76923;
}
LienCubicKELowReCoeffs
{
Cmu 0.09;
C1 1.44;
C2 1.92;
alphak 1;
alphaEps 0.76923;
A1 1.25;
A2 1000;
Ctau1 -4;
Ctau2 13;
Ctau3 -2;
alphaKsi 0.9;
Am 0.016;
Aepsilon 0.263;
Amu 0.00222;
}
LienLeschzinerLowReCoeffs
{
Cmu 0.09;
C1 1.44;
C2 1.92;
alphak 1;
alphaEps 0.76923;
Am 0.016;
Aepsilon 0.263;
Amu 0.00222;
}
LRRCoeffs
{
Cmu 0.09;
Clrr1 1.8;
Clrr2 0.6;
C1 1.44;
C2 1.92;
Cs 0.25;
Ceps 0.15;
alphaEps 0.76923;
}
LaunderGibsonRSTMCoeffs
{
Cmu 0.09;
Clg1 1.8;
Clg2 0.6;
C1 1.44;
C2 1.92;
C1Ref 0.5;
C2Ref 0.3;
Cs 0.25;
Ceps 0.15;
alphaEps 0.76923;
alphaR 1.22;
}
SpalartAllmarasCoeffs
{
alphaNut 1.5;
Cb1 0.1355;
Cb2 0.622;
Cw2 0.3;
Cw3 2;
Cv1 7.1;
Cv2 5.0;
}
wallFunctionCoeffs
{
kappa 0.4187;
E 9;
}
// ************************************************************************* //

View file

@ -0,0 +1,508 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object blockMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// General macros to create 2D/extruded-2D meshes
//define(calc, [esyscmd(echo $1 | bc | tr -d \\n)])
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
convertToMeters 1;
// HUB AND SHROUD RADIUS
// Hub radius (m)
// Shroud radius (m)
// GUIDE VANE REGION GEOMETRY AND MESH PROPERTIES
// Guide vane inlet axial length (m)
// Guide vane axial length (m)
// Guide vane outlet axial length (m)
// Number of guide vanes per 360 degrees (integer!)
// Number of cells in radial direction at guide vane
// Number of cells in tangential direction between guide vanes
// Number of cells in axial direction at guide vane inlet
// Number of cells in axial direction between guide vanes
// Number of cells in axial direction at guide vane outlet
// RUNNER REGION GEOMETRY AND MESH PROPERTIES
// Runner inlet axial length (m)
// Runner axial length (m)
// Runner outlet axial length (m)
// Number of runner blades per 360 degrees (integer!)
// Number of cells in radial direction in runner
// Number of cells in tangential direction between runner blades
// Number of cells in axial direction at runner inlet
// Number of cells in axial direction between runner blades
// Number of cells in axial direction at runner outlet
// DRAFT TUBE REGION GEOMETRY AND MESH PROPERTIES
// "Draft tube" axial length (m)
// Number of sections per 360 degrees (integer!)
// Number of cells in radial direction in "draft tube"
// Number of cells in tangential direction in "draft tube"
// Number of cells in axial direction in "draft tube"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// TANGENTIAL PITCHES (RADIANS)
// Guide vane region
// Runner region
// Draft tube region
// TANGENTIAL SHIFTS BETWEEN AXIAL LEVELS (BOTTOM-UP)
// Tangential shift from level DT0 to DT1
// Runner region
// Tangential shift from level RU0 to RU1
// Tangential shift from level RU1 to RU2
// Tangential shift from level RU2 to RU3
// Guide vane region
// Tangential shift from level GV0 to GV1
// Tangential shift from level GV1 to GV2
// Tangential shift from level GV2 to GV3
// AXIAL/TANGENTIAL BASE POINTS FOR EACH LEVEL (BOTTOM-UP):
// (CENTER OF RUNNER SET TO THETA=0, Z=0)
// Draft tube:
//Center runner
// Straight draft tube!
//Center runner
// Runner:
//Center runner
//Center runner
// Guide vane:
//Center runner
//Center runner
vertices //(radial [m], tangential [radians], axial [m])
(
//Guide vane hub:
(0.05 -0.0691150383 0.07) // Vertex GV0lb = 0
(0.05 -0.00628318530000001 0.07) // Vertex GV0rb = 1
(0.05 -0.062831853 0.09) // Vertex GV1lb = 2
(0.05 0 0.09) // Vertex GV1rb = 3
(0.05 -0.0314159265 0.19) // Vertex GV2lb = 4
(0.05 0.0314159265 0.19) // Vertex GV2rb = 5
(0.05 -0.0314159265 0.29) // Vertex GV3lb = 6
(0.05 0.0314159265 0.29) // Vertex GV3rb = 7
//Guide vane shroud:
(0.1 -0.0691150383 0.07) // Vertex GV0lt = 8
(0.1 -0.00628318530000001 0.07) // Vertex GV0rt = 9
(0.1 -0.062831853 0.09) // Vertex GV1lt = 10
(0.1 0 0.09) // Vertex GV1rt = 11
(0.1 -0.0314159265 0.19) // Vertex GV2lt = 12
(0.1 0.0314159265 0.19) // Vertex GV2rt = 13
(0.1 -0.0314159265 0.29) // Vertex GV3lt = 14
(0.1 0.0314159265 0.29) // Vertex GV3rt = 15
//Runner hub:
(0.05 -0.0062831853 -0.07) // Vertex RU0lb = 16
(0.05 0.0565486677 -0.07) // Vertex RU0rb = 17
(0.05 -0.0125663706 -0.05) // Vertex RU1lb = 18
(0.05 0.0502654824 -0.05) // Vertex RU1rb = 19
(0.05 -0.062831853 0.05) // Vertex RU2lb = 20
(0.05 0 0.05) // Vertex RU2rb = 21
(0.05 -0.0691150383 0.07) // Vertex RU3lb = 22
(0.05 -0.00628318530000001 0.07) // Vertex RU3rb = 23
//Runner shroud:
(0.1 -0.0062831853 -0.07) // Vertex RU0lt = 24
(0.1 0.0565486677 -0.07) // Vertex RU0rt = 25
(0.1 -0.0125663706 -0.05) // Vertex RU1lt = 26
(0.1 0.0502654824 -0.05) // Vertex RU1rt = 27
(0.1 -0.062831853 0.05) // Vertex RU2lt = 28
(0.1 0 0.05) // Vertex RU2rt = 29
(0.1 -0.0691150383 0.07) // Vertex RU3lt = 30
(0.1 -0.00628318530000001 0.07) // Vertex RU3rt = 31
//Draft tube hub:
(0.05 -0.0062831853 -0.14) // Vertex DT0lb = 32
(0.05 0.0565486677 -0.14) // Vertex DT0rb = 33
(0.05 -0.0062831853 -0.07) // Vertex DT1lb = 34
(0.05 0.0565486677 -0.07) // Vertex DT1rb = 35
//Draft tube shroud:
(0.1 -0.0062831853 -0.14) // Vertex DT0lt = 36
(0.1 0.0565486677 -0.14) // Vertex DT0rt = 37
(0.1 -0.0062831853 -0.07) // Vertex DT1lt = 38
(0.1 0.0565486677 -0.07) // Vertex DT1rt = 39
);
blocks
(
//Guide vane:
hex (0 1 3 2 8 9 11 10)
(10 2 10)
simpleGrading (1 1 1)
hex (2 3 5 4 10 11 13 12)
(10 10 10)
simpleGrading (1 1 1)
hex (4 5 7 6 12 13 15 14)
(10 10 10)
simpleGrading (1 1 1)
//Runner:
hex (16 17 19 18 24 25 27 26)
rotor
(10 2 10)
simpleGrading (1 1 1)
hex (18 19 21 20 26 27 29 28)
rotor
(10 10 10)
simpleGrading (1 1 1)
hex (20 21 23 22 28 29 31 30)
rotor
(10 2 10)
simpleGrading (1 1 1)
//Draft tube:
hex (32 33 35 34 36 37 39 38)
(10 7 10)
simpleGrading (1 1 1)
);
edges // Inappropriate with arc due to coordinate conversion
(
//Runner
spline 26 28
(
(0.1 -0.04523893416 0)
)
spline 18 20
(
(0.05 -0.04523893416 0)
)
spline 27 29
(
(0.1 0.0125663706 0)
)
spline 19 21
(
(0.05 0.0125663706 0)
)
//Guide vane
spline 10 12
(
(0.1 -0.039269908125 0.14)
)
spline 2 4
(
(0.05 -0.039269908125 0.14)
)
spline 11 13
(
(0.1 0.020420352225 0.14)
)
spline 3 5
(
(0.05 0.020420352225 0.14)
)
);
boundary
(
GVINLET
{
type patch;
faces
(
(7 6 14 15)
);
}
GVOUTLET
{
type ggi;
shadowPatch RUINLET;
zone GVOUTLETZone;
bridgeOverlap false;
faces
(
(0 1 9 8)
);
}
GVCYCLIC
{
type cyclic;
featureCos 0.9;
//MUST specify transformation since cyclic is not flat.
//Set global debugSwitch cyclic to 1 to check that it is correct!
transform rotational;
rotationAxis (0 0 1);
rotationCentre (0 0 0);
rotationAngle -72; //Degrees from second half to first half
//Face numbering must be same on both halfs/sides. The numbering
//is determined by the block definition, not by the faces list
//below. Just make sure that each face definition is according
//to the rule "clockwise when looking from inside the block".
faces
(
//First half, left side:
(2 0 8 10)
(6 4 12 14)
//Second half, right side:
(1 3 11 9)
(5 7 15 13)
);
}
GVBLADE
{
type wall;
faces
(
(4 2 10 12)
(3 5 13 11)
);
}
GVHUB
{
type wall;
faces
(
(0 2 3 1)
(2 4 5 3)
(4 6 7 5)
);
}
GVSHROUD
{
type wall;
faces
(
(8 9 11 10)
(10 11 13 12)
(12 13 15 14)
);
}
RUINLET
{
type ggi;
shadowPatch GVOUTLET;
zone RUINLETZone;
bridgeOverlap false;
faces
(
(23 22 30 31)
);
}
RUOUTLET
{
type ggi;
shadowPatch DTINLET;
zone RUOUTLETZone;
bridgeOverlap false;
faces
(
(16 17 25 24)
);
}
RUCYCLIC1
{
type cyclicGgi;
shadowPatch RUCYCLIC2;
zone RUCYCLIC1Zone;
bridgeOverlap false;
rotationAxis (0 0 1);
rotationAngle 72;
separationOffset (0 0 0);
faces
(
(18 16 24 26)
(22 20 28 30)
);
}
RUCYCLIC2
{
type cyclicGgi;
shadowPatch RUCYCLIC1;
zone RUCYCLIC2Zone;
bridgeOverlap false;
rotationAxis (0 0 1);
rotationAngle -72;
separationOffset (0 0 0);
faces
(
(17 19 27 25)
(21 23 31 29)
);
}
RUBLADE
{
type wall;
faces
(
(20 18 26 28)
(19 21 29 27)
);
}
RUHUB
{
type wall;
faces
(
(16 18 19 17)
(18 20 21 19)
(20 22 23 21)
);
}
RUSHROUD
{
type wall;
faces
(
(24 25 27 26)
(26 27 29 28)
(28 29 31 30)
);
}
DTINLET
{
type ggi;
shadowPatch RUOUTLET;
zone DTINLETZone;
bridgeOverlap false;
faces
(
(35 34 38 39)
);
}
DTOUTLET
{
type patch;
faces
(
(32 33 37 36)
);
}
DTCYCLIC1
{
type cyclicGgi;
shadowPatch DTCYCLIC2;
zone DTCYCLIC1Zone;
bridgeOverlap false;
rotationAxis (0 0 1);
rotationAngle 72;
separationOffset (0 0 0);
faces
(
(34 32 36 38)
);
}
DTCYCLIC2
{
type cyclicGgi;
shadowPatch DTCYCLIC1;
zone DTCYCLIC2Zone;
bridgeOverlap false;
rotationAxis (0 0 1);
rotationAngle -72;
separationOffset (0 0 0);
faces
(
(33 35 39 37)
);
}
DTHUB
{
type wall;
faces
(
(32 34 35 33)
);
}
DTSHROUD
{
type wall;
faces
(
(36 37 39 38)
);
}
);
// ************************************************************************* //

View file

@ -0,0 +1,508 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object blockMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// General macros to create 2D/extruded-2D meshes
changecom(//)changequote([,])
define(calc, [esyscmd(perl -e 'printf ($1)')])
//define(calc, [esyscmd(echo $1 | bc | tr -d \\n)])
define(VCOUNT, 0)
define(vlabel, [[// ]Vertex $1 = VCOUNT define($1, VCOUNT)define([VCOUNT], incr(VCOUNT))])
define(pi, calc(3.14159265/20))
define(hex2D, hex ($1b $2b $3b $4b $1t $2t $3t $4t))
define(quad2D, ($1b $2b $2t $1t))
define(frontQuad, ($1t $2t $3t $4t))
define(backQuad, ($1b $4b $3b $2b))
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
convertToMeters 1;
// HUB AND SHROUD RADIUS
// Hub radius (m)
define(hr, 0.05)
// Shroud radius (m)
define(sr, 0.1)
// GUIDE VANE REGION GEOMETRY AND MESH PROPERTIES
// Guide vane inlet axial length (m)
define(GVial, 0.1)
// Guide vane axial length (m)
define(GVbal, 0.1)
// Guide vane outlet axial length (m)
define(GVoal, 0.02)
// Number of guide vanes per 360 degrees (integer!)
define(GVnb, 5)
// Number of cells in radial direction at guide vane
define(GVrc, 10)
// Number of cells in tangential direction between guide vanes
define(GVtc, 10)
// Number of cells in axial direction at guide vane inlet
define(GViac, 10)
// Number of cells in axial direction between guide vanes
define(GVbac, 10)
// Number of cells in axial direction at guide vane outlet
define(GVoac, 2)
// RUNNER REGION GEOMETRY AND MESH PROPERTIES
// Runner inlet axial length (m)
define(RUial, 0.02)
// Runner axial length (m)
define(RUal, 0.1)
// Runner outlet axial length (m)
define(RUoal, 0.02)
// Number of runner blades per 360 degrees (integer!)
define(RUnb, 5)
// Number of cells in radial direction in runner
define(RUrc, 10)
// Number of cells in tangential direction between runner blades
define(RUtc, 10)
// Number of cells in axial direction at runner inlet
define(RUiac, 2)
// Number of cells in axial direction between runner blades
define(RUbac, 10)
// Number of cells in axial direction at runner outlet
define(RUoac, 2)
// DRAFT TUBE REGION GEOMETRY AND MESH PROPERTIES
// "Draft tube" axial length (m)
define(DTal, 0.07)
// Number of sections per 360 degrees (integer!)
define(DTns, 5)
// Number of cells in radial direction in "draft tube"
define(DTrc, 10)
// Number of cells in tangential direction in "draft tube"
define(DTtc, 10)
// Number of cells in axial direction in "draft tube"
define(DTac, 7)
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// TANGENTIAL PITCHES (RADIANS)
// Guide vane region
define(GVp, calc(2*pi/GVnb))
// Runner region
define(RUp, calc(2*pi/RUnb))
// Draft tube region
define(DTp, calc(2*pi/DTns))
// TANGENTIAL SHIFTS BETWEEN AXIAL LEVELS (BOTTOM-UP)
// Tangential shift from level DT0 to DT1
define(DTts01, calc(5*DTp))
// Runner region
// Tangential shift from level RU0 to RU1
define(RUts01, calc(-1/10*RUp))
// Tangential shift from level RU1 to RU2
define(RUts12, calc(-4/5*RUp))
// Tangential shift from level RU2 to RU3
define(RUts23, calc(-1/10*RUp))
// Guide vane region
// Tangential shift from level GV0 to GV1
define(GVts01, calc(1/10*GVp))
// Tangential shift from level GV1 to GV2
define(GVts12, calc(1/2*GVp))
// Tangential shift from level GV2 to GV3
define(GVts23, calc(0*GVp))
// AXIAL/TANGENTIAL BASE POINTS FOR EACH LEVEL (BOTTOM-UP):
// (CENTER OF RUNNER SET TO THETA=0, Z=0)
// Draft tube:
define(DTa0, calc(-RUoal-0.5*RUal-DTal)) //Center runner
define(DTt0, calc(-0.5*RUp-(0.5*RUts12)-(0*DTts01))) // Straight draft tube!
define(DTt1, calc(-0.5*RUp-(0.5*RUts12))) //Center runner
// Runner:
define(RUa0, calc(-RUoal-0.5*RUal)) //Center runner
define(RUt0, calc(-0.5*RUp-(0.5*RUts12))) //Center runner
define(RUt1, calc(RUt0+RUts01))
define(RUt2, calc(RUt1+RUts12))
define(RUt3, calc(RUt2+RUts23))
// Guide vane:
define(GVa0, calc(0.5*RUal+RUial)) //Center runner
define(GVt0, calc(-0.5*RUp-(0.5*RUts12)+RUts01+RUts12+RUts23)) //Center runner
define(GVt1, calc(GVt0+GVts01))
define(GVt2, calc(GVt1+GVts12))
define(GVt3, calc(GVt2+GVts23))
vertices //(radial [m], tangential [radians], axial [m])
(
//Guide vane hub:
(hr GVt0 GVa0) vlabel(GV0lb)
(hr calc(GVt0+GVp) GVa0) vlabel(GV0rb)
(hr GVt1 calc(GVa0+GVoal)) vlabel(GV1lb)
(hr calc(GVt1+GVp) calc(GVa0+GVoal)) vlabel(GV1rb)
(hr GVt2 calc(GVa0+GVoal+GVbal)) vlabel(GV2lb)
(hr calc(GVt2+GVp) calc(GVa0+GVoal+GVbal)) vlabel(GV2rb)
(hr GVt3 calc(GVa0+GVoal+GVbal+GVial)) vlabel(GV3lb)
(hr calc(GVt3+GVp) calc(GVa0+GVoal+GVbal+GVial)) vlabel(GV3rb)
//Guide vane shroud:
(sr GVt0 GVa0) vlabel(GV0lt)
(sr calc(GVt0+GVp) GVa0) vlabel(GV0rt)
(sr GVt1 calc(GVa0+GVoal)) vlabel(GV1lt)
(sr calc(GVt1+GVp) calc(GVa0+GVoal)) vlabel(GV1rt)
(sr GVt2 calc(GVa0+GVoal+GVbal)) vlabel(GV2lt)
(sr calc(GVt2+GVp) calc(GVa0+GVoal+GVbal)) vlabel(GV2rt)
(sr GVt3 calc(GVa0+GVoal+GVbal+GVial)) vlabel(GV3lt)
(sr calc(GVt3+GVp) calc(GVa0+GVoal+GVbal+GVial)) vlabel(GV3rt)
//Runner hub:
(hr RUt0 RUa0) vlabel(RU0lb)
(hr calc(RUt0+RUp) RUa0) vlabel(RU0rb)
(hr RUt1 calc(RUa0+RUoal)) vlabel(RU1lb)
(hr calc(RUt1+RUp) calc(RUa0+RUoal)) vlabel(RU1rb)
(hr RUt2 calc(RUa0+RUoal+RUal)) vlabel(RU2lb)
(hr calc(RUt2+RUp) calc(RUa0+RUoal+RUal)) vlabel(RU2rb)
(hr RUt3 calc(RUa0+RUoal+RUal+RUial)) vlabel(RU3lb)
(hr calc(RUt3+RUp) calc(RUa0+RUoal+RUal+RUial)) vlabel(RU3rb)
//Runner shroud:
(sr RUt0 RUa0) vlabel(RU0lt)
(sr calc(RUt0+RUp) RUa0) vlabel(RU0rt)
(sr RUt1 calc(RUa0+RUoal)) vlabel(RU1lt)
(sr calc(RUt1+RUp) calc(RUa0+RUoal)) vlabel(RU1rt)
(sr RUt2 calc(RUa0+RUoal+RUal)) vlabel(RU2lt)
(sr calc(RUt2+RUp) calc(RUa0+RUoal+RUal)) vlabel(RU2rt)
(sr RUt3 calc(RUa0+RUoal+RUal+RUial)) vlabel(RU3lt)
(sr calc(RUt3+RUp) calc(RUa0+RUoal+RUal+RUial)) vlabel(RU3rt)
//Draft tube hub:
(hr DTt0 DTa0) vlabel(DT0lb)
(hr calc(DTt0+DTp) DTa0) vlabel(DT0rb)
(hr DTt1 calc(DTa0+DTal)) vlabel(DT1lb)
(hr calc(DTt1+DTp) calc(DTa0+DTal)) vlabel(DT1rb)
//Draft tube shroud:
(sr DTt0 DTa0) vlabel(DT0lt)
(sr calc(DTt0+DTp) DTa0) vlabel(DT0rt)
(sr DTt1 calc(DTa0+DTal)) vlabel(DT1lt)
(sr calc(DTt1+DTp) calc(DTa0+DTal)) vlabel(DT1rt)
);
blocks
(
//Guide vane:
hex2D(GV0l, GV0r, GV1r, GV1l)
(GVtc GVoac GVrc)
simpleGrading (1 1 1)
hex2D(GV1l, GV1r, GV2r, GV2l)
(GVtc GVbac GVrc)
simpleGrading (1 1 1)
hex2D(GV2l, GV2r, GV3r, GV3l)
(GVtc GViac GVrc)
simpleGrading (1 1 1)
//Runner:
hex2D(RU0l, RU0r, RU1r, RU1l)
rotor
(RUtc RUoac RUrc)
simpleGrading (1 1 1)
hex2D(RU1l, RU1r, RU2r, RU2l)
rotor
(RUtc RUbac RUrc)
simpleGrading (1 1 1)
hex2D(RU2l, RU2r, RU3r, RU3l)
rotor
(RUtc RUiac RUrc)
simpleGrading (1 1 1)
//Draft tube:
hex2D(DT0l, DT0r, DT1r, DT1l)
(DTtc DTac DTrc)
simpleGrading (1 1 1)
);
edges // Inappropriate with arc due to coordinate conversion
(
//Runner
spline RU1lt RU2lt
(
(sr calc(RUt1+0.65*(RUt2-(RUt1))) calc(RUa0+RUoal+0.5*RUal))
)
spline RU1lb RU2lb
(
(hr calc(RUt1+0.65*(RUt2-(RUt1))) calc(RUa0+RUoal+0.5*RUal))
)
spline RU1rt RU2rt
(
(sr calc(RUt1+RUp+0.75*(RUt2-(RUt1))) calc(RUa0+RUoal+0.5*RUal))
)
spline RU1rb RU2rb
(
(hr calc(RUt1+RUp+0.75*(RUt2-(RUt1))) calc(RUa0+RUoal+0.5*RUal))
)
//Guide vane
spline GV1lt GV2lt
(
(sr calc(GVt1+0.75*(GVt2-(GVt1))) calc(GVa0+GVoal+0.5*GVbal))
)
spline GV1lb GV2lb
(
(hr calc(GVt1+0.75*(GVt2-(GVt1))) calc(GVa0+GVoal+0.5*GVbal))
)
spline GV1rt GV2rt
(
(sr calc(GVt1+GVp+0.65*(GVt2-(GVt1))) calc(GVa0+GVoal+0.5*GVbal))
)
spline GV1rb GV2rb
(
(hr calc(GVt1+GVp+0.65*(GVt2-(GVt1))) calc(GVa0+GVoal+0.5*GVbal))
)
);
boundary
(
GVINLET
{
type patch;
faces
(
quad2D(GV3r, GV3l)
);
}
GVOUTLET
{
type ggi;
shadowPatch RUINLET;
zone GVOUTLETZone;
bridgeOverlap false;
faces
(
quad2D(GV0l, GV0r)
);
}
GVCYCLIC
{
type cyclic;
featureCos 0.9;
//MUST specify transformation since cyclic is not flat.
//Set global debugSwitch cyclic to 1 to check that it is correct!
transform rotational;
rotationAxis (0 0 1);
rotationCentre (0 0 0);
rotationAngle -72; //Degrees from second half to first half
//Face numbering must be same on both halfs/sides. The numbering
//is determined by the block definition, not by the faces list
//below. Just make sure that each face definition is according
//to the rule "clockwise when looking from inside the block".
faces
(
//First half, left side:
quad2D(GV1l, GV0l)
quad2D(GV3l, GV2l)
//Second half, right side:
quad2D(GV0r, GV1r)
quad2D(GV2r, GV3r)
);
}
GVBLADE
{
type wall;
faces
(
quad2D(GV2l, GV1l)
quad2D(GV1r, GV2r)
);
}
GVHUB
{
type wall;
faces
(
backQuad(GV0l, GV0r, GV1r, GV1l)
backQuad(GV1l, GV1r, GV2r, GV2l)
backQuad(GV2l, GV2r, GV3r, GV3l)
);
}
GVSHROUD
{
type wall;
faces
(
frontQuad(GV0l, GV0r, GV1r, GV1l)
frontQuad(GV1l, GV1r, GV2r, GV2l)
frontQuad(GV2l, GV2r, GV3r, GV3l)
);
}
RUINLET
{
type ggi;
shadowPatch GVOUTLET;
zone RUINLETZone;
bridgeOverlap false;
faces
(
quad2D(RU3r, RU3l)
);
}
RUOUTLET
{
type ggi;
shadowPatch DTINLET;
zone RUOUTLETZone;
bridgeOverlap false;
faces
(
quad2D(RU0l, RU0r)
);
}
RUCYCLIC1
{
type cyclicGgi;
shadowPatch RUCYCLIC2;
zone RUCYCLIC1Zone;
bridgeOverlap false;
rotationAxis (0 0 1);
rotationAngle 72;
separationOffset (0 0 0);
faces
(
quad2D(RU1l, RU0l)
quad2D(RU3l, RU2l)
);
}
RUCYCLIC2
{
type cyclicGgi;
shadowPatch RUCYCLIC1;
zone RUCYCLIC2Zone;
bridgeOverlap false;
rotationAxis (0 0 1);
rotationAngle -72;
separationOffset (0 0 0);
faces
(
quad2D(RU0r, RU1r)
quad2D(RU2r, RU3r)
);
}
RUBLADE
{
type wall;
faces
(
quad2D(RU2l, RU1l)
quad2D(RU1r, RU2r)
);
}
RUHUB
{
type wall;
faces
(
backQuad(RU0l, RU0r, RU1r, RU1l)
backQuad(RU1l, RU1r, RU2r, RU2l)
backQuad(RU2l, RU2r, RU3r, RU3l)
);
}
RUSHROUD
{
type wall;
faces
(
frontQuad(RU0l, RU0r, RU1r, RU1l)
frontQuad(RU1l, RU1r, RU2r, RU2l)
frontQuad(RU2l, RU2r, RU3r, RU3l)
);
}
DTINLET
{
type ggi;
shadowPatch RUOUTLET;
zone DTINLETZone;
bridgeOverlap false;
faces
(
quad2D(DT1r, DT1l)
);
}
DTOUTLET
{
type patch;
faces
(
quad2D(DT0l, DT0r)
);
}
DTCYCLIC1
{
type cyclicGgi;
shadowPatch DTCYCLIC2;
zone DTCYCLIC1Zone;
bridgeOverlap false;
rotationAxis (0 0 1);
rotationAngle 72;
separationOffset (0 0 0);
faces
(
quad2D(DT1l, DT0l)
);
}
DTCYCLIC2
{
type cyclicGgi;
shadowPatch DTCYCLIC1;
zone DTCYCLIC2Zone;
bridgeOverlap false;
rotationAxis (0 0 1);
rotationAngle -72;
separationOffset (0 0 0);
faces
(
quad2D(DT0r, DT1r)
);
}
DTHUB
{
type wall;
faces
(
backQuad(DT0l, DT0r, DT1r, DT1l)
);
}
DTSHROUD
{
type wall;
faces
(
frontQuad(DT0l, DT0r, DT1r, DT1l)
);
}
);
// ************************************************************************* //

View file

@ -0,0 +1,177 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | For copyright notice see file Copyright |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class polyBoundaryMesh;
location "constant/polyMesh";
object boundary;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
19
(
GVINLET
{
type patch;
nFaces 100;
startFace 11740;
}
GVOUTLET
{
type ggi;
nFaces 100;
startFace 11840;
shadowPatch RUINLET;
zone GVOUTLETZone;
bridgeOverlap false;
}
GVCYCLIC
{
type cyclic;
nFaces 240;
startFace 11940;
featureCos 0.9;
transform rotational;
rotationAxis (0 0 1);
rotationCentre (0 0 0);
rotationAngle -72;
}
GVBLADE
{
type wall;
nFaces 200;
startFace 12180;
}
GVHUB
{
type wall;
nFaces 220;
startFace 12380;
}
GVSHROUD
{
type wall;
nFaces 220;
startFace 12600;
}
RUINLET
{
type ggi;
nFaces 100;
startFace 12820;
shadowPatch GVOUTLET;
zone RUINLETZone;
bridgeOverlap false;
}
RUOUTLET
{
type ggi;
nFaces 100;
startFace 12920;
shadowPatch DTINLET;
zone RUOUTLETZone;
bridgeOverlap false;
}
RUCYCLIC1
{
type cyclicGgi;
nFaces 40;
startFace 13020;
shadowPatch RUCYCLIC2;
zone RUCYCLIC1Zone;
bridgeOverlap false;
rotationAxis (0 0 1);
rotationAngle 72;
separationOffset (0 0 0);
}
RUCYCLIC2
{
type cyclicGgi;
nFaces 40;
startFace 13060;
shadowPatch RUCYCLIC1;
zone RUCYCLIC2Zone;
bridgeOverlap false;
rotationAxis (0 0 1);
rotationAngle -72;
separationOffset (0 0 0);
}
RUBLADE
{
type wall;
nFaces 200;
startFace 13100;
}
RUHUB
{
type wall;
nFaces 140;
startFace 13300;
}
RUSHROUD
{
type wall;
nFaces 140;
startFace 13440;
}
DTINLET
{
type ggi;
nFaces 100;
startFace 13580;
shadowPatch RUOUTLET;
zone DTINLETZone;
bridgeOverlap false;
}
DTOUTLET
{
type patch;
nFaces 100;
startFace 13680;
}
DTCYCLIC1
{
type cyclicGgi;
nFaces 70;
startFace 13780;
shadowPatch DTCYCLIC2;
zone DTCYCLIC1Zone;
bridgeOverlap false;
rotationAxis (0 0 1);
rotationAngle 72;
separationOffset (0 0 0);
}
DTCYCLIC2
{
type cyclicGgi;
nFaces 70;
startFace 13850;
shadowPatch DTCYCLIC1;
zone DTCYCLIC2Zone;
bridgeOverlap false;
rotationAxis (0 0 1);
rotationAngle -72;
separationOffset (0 0 0);
}
DTHUB
{
type wall;
nFaces 70;
startFace 13920;
}
DTSHROUD
{
type wall;
nFaces 70;
startFace 13990;
}
)
// ************************************************************************* //

View file

@ -0,0 +1,23 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object thermophysicalProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
thermoType hPsiThermo<pureMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>>;
mixture air 1 28.966 1006 0 1.8e-05 0.7;
// ************************************************************************* //

View file

@ -0,0 +1,37 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object transportProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
transportModel Newtonian;
nu nu [0 2 -1 0 0 0 0] 1e-05;
CrossPowerLawCoeffs
{
nu0 nu0 [0 2 -1 0 0 0 0] 1e-06;
nuInf nuInf [0 2 -1 0 0 0 0] 1e-06;
m m [0 0 1 0 0 0 0] 1;
n n [0 0 0 0 0 0 0] 1;
}
BirdCarreauCoeffs
{
nu0 nu0 [0 2 -1 0 0 0 0] 1e-06;
nuInf nuInf [0 2 -1 0 0 0 0] 1e-06;
k k [0 0 1 0 0 0 0] 0;
n n [0 0 0 0 0 0 0] 1;
}
// ************************************************************************* //

View file

@ -0,0 +1,116 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | For copyright notice see file Copyright |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object T;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 1 0 0 0];
internalField uniform 305.66;
boundaryField
{
GVINLET
{
type fixedValue;
value uniform 305.66;
}
GVOUTLET
{
type ggiEnthalpyJump;
patchType ggi;
rotating false;
value uniform 305.66;
}
GVCYCLIC
{
type cyclic;
}
GVBLADE
{
type zeroGradient;
}
GVHUB
{
type zeroGradient;
}
GVSHROUD
{
type zeroGradient;
}
RUINLET
{
type ggiEnthalpyJump;
patchType ggi;
rotating true;
value uniform 305.66;
}
RUOUTLET
{
type ggiEnthalpyJump;
patchType ggi;
rotating true;
value uniform 305.66;
}
RUCYCLIC1
{
type cyclicGgi;
}
RUCYCLIC2
{
type cyclicGgi;
}
RUBLADE
{
type zeroGradient;
}
RUHUB
{
type zeroGradient;
}
RUSHROUD
{
type zeroGradient;
}
DTINLET
{
type ggiEnthalpyJump;
patchType ggi;
rotating false;
value uniform 305.66;
}
DTOUTLET
{
type zeroGradient;
}
DTCYCLIC1
{
type cyclicGgi;
}
DTCYCLIC2
{
type cyclicGgi;
}
DTHUB
{
type zeroGradient;
}
DTSHROUD
{
type zeroGradient;
}
}
// ************************************************************************* //

View file

@ -0,0 +1,114 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volVectorField;
object U;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 -1 0 0 0 0];
internalField uniform (0.1 0.1 -1);
boundaryField
{
GVINLET
{
type fixedValue;
value uniform (0 0 -1);
}
GVOUTLET
{
type ggi;
value uniform (0 0 -1);
}
GVCYCLIC
{
type cyclic;
}
GVBLADE
{
type fixedValue;
value uniform (0 0 0);
}
GVHUB
{
type fixedValue;
value uniform (0 0 0);
}
GVSHROUD
{
type fixedValue;
value uniform (0 0 0);
}
RUINLET
{
type ggi;
value uniform (0 0 -1);
}
RUOUTLET
{
type ggi;
value uniform (0 0 -1);
}
RUCYCLIC1
{
type cyclicGgi;
}
RUCYCLIC2
{
type cyclicGgi;
}
RUBLADE
{
type fixedValue;
value uniform (0 0 0);
}
RUHUB
{
type fixedValue;
value uniform (0 0 0);
}
RUSHROUD
{
type fixedValue;
value uniform (0 0 0);
}
DTINLET
{
type ggi;
value uniform (0 0 -1);
}
DTOUTLET
{
type zeroGradient;
}
DTCYCLIC1
{
type cyclicGgi;
}
DTCYCLIC2
{
type cyclicGgi;
}
DTHUB
{
type fixedValue;
value uniform (0 0 0);
}
DTSHROUD
{
type fixedValue;
value uniform (0 0 0);
}
}
// ************************************************************************* //

View file

@ -0,0 +1,130 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | For copyright notice see file Copyright |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object alphat;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -1 -1 0 0 0 0];
internalField uniform 0;
boundaryField
{
GVINLET
{
type calculated;
value uniform 0;
}
GVOUTLET
{
type ggi;
value uniform 0;
}
GVCYCLIC
{
type cyclic;
value uniform 0;
}
GVBLADE
{
type alphatWallFunction;
Prt 0.85;
value uniform 0;
}
GVHUB
{
type alphatWallFunction;
Prt 0.85;
value uniform 0;
}
GVSHROUD
{
type alphatWallFunction;
Prt 0.85;
value uniform 0;
}
RUINLET
{
type ggi;
value uniform 0;
}
RUOUTLET
{
type ggi;
value uniform 0;
}
RUCYCLIC1
{
type cyclicGgi;
value uniform 0;
}
RUCYCLIC2
{
type cyclicGgi;
value uniform 0;
}
RUBLADE
{
type alphatWallFunction;
Prt 0.85;
value uniform 0;
}
RUHUB
{
type alphatWallFunction;
Prt 0.85;
value uniform 0;
}
RUSHROUD
{
type alphatWallFunction;
Prt 0.85;
value uniform 0;
}
DTINLET
{
type ggi;
value uniform 0;
}
DTOUTLET
{
type calculated;
value uniform 0;
}
DTCYCLIC1
{
type cyclicGgi;
value uniform 0;
}
DTCYCLIC2
{
type cyclicGgi;
value uniform 0;
}
DTHUB
{
type alphatWallFunction;
Prt 0.85;
value uniform 0;
}
DTSHROUD
{
type alphatWallFunction;
Prt 0.85;
value uniform 0;
}
}
// ************************************************************************* //

View file

@ -0,0 +1,157 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | For copyright notice see file Copyright |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object epsilon;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 2 -3 0 0 0 0];
internalField uniform 14.855;
boundaryField
{
GVINLET
{
type fixedValue;
value uniform 14.855;
}
GVOUTLET
{
type ggi;
patchType ggi;
value uniform 14.855;
}
GVCYCLIC
{
type cyclic;
value uniform 14.855;
}
GVBLADE
{
type compressible::epsilonWallFunction;
refValue uniform 0;
value uniform 14.855;
Cmu 0.09;
kappa 0.41;
E 9.8;
}
GVHUB
{
type compressible::epsilonWallFunction;
refValue uniform 0;
value uniform 14.855;
Cmu 0.09;
kappa 0.41;
E 9.8;
}
GVSHROUD
{
type compressible::epsilonWallFunction;
refValue uniform 0;
value uniform 14.855;
Cmu 0.09;
kappa 0.41;
E 9.8;
}
RUINLET
{
type ggi;
patchType ggi;
value uniform 14.855;
}
RUOUTLET
{
type ggi;
patchType ggi;
value uniform 14.855;
}
RUCYCLIC1
{
type cyclicGgi;
value uniform 14.855;
}
RUCYCLIC2
{
type cyclicGgi;
value uniform 14.855;
}
RUBLADE
{
type compressible::epsilonWallFunction;
refValue uniform 0;
value uniform 14.855;
Cmu 0.09;
kappa 0.41;
E 9.8;
}
RUHUB
{
type compressible::epsilonWallFunction;
refValue uniform 0;
value uniform 14.855;
Cmu 0.09;
kappa 0.41;
E 9.8;
}
RUSHROUD
{
type compressible::epsilonWallFunction;
refValue uniform 0;
value uniform 14.855;
Cmu 0.09;
kappa 0.41;
E 9.8;
}
DTINLET
{
type ggi;
patchType ggi;
value uniform 14.855;
}
DTOUTLET
{
type zeroGradient;
}
DTCYCLIC1
{
type cyclicGgi;
value uniform 14.855;
}
DTCYCLIC2
{
type cyclicGgi;
value uniform 14.855;
}
DTHUB
{
type compressible::epsilonWallFunction;
refValue uniform 0;
value uniform 14.855;
Cmu 0.09;
kappa 0.41;
E 9.8;
}
DTSHROUD
{
type compressible::epsilonWallFunction;
refValue uniform 0;
value uniform 14.855;
Cmu 0.09;
kappa 0.41;
E 9.8;
}
}
// ************************************************************************* //

View file

@ -0,0 +1,138 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | For copyright notice see file Copyright |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "20";
object i;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 2 -2 0 0 0 0];
internalField uniform 307494;
boundaryField
{
GVINLET
{
type fixedEnthalpy;
value uniform 307494;
}
GVOUTLET
{
type ggiEnthalpyJump;
patchType ggi;
rotating false;
value uniform 307494;
}
GVCYCLIC
{
type cyclic;
value uniform 307494;
}
GVBLADE
{
type gradientEnthalpy;
gradient uniform 0;
value uniform 307000;
}
GVHUB
{
type gradientEnthalpy;
gradient uniform 0;
value uniform 307494;
}
GVSHROUD
{
type gradientEnthalpy;
gradient uniform 0;
value uniform 307494;
}
RUINLET
{
type ggiEnthalpyJump;
patchType ggi;
rotating true;
value uniform 307494;
}
RUOUTLET
{
type ggiEnthalpyJump;
patchType ggi;
rotating true;
value uniform 307494;
}
RUCYCLIC1
{
type cyclicGgi;
value uniform 307494;
}
RUCYCLIC2
{
type cyclicGgi;
value uniform 307494;
}
RUBLADE
{
type gradientEnthalpy;
gradient uniform 307494;
}
RUHUB
{
type gradientEnthalpy;
gradient uniform 307494;
}
RUSHROUD
{
type gradientEnthalpy;
gradient uniform 307494;
}
DTINLET
{
type ggiEnthalpyJump;
patchType ggi;
rotating false;
value uniform 305.66;
}
DTOUTLET
{
type gradientEnthalpy;
gradient uniform 0;
value uniform 307494;
}
DTCYCLIC1
{
type cyclicGgi;
value uniform 307494;
}
DTCYCLIC2
{
type cyclicGgi;
value uniform 307494;
}
DTHUB
{
type gradientEnthalpy;
gradient uniform 0;
value uniform 307494;
}
DTSHROUD
{
type gradientEnthalpy;
gradient uniform 0;
value uniform 307494;
}
}
// ************************************************************************* //

View file

@ -0,0 +1,121 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | For copyright notice see file Copyright |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object k;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 2 -2 0 0 0 0];
internalField uniform 0.375;
boundaryField
{
GVINLET
{
type fixedValue;
value uniform 0.375;
}
GVOUTLET
{
type ggi;
value uniform 0.375;
}
GVCYCLIC
{
type cyclic;
value uniform 0.375;
}
GVBLADE
{
type compressible::kqRWallFunction;
value uniform 0.375;
}
GVHUB
{
type compressible::kqRWallFunction;
value uniform 0.375;
}
GVSHROUD
{
type compressible::kqRWallFunction;
value uniform 0.375;
}
RUINLET
{
type ggi;
value uniform 0.375;
}
RUOUTLET
{
type ggi;
value uniform 0.375;
}
RUCYCLIC1
{
type cyclicGgi;
value uniform 0.375;
}
RUCYCLIC2
{
type cyclicGgi;
value uniform 0.375;
}
RUBLADE
{
type compressible::kqRWallFunction;
value uniform 0.375;
}
RUHUB
{
type compressible::kqRWallFunction;
value uniform 0.375;
}
RUSHROUD
{
type compressible::kqRWallFunction;
value uniform 0.375;
}
DTINLET
{
type ggi;
value uniform 0.375;
}
DTOUTLET
{
type zeroGradient;
}
DTCYCLIC1
{
type cyclicGgi;
value uniform 0.375;
}
DTCYCLIC2
{
type cyclicGgi;
value uniform 0.375;
}
DTHUB
{
type compressible::kqRWallFunction;
value uniform 0.375;
}
DTSHROUD
{
type compressible::kqRWallFunction;
value uniform 0.375;
}
}
// ************************************************************************* //

View file

@ -0,0 +1,146 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | For copyright notice see file Copyright |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object mut;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -1 -1 0 0 0 0];
internalField uniform 0;
boundaryField
{
GVINLET
{
type calculated;
value uniform 0;
}
GVOUTLET
{
type ggi;
value uniform 0;
}
GVCYCLIC
{
type cyclic;
value uniform 0;
}
GVBLADE
{
type mutWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 0;
}
GVHUB
{
type mutWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 0;
}
GVSHROUD
{
type mutWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 0;
}
RUINLET
{
type ggi;
value uniform 0;
}
RUOUTLET
{
type ggi;
value uniform 0;
}
RUCYCLIC1
{
type cyclicGgi;
value uniform 0;
}
RUCYCLIC2
{
type cyclicGgi;
value uniform 0;
}
RUBLADE
{
type mutWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 0;
}
RUHUB
{
type mutWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 0;
}
RUSHROUD
{
type mutWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 0;
}
DTINLET
{
type ggi;
value uniform 0;
}
DTOUTLET
{
type calculated;
value uniform 0;
}
DTCYCLIC1
{
type cyclicGgi;
value uniform 0;
}
DTCYCLIC2
{
type cyclicGgi;
value uniform 0;
}
DTHUB
{
type mutWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 0;
}
DTSHROUD
{
type mutWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 0;
}
}
// ************************************************************************* //

View file

@ -0,0 +1,110 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object p;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -1 -2 0 0 0 0];
internalField uniform 100000;
boundaryField
{
GVINLET
{
type zeroGradient;
}
GVOUTLET
{
type ggi;
patchType ggi;
value uniform 100000;
}
GVCYCLIC
{
type cyclic;
}
GVBLADE
{
type zeroGradient;
}
GVHUB
{
type zeroGradient;
}
GVSHROUD
{
type zeroGradient;
}
RUINLET
{
type ggi;
patchType ggi;
value uniform 100000;
}
RUOUTLET
{
type ggi;
patchType ggi;
value uniform 100000;
}
RUCYCLIC1
{
type cyclicGgi;
}
RUCYCLIC2
{
type cyclicGgi;
}
RUBLADE
{
type zeroGradient;
}
RUHUB
{
type zeroGradient;
}
RUSHROUD
{
type zeroGradient;
}
DTINLET
{
type ggi;
patchType ggi;
value uniform 100000;
}
DTOUTLET
{
type fixedValue;
value uniform 100000;
}
DTCYCLIC1
{
type cyclicGgi;
}
DTCYCLIC2
{
type cyclicGgi;
}
DTHUB
{
type zeroGradient;
}
DTSHROUD
{
type zeroGradient;
}
}
// ************************************************************************* //

View file

@ -0,0 +1,9 @@
faceSet RUCYCLIC1Zone new patchToFace RUCYCLIC1
faceSet RUCYCLIC2Zone new patchToFace RUCYCLIC2
faceSet DTCYCLIC1Zone new patchToFace DTCYCLIC1
faceSet DTCYCLIC2Zone new patchToFace DTCYCLIC2
faceSet GVOUTLETZone new patchToFace GVOUTLET
faceSet RUINLETZone new patchToFace RUINLET
faceSet RUOUTLETZone new patchToFace RUOUTLET
faceSet DTINLETZone new patchToFace DTINLET
quit

View file

@ -0,0 +1,63 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
application steadyUniversalMRFFoam;
startFrom startTime;
startTime 0;
stopAt endTime;
endTime 200;
deltaT 1;
writeControl timeStep;
writeInterval 20;
purgeWrite 0;
writeFormat ascii;
writePrecision 12;
writeCompression compressed;
timeFormat general;
timePrecision 6;
runTimeModifiable yes;
//libs ("libjumpFiniteVolume.so");
// Compute the flux value on each side of a GGI interface
functions
(
ggiCheck
{
// Type of functionObject
type ggiCheck;
phi phi;
// Where to load it from (if not already in solver)
functionObjectLibs ("libcheckFunctionObjects.so");
}
);
// ************************************************************************* //

View file

@ -0,0 +1,86 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object decomposeParDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
numberOfSubdomains 8;
//method metis;
method patchConstrained;
globalFaceZones
(
RUCYCLIC1Zone
RUINLETZone
RUCYCLIC2Zone
RUOUTLETZone
GVOUTLETZone
DTINLETZone
DTCYCLIC1Zone
DTCYCLIC2Zone
);
patchConstrainedCoeffs
{
method metis;
numberOfSubdomains 8;
patchConstraints
(
(RUINLET 1)
(GVOUTLET 1)
(RUOUTLET 2)
(DTINLET 2)
);
}
simpleCoeffs
{
n (2 2 1);
delta 0.001;
}
hierarchicalCoeffs
{
n (1 1 1);
delta 0.001;
order xyz;
}
metisCoeffs
{
processorWeights
(
1
1
1
1
1
1
1
1
);
}
manualCoeffs
{
dataFile "";
}
distributed no;
roots
(
);
// ************************************************************************* //

View file

@ -0,0 +1,107 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.2 |
| \\ / A nd | Web: http://www.openfoam.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object fvSchemes;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
ddtSchemes
{
default steadyState;
// ddt(rho,U) steadyInertial phi rho 0.25;
ddt(rho,h) steadyState;
ddt(rho,i) steadyState;
// ddt(rho,h) steadyInertial phi rho 0.25;
ddt(psi,p) steadyInertial phi rho 1;
// ddt(psi,p) steadyState;
ddt(rho,k) steadyState;
ddt(rho,epsilon) steadyState;
U steadyState;
T steadyState;
p steadyState;
}
gradSchemes
{
default Gauss linear;
}
divSchemes
{
default none;
div(phi,U) Gauss upwind;
div(phi,h) Gauss upwind;
div(phi,i) Gauss upwind;
div(phid,p) Gauss upwind;
div(phi,k) Gauss upwind;
div(phi,epsilon) Gauss upwind;
div((muEff*dev2(T(grad(U))))) Gauss linear;
div((nuEff*dev(T(grad(U))))) Gauss linear;
div(U,p) Gauss upwind;
}
laplacianSchemes
{
default Gauss linear limited 0.5;
}
interpolationSchemes
{
default linear;
}
snGradSchemes
{
default limited 0.5;
}
fluxRequired
{
default no;
p;
}
mixingPlane
{
default areaAveraging;
U areaAveraging;
k fluxAveraging;
omega areaAveraging;
}
// ************************************************************************* //

View file

@ -0,0 +1,76 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object fvSchemes;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
ddtSchemes
{
default steadyState;
}
gradSchemes
{
default Gauss linear;
grad(p) Gauss linear;
grad(U) Gauss linear;
}
divSchemes
{
default none;
div(phi,U) Gauss limitedLinearV 1;
div(phi,k) Gauss limitedLinear 1;
div(phi,i) Gauss limitedLinear 1;
div(phid,p) Gauss limitedLinear 1;
div(phi,epsilon) Gauss limitedLinear 1;
div((nuEff*dev(grad(U).T()))) Gauss linear;
div((muEff*dev2(grad(U).T()))) Gauss linear;
}
laplacianSchemes
{
default none;
laplacian(nuEff,U) Gauss linear corrected;
laplacian((rho*(1|A(U))),p) Gauss linear corrected;
laplacian(DkEff,k) Gauss linear corrected;
laplacian(DepsilonEff,epsilon) Gauss linear corrected;
laplacian(muEff,U) Gauss linear corrected;
laplacian(alphaEff,i) Gauss linear corrected;
}
interpolationSchemes
{
default linear;
interpolate(U) linear;
}
snGradSchemes
{
default corrected;
}
fluxRequired
{
default no;
p;
}
mixingPlane
{
default areaAveraging;
//U fluxAveragingAdjustMassFlow;
//p zeroGradientAreaAveragingMix;
}
// ************************************************************************* //

View file

@ -0,0 +1,117 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object fvSolution;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
solvers
{
p
{
solver GAMG;
tolerance 1e-8;
relTol 0.05;
smoother GaussSeidel;
cacheAgglomeration true;
nCellsInCoarsestLevel 20;
agglomerator faceAreaPair;
mergeLevels 1;
}
U
{
solver smoothSolver;
smoother GaussSeidel;
nSweeps 2;
tolerance 1e-7;
relTol 0.1;
}
k
{
solver smoothSolver;
smoother GaussSeidel;
nSweeps 2;
tolerance 1e-7;
relTol 0.1;
}
epsilon
{
solver smoothSolver;
smoother GaussSeidel;
nSweeps 2;
tolerance 1e-7;
relTol 0.1;
}
T
{
solver smoothSolver;
smoother GaussSeidel;
nSweeps 2;
tolerance 1e-7;
relTol 0.1;
}
i
{
solver smoothSolver;
smoother GaussSeidel;
nSweeps 2;
tolerance 1e-7;
relTol 0.1;
}
}
SIMPLE
{
nNonOrthogonalCorrectors 0;
pRefCell 0;
pRefValue 0;
}
PIMPLE
{
nOuterCorrectors 1;
nCorrectors 1;
nNonOrthogonalCorrectors 0;
compressible yes;
convergence 1e-5;
}
relaxationFactors
{
// Note: under-relaxation factors used in wave-transmissive schemes
U 0.1;
p 0.1;
h 0.1;
i 0.1;
rho 0.1;
T 0.1;
k 0.1;
epsilon 0.1;
}
fieldBounds
{
p 50 1e8;
T 100 1000;
U 1000;
epsilon 0 1e6;
}
// ************************************************************************* //

View file

@ -0,0 +1,116 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | For copyright notice see file Copyright |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object T;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 1 0 0 0];
internalField uniform 305.66;
boundaryField
{
GVINLET
{
type fixedValue;
value uniform 305.66;
}
GVOUTLET
{
type mixingPlaneEnthalpyJump;
patchType mixingPlane;
rotating false;
value uniform 305.66;
}
GVCYCLIC
{
type cyclic;
}
GVBLADE
{
type zeroGradient;
}
GVHUB
{
type zeroGradient;
}
GVSHROUD
{
type zeroGradient;
}
RUINLET
{
type mixingPlaneEnthalpyJump;
patchType mixingPlane;
rotating true;
value uniform 305.66;
}
RUOUTLET
{
type mixingPlaneEnthalpyJump;
patchType mixingPlane;
rotating true;
value uniform 305.66;
}
RUCYCLIC1
{
type cyclicGgi;
}
RUCYCLIC2
{
type cyclicGgi;
}
RUBLADE
{
type zeroGradient;
}
RUHUB
{
type zeroGradient;
}
RUSHROUD
{
type zeroGradient;
}
DTINLET
{
type mixingPlaneEnthalpyJump;
patchType mixingPlane;
rotating false;
value uniform 305.66;
}
DTOUTLET
{
type zeroGradient;
}
DTCYCLIC1
{
type cyclicGgi;
}
DTCYCLIC2
{
type cyclicGgi;
}
DTHUB
{
type zeroGradient;
}
DTSHROUD
{
type zeroGradient;
}
}
// ************************************************************************* //

View file

@ -0,0 +1,114 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volVectorField;
object U;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 -1 0 0 0 0];
internalField uniform (0.1 0.1 -1);
boundaryField
{
GVINLET
{
type fixedValue;
value uniform (0 0 -1);
}
GVOUTLET
{
type mixingPlane;
value uniform (0 0 -1);
}
GVCYCLIC
{
type cyclic;
}
GVBLADE
{
type fixedValue;
value uniform (0 0 0);
}
GVHUB
{
type fixedValue;
value uniform (0 0 0);
}
GVSHROUD
{
type fixedValue;
value uniform (0 0 0);
}
RUINLET
{
type mixingPlane;
value uniform (0 0 -1);
}
RUOUTLET
{
type mixingPlane;
value uniform (0 0 -1);
}
RUCYCLIC1
{
type cyclicGgi;
}
RUCYCLIC2
{
type cyclicGgi;
}
RUBLADE
{
type fixedValue;
value uniform (0 0 0);
}
RUHUB
{
type fixedValue;
value uniform (0 0 0);
}
RUSHROUD
{
type fixedValue;
value uniform (0 0 0);
}
DTINLET
{
type mixingPlane;
value uniform (0 0 -1);
}
DTOUTLET
{
type zeroGradient;
}
DTCYCLIC1
{
type cyclicGgi;
}
DTCYCLIC2
{
type cyclicGgi;
}
DTHUB
{
type fixedValue;
value uniform (0 0 0);
}
DTSHROUD
{
type fixedValue;
value uniform (0 0 0);
}
}
// ************************************************************************* //

View file

@ -0,0 +1,130 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | For copyright notice see file Copyright |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object alphat;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -1 -1 0 0 0 0];
internalField uniform 0;
boundaryField
{
GVINLET
{
type calculated;
value uniform 0;
}
GVOUTLET
{
type mixingPlane;
value uniform 0;
}
GVCYCLIC
{
type cyclic;
value uniform 0;
}
GVBLADE
{
type alphatWallFunction;
Prt 0.85;
value uniform 0;
}
GVHUB
{
type alphatWallFunction;
Prt 0.85;
value uniform 0;
}
GVSHROUD
{
type alphatWallFunction;
Prt 0.85;
value uniform 0;
}
RUINLET
{
type mixingPlane;
value uniform 0;
}
RUOUTLET
{
type mixingPlane;
value uniform 0;
}
RUCYCLIC1
{
type cyclicGgi;
value uniform 0;
}
RUCYCLIC2
{
type cyclicGgi;
value uniform 0;
}
RUBLADE
{
type alphatWallFunction;
Prt 0.85;
value uniform 0;
}
RUHUB
{
type alphatWallFunction;
Prt 0.85;
value uniform 0;
}
RUSHROUD
{
type alphatWallFunction;
Prt 0.85;
value uniform 0;
}
DTINLET
{
type mixingPlane;
value uniform 0;
}
DTOUTLET
{
type calculated;
value uniform 0;
}
DTCYCLIC1
{
type cyclicGgi;
value uniform 0;
}
DTCYCLIC2
{
type cyclicGgi;
value uniform 0;
}
DTHUB
{
type alphatWallFunction;
Prt 0.85;
value uniform 0;
}
DTSHROUD
{
type alphatWallFunction;
Prt 0.85;
value uniform 0;
}
}
// ************************************************************************* //

View file

@ -0,0 +1,153 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | For copyright notice see file Copyright |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object epsilon;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 2 -3 0 0 0 0];
internalField uniform 14.855;
boundaryField
{
GVINLET
{
type fixedValue;
value uniform 14.855;
}
GVOUTLET
{
type mixingPlane;
value uniform 14.855;
}
GVCYCLIC
{
type cyclic;
value uniform 14.855;
}
GVBLADE
{
type compressible::epsilonWallFunction;
refValue uniform 0;
value uniform 14.855;
Cmu 0.09;
kappa 0.41;
E 9.8;
}
GVHUB
{
type compressible::epsilonWallFunction;
refValue uniform 0;
value uniform 14.855;
Cmu 0.09;
kappa 0.41;
E 9.8;
}
GVSHROUD
{
type compressible::epsilonWallFunction;
refValue uniform 0;
value uniform 14.855;
Cmu 0.09;
kappa 0.41;
E 9.8;
}
RUINLET
{
type mixingPlane;
value uniform 14.855;
}
RUOUTLET
{
type mixingPlane;
value uniform 14.855;
}
RUCYCLIC1
{
type cyclicGgi;
value uniform 14.855;
}
RUCYCLIC2
{
type cyclicGgi;
value uniform 14.855;
}
RUBLADE
{
type compressible::epsilonWallFunction;
refValue uniform 0;
value uniform 14.855;
Cmu 0.09;
kappa 0.41;
E 9.8;
}
RUHUB
{
type compressible::epsilonWallFunction;
refValue uniform 0;
value uniform 14.855;
Cmu 0.09;
kappa 0.41;
E 9.8;
}
RUSHROUD
{
type compressible::epsilonWallFunction;
refValue uniform 0;
value uniform 14.855;
Cmu 0.09;
kappa 0.41;
E 9.8;
}
DTINLET
{
type mixingPlane;
value uniform 14.855;
}
DTOUTLET
{
type zeroGradient;
}
DTCYCLIC1
{
type cyclicGgi;
value uniform 14.855;
}
DTCYCLIC2
{
type cyclicGgi;
value uniform 14.855;
}
DTHUB
{
type compressible::epsilonWallFunction;
refValue uniform 0;
value uniform 14.855;
Cmu 0.09;
kappa 0.41;
E 9.8;
}
DTSHROUD
{
type compressible::epsilonWallFunction;
refValue uniform 0;
value uniform 14.855;
Cmu 0.09;
kappa 0.41;
E 9.8;
}
}
// ************************************************************************* //

View file

@ -0,0 +1,138 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | For copyright notice see file Copyright |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "20";
object i;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 2 -2 0 0 0 0];
internalField uniform 307494;
boundaryField
{
GVINLET
{
type fixedEnthalpy;
value uniform 307494;
}
GVOUTLET
{
type mixingPlaneEnthalpyJump;
patchType mixingPlane;
rotating false;
value uniform 307494;
}
GVCYCLIC
{
type cyclic;
value uniform 307494;
}
GVBLADE
{
type gradientEnthalpy;
gradient uniform 0;
value uniform 307000;
}
GVHUB
{
type gradientEnthalpy;
gradient uniform 0;
value uniform 307494;
}
GVSHROUD
{
type gradientEnthalpy;
gradient uniform 0;
value uniform 307494;
}
RUINLET
{
type mixingPlaneEnthalpyJump;
patchType mixingPlane;
rotating true;
value uniform 307494;
}
RUOUTLET
{
type mixingPlaneEnthalpyJump;
patchType mixingPlane;
rotating true;
value uniform 307494;
}
RUCYCLIC1
{
type cyclicGgi;
value uniform 307494;
}
RUCYCLIC2
{
type cyclicGgi;
value uniform 307494;
}
RUBLADE
{
type gradientEnthalpy;
gradient uniform 307494;
}
RUHUB
{
type gradientEnthalpy;
gradient uniform 307494;
}
RUSHROUD
{
type gradientEnthalpy;
gradient uniform 307494;
}
DTINLET
{
type mixingPlaneEnthalpyJump;
patchType mixingPlane;
rotating false;
value uniform 305.66;
}
DTOUTLET
{
type gradientEnthalpy;
gradient uniform 0;
value uniform 307494;
}
DTCYCLIC1
{
type cyclicGgi;
value uniform 307494;
}
DTCYCLIC2
{
type cyclicGgi;
value uniform 307494;
}
DTHUB
{
type gradientEnthalpy;
gradient uniform 0;
value uniform 307494;
}
DTSHROUD
{
type gradientEnthalpy;
gradient uniform 0;
value uniform 307494;
}
}
// ************************************************************************* //

View file

@ -0,0 +1,121 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | For copyright notice see file Copyright |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object k;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 2 -2 0 0 0 0];
internalField uniform 0.375;
boundaryField
{
GVINLET
{
type fixedValue;
value uniform 0.375;
}
GVOUTLET
{
type mixingPlane;
value uniform 0.375;
}
GVCYCLIC
{
type cyclic;
value uniform 0.375;
}
GVBLADE
{
type compressible::kqRWallFunction;
value uniform 0.375;
}
GVHUB
{
type compressible::kqRWallFunction;
value uniform 0.375;
}
GVSHROUD
{
type compressible::kqRWallFunction;
value uniform 0.375;
}
RUINLET
{
type mixingPlane;
value uniform 0.375;
}
RUOUTLET
{
type mixingPlane;
value uniform 0.375;
}
RUCYCLIC1
{
type cyclicGgi;
value uniform 0.375;
}
RUCYCLIC2
{
type cyclicGgi;
value uniform 0.375;
}
RUBLADE
{
type compressible::kqRWallFunction;
value uniform 0.375;
}
RUHUB
{
type compressible::kqRWallFunction;
value uniform 0.375;
}
RUSHROUD
{
type compressible::kqRWallFunction;
value uniform 0.375;
}
DTINLET
{
type mixingPlane;
value uniform 0.375;
}
DTOUTLET
{
type zeroGradient;
}
DTCYCLIC1
{
type cyclicGgi;
value uniform 0.375;
}
DTCYCLIC2
{
type cyclicGgi;
value uniform 0.375;
}
DTHUB
{
type compressible::kqRWallFunction;
value uniform 0.375;
}
DTSHROUD
{
type compressible::kqRWallFunction;
value uniform 0.375;
}
}
// ************************************************************************* //

View file

@ -0,0 +1,146 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | For copyright notice see file Copyright |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object mut;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -1 -1 0 0 0 0];
internalField uniform 0;
boundaryField
{
GVINLET
{
type calculated;
value uniform 0;
}
GVOUTLET
{
type mixingPlane;
value uniform 0;
}
GVCYCLIC
{
type cyclic;
value uniform 0;
}
GVBLADE
{
type mutWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 0;
}
GVHUB
{
type mutWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 0;
}
GVSHROUD
{
type mutWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 0;
}
RUINLET
{
type mixingPlane;
value uniform 0;
}
RUOUTLET
{
type mixingPlane;
value uniform 0;
}
RUCYCLIC1
{
type cyclicGgi;
value uniform 0;
}
RUCYCLIC2
{
type cyclicGgi;
value uniform 0;
}
RUBLADE
{
type mutWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 0;
}
RUHUB
{
type mutWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 0;
}
RUSHROUD
{
type mutWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 0;
}
DTINLET
{
type mixingPlane;
value uniform 0;
}
DTOUTLET
{
type calculated;
value uniform 0;
}
DTCYCLIC1
{
type cyclicGgi;
value uniform 0;
}
DTCYCLIC2
{
type cyclicGgi;
value uniform 0;
}
DTHUB
{
type mutWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 0;
}
DTSHROUD
{
type mutWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 0;
}
}
// ************************************************************************* //

View file

@ -0,0 +1,106 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object p;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -1 -2 0 0 0 0];
internalField uniform 100000;
boundaryField
{
GVINLET
{
type zeroGradient;
}
GVOUTLET
{
type mixingPlane;
value uniform 100000;
}
GVCYCLIC
{
type cyclic;
}
GVBLADE
{
type zeroGradient;
}
GVHUB
{
type zeroGradient;
}
GVSHROUD
{
type zeroGradient;
}
RUINLET
{
type mixingPlane;
value uniform 100000;
}
RUOUTLET
{
type mixingPlane;
value uniform 100000;
}
RUCYCLIC1
{
type cyclicGgi;
}
RUCYCLIC2
{
type cyclicGgi;
}
RUBLADE
{
type zeroGradient;
}
RUHUB
{
type zeroGradient;
}
RUSHROUD
{
type zeroGradient;
}
DTINLET
{
type mixingPlane;
value uniform 100000;
}
DTOUTLET
{
type fixedValue;
value uniform 100000;
}
DTCYCLIC1
{
type cyclicGgi;
}
DTCYCLIC2
{
type cyclicGgi;
}
DTHUB
{
type zeroGradient;
}
DTSHROUD
{
type zeroGradient;
}
}
// ************************************************************************* //

View file

@ -0,0 +1,8 @@
#!/bin/sh
# Source tutorial clean functions
. $WM_PROJECT_DIR/bin/tools/CleanFunctions
cleanCase
\rm -rf 0
\cp -r save 0

View file

@ -0,0 +1,20 @@
#!/bin/sh
# Source tutorial run functions
. $WM_PROJECT_DIR/bin/tools/RunFunctions
application=steadyUniversalMRFFoam
#Create the mesh:
m4 < constant/polyMesh/blockMeshDict.m4 > constant/polyMesh/blockMeshDict
runApplication blockMesh
transformPoints -scale "(1 20 1)"
transformPoints -cylToCart "((0 0 0) (0 0 1) (1 0 0))"
# Set 0-directory and create GGI set:
\rm -rf 0
\cp -r save 0
runApplication setSet -batch setBatchMixingPlane
runApplication setsToZones -noFlipMap
runApplication $application

View file

@ -0,0 +1,31 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object MRFZones;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
1
(
rotor
{
//patches (rotor);
// Fixed patches (by default they 'move' with the MRF zone)
nonRotatingPatches ( RUSHROUD );
origin origin [0 1 0 0 0 0 0] (0 0 0);
axis axis [0 0 0 0 0 0 0] (0 0 1);
omega omega [0 0 -1 0 0 0 0] -10;
}
)
// ************************************************************************* //

View file

@ -0,0 +1,24 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object RASProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
RASModel RNGkEpsilon;
turbulence on;
printCoeffs on;
// ************************************************************************* //

View file

@ -0,0 +1,576 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object blockMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// General macros to create 2D/extruded-2D meshes
//define(calc, [esyscmd(echo $1 | bc | tr -d \\n)])
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
convertToMeters 1;
// HUB AND SHROUD RADIUS
// Hub radius (m)
// Shroud radius (m)
// GUIDE VANE REGION GEOMETRY AND MESH PROPERTIES
// Guide vane inlet axial length (m)
// Guide vane axial length (m)
// Guide vane outlet axial length (m)
// Number of guide vanes per 360 degrees (integer!)
// Number of cells in radial direction at guide vane
// Number of cells in tangential direction between guide vanes
// Number of cells in axial direction at guide vane inlet
// Number of cells in axial direction between guide vanes
// Number of cells in axial direction at guide vane outlet
// RUNNER REGION GEOMETRY AND MESH PROPERTIES
// Runner inlet axial length (m)
// Runner axial length (m)
// Runner outlet axial length (m)
// Number of runner blades per 360 degrees (integer!)
// Number of cells in radial direction in runner
// Number of cells in tangential direction between runner blades
// Number of cells in axial direction at runner inlet
// Number of cells in axial direction between runner blades
// Number of cells in axial direction at runner outlet
// DRAFT TUBE REGION GEOMETRY AND MESH PROPERTIES
// "Draft tube" axial length (m)
// Number of sections per 360 degrees (integer!)
// Number of cells in radial direction in "draft tube"
// Number of cells in tangential direction in "draft tube"
// Number of cells in axial direction in "draft tube"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// TANGENTIAL PITCHES (RADIANS)
// Guide vane region
// Runner region
// Draft tube region
// TANGENTIAL SHIFTS BETWEEN AXIAL LEVELS (BOTTOM-UP)
// Tangential shift from level DT0 to DT1
// Runner region
// Tangential shift from level RU0 to RU1
// Tangential shift from level RU1 to RU2
// Tangential shift from level RU2 to RU3
// Guide vane region
// Tangential shift from level GV0 to GV1
// Tangential shift from level GV1 to GV2
// Tangential shift from level GV2 to GV3
// AXIAL/TANGENTIAL BASE POINTS FOR EACH LEVEL (BOTTOM-UP):
// (CENTER OF RUNNER SET TO THETA=0, Z=0)
// Draft tube:
//Center runner
// Straight draft tube!
//Center runner
// Runner:
//Center runner
//Center runner
// Guide vane:
//Center runner
//Center runner
vertices //(radial [m], tangential [radians], axial [m])
(
//Guide vane hub:
(0.05 -0.0691150383 0.07) // Vertex GV0lb = 0
(0.05 -0.00628318530000001 0.07) // Vertex GV0rb = 1
(0.05 -0.062831853 0.09) // Vertex GV1lb = 2
(0.05 0 0.09) // Vertex GV1rb = 3
(0.05 -0.0314159265 0.19) // Vertex GV2lb = 4
(0.05 0.0314159265 0.19) // Vertex GV2rb = 5
(0.05 -0.0314159265 0.29) // Vertex GV3lb = 6
(0.05 0.0314159265 0.29) // Vertex GV3rb = 7
//Guide vane shroud:
(0.1 -0.0691150383 0.07) // Vertex GV0lt = 8
(0.1 -0.00628318530000001 0.07) // Vertex GV0rt = 9
(0.1 -0.062831853 0.09) // Vertex GV1lt = 10
(0.1 0 0.09) // Vertex GV1rt = 11
(0.1 -0.0314159265 0.19) // Vertex GV2lt = 12
(0.1 0.0314159265 0.19) // Vertex GV2rt = 13
(0.1 -0.0314159265 0.29) // Vertex GV3lt = 14
(0.1 0.0314159265 0.29) // Vertex GV3rt = 15
//Runner hub:
(0.05 -0.0062831853 -0.07) // Vertex RU0lb = 16
(0.05 0.0565486677 -0.07) // Vertex RU0rb = 17
(0.05 -0.0125663706 -0.05) // Vertex RU1lb = 18
(0.05 0.0502654824 -0.05) // Vertex RU1rb = 19
(0.05 -0.062831853 0.05) // Vertex RU2lb = 20
(0.05 0 0.05) // Vertex RU2rb = 21
(0.05 -0.0691150383 0.07) // Vertex RU3lb = 22
(0.05 -0.00628318530000001 0.07) // Vertex RU3rb = 23
//Runner shroud:
(0.1 -0.0062831853 -0.07) // Vertex RU0lt = 24
(0.1 0.0565486677 -0.07) // Vertex RU0rt = 25
(0.1 -0.0125663706 -0.05) // Vertex RU1lt = 26
(0.1 0.0502654824 -0.05) // Vertex RU1rt = 27
(0.1 -0.062831853 0.05) // Vertex RU2lt = 28
(0.1 0 0.05) // Vertex RU2rt = 29
(0.1 -0.0691150383 0.07) // Vertex RU3lt = 30
(0.1 -0.00628318530000001 0.07) // Vertex RU3rt = 31
//Draft tube hub:
(0.05 -0.0062831853 -0.14) // Vertex DT0lb = 32
(0.05 0.0565486677 -0.14) // Vertex DT0rb = 33
(0.05 -0.0062831853 -0.07) // Vertex DT1lb = 34
(0.05 0.0565486677 -0.07) // Vertex DT1rb = 35
//Draft tube shroud:
(0.1 -0.0062831853 -0.14) // Vertex DT0lt = 36
(0.1 0.0565486677 -0.14) // Vertex DT0rt = 37
(0.1 -0.0062831853 -0.07) // Vertex DT1lt = 38
(0.1 0.0565486677 -0.07) // Vertex DT1rt = 39
);
blocks
(
//Guide vane:
hex (0 1 3 2 8 9 11 10)
(10 2 10)
simpleGrading (1 1 1)
hex (2 3 5 4 10 11 13 12)
(10 10 10)
simpleGrading (1 1 1)
hex (4 5 7 6 12 13 15 14)
(10 10 10)
simpleGrading (1 1 1)
//Runner:
hex (16 17 19 18 24 25 27 26)
rotor
(10 2 10)
simpleGrading (1 1 1)
hex (18 19 21 20 26 27 29 28)
rotor
(10 10 10)
simpleGrading (1 1 1)
hex (20 21 23 22 28 29 31 30)
rotor
(10 2 10)
simpleGrading (1 1 1)
//Draft tube:
hex (32 33 35 34 36 37 39 38)
(10 7 10)
simpleGrading (1 1 1)
);
edges // Inappropriate with arc due to coordinate conversion
(
//Runner
spline 26 28
(
(0.1 -0.04523893416 0)
)
spline 18 20
(
(0.05 -0.04523893416 0)
)
spline 27 29
(
(0.1 0.0125663706 0)
)
spline 19 21
(
(0.05 0.0125663706 0)
)
//Guide vane
spline 10 12
(
(0.1 -0.039269908125 0.14)
)
spline 2 4
(
(0.05 -0.039269908125 0.14)
)
spline 11 13
(
(0.1 0.020420352225 0.14)
)
spline 3 5
(
(0.05 0.020420352225 0.14)
)
);
boundary
(
GVINLET
{
type patch;
faces
(
(7 6 14 15)
);
}
GVOUTLET
{
type mixingPlane;
shadowPatch RUINLET;
zone GVOUTLETZone;
coordinateSystem
{
type cylindrical;
name mixingCS;
origin (0 0 0);
axis (0 0 1);
direction (1 0 0);
inDegrees false; //Use radians
//Equivalent axis/direction definition:
//e3 (0 0 1);
//e1 (1 0 0);
}
ribbonPatch
{
sweepAxis Theta;
stackAxis R;
discretisation bothPatches;
}
faces
(
(0 1 9 8)
);
}
GVCYCLIC
{
type cyclic;
featureCos 0.9;
//MUST specify transformation since cyclic is not flat.
//Set global debugSwitch cyclic to 1 to check that it is correct!
transform rotational;
rotationAxis (0 0 1);
rotationCentre (0 0 0);
rotationAngle -72; //Degrees from second half to first half
//Face numbering must be same on both halfs/sides. The numbering
//is determined by the block definition, not by the faces list
//below. Just make sure that each face definition is according
//to the rule "clockwise when looking from inside the block".
faces
(
//First half, left side:
(2 0 8 10)
(6 4 12 14)
//Second half, right side:
(1 3 11 9)
(5 7 15 13)
);
}
GVBLADE
{
type wall;
faces
(
(4 2 10 12)
(3 5 13 11)
);
}
GVHUB
{
type wall;
faces
(
(0 2 3 1)
(2 4 5 3)
(4 6 7 5)
);
}
GVSHROUD
{
type wall;
faces
(
(8 9 11 10)
(10 11 13 12)
(12 13 15 14)
);
}
RUINLET
{
type mixingPlane;
shadowPatch GVOUTLET;
zone RUINLETZone;
coordinateSystem
{
type cylindrical;
name mixingCS;
origin (0 0 0);
axis (0 0 1);
direction (1 0 0);
inDegrees false; //Use radians
//Equivalent axis/direction definition:
//e3 (0 0 1);
//e1 (1 0 0);
}
ribbonPatch
{
sweepAxis Theta;
stackAxis R;
discretisation bothPatches;
}
faces
(
(23 22 30 31)
);
}
RUOUTLET
{
type mixingPlane;
shadowPatch DTINLET;
zone RUOUTLETZone;
coordinateSystem
{
type cylindrical;
name mixingCS;
origin (0 0 0);
axis (0 0 1);
direction (1 0 0);
inDegrees false; //Use radians
//Equivalent axis/direction definition:
//e3 (0 0 1);
//e1 (1 0 0);
}
ribbonPatch
{
sweepAxis Theta;
stackAxis R;
discretisation bothPatches;
}
faces
(
(16 17 25 24)
);
}
RUCYCLIC1
{
type cyclicGgi;
shadowPatch RUCYCLIC2;
zone RUCYCLIC1Zone;
bridgeOverlap false;
rotationAxis (0 0 1);
rotationAngle 72;
separationOffset (0 0 0);
faces
(
(18 16 24 26)
(22 20 28 30)
);
}
RUCYCLIC2
{
type cyclicGgi;
shadowPatch RUCYCLIC1;
zone RUCYCLIC2Zone;
bridgeOverlap false;
rotationAxis (0 0 1);
rotationAngle -72;
separationOffset (0 0 0);
faces
(
(17 19 27 25)
(21 23 31 29)
);
}
RUBLADE
{
type wall;
faces
(
(20 18 26 28)
(19 21 29 27)
);
}
RUHUB
{
type wall;
faces
(
(16 18 19 17)
(18 20 21 19)
(20 22 23 21)
);
}
RUSHROUD
{
type wall;
faces
(
(24 25 27 26)
(26 27 29 28)
(28 29 31 30)
);
}
DTINLET
{
type mixingPlane;
shadowPatch RUOUTLET;
zone DTINLETZone;
coordinateSystem
{
type cylindrical;
name mixingCS;
origin (0 0 0);
axis (0 0 1);
direction (1 0 0);
inDegrees false; //Use radians
//Equivalent axis/direction definition:
//e3 (0 0 1);
//e1 (1 0 0);
}
ribbonPatch
{
sweepAxis Theta;
stackAxis R;
discretisation bothPatches;
}
faces
(
(35 34 38 39)
);
}
DTOUTLET
{
type patch;
faces
(
(32 33 37 36)
);
}
DTCYCLIC1
{
type cyclicGgi;
shadowPatch DTCYCLIC2;
zone DTCYCLIC1Zone;
bridgeOverlap false;
rotationAxis (0 0 1);
rotationAngle 72;
separationOffset (0 0 0);
faces
(
(34 32 36 38)
);
}
DTCYCLIC2
{
type cyclicGgi;
shadowPatch DTCYCLIC1;
zone DTCYCLIC2Zone;
bridgeOverlap false;
rotationAxis (0 0 1);
rotationAngle -72;
separationOffset (0 0 0);
faces
(
(33 35 39 37)
);
}
DTHUB
{
type wall;
faces
(
(32 34 35 33)
);
}
DTSHROUD
{
type wall;
faces
(
(36 37 39 38)
);
}
);
// ************************************************************************* //

View file

@ -0,0 +1,576 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object blockMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// General macros to create 2D/extruded-2D meshes
changecom(//)changequote([,])
define(calc, [esyscmd(perl -e 'printf ($1)')])
//define(calc, [esyscmd(echo $1 | bc | tr -d \\n)])
define(VCOUNT, 0)
define(vlabel, [[// ]Vertex $1 = VCOUNT define($1, VCOUNT)define([VCOUNT], incr(VCOUNT))])
define(pi, calc(3.14159265/20))
define(hex2D, hex ($1b $2b $3b $4b $1t $2t $3t $4t))
define(quad2D, ($1b $2b $2t $1t))
define(frontQuad, ($1t $2t $3t $4t))
define(backQuad, ($1b $4b $3b $2b))
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
convertToMeters 1;
// HUB AND SHROUD RADIUS
// Hub radius (m)
define(hr, 0.05)
// Shroud radius (m)
define(sr, 0.1)
// GUIDE VANE REGION GEOMETRY AND MESH PROPERTIES
// Guide vane inlet axial length (m)
define(GVial, 0.1)
// Guide vane axial length (m)
define(GVbal, 0.1)
// Guide vane outlet axial length (m)
define(GVoal, 0.02)
// Number of guide vanes per 360 degrees (integer!)
define(GVnb, 5)
// Number of cells in radial direction at guide vane
define(GVrc, 10)
// Number of cells in tangential direction between guide vanes
define(GVtc, 10)
// Number of cells in axial direction at guide vane inlet
define(GViac, 10)
// Number of cells in axial direction between guide vanes
define(GVbac, 10)
// Number of cells in axial direction at guide vane outlet
define(GVoac, 2)
// RUNNER REGION GEOMETRY AND MESH PROPERTIES
// Runner inlet axial length (m)
define(RUial, 0.02)
// Runner axial length (m)
define(RUal, 0.1)
// Runner outlet axial length (m)
define(RUoal, 0.02)
// Number of runner blades per 360 degrees (integer!)
define(RUnb, 5)
// Number of cells in radial direction in runner
define(RUrc, 10)
// Number of cells in tangential direction between runner blades
define(RUtc, 10)
// Number of cells in axial direction at runner inlet
define(RUiac, 2)
// Number of cells in axial direction between runner blades
define(RUbac, 10)
// Number of cells in axial direction at runner outlet
define(RUoac, 2)
// DRAFT TUBE REGION GEOMETRY AND MESH PROPERTIES
// "Draft tube" axial length (m)
define(DTal, 0.07)
// Number of sections per 360 degrees (integer!)
define(DTns, 5)
// Number of cells in radial direction in "draft tube"
define(DTrc, 10)
// Number of cells in tangential direction in "draft tube"
define(DTtc, 10)
// Number of cells in axial direction in "draft tube"
define(DTac, 7)
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// TANGENTIAL PITCHES (RADIANS)
// Guide vane region
define(GVp, calc(2*pi/GVnb))
// Runner region
define(RUp, calc(2*pi/RUnb))
// Draft tube region
define(DTp, calc(2*pi/DTns))
// TANGENTIAL SHIFTS BETWEEN AXIAL LEVELS (BOTTOM-UP)
// Tangential shift from level DT0 to DT1
define(DTts01, calc(5*DTp))
// Runner region
// Tangential shift from level RU0 to RU1
define(RUts01, calc(-1/10*RUp))
// Tangential shift from level RU1 to RU2
define(RUts12, calc(-4/5*RUp))
// Tangential shift from level RU2 to RU3
define(RUts23, calc(-1/10*RUp))
// Guide vane region
// Tangential shift from level GV0 to GV1
define(GVts01, calc(1/10*GVp))
// Tangential shift from level GV1 to GV2
define(GVts12, calc(1/2*GVp))
// Tangential shift from level GV2 to GV3
define(GVts23, calc(0*GVp))
// AXIAL/TANGENTIAL BASE POINTS FOR EACH LEVEL (BOTTOM-UP):
// (CENTER OF RUNNER SET TO THETA=0, Z=0)
// Draft tube:
define(DTa0, calc(-RUoal-0.5*RUal-DTal)) //Center runner
define(DTt0, calc(-0.5*RUp-(0.5*RUts12)-(0*DTts01))) // Straight draft tube!
define(DTt1, calc(-0.5*RUp-(0.5*RUts12))) //Center runner
// Runner:
define(RUa0, calc(-RUoal-0.5*RUal)) //Center runner
define(RUt0, calc(-0.5*RUp-(0.5*RUts12))) //Center runner
define(RUt1, calc(RUt0+RUts01))
define(RUt2, calc(RUt1+RUts12))
define(RUt3, calc(RUt2+RUts23))
// Guide vane:
define(GVa0, calc(0.5*RUal+RUial)) //Center runner
define(GVt0, calc(-0.5*RUp-(0.5*RUts12)+RUts01+RUts12+RUts23)) //Center runner
define(GVt1, calc(GVt0+GVts01))
define(GVt2, calc(GVt1+GVts12))
define(GVt3, calc(GVt2+GVts23))
vertices //(radial [m], tangential [radians], axial [m])
(
//Guide vane hub:
(hr GVt0 GVa0) vlabel(GV0lb)
(hr calc(GVt0+GVp) GVa0) vlabel(GV0rb)
(hr GVt1 calc(GVa0+GVoal)) vlabel(GV1lb)
(hr calc(GVt1+GVp) calc(GVa0+GVoal)) vlabel(GV1rb)
(hr GVt2 calc(GVa0+GVoal+GVbal)) vlabel(GV2lb)
(hr calc(GVt2+GVp) calc(GVa0+GVoal+GVbal)) vlabel(GV2rb)
(hr GVt3 calc(GVa0+GVoal+GVbal+GVial)) vlabel(GV3lb)
(hr calc(GVt3+GVp) calc(GVa0+GVoal+GVbal+GVial)) vlabel(GV3rb)
//Guide vane shroud:
(sr GVt0 GVa0) vlabel(GV0lt)
(sr calc(GVt0+GVp) GVa0) vlabel(GV0rt)
(sr GVt1 calc(GVa0+GVoal)) vlabel(GV1lt)
(sr calc(GVt1+GVp) calc(GVa0+GVoal)) vlabel(GV1rt)
(sr GVt2 calc(GVa0+GVoal+GVbal)) vlabel(GV2lt)
(sr calc(GVt2+GVp) calc(GVa0+GVoal+GVbal)) vlabel(GV2rt)
(sr GVt3 calc(GVa0+GVoal+GVbal+GVial)) vlabel(GV3lt)
(sr calc(GVt3+GVp) calc(GVa0+GVoal+GVbal+GVial)) vlabel(GV3rt)
//Runner hub:
(hr RUt0 RUa0) vlabel(RU0lb)
(hr calc(RUt0+RUp) RUa0) vlabel(RU0rb)
(hr RUt1 calc(RUa0+RUoal)) vlabel(RU1lb)
(hr calc(RUt1+RUp) calc(RUa0+RUoal)) vlabel(RU1rb)
(hr RUt2 calc(RUa0+RUoal+RUal)) vlabel(RU2lb)
(hr calc(RUt2+RUp) calc(RUa0+RUoal+RUal)) vlabel(RU2rb)
(hr RUt3 calc(RUa0+RUoal+RUal+RUial)) vlabel(RU3lb)
(hr calc(RUt3+RUp) calc(RUa0+RUoal+RUal+RUial)) vlabel(RU3rb)
//Runner shroud:
(sr RUt0 RUa0) vlabel(RU0lt)
(sr calc(RUt0+RUp) RUa0) vlabel(RU0rt)
(sr RUt1 calc(RUa0+RUoal)) vlabel(RU1lt)
(sr calc(RUt1+RUp) calc(RUa0+RUoal)) vlabel(RU1rt)
(sr RUt2 calc(RUa0+RUoal+RUal)) vlabel(RU2lt)
(sr calc(RUt2+RUp) calc(RUa0+RUoal+RUal)) vlabel(RU2rt)
(sr RUt3 calc(RUa0+RUoal+RUal+RUial)) vlabel(RU3lt)
(sr calc(RUt3+RUp) calc(RUa0+RUoal+RUal+RUial)) vlabel(RU3rt)
//Draft tube hub:
(hr DTt0 DTa0) vlabel(DT0lb)
(hr calc(DTt0+DTp) DTa0) vlabel(DT0rb)
(hr DTt1 calc(DTa0+DTal)) vlabel(DT1lb)
(hr calc(DTt1+DTp) calc(DTa0+DTal)) vlabel(DT1rb)
//Draft tube shroud:
(sr DTt0 DTa0) vlabel(DT0lt)
(sr calc(DTt0+DTp) DTa0) vlabel(DT0rt)
(sr DTt1 calc(DTa0+DTal)) vlabel(DT1lt)
(sr calc(DTt1+DTp) calc(DTa0+DTal)) vlabel(DT1rt)
);
blocks
(
//Guide vane:
hex2D(GV0l, GV0r, GV1r, GV1l)
(GVtc GVoac GVrc)
simpleGrading (1 1 1)
hex2D(GV1l, GV1r, GV2r, GV2l)
(GVtc GVbac GVrc)
simpleGrading (1 1 1)
hex2D(GV2l, GV2r, GV3r, GV3l)
(GVtc GViac GVrc)
simpleGrading (1 1 1)
//Runner:
hex2D(RU0l, RU0r, RU1r, RU1l)
rotor
(RUtc RUoac RUrc)
simpleGrading (1 1 1)
hex2D(RU1l, RU1r, RU2r, RU2l)
rotor
(RUtc RUbac RUrc)
simpleGrading (1 1 1)
hex2D(RU2l, RU2r, RU3r, RU3l)
rotor
(RUtc RUiac RUrc)
simpleGrading (1 1 1)
//Draft tube:
hex2D(DT0l, DT0r, DT1r, DT1l)
(DTtc DTac DTrc)
simpleGrading (1 1 1)
);
edges // Inappropriate with arc due to coordinate conversion
(
//Runner
spline RU1lt RU2lt
(
(sr calc(RUt1+0.65*(RUt2-(RUt1))) calc(RUa0+RUoal+0.5*RUal))
)
spline RU1lb RU2lb
(
(hr calc(RUt1+0.65*(RUt2-(RUt1))) calc(RUa0+RUoal+0.5*RUal))
)
spline RU1rt RU2rt
(
(sr calc(RUt1+RUp+0.75*(RUt2-(RUt1))) calc(RUa0+RUoal+0.5*RUal))
)
spline RU1rb RU2rb
(
(hr calc(RUt1+RUp+0.75*(RUt2-(RUt1))) calc(RUa0+RUoal+0.5*RUal))
)
//Guide vane
spline GV1lt GV2lt
(
(sr calc(GVt1+0.75*(GVt2-(GVt1))) calc(GVa0+GVoal+0.5*GVbal))
)
spline GV1lb GV2lb
(
(hr calc(GVt1+0.75*(GVt2-(GVt1))) calc(GVa0+GVoal+0.5*GVbal))
)
spline GV1rt GV2rt
(
(sr calc(GVt1+GVp+0.65*(GVt2-(GVt1))) calc(GVa0+GVoal+0.5*GVbal))
)
spline GV1rb GV2rb
(
(hr calc(GVt1+GVp+0.65*(GVt2-(GVt1))) calc(GVa0+GVoal+0.5*GVbal))
)
);
boundary
(
GVINLET
{
type patch;
faces
(
quad2D(GV3r, GV3l)
);
}
GVOUTLET
{
type mixingPlane;
shadowPatch RUINLET;
zone GVOUTLETZone;
coordinateSystem
{
type cylindrical;
name mixingCS;
origin (0 0 0);
axis (0 0 1);
direction (1 0 0);
inDegrees false; //Use radians
//Equivalent axis/direction definition:
//e3 (0 0 1);
//e1 (1 0 0);
}
ribbonPatch
{
sweepAxis Theta;
stackAxis R;
discretisation bothPatches;
}
faces
(
quad2D(GV0l, GV0r)
);
}
GVCYCLIC
{
type cyclic;
featureCos 0.9;
//MUST specify transformation since cyclic is not flat.
//Set global debugSwitch cyclic to 1 to check that it is correct!
transform rotational;
rotationAxis (0 0 1);
rotationCentre (0 0 0);
rotationAngle -72; //Degrees from second half to first half
//Face numbering must be same on both halfs/sides. The numbering
//is determined by the block definition, not by the faces list
//below. Just make sure that each face definition is according
//to the rule "clockwise when looking from inside the block".
faces
(
//First half, left side:
quad2D(GV1l, GV0l)
quad2D(GV3l, GV2l)
//Second half, right side:
quad2D(GV0r, GV1r)
quad2D(GV2r, GV3r)
);
}
GVBLADE
{
type wall;
faces
(
quad2D(GV2l, GV1l)
quad2D(GV1r, GV2r)
);
}
GVHUB
{
type wall;
faces
(
backQuad(GV0l, GV0r, GV1r, GV1l)
backQuad(GV1l, GV1r, GV2r, GV2l)
backQuad(GV2l, GV2r, GV3r, GV3l)
);
}
GVSHROUD
{
type wall;
faces
(
frontQuad(GV0l, GV0r, GV1r, GV1l)
frontQuad(GV1l, GV1r, GV2r, GV2l)
frontQuad(GV2l, GV2r, GV3r, GV3l)
);
}
RUINLET
{
type mixingPlane;
shadowPatch GVOUTLET;
zone RUINLETZone;
coordinateSystem
{
type cylindrical;
name mixingCS;
origin (0 0 0);
axis (0 0 1);
direction (1 0 0);
inDegrees false; //Use radians
//Equivalent axis/direction definition:
//e3 (0 0 1);
//e1 (1 0 0);
}
ribbonPatch
{
sweepAxis Theta;
stackAxis R;
discretisation bothPatches;
}
faces
(
quad2D(RU3r, RU3l)
);
}
RUOUTLET
{
type mixingPlane;
shadowPatch DTINLET;
zone RUOUTLETZone;
coordinateSystem
{
type cylindrical;
name mixingCS;
origin (0 0 0);
axis (0 0 1);
direction (1 0 0);
inDegrees false; //Use radians
//Equivalent axis/direction definition:
//e3 (0 0 1);
//e1 (1 0 0);
}
ribbonPatch
{
sweepAxis Theta;
stackAxis R;
discretisation bothPatches;
}
faces
(
quad2D(RU0l, RU0r)
);
}
RUCYCLIC1
{
type cyclicGgi;
shadowPatch RUCYCLIC2;
zone RUCYCLIC1Zone;
bridgeOverlap false;
rotationAxis (0 0 1);
rotationAngle 72;
separationOffset (0 0 0);
faces
(
quad2D(RU1l, RU0l)
quad2D(RU3l, RU2l)
);
}
RUCYCLIC2
{
type cyclicGgi;
shadowPatch RUCYCLIC1;
zone RUCYCLIC2Zone;
bridgeOverlap false;
rotationAxis (0 0 1);
rotationAngle -72;
separationOffset (0 0 0);
faces
(
quad2D(RU0r, RU1r)
quad2D(RU2r, RU3r)
);
}
RUBLADE
{
type wall;
faces
(
quad2D(RU2l, RU1l)
quad2D(RU1r, RU2r)
);
}
RUHUB
{
type wall;
faces
(
backQuad(RU0l, RU0r, RU1r, RU1l)
backQuad(RU1l, RU1r, RU2r, RU2l)
backQuad(RU2l, RU2r, RU3r, RU3l)
);
}
RUSHROUD
{
type wall;
faces
(
frontQuad(RU0l, RU0r, RU1r, RU1l)
frontQuad(RU1l, RU1r, RU2r, RU2l)
frontQuad(RU2l, RU2r, RU3r, RU3l)
);
}
DTINLET
{
type mixingPlane;
shadowPatch RUOUTLET;
zone DTINLETZone;
coordinateSystem
{
type cylindrical;
name mixingCS;
origin (0 0 0);
axis (0 0 1);
direction (1 0 0);
inDegrees false; //Use radians
//Equivalent axis/direction definition:
//e3 (0 0 1);
//e1 (1 0 0);
}
ribbonPatch
{
sweepAxis Theta;
stackAxis R;
discretisation bothPatches;
}
faces
(
quad2D(DT1r, DT1l)
);
}
DTOUTLET
{
type patch;
faces
(
quad2D(DT0l, DT0r)
);
}
DTCYCLIC1
{
type cyclicGgi;
shadowPatch DTCYCLIC2;
zone DTCYCLIC1Zone;
bridgeOverlap false;
rotationAxis (0 0 1);
rotationAngle 72;
separationOffset (0 0 0);
faces
(
quad2D(DT1l, DT0l)
);
}
DTCYCLIC2
{
type cyclicGgi;
shadowPatch DTCYCLIC1;
zone DTCYCLIC2Zone;
bridgeOverlap false;
rotationAxis (0 0 1);
rotationAngle -72;
separationOffset (0 0 0);
faces
(
quad2D(DT0r, DT1r)
);
}
DTHUB
{
type wall;
faces
(
backQuad(DT0l, DT0r, DT1r, DT1l)
);
}
DTSHROUD
{
type wall;
faces
(
frontQuad(DT0l, DT0r, DT1r, DT1l)
);
}
);
// ************************************************************************* //

View file

@ -0,0 +1,205 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | For copyright notice see file Copyright |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class polyBoundaryMesh;
location "constant/polyMesh";
object boundary;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
19
(
GVINLET
{
type patch;
nFaces 100;
startFace 11740;
}
GVOUTLET
{
type mixingPlane;
nFaces 100;
startFace 11840;
shadowPatch RUINLET;
zone GVOUTLETZone;
coordinateSystem
{
type cylindrical;
name mixingCS;
origin (0 0 0);
e1 (1 0 0);
e3 (0 0 1);
inDegrees true;
}
ribbonPatch
{
sweepAxis Theta;
stackAxis R;
discretisation bothPatches;
}
}
GVCYCLIC
{
type cyclic;
nFaces 240;
startFace 11940;
featureCos 0.9;
transform rotational;
rotationAxis (0 0 1);
rotationCentre (0 0 0);
rotationAngle -72;
}
GVBLADE
{
type wall;
nFaces 200;
startFace 12180;
}
GVHUB
{
type wall;
nFaces 220;
startFace 12380;
}
GVSHROUD
{
type wall;
nFaces 220;
startFace 12600;
}
RUINLET
{
type mixingPlane;
nFaces 100;
startFace 12820;
shadowPatch GVOUTLET;
zone RUINLETZone;
}
RUOUTLET
{
type mixingPlane;
nFaces 100;
startFace 12920;
shadowPatch DTINLET;
zone RUOUTLETZone;
coordinateSystem
{
type cylindrical;
name mixingCS;
origin (0 0 0);
e1 (1 0 0);
e3 (0 0 1);
inDegrees true;
}
ribbonPatch
{
sweepAxis Theta;
stackAxis R;
discretisation bothPatches;
}
}
RUCYCLIC1
{
type cyclicGgi;
nFaces 40;
startFace 13020;
shadowPatch RUCYCLIC2;
zone RUCYCLIC1Zone;
bridgeOverlap false;
rotationAxis (0 0 1);
rotationAngle 72;
separationOffset (0 0 0);
}
RUCYCLIC2
{
type cyclicGgi;
nFaces 40;
startFace 13060;
shadowPatch RUCYCLIC1;
zone RUCYCLIC2Zone;
bridgeOverlap false;
rotationAxis (0 0 1);
rotationAngle -72;
separationOffset (0 0 0);
}
RUBLADE
{
type wall;
nFaces 200;
startFace 13100;
}
RUHUB
{
type wall;
nFaces 140;
startFace 13300;
}
RUSHROUD
{
type wall;
nFaces 140;
startFace 13440;
}
DTINLET
{
type mixingPlane;
nFaces 100;
startFace 13580;
shadowPatch RUOUTLET;
zone DTINLETZone;
}
DTOUTLET
{
type patch;
nFaces 100;
startFace 13680;
}
DTCYCLIC1
{
type cyclicGgi;
nFaces 70;
startFace 13780;
shadowPatch DTCYCLIC2;
zone DTCYCLIC1Zone;
bridgeOverlap false;
rotationAxis (0 0 1);
rotationAngle 72;
separationOffset (0 0 0);
}
DTCYCLIC2
{
type cyclicGgi;
nFaces 70;
startFace 13850;
shadowPatch DTCYCLIC1;
zone DTCYCLIC2Zone;
bridgeOverlap false;
rotationAxis (0 0 1);
rotationAngle -72;
separationOffset (0 0 0);
}
DTHUB
{
type wall;
nFaces 70;
startFace 13920;
}
DTSHROUD
{
type wall;
nFaces 70;
startFace 13990;
}
)
// ************************************************************************* //

View file

@ -0,0 +1,23 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.6 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object thermophysicalProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
thermoType hPsiThermo<pureMixture<constTransport<specieThermo<hConstThermo<perfectGas>>>>>;
mixture air 1 28.966 1006 0 1.8e-05 0.7;
// ************************************************************************* //

View file

@ -0,0 +1,37 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object transportProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
transportModel Newtonian;
nu nu [0 2 -1 0 0 0 0] 1e-05;
CrossPowerLawCoeffs
{
nu0 nu0 [0 2 -1 0 0 0 0] 1e-06;
nuInf nuInf [0 2 -1 0 0 0 0] 1e-06;
m m [0 0 1 0 0 0 0] 1;
n n [0 0 0 0 0 0 0] 1;
}
BirdCarreauCoeffs
{
nu0 nu0 [0 2 -1 0 0 0 0] 1e-06;
nuInf nuInf [0 2 -1 0 0 0 0] 1e-06;
k k [0 0 1 0 0 0 0] 0;
n n [0 0 0 0 0 0 0] 1;
}
// ************************************************************************* //

View file

@ -0,0 +1,116 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | For copyright notice see file Copyright |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object T;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 1 0 0 0];
internalField uniform 305.66;
boundaryField
{
GVINLET
{
type fixedValue;
value uniform 305.66;
}
GVOUTLET
{
type mixingPlaneEnthalpyJump;
patchType mixingPlane;
rotating false;
value uniform 305.66;
}
GVCYCLIC
{
type cyclic;
}
GVBLADE
{
type zeroGradient;
}
GVHUB
{
type zeroGradient;
}
GVSHROUD
{
type zeroGradient;
}
RUINLET
{
type mixingPlaneEnthalpyJump;
patchType mixingPlane;
rotating true;
value uniform 305.66;
}
RUOUTLET
{
type mixingPlaneEnthalpyJump;
patchType mixingPlane;
rotating true;
value uniform 305.66;
}
RUCYCLIC1
{
type cyclicGgi;
}
RUCYCLIC2
{
type cyclicGgi;
}
RUBLADE
{
type zeroGradient;
}
RUHUB
{
type zeroGradient;
}
RUSHROUD
{
type zeroGradient;
}
DTINLET
{
type mixingPlaneEnthalpyJump;
patchType mixingPlane;
rotating false;
value uniform 305.66;
}
DTOUTLET
{
type zeroGradient;
}
DTCYCLIC1
{
type cyclicGgi;
}
DTCYCLIC2
{
type cyclicGgi;
}
DTHUB
{
type zeroGradient;
}
DTSHROUD
{
type zeroGradient;
}
}
// ************************************************************************* //

View file

@ -0,0 +1,114 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volVectorField;
object U;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 -1 0 0 0 0];
internalField uniform (0.1 0.1 -1);
boundaryField
{
GVINLET
{
type fixedValue;
value uniform (0 0 -1);
}
GVOUTLET
{
type mixingPlane;
value uniform (0 0 -1);
}
GVCYCLIC
{
type cyclic;
}
GVBLADE
{
type fixedValue;
value uniform (0 0 0);
}
GVHUB
{
type fixedValue;
value uniform (0 0 0);
}
GVSHROUD
{
type fixedValue;
value uniform (0 0 0);
}
RUINLET
{
type mixingPlane;
value uniform (0 0 -1);
}
RUOUTLET
{
type mixingPlane;
value uniform (0 0 -1);
}
RUCYCLIC1
{
type cyclicGgi;
}
RUCYCLIC2
{
type cyclicGgi;
}
RUBLADE
{
type fixedValue;
value uniform (0 0 0);
}
RUHUB
{
type fixedValue;
value uniform (0 0 0);
}
RUSHROUD
{
type fixedValue;
value uniform (0 0 0);
}
DTINLET
{
type mixingPlane;
value uniform (0 0 -1);
}
DTOUTLET
{
type zeroGradient;
}
DTCYCLIC1
{
type cyclicGgi;
}
DTCYCLIC2
{
type cyclicGgi;
}
DTHUB
{
type fixedValue;
value uniform (0 0 0);
}
DTSHROUD
{
type fixedValue;
value uniform (0 0 0);
}
}
// ************************************************************************* //

View file

@ -0,0 +1,130 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | For copyright notice see file Copyright |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object alphat;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -1 -1 0 0 0 0];
internalField uniform 0;
boundaryField
{
GVINLET
{
type calculated;
value uniform 0;
}
GVOUTLET
{
type mixingPlane;
value uniform 0;
}
GVCYCLIC
{
type cyclic;
value uniform 0;
}
GVBLADE
{
type alphatWallFunction;
Prt 0.85;
value uniform 0;
}
GVHUB
{
type alphatWallFunction;
Prt 0.85;
value uniform 0;
}
GVSHROUD
{
type alphatWallFunction;
Prt 0.85;
value uniform 0;
}
RUINLET
{
type mixingPlane;
value uniform 0;
}
RUOUTLET
{
type mixingPlane;
value uniform 0;
}
RUCYCLIC1
{
type cyclicGgi;
value uniform 0;
}
RUCYCLIC2
{
type cyclicGgi;
value uniform 0;
}
RUBLADE
{
type alphatWallFunction;
Prt 0.85;
value uniform 0;
}
RUHUB
{
type alphatWallFunction;
Prt 0.85;
value uniform 0;
}
RUSHROUD
{
type alphatWallFunction;
Prt 0.85;
value uniform 0;
}
DTINLET
{
type mixingPlane;
value uniform 0;
}
DTOUTLET
{
type calculated;
value uniform 0;
}
DTCYCLIC1
{
type cyclicGgi;
value uniform 0;
}
DTCYCLIC2
{
type cyclicGgi;
value uniform 0;
}
DTHUB
{
type alphatWallFunction;
Prt 0.85;
value uniform 0;
}
DTSHROUD
{
type alphatWallFunction;
Prt 0.85;
value uniform 0;
}
}
// ************************************************************************* //

View file

@ -0,0 +1,153 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | For copyright notice see file Copyright |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object epsilon;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 2 -3 0 0 0 0];
internalField uniform 14.855;
boundaryField
{
GVINLET
{
type fixedValue;
value uniform 14.855;
}
GVOUTLET
{
type mixingPlane;
value uniform 14.855;
}
GVCYCLIC
{
type cyclic;
value uniform 14.855;
}
GVBLADE
{
type compressible::epsilonWallFunction;
refValue uniform 0;
value uniform 14.855;
Cmu 0.09;
kappa 0.41;
E 9.8;
}
GVHUB
{
type compressible::epsilonWallFunction;
refValue uniform 0;
value uniform 14.855;
Cmu 0.09;
kappa 0.41;
E 9.8;
}
GVSHROUD
{
type compressible::epsilonWallFunction;
refValue uniform 0;
value uniform 14.855;
Cmu 0.09;
kappa 0.41;
E 9.8;
}
RUINLET
{
type mixingPlane;
value uniform 14.855;
}
RUOUTLET
{
type mixingPlane;
value uniform 14.855;
}
RUCYCLIC1
{
type cyclicGgi;
value uniform 14.855;
}
RUCYCLIC2
{
type cyclicGgi;
value uniform 14.855;
}
RUBLADE
{
type compressible::epsilonWallFunction;
refValue uniform 0;
value uniform 14.855;
Cmu 0.09;
kappa 0.41;
E 9.8;
}
RUHUB
{
type compressible::epsilonWallFunction;
refValue uniform 0;
value uniform 14.855;
Cmu 0.09;
kappa 0.41;
E 9.8;
}
RUSHROUD
{
type compressible::epsilonWallFunction;
refValue uniform 0;
value uniform 14.855;
Cmu 0.09;
kappa 0.41;
E 9.8;
}
DTINLET
{
type mixingPlane;
value uniform 14.855;
}
DTOUTLET
{
type zeroGradient;
}
DTCYCLIC1
{
type cyclicGgi;
value uniform 14.855;
}
DTCYCLIC2
{
type cyclicGgi;
value uniform 14.855;
}
DTHUB
{
type compressible::epsilonWallFunction;
refValue uniform 0;
value uniform 14.855;
Cmu 0.09;
kappa 0.41;
E 9.8;
}
DTSHROUD
{
type compressible::epsilonWallFunction;
refValue uniform 0;
value uniform 14.855;
Cmu 0.09;
kappa 0.41;
E 9.8;
}
}
// ************************************************************************* //

View file

@ -0,0 +1,138 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | For copyright notice see file Copyright |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "20";
object i;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 2 -2 0 0 0 0];
internalField uniform 307494;
boundaryField
{
GVINLET
{
type fixedEnthalpy;
value uniform 307494;
}
GVOUTLET
{
type mixingPlaneEnthalpyJump;
patchType mixingPlane;
rotating false;
value uniform 307494;
}
GVCYCLIC
{
type cyclic;
value uniform 307494;
}
GVBLADE
{
type gradientEnthalpy;
gradient uniform 0;
value uniform 307000;
}
GVHUB
{
type gradientEnthalpy;
gradient uniform 0;
value uniform 307494;
}
GVSHROUD
{
type gradientEnthalpy;
gradient uniform 0;
value uniform 307494;
}
RUINLET
{
type mixingPlaneEnthalpyJump;
patchType mixingPlane;
rotating true;
value uniform 307494;
}
RUOUTLET
{
type mixingPlaneEnthalpyJump;
patchType mixingPlane;
rotating true;
value uniform 307494;
}
RUCYCLIC1
{
type cyclicGgi;
value uniform 307494;
}
RUCYCLIC2
{
type cyclicGgi;
value uniform 307494;
}
RUBLADE
{
type gradientEnthalpy;
gradient uniform 307494;
}
RUHUB
{
type gradientEnthalpy;
gradient uniform 307494;
}
RUSHROUD
{
type gradientEnthalpy;
gradient uniform 307494;
}
DTINLET
{
type mixingPlaneEnthalpyJump;
patchType mixingPlane;
rotating false;
value uniform 305.66;
}
DTOUTLET
{
type gradientEnthalpy;
gradient uniform 0;
value uniform 307494;
}
DTCYCLIC1
{
type cyclicGgi;
value uniform 307494;
}
DTCYCLIC2
{
type cyclicGgi;
value uniform 307494;
}
DTHUB
{
type gradientEnthalpy;
gradient uniform 0;
value uniform 307494;
}
DTSHROUD
{
type gradientEnthalpy;
gradient uniform 0;
value uniform 307494;
}
}
// ************************************************************************* //

View file

@ -0,0 +1,121 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | For copyright notice see file Copyright |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object k;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 2 -2 0 0 0 0];
internalField uniform 0.375;
boundaryField
{
GVINLET
{
type fixedValue;
value uniform 0.375;
}
GVOUTLET
{
type mixingPlane;
value uniform 0.375;
}
GVCYCLIC
{
type cyclic;
value uniform 0.375;
}
GVBLADE
{
type compressible::kqRWallFunction;
value uniform 0.375;
}
GVHUB
{
type compressible::kqRWallFunction;
value uniform 0.375;
}
GVSHROUD
{
type compressible::kqRWallFunction;
value uniform 0.375;
}
RUINLET
{
type mixingPlane;
value uniform 0.375;
}
RUOUTLET
{
type mixingPlane;
value uniform 0.375;
}
RUCYCLIC1
{
type cyclicGgi;
value uniform 0.375;
}
RUCYCLIC2
{
type cyclicGgi;
value uniform 0.375;
}
RUBLADE
{
type compressible::kqRWallFunction;
value uniform 0.375;
}
RUHUB
{
type compressible::kqRWallFunction;
value uniform 0.375;
}
RUSHROUD
{
type compressible::kqRWallFunction;
value uniform 0.375;
}
DTINLET
{
type mixingPlane;
value uniform 0.375;
}
DTOUTLET
{
type zeroGradient;
}
DTCYCLIC1
{
type cyclicGgi;
value uniform 0.375;
}
DTCYCLIC2
{
type cyclicGgi;
value uniform 0.375;
}
DTHUB
{
type compressible::kqRWallFunction;
value uniform 0.375;
}
DTSHROUD
{
type compressible::kqRWallFunction;
value uniform 0.375;
}
}
// ************************************************************************* //

View file

@ -0,0 +1,146 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | For copyright notice see file Copyright |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object mut;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -1 -1 0 0 0 0];
internalField uniform 0;
boundaryField
{
GVINLET
{
type calculated;
value uniform 0;
}
GVOUTLET
{
type mixingPlane;
value uniform 0;
}
GVCYCLIC
{
type cyclic;
value uniform 0;
}
GVBLADE
{
type mutWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 0;
}
GVHUB
{
type mutWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 0;
}
GVSHROUD
{
type mutWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 0;
}
RUINLET
{
type mixingPlane;
value uniform 0;
}
RUOUTLET
{
type mixingPlane;
value uniform 0;
}
RUCYCLIC1
{
type cyclicGgi;
value uniform 0;
}
RUCYCLIC2
{
type cyclicGgi;
value uniform 0;
}
RUBLADE
{
type mutWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 0;
}
RUHUB
{
type mutWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 0;
}
RUSHROUD
{
type mutWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 0;
}
DTINLET
{
type mixingPlane;
value uniform 0;
}
DTOUTLET
{
type calculated;
value uniform 0;
}
DTCYCLIC1
{
type cyclicGgi;
value uniform 0;
}
DTCYCLIC2
{
type cyclicGgi;
value uniform 0;
}
DTHUB
{
type mutWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 0;
}
DTSHROUD
{
type mutWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 0;
}
}
// ************************************************************************* //

View file

@ -0,0 +1,106 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object p;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -1 -2 0 0 0 0];
internalField uniform 100000;
boundaryField
{
GVINLET
{
type zeroGradient;
}
GVOUTLET
{
type mixingPlane;
value uniform 100000;
}
GVCYCLIC
{
type cyclic;
}
GVBLADE
{
type zeroGradient;
}
GVHUB
{
type zeroGradient;
}
GVSHROUD
{
type zeroGradient;
}
RUINLET
{
type mixingPlane;
value uniform 100000;
}
RUOUTLET
{
type mixingPlane;
value uniform 100000;
}
RUCYCLIC1
{
type cyclicGgi;
}
RUCYCLIC2
{
type cyclicGgi;
}
RUBLADE
{
type zeroGradient;
}
RUHUB
{
type zeroGradient;
}
RUSHROUD
{
type zeroGradient;
}
DTINLET
{
type mixingPlane;
value uniform 100000;
}
DTOUTLET
{
type fixedValue;
value uniform 100000;
}
DTCYCLIC1
{
type cyclicGgi;
}
DTCYCLIC2
{
type cyclicGgi;
}
DTHUB
{
type zeroGradient;
}
DTSHROUD
{
type zeroGradient;
}
}
// ************************************************************************* //

View file

@ -0,0 +1,9 @@
faceSet RUCYCLIC1Zone new patchToFace RUCYCLIC1
faceSet RUCYCLIC2Zone new patchToFace RUCYCLIC2
faceSet DTCYCLIC1Zone new patchToFace DTCYCLIC1
faceSet DTCYCLIC2Zone new patchToFace DTCYCLIC2
faceSet GVOUTLETZone new patchToFace GVOUTLET
faceSet RUINLETZone new patchToFace RUINLET
faceSet RUOUTLETZone new patchToFace RUOUTLET
faceSet DTINLETZone new patchToFace DTINLET
quit

View file

@ -0,0 +1,75 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
application steadyUniversalMRFFoam;
startFrom startTime;
startTime 0;
stopAt endTime;
endTime 200;
deltaT 1;
writeControl timeStep;
writeInterval 20;
purgeWrite 0;
writeFormat ascii;
writePrecision 12;
writeCompression compressed;
timeFormat general;
timePrecision 6;
runTimeModifiable yes;
//libs ("libjumpFiniteVolume.so");
// Compute the flux value on each side of a GGI interface
functions
(
ggiCheck
{
// Type of functionObject
type ggiCheck;
phi phi;
// Where to load it from (if not already in solver)
functionObjectLibs ("libcheckFunctionObjects.so");
}
// Compute the flux value on each side of a mixingPlane interface
mixingPlaneCheck
{
// Type of functionObject
type mixingPlaneCheck;
phi phi;
// Where to load it from (if not already in solver)
functionObjectLibs ("libcheckFunctionObjects.so");
}
);
// ************************************************************************* //

View file

@ -0,0 +1,86 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object decomposeParDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
numberOfSubdomains 8;
//method metis;
method patchConstrained;
globalFaceZones
(
RUCYCLIC1Zone
RUINLETZone
RUCYCLIC2Zone
RUOUTLETZone
GVOUTLETZone
DTINLETZone
DTCYCLIC1Zone
DTCYCLIC2Zone
);
patchConstrainedCoeffs
{
method metis;
numberOfSubdomains 8;
patchConstraints
(
(RUINLET 1)
(GVOUTLET 1)
(RUOUTLET 2)
(DTINLET 2)
);
}
simpleCoeffs
{
n (2 2 1);
delta 0.001;
}
hierarchicalCoeffs
{
n (1 1 1);
delta 0.001;
order xyz;
}
metisCoeffs
{
processorWeights
(
1
1
1
1
1
1
1
1
);
}
manualCoeffs
{
dataFile "";
}
distributed no;
roots
(
);
// ************************************************************************* //

View file

@ -0,0 +1,90 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.2 |
| \\ / A nd | Web: http://www.openfoam.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object fvSchemes;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
ddtSchemes
{
default steadyState;
// ddt(rho,U) steadyInertial phi rho 0.25;
ddt(rho,h) steadyState;
ddt(rho,i) steadyState;
// ddt(rho,h) steadyInertial phi rho 0.25;
ddt(psi,p) steadyInertial phi rho 1;
// ddt(psi,p) steadyState;
ddt(rho,k) steadyState;
ddt(rho,epsilon) steadyState;
U steadyState;
T steadyState;
p steadyState;
}
gradSchemes
{
default Gauss linear;
}
divSchemes
{
default none;
div(phi,U) Gauss upwind;
div(phi,h) Gauss upwind;
div(phi,i) Gauss upwind;
div(phid,p) Gauss upwind;
div(phi,k) Gauss upwind;
div(phi,epsilon) Gauss upwind;
div((muEff*dev2(T(grad(U))))) Gauss linear;
div((nuEff*dev(T(grad(U))))) Gauss linear;
div(U,p) Gauss upwind;
}
laplacianSchemes
{
default Gauss linear limited 0.5;
}
interpolationSchemes
{
default linear;
}
snGradSchemes
{
default limited 0.5;
}
fluxRequired
{
default no;
p;
}
mixingPlane
{
default areaAveraging;
U areaAveraging;
k fluxAveraging;
omega areaAveraging;
}
// ************************************************************************* //

View file

@ -0,0 +1,76 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object fvSchemes;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
ddtSchemes
{
default steadyState;
}
gradSchemes
{
default Gauss linear;
grad(p) Gauss linear;
grad(U) Gauss linear;
}
divSchemes
{
default none;
div(phi,U) Gauss limitedLinearV 1;
div(phi,k) Gauss limitedLinear 1;
div(phi,i) Gauss limitedLinear 1;
div(phid,p) Gauss limitedLinear 1;
div(phi,epsilon) Gauss limitedLinear 1;
div((nuEff*dev(grad(U).T()))) Gauss linear;
div((muEff*dev2(grad(U).T()))) Gauss linear;
}
laplacianSchemes
{
default none;
laplacian(nuEff,U) Gauss linear corrected;
laplacian((rho*(1|A(U))),p) Gauss linear corrected;
laplacian(DkEff,k) Gauss linear corrected;
laplacian(DepsilonEff,epsilon) Gauss linear corrected;
laplacian(muEff,U) Gauss linear corrected;
laplacian(alphaEff,i) Gauss linear corrected;
}
interpolationSchemes
{
default linear;
interpolate(U) linear;
}
snGradSchemes
{
default corrected;
}
fluxRequired
{
default no;
p;
}
mixingPlane
{
default areaAveraging;
//U fluxAveragingAdjustMassFlow;
//p zeroGradientAreaAveragingMix;
}
// ************************************************************************* //

View file

@ -0,0 +1,107 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | foam-extend: Open Source CFD |
| \\ / O peration | Version: 3.2 |
| \\ / A nd | Web: http://www.foam-extend.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object fvSolution;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
solvers
{
p
{
solver BiCGStab;
preconditioner DILU;
tolerance 1e-8;
relTol 0.05;
}
U
{
solver smoothSolver;
smoother GaussSeidel;
nSweeps 2;
tolerance 1e-7;
relTol 0.1;
}
k
{
solver smoothSolver;
smoother GaussSeidel;
nSweeps 2;
tolerance 1e-7;
relTol 0.1;
}
epsilon
{
solver smoothSolver;
smoother GaussSeidel;
nSweeps 2;
tolerance 1e-7;
relTol 0.1;
}
T
{
solver smoothSolver;
smoother GaussSeidel;
nSweeps 2;
tolerance 1e-7;
relTol 0.1;
}
i
{
solver smoothSolver;
smoother GaussSeidel;
nSweeps 2;
tolerance 1e-7;
relTol 0.1;
}
}
SIMPLE
{
nNonOrthogonalCorrectors 0;
pRefCell 0;
pRefValue 0;
}
PIMPLE
{
nOuterCorrectors 1;
nCorrectors 1;
nNonOrthogonalCorrectors 0;
compressible yes;
convergence 1e-5;
}
relaxationFactors
{
// Note: under-relaxation factors used in wave-transmissive schemes
U 0.1;
p 0.1;
h 0.1;
i 0.1;
rho 0.1;
T 0.1;
k 0.1;
epsilon 0.1;
}
fieldBounds
{
p 50 1e8;
T 100 1000;
U 1000;
epsilon 0 1e6;
}
// ************************************************************************* //