Simplified flow around a propeller for the course CFD with

Section
Simplified flow around a propeller
for the course
CFD with OpenSource Software
Gonzalo Montero
Applied Mechanics/Fluid Dynamics,
Chalmers University of Technology,
Gothenburg, Sweden
2015-12-08
Gonzalo Montero
Simplified flow around a propeller
2015-12-08
1 / 37
Section
Subsection
Contents
Introduction
Erik Svenning’s work
What can we do with propellerSimpleFoam?
Theoretical background
Mesh and m4
Xfoil
How to define a propeller
Seting up of a case
Some results and validation
Future work
Gonzalo Montero
Simplified flow around a propeller
2015-12-08
2 / 37
Section
Subsection
Introduction
An actuator disk is a simplification of a propeller that helps in seeing how
it affects the surroundings
Useful when not to much detail is needed, can not see the flow
Add momentum directly to fluid flowing through the area it in
Gonzalo Montero
Simplified flow around a propeller
2015-12-08
3 / 37
Section
Subsection
Erik Svenning’s work
Erik implemented an actuator disk model for OpenFOAM 1.5-dev.
My implementation is built in top of that.
Gonzalo Montero
Simplified flow around a propeller
2015-12-08
4 / 37
Section
Subsection
Erik Svenning’s work
Thrust and torque known and Goldstein optimum distribution
Gonzalo Montero
Simplified flow around a propeller
2015-12-08
5 / 37
Section
Subsection
What can we do with propellerSimpleFoam?
Take into account for the geometry of the propeller
Take into account the operating conditions
Analyze a propeller with different propeller sections
Obtained the polars automatically or define them
Gonzalo Montero
Simplified flow around a propeller
2015-12-08
6 / 37
Section
Subsection
Theoretical background
Velocities are parametrized by ψ
Gonzalo Montero
Simplified flow around a propeller
2015-12-08
7 / 37
Section
Subsection
Theoretical background
Ua = V + ua
λw (ψ) =
Ut = Ωr − ut
q
U = Ua2 + Ut2
rWa
RWt
Wa (ψ) = 0.5Ua + 0.5U sinψ
r
f (ψ) = 0.5B 1 −
R
Wt (ψ) = 0.5Ut + 0.5U cosψ
F (ψ) =
va (ψ) = Wa − Ua
vt (ψ) = Ut − Wt
α(ψ) = β − arctan(Wa /Wt )
q
W (ψ) = Wa2 + Wt2
Gonzalo Montero
!
2
arccos(e−f )
π
v
u
4πr u
F t1 +
Γ(ψ) = vt
B
1
λw
4λw R
πBr
!2
1
Γ = W ccl
2
Simplified flow around a propeller
2015-12-08
8 / 37
Section
Subsection
Theoretical background
The Newton update for psi then reads:
δψ = −
R
dR/dψ
ψ ← ψ + δψ
Gonzalo Montero
Simplified flow around a propeller
2015-12-08
9 / 37
Section
Subsection
1.5
0.12
1
0.1
0.5
0.08
Cd
Cl
Theoretical background
0
0.06
-0.5
0.04
-1
0.02
-1.5
-15
-10
-5
0
5
10
15
0
-1.5
Gonzalo Montero
-1
-0.5
0
0.5
1
1.5
Cl
α
Simplified flow around a propeller
2015-12-08
10 / 37
Section
Subsection
Theoretical background
1
dT = B ρW 2 (cl cosφ − cd sinφ)c dr
2
1
dQ = B ρW 2 (cl sinφ + cd cosφ)c r dr
2
Devide T with ρV nCellCirc and Q with ρV rnCellCirc
Gonzalo Montero
Simplified flow around a propeller
2015-12-08
11 / 37
Section
Subsection
Mesh and m4
Gonzalo Montero
Simplified flow around a propeller
2015-12-08
12 / 37
Section
Subsection
Mesh and m4
m4 allows us to parametrize blockMeshDict
very easy to use
m4 fileName.m4 > blockMeshDict
Gonzalo Montero
Simplified flow around a propeller
2015-12-08
13 / 37
Section
Subsection
Xfoil
Gonzalo Montero
Simplified flow around a propeller
2015-12-08
14 / 37
Section
Subsection
How to define a propeller
In fvSolution dictionary
Two or three .txt files
geometry.txt
polarDistribution.txt
polarsData.txt (not compulsary)
Gonzalo Montero
Simplified flow around a propeller
2015-12-08
15 / 37
Section
Subsection
How to define a propeller
Gonzalo Montero
Simplified flow around a propeller
2015-12-08
16 / 37
Section
Subsection
How to define a propeller
Gonzalo Montero
Simplified flow around a propeller
2015-12-08
17 / 37
Section
Subsection
How to define a propeller
geometry.txt
10
0.3220
0.3626
0.3934
0.4450
0.5076
0.6230
0.7349
0.8468
0.9586
0.9900
0.0568
0.0634
0.0682
0.0738
0.0761
0.0717
0.0625
0.0510
0.0365
0.0325
Gonzalo Montero
15.8540
13.8499
12.1941
9.3355
6.3916
2.7624
0.4000
-1.4360
-3.0595
-3.5147
Simplified flow around a propeller
2015-12-08
18 / 37
Section
Subsection
How to define a propeller
polarsData.txt
2
3
2
-2
0
-5
-1
6
2
7
0.6648
0.7890
0.3544
0.7131
1.0977
0.8188
1.2003
Gonzalo Montero
0.0314
0.0422
0.0160
0.0287
0.0160
0.0203
0.0330
//number of rows given for polar 1
//number of rows given for polar 2
//number of rows given for polar 3
//point 1 of polar number 1
//point 2 of polar number 1
//point 1 of polar number 2
//point 2 of polar number 2
//point 3 of polar number 2
//point 1 of polar number 3
//point 2 of polar number 3
Simplified flow around a propeller
2015-12-08
19 / 37
Section
Subsection
How to define a propeller
polarDistribution.txt
10
0.382
0.3926
0.4334
0.445
0.5376
0.613
0.724
0.8558
0.9516
0.99
Gonzalo Montero
Simplified flow around a propeller
2015-12-08
20 / 37
Section
Subsection
Seting up of a case
OF24x
cd erikSvenning2.4/
cp -r cavityActuatorDisk $FOAM_RUN
cp cylindricalMesh.m4 $FOAM_RUN/cavityActuatorDisk/
constant/polyMesh
cp *.txt $FOAM_RUN/cavityActuatorDisk/
run
cd cavityActuatorDisk/constant/polymesh
(gedit cylindricalMesh.m4)
If wanted the mesh can be modified by cylindricalMesh.m4
Gonzalo Montero
Simplified flow around a propeller
2015-12-08
21 / 37
Section
Subsection
Seting up of a case
m4 cylindricalMesh.m4 > blockMeshDict
cd ../..
blockMesh
cd 0
gedit U
Gonzalo Montero
Simplified flow around a propeller
2015-12-08
22 / 37
Section
Subsection
Seting up of a case
internalField
boundaryField
{
inlet{
type
}
outlet{
type
}
walls{
type
}
}
gedit p
Gonzalo Montero
uniform (15 0 0);
zeroGradient;
zeroGradient;
slip;
Simplified flow around a propeller
2015-12-08
23 / 37
Section
Subsection
Seting up of a case
internalField
boundaryField
{
inlet{
type
}
outlet{
type
}
walls{
type
}
}
Gonzalo Montero
uniform 0;
zeroGradient;
zeroGradient;
zeroGradient;
Simplified flow around a propeller
2015-12-08
24 / 37
Section
Subsection
Seting up of a case
We have to initialize the volVectorField VolumeForce. For that lets make a
copy of the U file and modify it.
cp U VolumeForce
Change the dimensions and the object to VolumeForce. The rest will be
set as:
gedit VolumeForce
dimensions
[0 1 -2 0 0 0 0];
internalField
Gonzalo Montero
uniform (0 0 0);
Simplified flow around a propeller
2015-12-08
25 / 37
Section
Subsection
Seting up of a case
boundaryField
{
inlet{
type
value
}
outlet{
type
value
}
walls{
type
value
}
}
Gonzalo Montero
fixedValue;
uniform (0.0 0.0 0.0);
fixedValue;
uniform (0.0 0.0 0.0);
fixedValue;
uniform (0.0 0.0 0.0);
Simplified flow around a propeller
2015-12-08
26 / 37
Section
Subsection
Seting up of a case
Now we need to create another one for the volScalarField xDimension, so
since it is a scalar this time we will copy and modify the pressure file:
cp p xDimension
gedit xDimension
Once again remember to change the dimension, in this case to meters and
also to change the object field to xDimension. Finally it should be like this
one:
dimensions
[0 1 0 0 0 0 0];
internalField
uniform 0;
Gonzalo Montero
Simplified flow around a propeller
2015-12-08
27 / 37
Section
Subsection
Seting up of a case
boundaryField
{
inlet{
type
value
}
outlet{
type
value
}
walls{
type
value
}
}
Gonzalo Montero
fixedValue;
uniform 0;
fixedValue;
uniform 0;
fixedValue;
uniform 0;
Simplified flow around a propeller
2015-12-08
28 / 37
Section
Subsection
Seting up of a case
Now lets go on and modify the fvSolution dictionary.
cd ../system/
gedit fvSolution
In the SIMPLE subdictionary add:
pRefCell
pRefValue
0;
0;
Rename the actuatorDisk as propellerData. Add the missing fields so that
it ends up looking like this:
Gonzalo Montero
Simplified flow around a propeller
2015-12-08
29 / 37
Section
Subsection
Seting up of a case
propellerData{
numberOfPolars
flightSpeed
deltaBeta
centrePoint
density
interiorRadius
exteriorRadius
rpm
temperatureKelvin
numberOfBlades
dynamicViscosity
ReRef
ReExp
}
Gonzalo Montero
2;
15;
30;
(15 0 0);
0.36518;
0.49;
1.524;
500;
216.86;
3;
0.1433e-4;
50000;
0;
Simplified flow around a propeller
2015-12-08
30 / 37
Section
Subsection
Seting up of a case
In fvSolution create a subdictionary with the following structure and
named polarsData.
polarsData
{
generatePolars
2;
type1
airfoilName1
naca;
2412;
type2
airfoilName2
geometry;
NACA0012.txt;
}
gedit fvSchemes
Gonzalo Montero
Simplified flow around a propeller
2015-12-08
31 / 37
Section
Subsection
Seting up of a case
and add the following change the divergence schemes so they look like:
default
div(phi,U)
div(phi,k)
div(phi,epsilon)
div(phi,R)
div(R)
div(phi,nuTilda)
div((nuEff*dev(grad(U).T())))
div((nuEff*dev(T(grad(U)))))
Gonzalo Montero
none;
bounded Gauss upwind;
bounded Gauss upwind;
bounded Gauss upwind;
Gauss upwind;
Gauss linear;
Gauss upwind;
Gauss linear;
Gauss linear;
Simplified flow around a propeller
2015-12-08
32 / 37
Section
Subsection
Seting up of a case
Now we are ready to run the case:
cd ..
propellerSimpleFoam
Gonzalo Montero
Simplified flow around a propeller
2015-12-08
33 / 37
Section
Subsection
Some results and validation
Gonzalo Montero
Simplified flow around a propeller
2015-12-08
34 / 37
Section
Subsection
Some results and validation
Gonzalo Montero
Simplified flow around a propeller
2015-12-08
35 / 37
Section
Subsection
Some results and validation
0.18
NACA report 640
OpenFOAM
0.16
0.14
Ct
0.12
0.1
0.08
0.06
0.04
0.02
0
0
0.5
1
1.5
2
J
Gonzalo Montero
Simplified flow around a propeller
2015-12-08
36 / 37
Section
Subsection
Future work
Try to account for tip losses
Another model that allows highers speed flows
Solve the flow discretizing each blade
Compressible solver implementation
Gonzalo Montero
Simplified flow around a propeller
2015-12-08
37 / 37