576 lines
13 KiB
C++
576 lines
13 KiB
C++
/*--------------------------------*- C++ -*----------------------------------*\
|
|
| ========= | |
|
|
| \\ / F ield | foam-extend: Open Source CFD |
|
|
| \\ / O peration | Version: 4.0 |
|
|
| \\ / 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)
|
|
);
|
|
}
|
|
);
|
|
|
|
// ************************************************************************* //
|