Created new tutorial solver for MRF with VoF interface-capturing.

This commit is contained in:
henry
2009-06-09 12:11:18 +01:00
parent e68480913f
commit e7429463f8
31 changed files with 5633 additions and 0 deletions

View File

@ -0,0 +1,109 @@
/*---------------------------------------------------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration |
\\ / A nd | Copyright (C) 1991-2009 OpenCFD Ltd.
\\/ M anipulation |
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
OpenFOAM is free software; you can redistribute it and/or modify it
under the terms of the GNU General Public License as published by the
Free Software Foundation; either version 2 of the License, or (at your
option) any later version.
OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License
for more details.
You should have received a copy of the GNU General Public License
along with OpenFOAM; if not, write to the Free Software Foundation,
Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
Application
MRFInterFoam
Description
Solver for 2 incompressible, isothermal immiscible fluids using a VOF
(volume of fluid) phase-fraction based interface capturing approach.
The momentum and other fluid properties are of the "mixture" and a single
momentum equation is solved.
Turbulence modelling is generic, i.e. laminar, RAS or LES may be selected.
For a two-fluid approach see twoPhaseEulerFoam.
\*---------------------------------------------------------------------------*/
#include "fvCFD.H"
#include "MULES.H"
#include "subCycle.H"
#include "interfaceProperties.H"
#include "twoPhaseMixture.H"
#include "turbulenceModel.H"
#include "MRFZones.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
int main(int argc, char *argv[])
{
#include "setRootCase.H"
#include "createTime.H"
#include "createMesh.H"
#include "readEnvironmentalProperties.H"
#include "readPISOControls.H"
#include "initContinuityErrs.H"
#include "createFields.H"
#include "createMRFZones.H"
#include "readTimeControls.H"
#include "correctPhi.H"
#include "CourantNo.H"
#include "setInitialDeltaT.H"
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
Info<< "\nStarting time loop\n" << endl;
while (runTime.run())
{
#include "readPISOControls.H"
#include "readTimeControls.H"
#include "CourantNo.H"
#include "setDeltaT.H"
runTime++;
Info<< "Time = " << runTime.timeName() << nl << endl;
twoPhaseProperties.correct();
#include "alphaEqnSubCycle.H"
#include "UEqn.H"
// --- PISO loop
for (int corr=0; corr<nCorr; corr++)
{
#include "pEqn.H"
}
#include "continuityErrs.H"
turbulence->correct();
runTime.write();
Info<< "ExecutionTime = " << runTime.elapsedCpuTime() << " s"
<< " ClockTime = " << runTime.elapsedClockTime() << " s"
<< nl << endl;
}
Info<< "End\n" << endl;
return 0;
}
// ************************************************************************* //

View File

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

View File

@ -0,0 +1,14 @@
EXE_INC = \
-I$(FOAM_SOLVERS)/multiphase/interFoam \
-I$(LIB_SRC)/transportModels \
-I$(LIB_SRC)/transportModels/incompressible/lnInclude \
-I$(LIB_SRC)/transportModels/interfaceProperties/lnInclude \
-I$(LIB_SRC)/turbulenceModels/incompressible/turbulenceModel \
-I$(LIB_SRC)/finiteVolume/lnInclude
EXE_LIBS = \
-linterfaceProperties \
-lincompressibleTransportModels \
-lincompressibleRASModels \
-lincompressibleLESModels \
-lfiniteVolume

View File

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

View File

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

View File

@ -0,0 +1,48 @@
{
volScalarField rUA = 1.0/UEqn.A();
surfaceScalarField rUAf = fvc::interpolate(rUA);
U = rUA*UEqn.H();
surfaceScalarField phiU
(
"phiU",
(fvc::interpolate(U) & mesh.Sf())
//+ fvc::ddtPhiCorr(rUA, rho, U, phi)
);
mrfZones.relativeFlux(phiU);
phi = phiU +
(
fvc::interpolate(interface.sigmaK())*fvc::snGrad(alpha1)*mesh.magSf()
+ fvc::interpolate(rho)*(g & mesh.Sf())
)*rUAf;
adjustPhi(phi, U, p);
for(int nonOrth=0; nonOrth<=nNonOrthCorr; nonOrth++)
{
fvScalarMatrix pEqn
(
fvm::laplacian(rUAf, p) == fvc::div(phi)
);
pEqn.setReference(pRefCell, pRefValue);
if (corr == nCorr-1 && nonOrth == nNonOrthCorr)
{
pEqn.solve(mesh.solver(p.name() + "Final"));
}
else
{
pEqn.solve(mesh.solver(p.name()));
}
if (nonOrth == nNonOrthCorr)
{
phi -= pEqn.flux();
}
}
U += rUA*fvc::reconstruct((phi - phiU)/rUAf);
U.correctBoundaryConditions();
}

View File

