le

Joukowsky airfoils


1. Basic knowledge:

The Joukowsky transformation converts a circle to an airfoil. The explanation of the mathematical proces can be read at the book H. Glauert "The elements of Airfoil and Airscrew Theory", ed Cambridge University press, 1926, 1947.

Summary of mathematics involved in Joukowsky transformation:

Page 1/2
Page 2/2
p1
p2

2. Output example file "profile.dxf" viewed in CAD program


qcad airfoil


3. Source code (FORTRAN 77):



c***************************************************************

c J O U K O W S K I A I R F O I L S v 0.1
c Pere Hernández Casellas
c Laboratori d'envol
c perehc AT geocities DOT com
c Version 2005-02-06
c Adapted to FORTRAN g77 (GNU/Linux)
c Released under the GNU General Public License
c http://www.gnu.org
c***************************************************************


program joukowsky

real x1,y1,x2,y2
real p1x,p1y,p2x,p2y
real c,a,beta
integer color
integer linecolor,pointcolor

c The program creates "profile.dxf" for viewing whit standard CAD package
c and "profile.txt" standard text file whit x-y airfoil coordinates

open(unit=20,file='profile.dxf')
open(unit=22,file='profile.txt')

x1=0.
y1=0.
x2=100.
y2=80.
color=2

pi=4.*atan(1.)


10 CONTINUE

c Basic Joukowsky parameters, enter by hand
c=100. ! Units cm. Chord reference=4c aprox
a=110. ! Radius of circunference to transform (a >=c)
espsil=0.5*((a/c)-1.)
beta=0.02 ! angle BM-BO

step=2*pi/200. ! number of points to plot

write (*,*) "Laboratori d'envol JOUKOWSKY AIRFOILS"
write (*,*) "Released under GNU General Public License"
write (*,*)
write (*,*)

c Angle M-O-A
aa=a*sin(beta)
bb=a*cos(beta)-c
xm=sqrt(aa*aa+bb*bb)
delta=atan(aa/bb)

c Draw ortogonal grid

color=4 ! use your CAD colors

ximin=-600.
ximax=600.
xjmin=-50.
xjmax=50.
xstep=10.

do xj=xjmin,xjmax,xstep
call line(ximin,xj,ximax,xj,color)
end do
do xi=ximin,ximax,xstep
call line(xi,xjmin,xi,xjmax,color)
end do

c Draw the joukowsky airfoil

color=9

do o=0.,2*pi,step

x=xm*cos(delta)+a*cos(o)
y=xm*sin(delta)+a*sin(o)
r=x*x+y*y
if (r.ne.0.) then
xi=x*(1.+c*c/r)
et=y*(1.-c*c/r)

call point(xi,et,color)

end if

end do

c Compute x-y coordinates

do o=0.,2*pi,step

x=xm*cos(delta)+a*cos(o)
y=xm*sin(delta)+a*sin(o)
r=x*x+y*y
if (r.ne.0.) then
xi=x*(1.+c*c/r)
et=y*(1.-c*c/r)
write(*,*) o*180./pi,xi,et
write(22,*) xi,et
end if
end do



1000 continue
write (*,*) pi,a,c,b



!###########################################################
c Close the output .dxf file

write(20,'(/,A,/,I1,/,A)') "ENDSEC",0,"EOF"

c Close units

close (20)
close (22)

end

!###################################################################

SUBROUTINE line(p1x,p1y,p2x,p2y,linecolor)
c line P1-P2
integer linecolor
write(20,'(A,/,I1,/,A)') "LINE",8,"default"
write(20,'(I1,/,A)') 6,"CONTINUOUS"
write(20,'(I2,/,F6.1,/,I2,/,F6.1)') 10,p1x,20,p1y
write(20,'(I2,/,F6.1,/,I2,/,F6.1)') 11,p2x,21,p2y
write(20,'(I2,/,I2,/,I2,/,I2,/,I2)') 39,0,62,linecolor,0
return
end

SUBROUTINE point(p1x,p1y,pointcolor)
c punt P1
integer pointcolor
write(20,'(A,/,I1,/,A)') "POINT",8,"default"
write(20,'(I1,/,A)') 6,"CONTINUOUS"
write(20,'(I2,/,F6.1,/,I2,/,F6.1)') 10,p1x,20,p1y
write(20,'(I2,/,I2,/,I2,/,I2,/,I2)') 39,0,62,pointcolor,0
return
end

!##############################################################3

 


index