tutorials: multiphaseEuler: Added hydrofoil tutorial

This serves as an example of cavitation modelling with the
multiphaseEuler module. This case also contains validation of the
pressure profile along the hydrofoil against experimental data.

Based on a case contributed by Petteri Peltonen, VTT.
This commit is contained in:
Will Bainbridge
2022-11-15 15:59:44 +00:00
parent 1df33f58c9
commit 9fa8b85056
36 changed files with 1893 additions and 0 deletions

View File

@ -0,0 +1,49 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object T.gas;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 1 0 0 0];
internalField uniform 293.15;
boundaryField
{
#includeEtc "caseDicts/setConstraintTypes"
inlet
{
type fixedValue;
value $internalField;
}
outlet
{
type inletOutlet;
phi phi.gas;
inletValue $internalField;
value $internalField;
}
hydrofoil
{
type zeroGradient;
}
walls
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,49 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object T.liquid;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 1 0 0 0];
internalField uniform 293.15;
boundaryField
{
#includeEtc "caseDicts/setConstraintTypes"
inlet
{
type fixedValue;
value $internalField;
}
outlet
{
type inletOutlet;
phi phi.liquid;
inletValue $internalField;
value $internalField;
}
hydrofoil
{
type zeroGradient;
}
walls
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,46 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volVectorField;
location "0";
object U.gas;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 -1 0 0 0 0];
internalField uniform (5.33 0 0);
boundaryField
{
#includeEtc "caseDicts/setConstraintTypes"
inlet
{
type fixedValue;
value uniform (5.33 0 0);
}
outlet
{
type zeroGradient;
}
hydrofoil
{
type noSlip;
}
walls
{
type noSlip;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,46 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volVectorField;
location "0";
object U.liquid;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 -1 0 0 0 0];
internalField uniform (5.33 0 0);
boundaryField
{
#includeEtc "caseDicts/setConstraintTypes"
inlet
{
type fixedValue;
value uniform (5.33 0 0);
}
outlet
{
type zeroGradient;
}
hydrofoil
{
type noSlip;
}
walls
{
type noSlip;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,49 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object alpha.gas;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 0 0 0 0];
internalField uniform 0;
boundaryField
{
#includeEtc "caseDicts/setConstraintTypes"
inlet
{
type fixedValue;
value uniform 0;
}
outlet
{
type inletOutlet;
phi phi.gas;
inletValue uniform 0;
value uniform 0;
}
hydrofoil
{
type zeroGradient;
}
walls
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,49 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object alpha.liquid;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 0 0 0 0 0];
internalField uniform 1.0;
boundaryField
{
#includeEtc "caseDicts/setConstraintTypes"
inlet
{
type fixedValue;
value $internalField;
}
outlet
{
type inletOutlet;
phi phi.liquid;
inletValue uniform 1;
value uniform 1;
}
hydrofoil
{
type zeroGradient;
}
walls
{
type zeroGradient;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,57 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object alphat.gas;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -1 -1 0 0 0 0];
internalField uniform 1e-8;
boundaryField
{
#includeEtc "caseDicts/setConstraintTypes"
inlet
{
type calculated;
value uniform 1e-8;
}
outlet
{
type calculated;
value uniform 1e-8;
}
hydrofoil
{
type compressible::alphatPhaseJayatillekeWallFunction;
Prt 0.85;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 0;
}
walls
{
type compressible::alphatPhaseJayatillekeWallFunction;
Prt 0.85;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 0;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,57 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object alphat.liquid;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [ 1 -1 -1 0 0 0 0 ];
internalField uniform 1e-08;
boundaryField
{
#includeEtc "caseDicts/setConstraintTypes"
inlet
{
type fixedValue;
value uniform 0;
}
outlet
{
type calculated;
value uniform 1e-08;
}
hydrofoil
{
type compressible::alphatPhaseJayatillekeWallFunction;
Prt 0.85;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 0;
}
walls
{
type compressible::alphatPhaseJayatillekeWallFunction;
Prt 0.85;
Cmu 0.09;
kappa 0.41;
E 9.8;
value uniform 0;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,51 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object k.gas;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 2 -2 0 0 0 0];
internalField uniform 0.0042613;
boundaryField
{
#includeEtc "caseDicts/setConstraintTypes"
inlet
{
type fixedValue;
value $internalField;
}
outlet
{
type inletOutlet;
phi phi.gas;
inletValue $internalField;
value $internalField;
}
hydrofoil
{
type kqRWallFunction;
value $internalField;
}
walls
{
type kqRWallFunction;
value $internalField;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,52 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object k.liquid;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 2 -2 0 0 0 0];
internalField uniform 0.0042613;
boundaryField
{
#includeEtc "caseDicts/setConstraintTypes"
inlet
{
type fixedValue;
value $internalField;
}
outlet
{
type inletOutlet;
phi phi.liquid;
inletValue $internalField;
value $internalField;
}
hydrofoil
{
type kqRWallFunction;
value $internalField;
}
walls
{
type kqRWallFunction;
value $internalField;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,49 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object nut.gas;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 2 -1 0 0 0 0];
internalField uniform 9.993764000E-07;
boundaryField
{
#includeEtc "caseDicts/setConstraintTypes"
inlet
{
type calculated;
value $internalField;
}
outlet
{
type calculated;
value $internalField;
}
hydrofoil
{
type nutUSpaldingWallFunction;
value $internalField;
}
walls
{
type nutUSpaldingWallFunction;
value $internalField;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,49 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object nut.liquid;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 2 -1 0 0 0 0];
internalField uniform 9.993764000E-07;
boundaryField
{
#includeEtc "caseDicts/setConstraintTypes"
inlet
{
type calculated;
value $internalField;
}
outlet
{
type calculated;
value $internalField;
}
hydrofoil
{
type nutUSpaldingWallFunction;
value $internalField;
}
walls
{
type nutUSpaldingWallFunction;
value $internalField;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,60 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object omega.gas;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 -1 0 0 0 0];
internalField uniform 355.3333333;
boundaryField
{
#includeEtc "caseDicts/setConstraintTypes"
inlet
{
type fixedValue;
value $internalField;
}
outlet
{
type inletOutlet;
phi phi.liquid;
inletValue $internalField;
value $internalField;
}
hydrofoil
{
type omegaWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
blended on;
value $internalField;
}
walls
{
type omegaWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
blended on;
value $internalField;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,59 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object omega.liquid;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 0 -1 0 0 0 0];
internalField uniform 355.3333333;
boundaryField
{
#includeEtc "caseDicts/setConstraintTypes"
inlet
{
type fixedValue;
value $internalField;
}
outlet
{
type inletOutlet;
phi phi.liquid;
inletValue $internalField;
value $internalField;
}
hydrofoil
{
type omegaWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
blended on;
value $internalField;
}
walls
{
type omegaWallFunction;
Cmu 0.09;
kappa 0.41;
E 9.8;
blended on;
value $internalField;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,49 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object p;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -1 -2 0 0 0 0];
internalField uniform 1e5;
boundaryField
{
#includeEtc "caseDicts/setConstraintTypes"
inlet
{
type calculated;
value $internalField;
}
outlet
{
type calculated;
value $internalField;
}
hydrofoil
{
type calculated;
value $internalField;
}
walls
{
type calculated;
value $internalField;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,47 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
location "0";
object p_rgh;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [1 -1 -2 0 0 0 0];
internalField uniform 1e5;
boundaryField
{
#includeEtc "caseDicts/setConstraintTypes"
inlet
{
type fixedFluxPressure;
}
outlet
{
type prghPressure;
p $internalField;
value $internalField;
}
hydrofoil
{
type fixedFluxPressure;
}
walls
{
type fixedFluxPressure;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,7 @@
#!/bin/sh
cd ${0%/*} || exit 1
. $WM_PROJECT_DIR/bin/tools/CleanFunctions
cleanCase && rm -rf 0/phi 0/U 0/uniform 0/yPlus.liquid validation/*.eps

View File

@ -0,0 +1,20 @@
#!/bin/sh
cd ${0%/*} || exit 1 # run from this directory
# Source tutorial run functions
. $WM_PROJECT_DIR/bin/tools/RunFunctions
runApplication blockMesh
cp 0/U.liquid.orig 0/U
runApplication potentialFoam -pName p_rgh
cp 0/U 0/U.gas
cp 0/U 0/U.liquid
runApplication decomposePar
runParallel $(getApplication)
runApplication reconstructPar
validation/createGraph
#------------------------------------------------------------------------------

View File

@ -0,0 +1,28 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
format ascii;
class dictionary;
object fvOptions;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
phaseTurbulenceStabilisation
{
type phaseTurbulenceStabilisation;
libs ("libmultiphaseEulerFoamFvModels.so");
phase gas;
alphaInversion 0.1;
}
// ************************************************************************* //

View File

@ -0,0 +1,20 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
format ascii;
class uniformDimensionedVectorField;
object g;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 -2 0 0 0 0];
value (0 -9.81 0);
// ************************************************************************* //

View File

@ -0,0 +1,28 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
format ascii;
class dictionary;
object momentumTransport.gas;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
simulationType RAS;
RAS
{
model kOmegaSST;
turbulence on;
printCoeffs on;
}
// ************************************************************************* //

View File

@ -0,0 +1,28 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
format ascii;
class dictionary;
object momentumTransport.liquid;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
simulationType RAS;
RAS
{
model kOmegaSST;
turbulence on;
printCoeffs on;
}
// ************************************************************************* //

View File

@ -0,0 +1,118 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object phaseProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
type basicMultiphaseSystem;
phases (gas liquid);
gas
{
type purePhaseModel;
diameterModel constant;
constantCoeffs
{
d 0.0002;
}
residualAlpha 1e-6;
}
liquid
{
type purePhaseModel;
diameterModel none;
residualAlpha 1e-6;
}
blending
{
default
{
type continuous;
phase liquid;
}
}
drag
{
gas_dispersedIn_liquid
{
type IshiiZuber;
}
}
virtualMass
{}
heatTransfer
{
gas_dispersedIn_liquid
{
type RanzMarshall;
}
}
lift
{}
wallLubrication
{}
turbulentDispersion
{}
aspectRatio
{}
surfaceTension
{
gas_liquid
{
type constant;
sigma 0.071;
}
}
saturation
{}
phaseTransfer
{
gas_dispersedIn_liquid
{
type cavitation;
model Kunz;
liquid liquid;
pSat 79995.75943;
UInf 5.33;
tInf 0.028142589;
Cc 100;
Cv 100;
}
}
interfaceCompression
{}
// ************************************************************************* //

View File

@ -0,0 +1,46 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
format ascii;
class dictionary;
object thermophysicalProperties.gas;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
thermoType
{
type heRhoThermo;
mixture pureMixture;
transport const;
thermo hConst;
equationOfState perfectGas;
specie specie;
energy sensibleEnthalpy;
}
mixture
{
specie
{
molWeight 18.015;
}
thermodynamics
{
Cp 1006.3;
Hf 6e3;
}
transport
{
mu 9.86e-06;
Pr 0.71;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,50 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
format ascii;
class dictionary;
object thermophysicalProperties.liquid;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
thermoType
{
type heRhoThermo;
mixture pureMixture;
transport const;
thermo eConst;
equationOfState rhoConst;
specie specie;
energy sensibleInternalEnergy;
}
mixture
{
specie
{
molWeight 18.015;
}
equationOfState
{
rho 998.4;
}
thermodynamics
{
Cv 4180;
Hf 40e3;
}
transport
{
mu 9.9768e-04;
Pr 2.289;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,257 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
format ascii;
class dictionary;
object blockMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
convertToMeters 1.0;
x0 -0.381;
x1 -0.081;
x2 -0.02;
xTip 0.0015;
xTail 0.149571;
x3 0.21;
x4 0.96;
y0 -0.096;
y1 -0.03;
y1Tip -0.022;
y1Tail -0.038;
yTipL 0.00625802;
yTipU 0.0095993;
yTail -0.00801537;
y2 0;
y3 0.03;
y3Tip 0.038;
y3Tail 0.022;
y4 0.096;
z 0.01;
nX0 24;
nX1 20;
nX2 80;
nX3 20;
nX4 60;
nY0 11;
nY1 11;
nY2 11;
nO 16;
geometry
{
hydrofoilTip
{
type triSurfaceMesh;
file "NACAMOD66_6deg_tip.stl";
}
hydrofoilLower
{
type triSurfaceMesh;
file "NACAMOD66_6deg_lower.stl";
}
hydrofoilUpper
{
type triSurfaceMesh;
file "NACAMOD66_6deg_upper.stl";
}
}
vertices
(
($x0 $y0 #neg $z)
($x0 $y1 #neg $z)
($x0 $y3 #neg $z)
($x0 $y4 #neg $z)
($x1 $y0 #neg $z)
($x1 $y1 #neg $z)
($x1 $y3 #neg $z)
($x1 $y4 #neg $z)
($x2 $y0 #neg $z)
($x2 $y1Tip #neg $z)
($x2 $y3Tip #neg $z)
($x2 $y4 #neg $z)
($xTip $yTipL #neg $z)
($xTip $yTipU #neg $z)
($xTail $y0 #neg $z)
($xTail $y1Tail #neg $z)
($xTail $yTail #neg $z)
($xTail $y3Tail #neg $z)
($xTail $y4 #neg $z)
($x3 $y0 #neg $z)
($x3 $y1 #neg $z)
($x3 $y2 #neg $z)
($x3 $y3 #neg $z)
($x3 $y4 #neg $z)
($x4 $y0 #neg $z)
($x4 $y1 #neg $z)
($x4 $y2 #neg $z)
($x4 $y3 #neg $z)
($x4 $y4 #neg $z)
($x0 $y0 $z)
($x0 $y1 $z)
($x0 $y3 $z)
($x0 $y4 $z)
($x1 $y0 $z)
($x1 $y1 $z)
($x1 $y3 $z)
($x1 $y4 $z)
($x2 $y0 $z)
($x2 $y1Tip $z)
($x2 $y3Tip $z)
($x2 $y4 $z)
($xTip $yTipL $z)
($xTip $yTipU $z)
($xTail $y0 $z)
($xTail $y1Tail $z)
($xTail $yTail $z)
($xTail $y3Tail $z)
($xTail $y4 $z)
($x3 $y0 $z)
($x3 $y1 $z)
($x3 $y2 $z)
($x3 $y3 $z)
($x3 $y4 $z)
($x4 $y0 $z)
($x4 $y1 $z)
($x4 $y2 $z)
($x4 $y3 $z)
($x4 $y4 $z)
);
blocks
(
hex ( 0 4 5 1 29 33 34 30) ($nX0 $nY0 1) simpleGrading (0.1 1 1)
hex ( 1 5 6 2 30 34 35 31) ($nX0 $nY1 1) simpleGrading (0.1 1 1)
hex ( 2 6 7 3 31 35 36 32) ($nX0 $nY2 1) simpleGrading (0.1 1 1)
hex ( 4 8 9 5 33 37 38 34) ($nX1 $nY0 1) simpleGrading (1 1 1)
hex ( 5 9 10 6 34 38 39 35) ($nX1 $nY1 1) simpleGrading (1 1 1)
hex ( 6 10 11 7 35 39 40 36) ($nX1 $nY2 1) simpleGrading (1 1 1)
hex ( 8 14 15 9 37 43 44 38) ($nX2 $nY0 1) simpleGrading (1 1 1)
hex ( 9 15 16 12 38 44 45 41) ($nX2 $nO 1) edgeGrading (1 2 2 1 0.2 0.2 0.2 0.2 1 1 1 1)
hex ( 9 12 13 10 38 41 42 39) ($nO $nY1 1) simpleGrading (0.2 1 1)
hex (13 16 17 10 42 45 46 39) ($nX2 $nO 1) edgeGrading (2 1 1 2 5 5 5 5 1 1 1 1)
hex (10 17 18 11 39 46 47 40) ($nX2 $nY2 1) simpleGrading (1 1 1)
hex (14 19 20 15 43 48 49 44) ($nX3 $nY0 1) simpleGrading (1 1 1)
hex (15 20 21 16 44 49 50 45) ($nX3 $nO 1) edgeGrading (1 1 1 1 0.2 1 1 0.2 1 1 1 1)
hex (16 21 22 17 45 50 51 46) ($nX3 $nO 1) edgeGrading (1 1 1 1 5 1 1 5 1 1 1 1)
hex (17 22 23 18 46 51 52 47) ($nX3 $nY2 1) simpleGrading (1 1 1)
hex (19 24 25 20 48 53 54 49) ($nX4 $nY0 1) simpleGrading (10 1 1)
hex (20 25 26 21 49 54 55 50) ($nX4 $nO 1) simpleGrading (10 1 1)
hex (21 26 27 22 50 55 56 51) ($nX4 $nO 1) simpleGrading (10 1 1)
hex (22 27 28 23 51 56 57 52) ($nX4 $nY2 1) simpleGrading (10 1 1)
);
edges
(
project 12 13 (hydrofoilTip)
project 12 16 (hydrofoilLower)
project 13 16 (hydrofoilUpper)
project 41 42 (hydrofoilTip)
project 41 45 (hydrofoilLower)
project 42 45 (hydrofoilUpper)
arc 9 10 30 (0 0 -1)
arc 9 15 20 (0 0 1)
arc 10 17 30 (0 0 -1)
arc 38 39 30 (0 0 -1)
arc 38 44 20 (0 0 1)
arc 39 46 30 (0 0 -1)
);
defaultPatch
{
name frontAndBack;
type empty;
}
boundary
(
inlet
{
type patch;
faces
(
(0 1 30 29)
(1 2 31 30)
(2 3 32 31)
);
}
outlet
{
type patch;
faces
(
(24 25 54 53)
(25 26 55 54)
(26 27 56 55)
(27 28 57 56)
);
}
hydrofoil
{
type wall;
faces
(
(12 13 42 41)
(12 16 45 41)
(13 16 45 42)
);
}
walls
{
type wall;
faces
(
( 0 4 33 29)
( 4 8 37 33)
( 8 14 43 37)
(14 19 48 43)
(19 24 53 48)
( 3 7 36 32)
( 7 11 40 36)
(11 18 47 40)
(18 23 52 47)
(23 28 57 52)
);
}
);
mergePatchPairs
();
// ************************************************************************* //

View File

@ -0,0 +1,63 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
format ascii;
class dictionary;
object controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
application foamRun;
solver multiphaseEuler;
startFrom latestTime;
startTime 0;
stopAt endTime;
endTime 0.2;
deltaT 2e-6;
writeControl adjustableRunTime;
writeInterval 0.01;
purgeWrite 0;
writeFormat binary;
writePrecision 9;
writeCompression uncompressed;
timePrecision 14;
timeFormat general;
runTimeModifiable yes;
adjustTimeStep yes;
maxCo 0.8;
maxDeltaT 1e-4;
functions
{
#includeFunc yPlus(phase=liquid)
#includeFunc cellMin(funcName=min, alpha.liquid, alpha.gas, p, p_rgh, U.liquid, U.gas, T.gas, T.liquid)
#includeFunc cellMax(funcName=max, alpha.liquid, alpha.gas, p, p_rgh, U.liquid, U.gas, T.gas, T.liquid)
#includeFunc hydrofoilPressure
}
// ************************************************************************* //

View File

@ -0,0 +1,21 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
format ascii;
class dictionary;
object decomposeParDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
numberOfSubdomains 4;
method scotch;
// ************************************************************************* //

View File

@ -0,0 +1,24 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
format ascii;
class dictionary;
object fvConstraints;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
limitp
{
type limitPressure;
min 1;
max 1e12;
}
// ************************************************************************* //

View File

@ -0,0 +1,68 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
format ascii;
class dictionary;
object fvSchemes;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
ddtSchemes
{
default Euler;
}
gradSchemes
{
default Gauss linear;
limited cellLimited Gauss linear 1;
}
interpolationSchemes
{
default linear;
}
divSchemes
{
default none;
div(phi,alpha) Gauss vanLeer;
div(alphaRhoPhi,U) Gauss linearUpwind limited;
div(alphaRhoPhi,h) Gauss linearUpwind limited;
div(alphaRhoPhi,e) Gauss linearUpwind limited;
div(alphaRhoPhi,f) Gauss upwind;
div(alphaRhoPhi,K) Gauss linearUpwind limited;
div(alphaRhoPhi,k) Gauss upwind;
div(alphaRhoPhi,omega) Gauss upwind;
div(alphaRhoPhi,(p|rho)) Gauss linearUpwind limited;
div((((alpha*rho)*nuEff)*dev2(T(grad(U))))) Gauss linear;
}
laplacianSchemes
{
default Gauss linear corrected;
}
snGradSchemes
{
default corrected;
}
wallDist
{
method meshWave;
correctWalls true;
}
// ************************************************************************* //

View File

@ -0,0 +1,100 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{
version 2.0;
format ascii;
class dictionary;
object fvSolution;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
solvers
{
"alpha.*"
{
nAlphaCorr 1;
nAlphaSubCycles 1;
};
p_rgh
{
solver GAMG;
smoother DICGaussSeidel;
tolerance 1e-8;
relTol 0.1;
};
p_rghFinal
{
$p_rgh;
relTol 0;
}
"U.*"
{
solver PBiCGStab;
preconditioner DILU;
tolerance 1e-6;
relTol 0;
}
"(e|h).*"
{
solver PBiCGStab;
preconditioner DILU;
tolerance 1e-8;
relTol 0.001;
}
"(k|omega).*"
{
solver PBiCGStab;
preconditioner DILU;
tolerance 1e-8;
relTol 0;
}
Phi
{
$p_rgh;
relTol 0;
};
}
potentialFlow
{
nNonOrthogonalCorrectors 10;
}
PIMPLE
{
nOuterCorrectors 3;
nCorrectors 3;
nEnergyCorrectors 1;
transportCorrectionFinal yes;
faceMomentum no;
}
cache
{
grad(U);
}
relaxationFactors
{
equations
{
".*" 1;
}
}
// ************************************************************************* //

View File

@ -0,0 +1,149 @@
/*--------------------------------*- C++ -*----------------------------------*\
========= |
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
\\ / O peration | Website: https://openfoam.org
\\ / A nd | Version: dev
\\/ M anipulation |
\*---------------------------------------------------------------------------*/
type sets;
libs ("libsampling.so");
writeControl writeTime;
interpolationScheme cellPoint;
setFormat raw;
fields (p);
axis xyz;
sets
(
lower
{
type boundaryPoints;
axis xyz;
points
(
(0 0 0)
(0.003 -0.0003 0)
(0.006 -0.0006 0)
(0.009 -0.0009 0)
(0.012 -0.0012 0)
(0.015 -0.0015 0)
(0.018 -0.0018 0)
(0.021 -0.0021 0)
(0.024 -0.0024 0)
(0.027 -0.0027 0)
(0.03 -0.003 0)
(0.033 -0.0033 0)
(0.036 -0.0036 0)
(0.039 -0.0039 0)
(0.042 -0.0042 0)
(0.045 -0.0045 0)
(0.048 -0.0048 0)
(0.051 -0.0051 0)
(0.054 -0.0054 0)
(0.057 -0.0057 0)
(0.06 -0.006 0)
(0.063 -0.0063 0)
(0.066 -0.0066 0)
(0.069 -0.0069 0)
(0.072 -0.0072 0)
(0.075 -0.0075 0)
(0.078 -0.0078 0)
(0.081 -0.0081 0)
(0.084 -0.0084 0)
(0.087 -0.0087 0)
(0.09 -0.009 0)
(0.093 -0.0093 0)
(0.096 -0.0096 0)
(0.099 -0.0099 0)
(0.102 -0.0102 0)
(0.105 -0.0105 0)
(0.108 -0.0108 0)
(0.111 -0.0111 0)
(0.114 -0.0114 0)
(0.117 -0.0117 0)
(0.12 -0.012 0)
(0.123 -0.0123 0)
(0.126 -0.0126 0)
(0.129 -0.0129 0)
(0.132 -0.0132 0)
(0.135 -0.0135 0)
(0.138 -0.0138 0)
(0.141 -0.0141 0)
(0.144 -0.0144 0)
(0.147 -0.0147 0)
(0.15 -0.015 0)
);
patches (hydrofoil);
maxDistance 1;
}
upper
{
type boundaryPoints;
axis xyz;
points
(
(0 0.015 0)
(0.003 0.0147 0)
(0.006 0.0144 0)
(0.009 0.0141 0)
(0.012 0.0138 0)
(0.015 0.0135 0)
(0.018 0.0132 0)
(0.021 0.0129 0)
(0.024 0.0126 0)
(0.027 0.0123 0)
(0.03 0.012 0)
(0.033 0.0117 0)
(0.036 0.0114 0)
(0.039 0.0111 0)
(0.042 0.0108 0)
(0.045 0.0105 0)
(0.048 0.0102 0)
(0.051 0.0099 0)
(0.054 0.0096 0)
(0.057 0.0093 0)
(0.06 0.009 0)
(0.063 0.0087 0)
(0.066 0.0084 0)
(0.069 0.0081 0)
(0.072 0.0078 0)
(0.075 0.0075 0)
(0.078 0.0072 0)
(0.081 0.0069 0)
(0.084 0.0066 0)
(0.087 0.0063 0)
(0.09 0.006 0)
(0.093 0.0057 0)
(0.096 0.0054 0)
(0.099 0.0051 0)
(0.102 0.0048 0)
(0.105 0.0045 0)
(0.108 0.0042 0)
(0.111 0.0039 0)
(0.114 0.0036 0)
(0.117 0.0033 0)
(0.12 0.003 0)
(0.123 0.0027 0)
(0.126 0.0024 0)
(0.129 0.0021 0)
(0.132 0.0018 0)
(0.135 0.0015 0)
(0.138 0.0012 0)
(0.141 0.0009 0)
(0.144 0.0006 0)
(0.147 0.0003 0)
(0.15 0 0)
);
patches (hydrofoil);
maxDistance 1;
}
);
// ************************************************************************* //

View File

@ -0,0 +1,48 @@
#!/bin/sh
if ! which gnuplot > /dev/null 2>&1
then
echo 'gnuplot not found - skipping graph creation' >&2
exit 1
fi
lowerFile=postProcessing/hydrofoilPressure/$(foamListTimes -latestTime)/lower.xy
upperFile=postProcessing/hydrofoilPressure/$(foamListTimes -latestTime)/upper.xy
gnuplot<<EOF
\$experiment << end
0.05 -1.416
0.10 -1.400
0.20 -1.375
0.30 -1.148
0.40 -0.744
0.50 -0.695
0.60 -0.582
0.70 -0.520
0.80 -0.341
0.90 -0.108
0.50 0.040
end
set terminal postscript eps size 8,9 color enhanced font "Helvetica,20"
set output "./validation/$(basename "$PWD").eps"
set grid
c = 0.15
UInf = 5.33
pInf = 1e5
rhoInf = 998.4
set xlabel 'x/L'
set ylabel 'Cp'
plot [0:1] \
'$lowerFile' u (\$1/0.15):(2*(\$4-pInf)/(rhoInf*UInf*UInf)) w l lt 1 t 'Simulation Lower', \
'$upperFile' u (\$1/0.15):(2*(\$4-pInf)/(rhoInf*UInf*UInf)) w l lt 2 t 'Simulation Upper', \
'\$experiment' u 1:2 w p lt rgb "black" pt 4 t 'Experiment'
EOF
#------------------------------------------------------------------------------