@ -0,0 +1,45 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volVectorField;
location "0";
object U;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 -1 0 0 0 0];
internalField uniform (0 0 0);
boundaryField
{
rotor
{
type fixedValue;
value uniform (0 0 0);
}
stator
{
type fixedValue;
value uniform (0 0 0);
}
front
{
type empty;
}
back
{
type empty;
}
}
// ************************************************************************* //

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,44 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 |
| \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object alpha1;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 0 0 0 0];
internalField uniform 0;
boundaryField
{
rotor
{
type zeroGradient;
}
stator
{
type zeroGradient;
}
front
{
type empty;
}
back
{
type empty;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,44 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 |
| \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object p;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -1 -2 0 0 0 0];
internalField uniform 0;
boundaryField
{
rotor
{
type zeroGradient;
}
stator
{
type zeroGradient;
}
front
{
type empty;
}
back
{
type empty;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,9 @@
#!/bin/sh
# Source tutorial run functions
. $WM_PROJECT_DIR/bin/tools/RunFunctions
application="MRFInterFoam"
./makeMesh
runApplication $application

View File

@ -0,0 +1,31 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 |
| \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object MRFZones;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
1
(
rotor
{
// Fixed patches (by default they 'move' with the MRF zone)
nonRotatingPatches ();
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] 6.2831853;
}
)
// ************************************************************************* //

View File

@ -0,0 +1,20 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object environmentalProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
g g [0 1 -2 0 0 0 0] (0 0 0);
// ************************************************************************* //

View File

@ -0,0 +1,818 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 |
| \\ / A nd | Web: http://www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object blockMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// General macros to create 2D/extruded-2D meshes
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
convertToMeters 0.1;
// Hub radius
// Impeller-tip radius
// Baffle-tip radius
// Tank radius
// MRF region radius
// Thickness of 2D slab
// Base z
// Top z
// Number of cells radially between hub and impeller tip
// Number of cells radially in each of the two regions between
// impeller and baffle tips
// Number of cells radially between baffle tip and tank
// Number of cells azimuthally in each of the 8 blocks
// Number of cells in the thickness of the slab
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
vertices
(
(0.2 0 0) // Vertex r0b = 0
(0.2 0 0) // Vertex r0sb = 1
(0.141421356364228 -0.141421356110391 0) // Vertex r1b = 2
(3.58979347393082e-10 -0.2 0) // Vertex r2b = 3
(3.58979347393082e-10 -0.2 0) // Vertex r2sb = 4
(-0.141421355856554 -0.141421356618065 0) // Vertex r3b = 5
(-0.2 7.17958694786164e-10 0) // Vertex r4b = 6
(-0.2 7.17958694786164e-10 0) // Vertex r4sb = 7
(-0.141421355856554 0.141421356618065 0) // Vertex r5b = 8
(3.58979347393082e-10 0.2 0) // Vertex r6b = 9
(3.58979347393082e-10 0.2 0) // Vertex r6sb = 10
(0.141421356364228 0.141421356110391 0) // Vertex r7b = 11
(0.5 0 0) // Vertex rb0b = 12
(0.353553390910569 -0.353553390275978 0) // Vertex rb1b = 13
(8.97448368482705e-10 -0.5 0) // Vertex rb2b = 14
(-0.353553389641386 -0.353553391545162 0) // Vertex rb3b = 15
(-0.5 1.79489673696541e-09 0) // Vertex rb4b = 16
(-0.353553389641386 0.353553391545162 0) // Vertex rb5b = 17
(8.97448368482705e-10 0.5 0) // Vertex rb6b = 18
(0.353553390910569 0.353553390275978 0) // Vertex rb7b = 19
(0.6 0 0) // Vertex ri0b = 20
(0.424264069092683 -0.424264068331174 0) // Vertex ri1b = 21
(1.07693804217925e-09 -0.6 0) // Vertex ri2b = 22
(-0.424264067569663 -0.424264069854194 0) // Vertex ri3b = 23
(-0.6 2.15387608435849e-09 0) // Vertex ri4b = 24
(-0.424264067569663 0.424264069854194 0) // Vertex ri5b = 25
(1.07693804217925e-09 0.6 0) // Vertex ri6b = 26
(0.424264069092683 0.424264068331174 0) // Vertex ri7b = 27
(0.7 0 0) // Vertex Rb0b = 28
(0.494974747274797 -0.494974746386369 0) // Vertex Rb1b = 29
(1.25642771587579e-09 -0.7 0) // Vertex Rb2b = 30
(-0.49497474549794 -0.494974748163226 0) // Vertex Rb3b = 31
(-0.7 2.51285543175157e-09 0) // Vertex Rb4b = 32
(-0.49497474549794 0.494974748163226 0) // Vertex Rb5b = 33
(1.25642771587579e-09 0.7 0) // Vertex Rb6b = 34
(0.494974747274797 0.494974746386369 0) // Vertex Rb7b = 35
(1 0 0) // Vertex R0b = 36
(0.707106781821139 -0.707106780551956 0) // Vertex R1b = 37
(0.707106781821139 -0.707106780551956 0) // Vertex R1sb = 38
(1.79489673696541e-09 -1 0) // Vertex R2b = 39
(-0.707106779282772 -0.707106783090323 0) // Vertex R3b = 40
(-0.707106779282772 -0.707106783090323 0) // Vertex R3sb = 41
(-1 3.58979347393082e-09 0) // Vertex R4b = 42
(-0.707106779282772 0.707106783090323 0) // Vertex R5b = 43
(-0.707106779282772 0.707106783090323 0) // Vertex R5sb = 44
(1.79489673696541e-09 1 0) // Vertex R6b = 45
(0.707106781821139 0.707106780551956 0) // Vertex R7b = 46
(0.707106781821139 0.707106780551956 0) // Vertex R7sb = 47
(0.2 0 0.1) // Vertex r0t = 48
(0.2 0 0.1) // Vertex r0st = 49
(0.141421356364228 -0.141421356110391 0.1) // Vertex r1t = 50
(3.58979347393082e-10 -0.2 0.1) // Vertex r2t = 51
(3.58979347393082e-10 -0.2 0.1) // Vertex r2st = 52
(-0.141421355856554 -0.141421356618065 0.1) // Vertex r3t = 53
(-0.2 7.17958694786164e-10 0.1) // Vertex r4t = 54
(-0.2 7.17958694786164e-10 0.1) // Vertex r4st = 55
(-0.141421355856554 0.141421356618065 0.1) // Vertex r5t = 56
(3.58979347393082e-10 0.2 0.1) // Vertex r6t = 57
(3.58979347393082e-10 0.2 0.1) // Vertex r6st = 58
(0.141421356364228 0.141421356110391 0.1) // Vertex r7t = 59
(0.5 0 0.1) // Vertex rb0t = 60
(0.353553390910569 -0.353553390275978 0.1) // Vertex rb1t = 61
(8.97448368482705e-10 -0.5 0.1) // Vertex rb2t = 62
(-0.353553389641386 -0.353553391545162 0.1) // Vertex rb3t = 63
(-0.5 1.79489673696541e-09 0.1) // Vertex rb4t = 64
(-0.353553389641386 0.353553391545162 0.1) // Vertex rb5t = 65
(8.97448368482705e-10 0.5 0.1) // Vertex rb6t = 66
(0.353553390910569 0.353553390275978 0.1) // Vertex rb7t = 67
(0.6 0 0.1) // Vertex ri0t = 68
(0.424264069092683 -0.424264068331174 0.1) // Vertex ri1t = 69
(1.07693804217925e-09 -0.6 0.1) // Vertex ri2t = 70
(-0.424264067569663 -0.424264069854194 0.1) // Vertex ri3t = 71
(-0.6 2.15387608435849e-09 0.1) // Vertex ri4t = 72
(-0.424264067569663 0.424264069854194 0.1) // Vertex ri5t = 73
(1.07693804217925e-09 0.6 0.1) // Vertex ri6t = 74
(0.424264069092683 0.424264068331174 0.1) // Vertex ri7t = 75
(0.7 0 0.1) // Vertex Rb0t = 76
(0.494974747274797 -0.494974746386369 0.1) // Vertex Rb1t = 77
(1.25642771587579e-09 -0.7 0.1) // Vertex Rb2t = 78
(-0.49497474549794 -0.494974748163226 0.1) // Vertex Rb3t = 79
(-0.7 2.51285543175157e-09 0.1) // Vertex Rb4t = 80
(-0.49497474549794 0.494974748163226 0.1) // Vertex Rb5t = 81
(1.25642771587579e-09 0.7 0.1) // Vertex Rb6t = 82
(0.494974747274797 0.494974746386369 0.1) // Vertex Rb7t = 83
(1 0 0.1) // Vertex R0t = 84
(0.707106781821139 -0.707106780551956 0.1) // Vertex R1t = 85
(0.707106781821139 -0.707106780551956 0.1) // Vertex R1st = 86
(1.79489673696541e-09 -1 0.1) // Vertex R2t = 87
(-0.707106779282772 -0.707106783090323 0.1) // Vertex R3t = 88
(-0.707106779282772 -0.707106783090323 0.1) // Vertex R3st = 89
(-1 3.58979347393082e-09 0.1) // Vertex R4t = 90
(-0.707106779282772 0.707106783090323 0.1) // Vertex R5t = 91
(-0.707106779282772 0.707106783090323 0.1) // Vertex R5st = 92
(1.79489673696541e-09 1 0.1) // Vertex R6t = 93
(0.707106781821139 0.707106780551956 0.1) // Vertex R7t = 94
(0.707106781821139 0.707106780551956 0.1) // Vertex R7st = 95
);
blocks
(
// block0
hex (0 2 13 12 48 50 61 60)
rotor
(12 12 1)
simpleGrading (1 1 1)
// block1
hex (2 4 14 13 50 52 62 61)
rotor
(12 12 1)
simpleGrading (1 1 1)
// block2
hex (3 5 15 14 51 53 63 62)
rotor
(12 12 1)
simpleGrading (1 1 1)
// block3
hex (5 7 16 15 53 55 64 63)
rotor
(12 12 1)
simpleGrading (1 1 1)
// block4
hex (6 8 17 16 54 56 65 64)
rotor
(12 12 1)
simpleGrading (1 1 1)
// block5
hex (8 10 18 17 56 58 66 65)
rotor
(12 12 1)
simpleGrading (1 1 1)
// block6
hex (9 11 19 18 57 59 67 66)
rotor
(12 12 1)
simpleGrading (1 1 1)
// block7
hex (11 1 12 19 59 49 60 67)
rotor
(12 12 1)
simpleGrading (1 1 1)
// block0
hex (12 13 21 20 60 61 69 68)
rotor
(12 4 1)
simpleGrading (1 1 1)
// block1
hex (13 14 22 21 61 62 70 69)
rotor
(12 4 1)
simpleGrading (1 1 1)
// block2
hex (14 15 23 22 62 63 71 70)
rotor
(12 4 1)
simpleGrading (1 1 1)
// block3
hex (15 16 24 23 63 64 72 71)
rotor
(12 4 1)
simpleGrading (1 1 1)
// block4
hex (16 17 25 24 64 65 73 72)
rotor
(12 4 1)
simpleGrading (1 1 1)
// block5
hex (17 18 26 25 65 66 74 73)
rotor
(12 4 1)
simpleGrading (1 1 1)
// block6
hex (18 19 27 26 66 67 75 74)
rotor
(12 4 1)
simpleGrading (1 1 1)
// block7
hex (19 12 20 27 67 60 68 75)
rotor
(12 4 1)
simpleGrading (1 1 1)
// block0
hex (20 21 29 28 68 69 77 76)
(12 4 1)
simpleGrading (1 1 1)
// block1
hex (21 22 30 29 69 70 78 77)
(12 4 1)
simpleGrading (1 1 1)
// block2
hex (22 23 31 30 70 71 79 78)
(12 4 1)
simpleGrading (1 1 1)
// block3
hex (23 24 32 31 71 72 80 79)
(12 4 1)
simpleGrading (1 1 1)
// block4
hex (24 25 33 32 72 73 81 80)
(12 4 1)
simpleGrading (1 1 1)
// block5
hex (25 26 34 33 73 74 82 81)
(12 4 1)
simpleGrading (1 1 1)
// block6
hex (26 27 35 34 74 75 83 82)
(12 4 1)
simpleGrading (1 1 1)
// block7
hex (27 20 28 35 75 68 76 83)
(12 4 1)
simpleGrading (1 1 1)
// block0
hex (28 29 38 36 76 77 86 84)
(12 12 1)
simpleGrading (1 1 1)
// block1
hex (29 30 39 37 77 78 87 85)
(12 12 1)
simpleGrading (1 1 1)
// block2
hex (30 31 41 39 78 79 89 87)
(12 12 1)
simpleGrading (1 1 1)
// block3
hex (31 32 42 40 79 80 90 88)
(12 12 1)
simpleGrading (1 1 1)
// block4
hex (32 33 44 42 80 81 92 90)
(12 12 1)
simpleGrading (1 1 1)
// block5
hex (33 34 45 43 81 82 93 91)
(12 12 1)
simpleGrading (1 1 1)
// block6
hex (34 35 47 45 82 83 95 93)
(12 12 1)
simpleGrading (1 1 1)
// block7
hex (35 28 36 46 83 76 84 94)
(12 12 1)
simpleGrading (1 1 1)
);
edges
(
arc 0 2 (0.184775906536601 -0.0765366863901046 0)
arc 2 4 (0.0765366867217582 -0.184775906399226 0)
arc 3 5 (-0.0765366860584508 -0.184775906673977 0)
arc 5 7 (-0.18477590626185 -0.0765366870534118 0)
arc 6 8 (-0.18477590626185 0.0765366870534118 0)
arc 8 10 (-0.0765366860584508 0.184775906673977 0)
arc 9 11 (0.0765366867217582 0.184775906399226 0)
arc 11 1 (0.184775906536601 0.0765366863901046 0)
arc 12 13 (0.461939766341503 -0.191341715975262 0)
arc 13 14 (0.191341716804395 -0.461939765998065 0)
arc 14 15 (-0.191341715146127 -0.461939766684942 0)
arc 15 16 (-0.461939765654626 -0.19134171763353 0)
arc 16 17 (-0.461939765654626 0.19134171763353 0)
arc 17 18 (-0.191341715146127 0.461939766684942 0)
arc 18 19 (0.191341716804395 0.461939765998065 0)
arc 19 12 (0.461939766341503 0.191341715975262 0)
arc 20 21 (0.554327719609804 -0.229610059170314 0)
arc 21 22 (0.229610060165275 -0.554327719197677 0)
arc 22 23 (-0.229610058175352 -0.55432772002193 0)
arc 23 24 (-0.554327718785551 -0.229610061160235 0)
arc 24 25 (-0.554327718785551 0.229610061160235 0)
arc 25 26 (-0.229610058175352 0.55432772002193 0)
arc 26 27 (0.229610060165275 0.554327719197677 0)
arc 27 20 (0.554327719609804 0.229610059170314 0)
arc 28 29 (0.646715672878104 -0.267878402365366 0)
arc 29 30 (0.267878403526154 -0.64671567239729 0)
arc 30 31 (-0.267878401204578 -0.646715673358918 0)
arc 31 32 (-0.646715671916476 -0.267878404686941 0)
arc 32 33 (-0.646715671916476 0.267878404686941 0)
arc 33 34 (-0.267878401204578 0.646715673358918 0)
arc 34 35 (0.267878403526154 0.64671567239729 0)
arc 35 28 (0.646715672878104 0.267878402365366 0)
arc 36 38 (0.923879532683006 -0.382683431950523 0)
arc 37 39 (0.382683433608791 -0.923879531996129 0)
arc 39 41 (-0.382683430292254 -0.923879533369883 0)
arc 40 42 (-0.923879531309252 -0.382683435267059 0)
arc 42 44 (-0.923879531309252 0.382683435267059 0)
arc 43 45 (-0.382683430292254 0.923879533369883 0)
arc 45 47 (0.382683433608791 0.923879531996129 0)
arc 46 36 (0.923879532683006 0.382683431950523 0)
arc 48 50 (0.184775906536601 -0.0765366863901046 0.1)
arc 50 52 (0.0765366867217582 -0.184775906399226 0.1)
arc 51 53 (-0.0765366860584508 -0.184775906673977 0.1)
arc 53 55 (-0.18477590626185 -0.0765366870534118 0.1)
arc 54 56 (-0.18477590626185 0.0765366870534118 0.1)
arc 56 58 (-0.0765366860584508 0.184775906673977 0.1)
arc 57 59 (0.0765366867217582 0.184775906399226 0.1)
arc 59 49 (0.184775906536601 0.0765366863901046 0.1)
arc 60 61 (0.461939766341503 -0.191341715975262 0.1)
arc 61 62 (0.191341716804395 -0.461939765998065 0.1)
arc 62 63 (-0.191341715146127 -0.461939766684942 0.1)
arc 63 64 (-0.461939765654626 -0.19134171763353 0.1)
arc 64 65 (-0.461939765654626 0.19134171763353 0.1)
arc 65 66 (-0.191341715146127 0.461939766684942 0.1)
arc 66 67 (0.191341716804395 0.461939765998065 0.1)
arc 67 60 (0.461939766341503 0.191341715975262 0.1)
arc 68 69 (0.554327719609804 -0.229610059170314 0.1)
arc 69 70 (0.229610060165275 -0.554327719197677 0.1)
arc 70 71 (-0.229610058175352 -0.55432772002193 0.1)
arc 71 72 (-0.554327718785551 -0.229610061160235 0.1)
arc 72 73 (-0.554327718785551 0.229610061160235 0.1)
arc 73 74 (-0.229610058175352 0.55432772002193 0.1)
arc 74 75 (0.229610060165275 0.554327719197677 0.1)
arc 75 68 (0.554327719609804 0.229610059170314 0.1)
arc 76 77 (0.646715672878104 -0.267878402365366 0.1)
arc 77 78 (0.267878403526154 -0.64671567239729 0.1)
arc 78 79 (-0.267878401204578 -0.646715673358918 0.1)
arc 79 80 (-0.646715671916476 -0.267878404686941 0.1)
arc 80 81 (-0.646715671916476 0.267878404686941 0.1)
arc 81 82 (-0.267878401204578 0.646715673358918 0.1)
arc 82 83 (0.267878403526154 0.64671567239729 0.1)
arc 83 76 (0.646715672878104 0.267878402365366 0.1)
arc 84 86 (0.923879532683006 -0.382683431950523 0.1)
arc 85 87 (0.382683433608791 -0.923879531996129 0.1)
arc 87 89 (-0.382683430292254 -0.923879533369883 0.1)
arc 88 90 (-0.923879531309252 -0.382683435267059 0.1)
arc 90 92 (-0.923879531309252 0.382683435267059 0.1)
arc 91 93 (-0.382683430292254 0.923879533369883 0.1)
arc 93 95 (0.382683433608791 0.923879531996129 0.1)
arc 94 84 (0.923879532683006 0.382683431950523 0.1)
);
patches
(
wall rotor
(
(0 2 50 48)
(2 4 52 50)
(3 5 53 51)
(5 7 55 53)
(6 8 56 54)
(8 10 58 56)
(9 11 59 57)
(11 1 49 59)
(0 12 60 48)
(1 12 60 49)
(3 14 62 51)
(4 14 62 52)
(6 16 64 54)
(7 16 64 55)
(9 18 66 57)
(10 18 66 58)
)
wall stator
(
(36 38 86 84)
(37 39 87 85)
(39 41 89 87)
(40 42 90 88)
(42 44 92 90)
(43 45 93 91)
(45 47 95 93)
(46 36 84 94)
(37 29 77 85)
(38 29 77 86)
(40 31 79 88)
(41 31 79 89)
(43 33 81 91)
(44 33 81 92)
(46 35 83 94)
(47 35 83 95)
)
empty front
(
(48 50 61 60)
(50 52 62 61)
(51 53 63 62)
(53 55 64 63)
(54 56 65 64)
(56 58 66 65)
(57 59 67 66)
(59 49 60 67)
(60 61 69 68)
(61 62 70 69)
(62 63 71 70)
(63 64 72 71)
(64 65 73 72)
(65 66 74 73)
(66 67 75 74)
(67 60 68 75)
(68 69 77 76)
(69 70 78 77)
(70 71 79 78)
(71 72 80 79)
(72 73 81 80)
(73 74 82 81)
(74 75 83 82)
(75 68 76 83)
(76 77 86 84)
(77 78 87 85)
(78 79 89 87)
(79 80 90 88)
(80 81 92 90)
(81 82 93 91)
(82 83 95 93)
(83 76 84 94)
)
empty back
(
(0 12 13 2)
(2 13 14 4)
(3 14 15 5)
(5 15 16 7)
(6 16 17 8)
(8 17 18 10)
(9 18 19 11)
(11 19 12 1)
(12 20 21 13)
(13 21 22 14)
(14 22 23 15)
(15 23 24 16)
(16 24 25 17)
(17 25 26 18)
(18 26 27 19)
(19 27 20 12)
(20 28 29 21)
(21 29 30 22)
(22 30 31 23)
(23 31 32 24)
(24 32 33 25)
(25 33 34 26)
(26 34 35 27)
(27 35 28 20)
(28 36 38 29)
(29 37 39 30)
(30 39 41 31)
(31 40 42 32)
(32 42 44 33)
(33 43 45 34)
(34 45 47 35)
(35 46 36 28)
)
);
// ************************************************************************* //

View File

@ -0,0 +1,818 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 |
| \\ / A nd | Web: http://www.OpenFOAM.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 'print ($1)')])
define(VCOUNT, 0)
define(vlabel, [[// ]Vertex $1 = VCOUNT define($1, VCOUNT)define([VCOUNT], incr(VCOUNT))])
define(pi, 3.14159265)
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 0.1;
// Hub radius
define(r, 0.2)
// Impeller-tip radius
define(rb, 0.5)
// Baffle-tip radius
define(Rb, 0.7)
// Tank radius
define(R, 1)
// MRF region radius
define(ri, calc(0.5*(rb + Rb)))
// Thickness of 2D slab
define(z, 0.1)
// Base z
define(Zb, 0)
// Top z
define(Zt, calc(Zb + z))
// Number of cells radially between hub and impeller tip
define(Nr, 12)
// Number of cells radially in each of the two regions between
// impeller and baffle tips
define(Ni, 4)
// Number of cells radially between baffle tip and tank
define(NR, 12)
// Number of cells azimuthally in each of the 8 blocks
define(Na, 12)
// Number of cells in the thickness of the slab
define(Nz, 1)
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
define(vert, (x$1$2 y$1$2 $3))
define(evert, (ex$1$2 ey$1$2 $3))
define(a0, 0)
define(a1, -45)
define(a2, -90)
define(a3, -135)
define(a4, 180)
define(a5, 135)
define(a6, 90)
define(a7, 45)
define(ea0, -22.5)
define(ea1, -67.5)
define(ea2, -112.5)
define(ea3, -157.5)
define(ea4, 157.5)
define(ea5, 112.5)
define(ea6, 67.5)
define(ea7, 22.5)
define(ca0, calc(cos((pi/180)*a0)))
define(ca1, calc(cos((pi/180)*a1)))
define(ca2, calc(cos((pi/180)*a2)))
define(ca3, calc(cos((pi/180)*a3)))
define(ca4, calc(cos((pi/180)*a4)))
define(ca5, calc(cos((pi/180)*a5)))
define(ca6, calc(cos((pi/180)*a6)))
define(ca7, calc(cos((pi/180)*a7)))
define(sa0, calc(sin((pi/180)*a0)))
define(sa1, calc(sin((pi/180)*a1)))
define(sa2, calc(sin((pi/180)*a2)))
define(sa3, calc(sin((pi/180)*a3)))
define(sa4, calc(sin((pi/180)*a4)))
define(sa5, calc(sin((pi/180)*a5)))
define(sa6, calc(sin((pi/180)*a6)))
define(sa7, calc(sin((pi/180)*a7)))
define(cea0, calc(cos((pi/180)*ea0)))
define(cea1, calc(cos((pi/180)*ea1)))
define(cea2, calc(cos((pi/180)*ea2)))
define(cea3, calc(cos((pi/180)*ea3)))
define(cea4, calc(cos((pi/180)*ea4)))
define(cea5, calc(cos((pi/180)*ea5)))
define(cea6, calc(cos((pi/180)*ea6)))
define(cea7, calc(cos((pi/180)*ea7)))
define(sea0, calc(sin((pi/180)*ea0)))
define(sea1, calc(sin((pi/180)*ea1)))
define(sea2, calc(sin((pi/180)*ea2)))
define(sea3, calc(sin((pi/180)*ea3)))
define(sea4, calc(sin((pi/180)*ea4)))
define(sea5, calc(sin((pi/180)*ea5)))
define(sea6, calc(sin((pi/180)*ea6)))
define(sea7, calc(sin((pi/180)*ea7)))
define(x00, calc(r*ca0))
define(x01, calc(r*ca1))
define(x02, calc(r*ca2))
define(x03, calc(r*ca3))
define(x04, calc(r*ca4))
define(x05, calc(r*ca5))
define(x06, calc(r*ca6))
define(x07, calc(r*ca7))
define(x10, calc(rb*ca0))
define(x11, calc(rb*ca1))
define(x12, calc(rb*ca2))
define(x13, calc(rb*ca3))
define(x14, calc(rb*ca4))
define(x15, calc(rb*ca5))
define(x16, calc(rb*ca6))
define(x17, calc(rb*ca7))
define(x20, calc(ri*ca0))
define(x21, calc(ri*ca1))
define(x22, calc(ri*ca2))
define(x23, calc(ri*ca3))
define(x24, calc(ri*ca4))
define(x25, calc(ri*ca5))
define(x26, calc(ri*ca6))
define(x27, calc(ri*ca7))
define(x30, calc(Rb*ca0))
define(x31, calc(Rb*ca1))
define(x32, calc(Rb*ca2))
define(x33, calc(Rb*ca3))
define(x34, calc(Rb*ca4))
define(x35, calc(Rb*ca5))
define(x36, calc(Rb*ca6))
define(x37, calc(Rb*ca7))
define(x40, calc(R*ca0))
define(x41, calc(R*ca1))
define(x42, calc(R*ca2))
define(x43, calc(R*ca3))
define(x44, calc(R*ca4))
define(x45, calc(R*ca5))
define(x46, calc(R*ca6))
define(x47, calc(R*ca7))
define(y00, calc(r*sa0))
define(y01, calc(r*sa1))
define(y02, calc(r*sa2))
define(y03, calc(r*sa3))
define(y04, calc(r*sa4))
define(y05, calc(r*sa5))
define(y06, calc(r*sa6))
define(y07, calc(r*sa7))
define(y10, calc(rb*sa0))
define(y11, calc(rb*sa1))
define(y12, calc(rb*sa2))
define(y13, calc(rb*sa3))
define(y14, calc(rb*sa4))
define(y15, calc(rb*sa5))
define(y16, calc(rb*sa6))
define(y17, calc(rb*sa7))
define(y20, calc(ri*sa0))
define(y21, calc(ri*sa1))
define(y22, calc(ri*sa2))
define(y23, calc(ri*sa3))
define(y24, calc(ri*sa4))
define(y25, calc(ri*sa5))
define(y26, calc(ri*sa6))
define(y27, calc(ri*sa7))
define(y30, calc(Rb*sa0))
define(y31, calc(Rb*sa1))
define(y32, calc(Rb*sa2))
define(y33, calc(Rb*sa3))
define(y34, calc(Rb*sa4))
define(y35, calc(Rb*sa5))
define(y36, calc(Rb*sa6))
define(y37, calc(Rb*sa7))
define(y40, calc(R*sa0))
define(y41, calc(R*sa1))
define(y42, calc(R*sa2))
define(y43, calc(R*sa3))
define(y44, calc(R*sa4))
define(y45, calc(R*sa5))
define(y46, calc(R*sa6))
define(y47, calc(R*sa7))
define(ex00, calc(r*cea0))
define(ex01, calc(r*cea1))
define(ex02, calc(r*cea2))
define(ex03, calc(r*cea3))
define(ex04, calc(r*cea4))
define(ex05, calc(r*cea5))
define(ex06, calc(r*cea6))
define(ex07, calc(r*cea7))
define(ex10, calc(rb*cea0))
define(ex11, calc(rb*cea1))
define(ex12, calc(rb*cea2))
define(ex13, calc(rb*cea3))
define(ex14, calc(rb*cea4))
define(ex15, calc(rb*cea5))
define(ex16, calc(rb*cea6))
define(ex17, calc(rb*cea7))
define(ex20, calc(ri*cea0))
define(ex21, calc(ri*cea1))
define(ex22, calc(ri*cea2))
define(ex23, calc(ri*cea3))
define(ex24, calc(ri*cea4))
define(ex25, calc(ri*cea5))
define(ex26, calc(ri*cea6))
define(ex27, calc(ri*cea7))
define(ex30, calc(Rb*cea0))
define(ex31, calc(Rb*cea1))
define(ex32, calc(Rb*cea2))
define(ex33, calc(Rb*cea3))
define(ex34, calc(Rb*cea4))
define(ex35, calc(Rb*cea5))
define(ex36, calc(Rb*cea6))
define(ex37, calc(Rb*cea7))
define(ex40, calc(R*cea0))
define(ex41, calc(R*cea1))
define(ex42, calc(R*cea2))
define(ex43, calc(R*cea3))
define(ex44, calc(R*cea4))
define(ex45, calc(R*cea5))
define(ex46, calc(R*cea6))
define(ex47, calc(R*cea7))
define(ey00, calc(r*sea0))
define(ey01, calc(r*sea1))
define(ey02, calc(r*sea2))
define(ey03, calc(r*sea3))
define(ey04, calc(r*sea4))
define(ey05, calc(r*sea5))
define(ey06, calc(r*sea6))
define(ey07, calc(r*sea7))
define(ey10, calc(rb*sea0))
define(ey11, calc(rb*sea1))
define(ey12, calc(rb*sea2))
define(ey13, calc(rb*sea3))
define(ey14, calc(rb*sea4))
define(ey15, calc(rb*sea5))
define(ey16, calc(rb*sea6))
define(ey17, calc(rb*sea7))
define(ey20, calc(ri*sea0))
define(ey21, calc(ri*sea1))
define(ey22, calc(ri*sea2))
define(ey23, calc(ri*sea3))
define(ey24, calc(ri*sea4))
define(ey25, calc(ri*sea5))
define(ey26, calc(ri*sea6))
define(ey27, calc(ri*sea7))
define(ey30, calc(Rb*sea0))
define(ey31, calc(Rb*sea1))
define(ey32, calc(Rb*sea2))
define(ey33, calc(Rb*sea3))
define(ey34, calc(Rb*sea4))
define(ey35, calc(Rb*sea5))
define(ey36, calc(Rb*sea6))
define(ey37, calc(Rb*sea7))
define(ey40, calc(R*sea0))
define(ey41, calc(R*sea1))
define(ey42, calc(R*sea2))
define(ey43, calc(R*sea3))
define(ey44, calc(R*sea4))
define(ey45, calc(R*sea5))
define(ey46, calc(R*sea6))
define(ey47, calc(R*sea7))
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
vertices
(
vert(0, 0, Zb) vlabel(r0b)
vert(0, 0, Zb) vlabel(r0sb)
vert(0, 1, Zb) vlabel(r1b)
vert(0, 2, Zb) vlabel(r2b)
vert(0, 2, Zb) vlabel(r2sb)
vert(0, 3, Zb) vlabel(r3b)
vert(0, 4, Zb) vlabel(r4b)
vert(0, 4, Zb) vlabel(r4sb)
vert(0, 5, Zb) vlabel(r5b)
vert(0, 6, Zb) vlabel(r6b)
vert(0, 6, Zb) vlabel(r6sb)
vert(0, 7, Zb) vlabel(r7b)
vert(1, 0, Zb) vlabel(rb0b)
vert(1, 1, Zb) vlabel(rb1b)
vert(1, 2, Zb) vlabel(rb2b)
vert(1, 3, Zb) vlabel(rb3b)
vert(1, 4, Zb) vlabel(rb4b)
vert(1, 5, Zb) vlabel(rb5b)
vert(1, 6, Zb) vlabel(rb6b)
vert(1, 7, Zb) vlabel(rb7b)
vert(2, 0, Zb) vlabel(ri0b)
vert(2, 1, Zb) vlabel(ri1b)
vert(2, 2, Zb) vlabel(ri2b)
vert(2, 3, Zb) vlabel(ri3b)
vert(2, 4, Zb) vlabel(ri4b)
vert(2, 5, Zb) vlabel(ri5b)
vert(2, 6, Zb) vlabel(ri6b)
vert(2, 7, Zb) vlabel(ri7b)
vert(3, 0, Zb) vlabel(Rb0b)
vert(3, 1, Zb) vlabel(Rb1b)
vert(3, 2, Zb) vlabel(Rb2b)
vert(3, 3, Zb) vlabel(Rb3b)
vert(3, 4, Zb) vlabel(Rb4b)
vert(3, 5, Zb) vlabel(Rb5b)
vert(3, 6, Zb) vlabel(Rb6b)
vert(3, 7, Zb) vlabel(Rb7b)
vert(4, 0, Zb) vlabel(R0b)
vert(4, 1, Zb) vlabel(R1b)
vert(4, 1, Zb) vlabel(R1sb)
vert(4, 2, Zb) vlabel(R2b)
vert(4, 3, Zb) vlabel(R3b)
vert(4, 3, Zb) vlabel(R3sb)
vert(4, 4, Zb) vlabel(R4b)
vert(4, 5, Zb) vlabel(R5b)
vert(4, 5, Zb) vlabel(R5sb)
vert(4, 6, Zb) vlabel(R6b)
vert(4, 7, Zb) vlabel(R7b)
vert(4, 7, Zb) vlabel(R7sb)
vert(0, 0, Zt) vlabel(r0t)
vert(0, 0, Zt) vlabel(r0st)
vert(0, 1, Zt) vlabel(r1t)
vert(0, 2, Zt) vlabel(r2t)
vert(0, 2, Zt) vlabel(r2st)
vert(0, 3, Zt) vlabel(r3t)
vert(0, 4, Zt) vlabel(r4t)
vert(0, 4, Zt) vlabel(r4st)
vert(0, 5, Zt) vlabel(r5t)
vert(0, 6, Zt) vlabel(r6t)
vert(0, 6, Zt) vlabel(r6st)
vert(0, 7, Zt) vlabel(r7t)
vert(1, 0, Zt) vlabel(rb0t)
vert(1, 1, Zt) vlabel(rb1t)
vert(1, 2, Zt) vlabel(rb2t)
vert(1, 3, Zt) vlabel(rb3t)
vert(1, 4, Zt) vlabel(rb4t)
vert(1, 5, Zt) vlabel(rb5t)
vert(1, 6, Zt) vlabel(rb6t)
vert(1, 7, Zt) vlabel(rb7t)
vert(2, 0, Zt) vlabel(ri0t)
vert(2, 1, Zt) vlabel(ri1t)
vert(2, 2, Zt) vlabel(ri2t)
vert(2, 3, Zt) vlabel(ri3t)
vert(2, 4, Zt) vlabel(ri4t)
vert(2, 5, Zt) vlabel(ri5t)
vert(2, 6, Zt) vlabel(ri6t)
vert(2, 7, Zt) vlabel(ri7t)
vert(3, 0, Zt) vlabel(Rb0t)
vert(3, 1, Zt) vlabel(Rb1t)
vert(3, 2, Zt) vlabel(Rb2t)
vert(3, 3, Zt) vlabel(Rb3t)
vert(3, 4, Zt) vlabel(Rb4t)
vert(3, 5, Zt) vlabel(Rb5t)
vert(3, 6, Zt) vlabel(Rb6t)
vert(3, 7, Zt) vlabel(Rb7t)
vert(4, 0, Zt) vlabel(R0t)
vert(4, 1, Zt) vlabel(R1t)
vert(4, 1, Zt) vlabel(R1st)
vert(4, 2, Zt) vlabel(R2t)
vert(4, 3, Zt) vlabel(R3t)
vert(4, 3, Zt) vlabel(R3st)
vert(4, 4, Zt) vlabel(R4t)
vert(4, 5, Zt) vlabel(R5t)
vert(4, 5, Zt) vlabel(R5st)
vert(4, 6, Zt) vlabel(R6t)
vert(4, 7, Zt) vlabel(R7t)
vert(4, 7, Zt) vlabel(R7st)
);
blocks
(
// block0
hex2D(r0, r1, rb1, rb0)
rotor
(Na Nr Nz)
simpleGrading (1 1 1)
// block1
hex2D(r1, r2s, rb2, rb1)
rotor
(Na Nr Nz)
simpleGrading (1 1 1)
// block2
hex2D(r2, r3, rb3, rb2)
rotor
(Na Nr Nz)
simpleGrading (1 1 1)
// block3
hex2D(r3, r4s, rb4, rb3)
rotor
(Na Nr Nz)
simpleGrading (1 1 1)
// block4
hex2D(r4, r5, rb5, rb4)
rotor
(Na Nr Nz)
simpleGrading (1 1 1)
// block5
hex2D(r5, r6s, rb6, rb5)
rotor
(Na Nr Nz)
simpleGrading (1 1 1)
// block6
hex2D(r6, r7, rb7, rb6)
rotor
(Na Nr Nz)
simpleGrading (1 1 1)
// block7
hex2D(r7, r0s, rb0, rb7)
rotor
(Na Nr Nz)
simpleGrading (1 1 1)
// block0
hex2D(rb0, rb1, ri1, ri0)
rotor
(Na Ni Nz)
simpleGrading (1 1 1)
// block1
hex2D(rb1, rb2, ri2, ri1)
rotor
(Na Ni Nz)
simpleGrading (1 1 1)
// block2
hex2D(rb2, rb3, ri3, ri2)
rotor
(Na Ni Nz)
simpleGrading (1 1 1)
// block3
hex2D(rb3, rb4, ri4, ri3)
rotor
(Na Ni Nz)
simpleGrading (1 1 1)
// block4
hex2D(rb4, rb5, ri5, ri4)
rotor
(Na Ni Nz)
simpleGrading (1 1 1)
// block5
hex2D(rb5, rb6, ri6, ri5)
rotor
(Na Ni Nz)
simpleGrading (1 1 1)
// block6
hex2D(rb6, rb7, ri7, ri6)
rotor
(Na Ni Nz)
simpleGrading (1 1 1)
// block7
hex2D(rb7, rb0, ri0, ri7)
rotor
(Na Ni Nz)
simpleGrading (1 1 1)
// block0
hex2D(ri0, ri1, Rb1, Rb0)
(Na Ni Nz)
simpleGrading (1 1 1)
// block1
hex2D(ri1, ri2, Rb2, Rb1)
(Na Ni Nz)
simpleGrading (1 1 1)
// block2
hex2D(ri2, ri3, Rb3, Rb2)
(Na Ni Nz)
simpleGrading (1 1 1)
// block3
hex2D(ri3, ri4, Rb4, Rb3)
(Na Ni Nz)
simpleGrading (1 1 1)
// block4
hex2D(ri4, ri5, Rb5, Rb4)
(Na Ni Nz)
simpleGrading (1 1 1)
// block5
hex2D(ri5, ri6, Rb6, Rb5)
(Na Ni Nz)
simpleGrading (1 1 1)
// block6
hex2D(ri6, ri7, Rb7, Rb6)
(Na Ni Nz)
simpleGrading (1 1 1)
// block7
hex2D(ri7, ri0, Rb0, Rb7)
(Na Ni Nz)
simpleGrading (1 1 1)
// block0
hex2D(Rb0, Rb1, R1s, R0)
(Na NR Nz)
simpleGrading (1 1 1)
// block1
hex2D(Rb1, Rb2, R2, R1)
(Na NR Nz)
simpleGrading (1 1 1)
// block2
hex2D(Rb2, Rb3, R3s, R2)
(Na NR Nz)
simpleGrading (1 1 1)
// block3
hex2D(Rb3, Rb4, R4, R3)
(Na NR Nz)
simpleGrading (1 1 1)
// block4
hex2D(Rb4, Rb5, R5s, R4)
(Na NR Nz)
simpleGrading (1 1 1)
// block5
hex2D(Rb5, Rb6, R6, R5)
(Na NR Nz)
simpleGrading (1 1 1)
// block6
hex2D(Rb6, Rb7, R7s, R6)
(Na NR Nz)
simpleGrading (1 1 1)
// block7
hex2D(Rb7, Rb0, R0, R7)
(Na NR Nz)
simpleGrading (1 1 1)
);
edges
(
arc r0b r1b evert(0, 0, Zb)
arc r1b r2sb evert(0, 1, Zb)
arc r2b r3b evert(0, 2, Zb)
arc r3b r4sb evert(0, 3, Zb)
arc r4b r5b evert(0, 4, Zb)
arc r5b r6sb evert(0, 5, Zb)
arc r6b r7b evert(0, 6, Zb)
arc r7b r0sb evert(0, 7, Zb)
arc rb0b rb1b evert(1, 0, Zb)
arc rb1b rb2b evert(1, 1, Zb)
arc rb2b rb3b evert(1, 2, Zb)
arc rb3b rb4b evert(1, 3, Zb)
arc rb4b rb5b evert(1, 4, Zb)
arc rb5b rb6b evert(1, 5, Zb)
arc rb6b rb7b evert(1, 6, Zb)
arc rb7b rb0b evert(1, 7, Zb)
arc ri0b ri1b evert(2, 0, Zb)
arc ri1b ri2b evert(2, 1, Zb)
arc ri2b ri3b evert(2, 2, Zb)
arc ri3b ri4b evert(2, 3, Zb)
arc ri4b ri5b evert(2, 4, Zb)
arc ri5b ri6b evert(2, 5, Zb)
arc ri6b ri7b evert(2, 6, Zb)
arc ri7b ri0b evert(2, 7, Zb)
arc Rb0b Rb1b evert(3, 0, Zb)
arc Rb1b Rb2b evert(3, 1, Zb)
arc Rb2b Rb3b evert(3, 2, Zb)
arc Rb3b Rb4b evert(3, 3, Zb)
arc Rb4b Rb5b evert(3, 4, Zb)
arc Rb5b Rb6b evert(3, 5, Zb)
arc Rb6b Rb7b evert(3, 6, Zb)
arc Rb7b Rb0b evert(3, 7, Zb)
arc R0b R1sb evert(4, 0, Zb)
arc R1b R2b evert(4, 1, Zb)
arc R2b R3sb evert(4, 2, Zb)
arc R3b R4b evert(4, 3, Zb)
arc R4b R5sb evert(4, 4, Zb)
arc R5b R6b evert(4, 5, Zb)
arc R6b R7sb evert(4, 6, Zb)
arc R7b R0b evert(4, 7, Zb)
arc r0t r1t evert(0, 0, Zt)
arc r1t r2st evert(0, 1, Zt)
arc r2t r3t evert(0, 2, Zt)
arc r3t r4st evert(0, 3, Zt)
arc r4t r5t evert(0, 4, Zt)
arc r5t r6st evert(0, 5, Zt)
arc r6t r7t evert(0, 6, Zt)
arc r7t r0st evert(0, 7, Zt)
arc rb0t rb1t evert(1, 0, Zt)
arc rb1t rb2t evert(1, 1, Zt)
arc rb2t rb3t evert(1, 2, Zt)
arc rb3t rb4t evert(1, 3, Zt)
arc rb4t rb5t evert(1, 4, Zt)
arc rb5t rb6t evert(1, 5, Zt)
arc rb6t rb7t evert(1, 6, Zt)
arc rb7t rb0t evert(1, 7, Zt)
arc ri0t ri1t evert(2, 0, Zt)
arc ri1t ri2t evert(2, 1, Zt)
arc ri2t ri3t evert(2, 2, Zt)
arc ri3t ri4t evert(2, 3, Zt)
arc ri4t ri5t evert(2, 4, Zt)
arc ri5t ri6t evert(2, 5, Zt)
arc ri6t ri7t evert(2, 6, Zt)
arc ri7t ri0t evert(2, 7, Zt)
arc Rb0t Rb1t evert(3, 0, Zt)
arc Rb1t Rb2t evert(3, 1, Zt)
arc Rb2t Rb3t evert(3, 2, Zt)
arc Rb3t Rb4t evert(3, 3, Zt)
arc Rb4t Rb5t evert(3, 4, Zt)
arc Rb5t Rb6t evert(3, 5, Zt)
arc Rb6t Rb7t evert(3, 6, Zt)
arc Rb7t Rb0t evert(3, 7, Zt)
arc R0t R1st evert(4, 0, Zt)
arc R1t R2t evert(4, 1, Zt)
arc R2t R3st evert(4, 2, Zt)
arc R3t R4t evert(4, 3, Zt)
arc R4t R5st evert(4, 4, Zt)
arc R5t R6t evert(4, 5, Zt)
arc R6t R7st evert(4, 6, Zt)
arc R7t R0t evert(4, 7, Zt)
);
patches
(
wall rotor
(
quad2D(r0, r1)
quad2D(r1, r2s)
quad2D(r2, r3)
quad2D(r3, r4s)
quad2D(r4, r5)
quad2D(r5, r6s)
quad2D(r6, r7)
quad2D(r7, r0s)
quad2D(r0, rb0)
quad2D(r0s, rb0)
quad2D(r2, rb2)
quad2D(r2s, rb2)
quad2D(r4, rb4)
quad2D(r4s, rb4)
quad2D(r6, rb6)
quad2D(r6s, rb6)
)
wall stator
(
quad2D(R0, R1s)
quad2D(R1, R2)
quad2D(R2, R3s)
quad2D(R3, R4)
quad2D(R4, R5s)
quad2D(R5, R6)
quad2D(R6, R7s)
quad2D(R7, R0)
quad2D(R1, Rb1)
quad2D(R1s, Rb1)
quad2D(R3, Rb3)
quad2D(R3s, Rb3)
quad2D(R5, Rb5)
quad2D(R5s, Rb5)
quad2D(R7, Rb7)
quad2D(R7s, Rb7)
)
empty front
(
frontQuad(r0, r1, rb1, rb0)
frontQuad(r1, r2s, rb2, rb1)
frontQuad(r2, r3, rb3, rb2)
frontQuad(r3, r4s, rb4, rb3)
frontQuad(r4, r5, rb5, rb4)
frontQuad(r5, r6s, rb6, rb5)
frontQuad(r6, r7, rb7, rb6)
frontQuad(r7, r0s, rb0, rb7)
frontQuad(rb0, rb1, ri1, ri0)
frontQuad(rb1, rb2, ri2, ri1)
frontQuad(rb2, rb3, ri3, ri2)
frontQuad(rb3, rb4, ri4, ri3)
frontQuad(rb4, rb5, ri5, ri4)
frontQuad(rb5, rb6, ri6, ri5)
frontQuad(rb6, rb7, ri7, ri6)
frontQuad(rb7, rb0, ri0, ri7)
frontQuad(ri0, ri1, Rb1, Rb0)
frontQuad(ri1, ri2, Rb2, Rb1)
frontQuad(ri2, ri3, Rb3, Rb2)
frontQuad(ri3, ri4, Rb4, Rb3)
frontQuad(ri4, ri5, Rb5, Rb4)
frontQuad(ri5, ri6, Rb6, Rb5)
frontQuad(ri6, ri7, Rb7, Rb6)
frontQuad(ri7, ri0, Rb0, Rb7)
frontQuad(Rb0, Rb1, R1s, R0)
frontQuad(Rb1, Rb2, R2, R1)
frontQuad(Rb2, Rb3, R3s, R2)
frontQuad(Rb3, Rb4, R4, R3)
frontQuad(Rb4, Rb5, R5s, R4)
frontQuad(Rb5, Rb6, R6, R5)
frontQuad(Rb6, Rb7, R7s, R6)
frontQuad(Rb7, Rb0, R0, R7)
)
empty back
(
backQuad(r0, r1, rb1, rb0)
backQuad(r1, r2s, rb2, rb1)
backQuad(r2, r3, rb3, rb2)
backQuad(r3, r4s, rb4, rb3)
backQuad(r4, r5, rb5, rb4)
backQuad(r5, r6s, rb6, rb5)
backQuad(r6, r7, rb7, rb6)
backQuad(r7, r0s, rb0, rb7)
backQuad(rb0, rb1, ri1, ri0)
backQuad(rb1, rb2, ri2, ri1)
backQuad(rb2, rb3, ri3, ri2)
backQuad(rb3, rb4, ri4, ri3)
backQuad(rb4, rb5, ri5, ri4)
backQuad(rb5, rb6, ri6, ri5)
backQuad(rb6, rb7, ri7, ri6)
backQuad(rb7, rb0, ri0, ri7)
backQuad(ri0, ri1, Rb1, Rb0)
backQuad(ri1, ri2, Rb2, Rb1)
backQuad(ri2, ri3, Rb3, Rb2)
backQuad(ri3, ri4, Rb4, Rb3)
backQuad(ri4, ri5, Rb5, Rb4)
backQuad(ri5, ri6, Rb6, Rb5)
backQuad(ri6, ri7, Rb7, Rb6)
backQuad(ri7, ri0, Rb0, Rb7)
backQuad(Rb0, Rb1, R1s, R0)
backQuad(Rb1, Rb2, R2, R1)
backQuad(Rb2, Rb3, R3s, R2)
backQuad(Rb3, Rb4, R4, R3)
backQuad(Rb4, Rb5, R5s, R4)
backQuad(Rb5, Rb6, R6, R5)
backQuad(Rb6, Rb7, R7s, R6)
backQuad(Rb7, Rb0, R0, R7)
)
);
// ************************************************************************* //

View File

@ -0,0 +1,46 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: dev |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class polyBoundaryMesh;
location "constant/polyMesh";
object boundary;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
4
(
rotor
{
type wall;
nFaces 192;
startFace 5952;
}
stator
{
type wall;
nFaces 192;
startFace 6144;
}
front
{
type empty;
nFaces 3072;
startFace 6336;
}
back
{
type empty;
nFaces 3072;
startFace 9408;
}
)
// ************************************************************************* //

View File

@ -0,0 +1,35 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object transportProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
phase1
{
transportModel Newtonian;
nu nu [ 0 2 -1 0 0 0 0 ] 1e-4;
rho rho [ 1 -3 0 0 0 0 0 ] 1000;
}
phase2
{
transportModel Newtonian;
nu nu [ 0 2 -1 0 0 0 0 ] 1e-4;
rho rho [ 1 -3 0 0 0 0 0 ] 500;
}
sigma sigma [ 1 0 -2 0 0 0 0 ] 0.05;
// ************************************************************************* //

View File

@ -0,0 +1,21 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object turbulenceProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
simulationType laminar;
// ************************************************************************* //

View File

@ -0,0 +1,11 @@
#!/bin/sh
m4 < constant/polyMesh/blockMeshDict.m4 > constant/polyMesh/blockMeshDict
blockMesh
cellSet
#- MRF determines its own faceZone if not supplied
#cp system/faceSetDict_rotorFaces system/faceSetDict
#faceSet
#cp system/faceSetDict_noBoundaryFaces system/faceSetDict
#faceSet
setsToZones -noFlipMap

View File

@ -0,0 +1,25 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object cellSetDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
name rotor;
action new;
topoSetSources ( zoneToCell { name rotor ; } );
// ************************************************************************* //

View File

@ -0,0 +1,53 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
startFrom startTime;
startTime 0;
stopAt endTime;
endTime 4;
deltaT 1e-3;
writeControl adjustableRunTime;
writeInterval 0.125;
purgeWrite 0;
writeFormat ascii;
writePrecision 6;
writeCompression uncompressed;
timeFormat general;
timePrecision 6;
runTimeModifiable yes;
adjustTimeStep yes;
maxCo 0.5;
maxDeltaT 1;
// ************************************************************************* //

View File

@ -0,0 +1,25 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object faceSetDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
name rotor;
action delete;
topoSetSources ( boundaryToFace { } );
// ************************************************************************* //

View File

@ -0,0 +1,25 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object faceSetDict_noBoundaryFaces;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
name rotor;
action delete;
topoSetSources ( boundaryToFace { } );
// ************************************************************************* //

View File

@ -0,0 +1,25 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object faceSetDict_rotorFaces;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
name rotor;
action new;
topoSetSources ( cellToFace { set rotor ; option all ; } );
// ************************************************************************* //

View File

@ -0,0 +1,61 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object fvSchemes;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
ddtSchemes
{
default Euler;
}
gradSchemes
{
default Gauss linear;
grad(U) Gauss linear;
grad(alpha1) Gauss linear;
}
divSchemes
{
div(rho*phi,U) Gauss linear;
div(phi,alpha) Gauss vanLeer;
div(phirb,alpha) Gauss interfaceCompression;
}
laplacianSchemes
{
default Gauss linear corrected;
}
interpolationSchemes
{
default linear;
}
snGradSchemes
{
default corrected;
}
fluxRequired
{
default no;
p ;
pcorr ;
alpha1 ;
}
// ************************************************************************* //

View File

@ -0,0 +1,66 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object fvSolution;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
solvers
{
pcorr
{
solver PCG;
preconditioner DIC;
tolerance 1e-10;
relTol 0;
}
p
{
solver PCG;
preconditioner DIC;
tolerance 1e-07;
relTol 0.05;
}
pFinal
{
solver PCG;
preconditioner DIC;
tolerance 1e-07;
relTol 0;
}
U
{
solver PBiCG;
preconditioner DILU;
tolerance 1e-06;
relTol 0;
}
}
PISO
{
momentumPredictor no;
nCorrectors 3;
nNonOrthogonalCorrectors 0;
nAlphaCorr 1;
nAlphaSubCycles 2;
cAlpha 1;
pRefCell 0;
pRefValue 0;
}
// ************************************************************************* //

View File

@ -0,0 +1,37 @@
/*--------------------------------*- C++ -*----------------------------------*\
| ========= | |
| \\ / F ield | OpenFOAM: The Open Source CFD Toolbox |
| \\ / O peration | Version: 1.5 |
| \\ / A nd | Web: www.OpenFOAM.org |
| \\/ M anipulation | |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object setFieldsDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
defaultFieldValues
(
volScalarFieldValue alpha1 0
volVectorFieldValue U (0 0 0)
);
regions
(
boxToCell
{
box (0 0 -1) (1 1 1);
fieldValues
(
volScalarFieldValue alpha1 1
);
}
);
// ************************************************************************* //