diff --git a/tutorials/incompressible/MRFSimpleFoam/axialTurbine/0_orig/U b/tutorials/incompressible/MRFSimpleFoam/axialTurbine/0_orig/U new file mode 100644 index 000000000..4bb8f4963 --- /dev/null +++ b/tutorials/incompressible/MRFSimpleFoam/axialTurbine/0_orig/U @@ -0,0 +1,117 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | foam-extend: Open Source CFD | +| \\ / O peration | Version: 3.0 | +| \\ / A nd | Web: http://www.extend-project.de | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volVectorField; + object U; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 1 -1 0 0 0 0]; + +internalField uniform (0 0 -1); + +boundaryField +{ + GVINLET + { + type fixedValue; + value uniform (0 0 -1); + } + GVOUTLET + { + type ggi; + } + GVCYCLIC1 + { + type cyclicGgi; + } + GVCYCLIC2 + { + type cyclicGgi; + } + GVBLADE + { + type fixedValue; + value uniform (0 0 0); + } + GVHUB + { + type rotatingWallVelocity; + origin (0 0 0); + axis (0 0 1); + omega -10; + value uniform (0 0 0); + } + GVSHROUD + { + type fixedValue; + value uniform (0 0 0); + } + RUINLET + { + type ggi; + } + RUOUTLET + { + type ggi; + } + 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; + } + 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); + } +} + +// ************************************************************************* // diff --git a/tutorials/incompressible/MRFSimpleFoam/axialTurbine/0_orig/epsilon b/tutorials/incompressible/MRFSimpleFoam/axialTurbine/0_orig/epsilon new file mode 100644 index 000000000..80544f408 --- /dev/null +++ b/tutorials/incompressible/MRFSimpleFoam/axialTurbine/0_orig/epsilon @@ -0,0 +1,138 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | foam-extend: Open Source CFD | +| \\ / O peration | Version: 3.0 | +| \\ / A nd | Web: http://www.extend-project.de | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + 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; + } + GVCYCLIC1 + { + type cyclicGgi; + } + GVCYCLIC2 + { + type cyclicGgi; + } + GVBLADE + { + type epsilonWallFunction; + Cmu 0.09; + kappa 0.41; + E 9.8; + value uniform 14.855; + } + GVHUB + { + type epsilonWallFunction; + Cmu 0.09; + kappa 0.41; + E 9.8; + value uniform 14.855; + } + GVSHROUD + { + type epsilonWallFunction; + Cmu 0.09; + kappa 0.41; + E 9.8; + value uniform 14.855; + } + RUINLET + { + type ggi; + } + RUOUTLET + { + type ggi; + } + RUCYCLIC1 + { + type cyclicGgi; + } + RUCYCLIC2 + { + type cyclicGgi; + } + RUBLADE + { + type epsilonWallFunction; + Cmu 0.09; + kappa 0.41; + E 9.8; + value uniform 14.855; + } + RUHUB + { + type epsilonWallFunction; + Cmu 0.09; + kappa 0.41; + E 9.8; + value uniform 14.855; + } + RUSHROUD + { + type epsilonWallFunction; + Cmu 0.09; + kappa 0.41; + E 9.8; + value uniform 14.855; + } + DTINLET + { + type ggi; + } + DTOUTLET + { + type zeroGradient; + } + DTCYCLIC1 + { + type cyclicGgi; + } + DTCYCLIC2 + { + type cyclicGgi; + } + DTHUB + { + type epsilonWallFunction; + Cmu 0.09; + kappa 0.41; + E 9.8; + value uniform 14.855; + } + DTSHROUD + { + type epsilonWallFunction; + Cmu 0.09; + kappa 0.41; + E 9.8; + value uniform 14.855; + } +} + +// ************************************************************************* // diff --git a/tutorials/incompressible/MRFSimpleFoam/axialTurbine/0_orig/k b/tutorials/incompressible/MRFSimpleFoam/axialTurbine/0_orig/k new file mode 100644 index 000000000..c98f2b7a6 --- /dev/null +++ b/tutorials/incompressible/MRFSimpleFoam/axialTurbine/0_orig/k @@ -0,0 +1,114 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | foam-extend: Open Source CFD | +| \\ / O peration | Version: 3.0 | +| \\ / A nd | Web: http://www.extend-project.de | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + 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; + } + GVCYCLIC1 + { + type cyclicGgi; + } + GVCYCLIC2 + { + type cyclicGgi; + } + GVBLADE + { + type kqRWallFunction; + value uniform 0.375; + } + GVHUB + { + type kqRWallFunction; + value uniform 0.375; + } + GVSHROUD + { + type kqRWallFunction; + value uniform 0.375; + } + RUINLET + { + type ggi; + } + RUOUTLET + { + type ggi; + } + RUCYCLIC1 + { + type cyclicGgi; + } + RUCYCLIC2 + { + type cyclicGgi; + } + RUBLADE + { + type kqRWallFunction; + value uniform 0.375; + } + RUHUB + { + type kqRWallFunction; + value uniform 0.375; + } + RUSHROUD + { + type kqRWallFunction; + value uniform 0.375; + } + DTINLET + { + type ggi; + } + DTOUTLET + { + type zeroGradient; + } + DTCYCLIC1 + { + type cyclicGgi; + } + DTCYCLIC2 + { + type cyclicGgi; + } + DTHUB + { + type kqRWallFunction; + value uniform 0.375; + } + DTSHROUD + { + type kqRWallFunction; + value uniform 0.375; + } +} + +// ************************************************************************* // diff --git a/tutorials/incompressible/MRFSimpleFoam/axialTurbine/0_orig/p b/tutorials/incompressible/MRFSimpleFoam/axialTurbine/0_orig/p new file mode 100644 index 000000000..e30ad0c58 --- /dev/null +++ b/tutorials/incompressible/MRFSimpleFoam/axialTurbine/0_orig/p @@ -0,0 +1,106 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | foam-extend: Open Source CFD | +| \\ / O peration | Version: 3.0 | +| \\ / A nd | Web: http://www.extend-project.de | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class volScalarField; + object p; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dimensions [0 2 -2 0 0 0 0]; + +internalField uniform 0; + +boundaryField +{ + GVINLET + { + type zeroGradient; + } + GVOUTLET + { + type ggi; + } + GVCYCLIC1 + { + type cyclicGgi; + } + GVCYCLIC2 + { + type cyclicGgi; + } + GVBLADE + { + type zeroGradient; + } + GVHUB + { + type zeroGradient; + } + GVSHROUD + { + type zeroGradient; + } + RUINLET + { + type ggi; + } + RUOUTLET + { + type ggi; + } + RUCYCLIC1 + { + type cyclicGgi; + } + RUCYCLIC2 + { + type cyclicGgi; + } + RUBLADE + { + type zeroGradient; + } + RUHUB + { + type zeroGradient; + } + RUSHROUD + { + type zeroGradient; + } + DTINLET + { + type ggi; + } + DTOUTLET + { + type fixedValue; + value uniform 0; + } + DTCYCLIC1 + { + type cyclicGgi; + } + DTCYCLIC2 + { + type cyclicGgi; + } + DTHUB + { + type zeroGradient; + } + DTSHROUD + { + type zeroGradient; + } +} + +// ************************************************************************* // diff --git a/tutorials/incompressible/MRFSimpleFoam/axialTurbine/Allclean b/tutorials/incompressible/MRFSimpleFoam/axialTurbine/Allclean new file mode 100755 index 000000000..848bded06 --- /dev/null +++ b/tutorials/incompressible/MRFSimpleFoam/axialTurbine/Allclean @@ -0,0 +1,4 @@ +#!/bin/sh + +( cd constant/polyMesh && rm -r boundary* blockMeshDict *Zones* faces* neighbour* owner* points* sets ) +rm -r 0 [1-9]* VTK log* processor* diff --git a/tutorials/incompressible/MRFSimpleFoam/axialTurbine/Allrun b/tutorials/incompressible/MRFSimpleFoam/axialTurbine/Allrun new file mode 100755 index 000000000..372f02301 --- /dev/null +++ b/tutorials/incompressible/MRFSimpleFoam/axialTurbine/Allrun @@ -0,0 +1,20 @@ +#!/bin/sh + +# Source tutorial run functions +. $WM_PROJECT_DIR/bin/tools/RunFunctions + +application="MRFSimpleFoam" +#application="simpleFoam" + +#Create the mesh: +./makeMesh + +#Fix constant/boundary: +changeDictionary + +# Set 0-directory and create GGI set: +cp -r 0_orig 0 +setSet -batch setBatchGgi +setsToZones -noFlipMap + +runApplication $application diff --git a/tutorials/incompressible/MRFSimpleFoam/axialTurbine/constant/MRFZones b/tutorials/incompressible/MRFSimpleFoam/axialTurbine/constant/MRFZones new file mode 100644 index 000000000..a03d5ab94 --- /dev/null +++ b/tutorials/incompressible/MRFSimpleFoam/axialTurbine/constant/MRFZones @@ -0,0 +1,31 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | foam-extend: Open Source CFD | +| \\ / O peration | Version: 3.0 | +| \\ / A nd | Web: http://www.extend-project.de | +| \\/ 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; + } +) + +// ************************************************************************* // diff --git a/tutorials/incompressible/MRFSimpleFoam/axialTurbine/constant/RASProperties b/tutorials/incompressible/MRFSimpleFoam/axialTurbine/constant/RASProperties new file mode 100644 index 000000000..c3a0dfa34 --- /dev/null +++ b/tutorials/incompressible/MRFSimpleFoam/axialTurbine/constant/RASProperties @@ -0,0 +1,191 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | foam-extend: Open Source CFD | +| \\ / O peration | Version: 3.0 | +| \\ / A nd | Web: http://www.extend-project.de | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object RASProperties; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +RASModel RNGkEpsilon; + +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; +} + +// ************************************************************************* // diff --git a/tutorials/incompressible/MRFSimpleFoam/axialTurbine/constant/polyMesh/blockMeshDict.m4 b/tutorials/incompressible/MRFSimpleFoam/axialTurbine/constant/polyMesh/blockMeshDict.m4 new file mode 100644 index 000000000..6c496ef29 --- /dev/null +++ b/tutorials/incompressible/MRFSimpleFoam/axialTurbine/constant/polyMesh/blockMeshDict.m4 @@ -0,0 +1,410 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | foam-extend: Open Source CFD | +| \\ / O peration | Version: 3.0 | +| \\ / A nd | Web: http://www.extend-project.de | +| \\/ 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, 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 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 0.2 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 0.4 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)) + ) +); + +patches +( + patch GVINLET + ( + quad2D(GV3r, GV3l) + ) + + ggi GVOUTLET + ( + quad2D(GV0l, GV0r) + ) + + cyclicGgi GVCYCLIC1 + ( + quad2D(GV1l, GV0l) + quad2D(GV3l, GV2l) + ) + + cyclicGgi GVCYCLIC2 + ( + quad2D(GV0r, GV1r) + quad2D(GV2r, GV3r) + ) + + //cyclic GVCYCLIC + //( + // quad2D(GV1l, GV0l) + // quad2D(GV3l, GV2l) + // quad2D(GV0r, GV1r) + // quad2D(GV2r, GV3r) + //) + + wall GVBLADE + ( + quad2D(GV2l, GV1l) + quad2D(GV1r, GV2r) + ) + + wall GVHUB + ( + backQuad(GV0l, GV0r, GV1r, GV1l) + backQuad(GV1l, GV1r, GV2r, GV2l) + backQuad(GV2l, GV2r, GV3r, GV3l) + ) + + wall GVSHROUD + ( + frontQuad(GV0l, GV0r, GV1r, GV1l) + frontQuad(GV1l, GV1r, GV2r, GV2l) + frontQuad(GV2l, GV2r, GV3r, GV3l) + ) + + ggi RUINLET + ( + quad2D(RU3r, RU3l) + ) + + ggi RUOUTLET + ( + quad2D(RU0l, RU0r) + ) + + cyclicGgi RUCYCLIC1 + ( + quad2D(RU1l, RU0l) + quad2D(RU3l, RU2l) + ) + + cyclicGgi RUCYCLIC2 + ( + quad2D(RU0r, RU1r) + quad2D(RU2r, RU3r) + ) + + //cyclic RUCYCLIC + //( + // quad2D(RU1l, RU0l) + // quad2D(RU3l, RU2l) + // quad2D(RU0r, RU1r) + // quad2D(RU2r, RU3r) + //) + + wall RUBLADE + ( + quad2D(RU2l, RU1l) + quad2D(RU1r, RU2r) + ) + + wall RUHUB + ( + backQuad(RU0l, RU0r, RU1r, RU1l) + backQuad(RU1l, RU1r, RU2r, RU2l) + backQuad(RU2l, RU2r, RU3r, RU3l) + ) + + wall RUSHROUD + ( + frontQuad(RU0l, RU0r, RU1r, RU1l) + frontQuad(RU1l, RU1r, RU2r, RU2l) + frontQuad(RU2l, RU2r, RU3r, RU3l) + ) + + ggi DTINLET + ( + quad2D(DT1r, DT1l) + ) + + patch DTOUTLET + ( + quad2D(DT0l, DT0r) + ) + + cyclicGgi DTCYCLIC1 + ( + quad2D(DT1l, DT0l) + ) + + cyclicGgi DTCYCLIC2 + ( + quad2D(DT0r, DT1r) + ) + + //cyclic DTCYCLIC + //( + // quad2D(DT1l, DT0l) + // quad2D(DT0r, DT1r) + //) + + wall DTHUB + ( + backQuad(DT0l, DT0r, DT1r, DT1l) + ) + + wall DTSHROUD + ( + frontQuad(DT0l, DT0r, DT1r, DT1l) + ) + +); + +// ************************************************************************* // diff --git a/tutorials/incompressible/MRFSimpleFoam/axialTurbine/constant/transportProperties b/tutorials/incompressible/MRFSimpleFoam/axialTurbine/constant/transportProperties new file mode 100644 index 000000000..f78fb2cf1 --- /dev/null +++ b/tutorials/incompressible/MRFSimpleFoam/axialTurbine/constant/transportProperties @@ -0,0 +1,37 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | foam-extend: Open Source CFD | +| \\ / O peration | Version: 3.0 | +| \\ / A nd | Web: http://www.extend-project.de | +| \\/ 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; +} + +// ************************************************************************* // diff --git a/tutorials/incompressible/MRFSimpleFoam/axialTurbine/makeMesh b/tutorials/incompressible/MRFSimpleFoam/axialTurbine/makeMesh new file mode 100755 index 000000000..1df400eb6 --- /dev/null +++ b/tutorials/incompressible/MRFSimpleFoam/axialTurbine/makeMesh @@ -0,0 +1,5 @@ +#!/bin/sh + +m4 < constant/polyMesh/blockMeshDict.m4 > constant/polyMesh/blockMeshDict +blockMesh +transformPoints -cylToCart "((0 0 0) (0 0 1) (1 0 0))" diff --git a/tutorials/incompressible/MRFSimpleFoam/axialTurbine/setBatchGgi b/tutorials/incompressible/MRFSimpleFoam/axialTurbine/setBatchGgi new file mode 100644 index 000000000..b12331405 --- /dev/null +++ b/tutorials/incompressible/MRFSimpleFoam/axialTurbine/setBatchGgi @@ -0,0 +1,11 @@ +faceSet GVCYCLIC1Zone new patchToFace GVCYCLIC1 +faceSet GVCYCLIC2Zone new patchToFace GVCYCLIC2 +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 diff --git a/tutorials/incompressible/MRFSimpleFoam/axialTurbine/system/changeDictionaryDict b/tutorials/incompressible/MRFSimpleFoam/axialTurbine/system/changeDictionaryDict new file mode 100644 index 000000000..4c3a2464d --- /dev/null +++ b/tutorials/incompressible/MRFSimpleFoam/axialTurbine/system/changeDictionaryDict @@ -0,0 +1,188 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | foam-extend: Open Source CFD | +| \\ / O peration | Version: 3.0 | +| \\ / A nd | Web: http://www.extend-project.de | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object changeDictionaryDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +dictionaryReplacement +{ + boundary + { + GVINLET + { + type patch; + } + GVCYCLIC1 + { + type cyclicGgi; + shadowPatch GVCYCLIC2; + zone GVCYCLIC1Zone; + bridgeOverlap false; + rotationAxis (0 0 1); + rotationAngle 72; + separationOffset (0 0 0); + } + GVCYCLIC2 + { + type cyclicGgi; + shadowPatch GVCYCLIC1; + zone GVCYCLIC2Zone; + bridgeOverlap false; + rotationAxis (0 0 1); + rotationAngle -72; + separationOffset (0 0 0); + } + RUCYCLIC1 + { + type cyclicGgi; + shadowPatch RUCYCLIC2; + zone RUCYCLIC1Zone; + bridgeOverlap false; + rotationAxis (0 0 1); + rotationAngle 72; + separationOffset (0 0 0); + } + RUCYCLIC2 + { + type cyclicGgi; + shadowPatch RUCYCLIC1; + zone RUCYCLIC2Zone; + bridgeOverlap false; + rotationAxis (0 0 1); + rotationAngle -72; + separationOffset (0 0 0); + } + DTCYCLIC1 + { + type cyclicGgi; + shadowPatch DTCYCLIC2; + zone DTCYCLIC1Zone; + bridgeOverlap false; + rotationAxis (0 0 1); + rotationAngle 72; + separationOffset (0 0 0); + } + DTCYCLIC2 + { + type cyclicGgi; + shadowPatch DTCYCLIC1; + zone DTCYCLIC2Zone; + bridgeOverlap false; + rotationAxis (0 0 1); + rotationAngle -72; + separationOffset (0 0 0); + } + GVOUTLET + { + type ggi; + shadowPatch RUINLET; + zone GVOUTLETZone; + bridgeOverlap false; + //type mixingPlane; + //shadowPatch RUINLET; + //zone GVOUTLETZone; + //coordinateSystem + //{ + // type cylindrical; + // //name mixingCS; + // origin (0 0 0); + // e1 (1 0 0); + // e3 (0 0 1); + //} + //ribbonPatch + //{ + // sweepAxis Theta; + // stackAxis R; + // discretisation bothPatches; + //} + } + RUINLET + { + type ggi; + shadowPatch GVOUTLET; + zone RUINLETZone; + bridgeOverlap false; + //type mixingPlane; + //shadowPatch GVOUTLET; + //zone RUINLETZone; + //coordinateSystem + //{ + // type cylindrical; + // //name mixingCS; + // origin (0 0 0); + // e1 (1 0 0); + // e3 (0 0 1); + //} + //ribbonPatch + //{ + // sweepAxis Theta; + // stackAxis R; + // discretisation bothPatches; + //} + } + RUOUTLET + { + type ggi; + shadowPatch DTINLET; + zone RUOUTLETZone; + bridgeOverlap false; + //type mixingPlane; + //shadowPatch DTINLET; + //zone RUOUTLETZone; + //coordinateSystem + //{ + // type cylindrical; + // //name mixingCS; + // origin (0 0 0); + // e1 (1 0 0); + // e3 (0 0 1); + //} + //ribbonPatch + //{ + // sweepAxis Theta; + // stackAxis R; + // discretisation bothPatches; + //} + } + DTINLET + { + type ggi; + shadowPatch RUOUTLET; + zone DTINLETZone; + bridgeOverlap false; + //type mixingPlane; + //shadowPatch RUOUTLET; + //zone DTINLETZone; + //coordinateSystem + //{ + // type cylindrical; + // //name mixingCS; + // origin (0 0 0); + // e1 (1 0 0); + // e3 (0 0 1); + //} + //ribbonPatch + //{ + // sweepAxis Theta; + // stackAxis R; + // discretisation bothPatches; + //} + } + DTOUTLET + { + type patch; + } + } +} + +// ************************************************************************* // diff --git a/tutorials/incompressible/MRFSimpleFoam/axialTurbine/system/controlDict b/tutorials/incompressible/MRFSimpleFoam/axialTurbine/system/controlDict new file mode 100644 index 000000000..3f264b638 --- /dev/null +++ b/tutorials/incompressible/MRFSimpleFoam/axialTurbine/system/controlDict @@ -0,0 +1,47 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | foam-extend: Open Source CFD | +| \\ / O peration | Version: 3.0 | +| \\ / A nd | Web: http://www.extend-project.de | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object controlDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +application simpleFoam; + +startFrom startTime; + +startTime 0; + +stopAt endTime; + +endTime 200; + +deltaT 1; + +writeControl timeStep; + +writeInterval 20; + +purgeWrite 0; + +writeFormat ascii; + +writePrecision 6; + +writeCompression compressed; + +timeFormat general; + +timePrecision 6; + +runTimeModifiable yes; + +// ************************************************************************* // diff --git a/tutorials/incompressible/MRFSimpleFoam/axialTurbine/system/decomposeParDict b/tutorials/incompressible/MRFSimpleFoam/axialTurbine/system/decomposeParDict new file mode 100644 index 000000000..80913843c --- /dev/null +++ b/tutorials/incompressible/MRFSimpleFoam/axialTurbine/system/decomposeParDict @@ -0,0 +1,89 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | foam-extend: Open Source CFD | +| \\ / O peration | Version: 3.0 | +| \\ / A nd | Web: http://www.extend-project.de | +| \\/ M anipulation | | +\*---------------------------------------------------------------------------*/ +FoamFile +{ + version 2.0; + format ascii; + class dictionary; + object decomposeParDict; +} +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +numberOfSubdomains 8; + +//method metis; +method patchConstrained; + +globalFaceZones +( + GVCYCLIC2Zone + RUCYCLIC1Zone + RUINLETZone + RUCYCLIC2Zone + RUOUTLETZone + GVOUTLETZone + DTINLETZone + GVCYCLIC1Zone + 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 +( +); + +// ************************************************************************* // + diff --git a/tutorials/incompressible/MRFSimpleFoam/axialTurbine/system/fvSchemes b/tutorials/incompressible/MRFSimpleFoam/axialTurbine/system/fvSchemes new file mode 100644 index 000000000..0da56ecd5 --- /dev/null +++ b/tutorials/incompressible/MRFSimpleFoam/axialTurbine/system/fvSchemes @@ -0,0 +1,64 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | foam-extend: Open Source CFD | +| \\ / O peration | Version: 3.0 | +| \\ / A nd | Web: http://www.extend-project.de | +| \\/ 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,epsilon) Gauss limitedLinear 1; + div((nuEff*dev(grad(U).T()))) Gauss linear; +} + +laplacianSchemes +{ + default none; + laplacian(nuEff,U) Gauss linear corrected; + laplacian((1|A(U)),p) Gauss linear corrected; + laplacian(DkEff,k) Gauss linear corrected; + laplacian(DepsilonEff,epsilon) Gauss linear corrected; +} + +interpolationSchemes +{ + default linear; + interpolate(U) linear; +} + +snGradSchemes +{ + default corrected; +} + +fluxRequired +{ + default no; + p; +} + +// ************************************************************************* // diff --git a/tutorials/incompressible/MRFSimpleFoam/axialTurbine/system/fvSolution b/tutorials/incompressible/MRFSimpleFoam/axialTurbine/system/fvSolution new file mode 100644 index 000000000..a3562efcb --- /dev/null +++ b/tutorials/incompressible/MRFSimpleFoam/axialTurbine/system/fvSolution @@ -0,0 +1,77 @@ +/*--------------------------------*- C++ -*----------------------------------*\ +| ========= | | +| \\ / F ield | foam-extend: Open Source CFD | +| \\ / O peration | Version: 3.0 | +| \\ / A nd | Web: http://www.extend-project.de | +| \\/ 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; + } +} + +SIMPLE +{ + nNonOrthogonalCorrectors 0; + pRefCell 0; + pRefValue 0; +} + +relaxationFactors +{ + p 0.3; + U 0.5; + k 0.5; + epsilon 0.5; +} + +// ************************************************************************* //