le

Single surface hang glider profile

Parameters for a empirical single surface profile:

a1 = eliptical zone (horizontal projection)
a2 = circular zone
a3 = straight line zone
a4 = reflex zone
a5 = reflex zone to vertex

b1 = max thickness
b2 = thickness at a1+a2
b3 = thickness at a1+a2+a3
b4 = thickness at a1+a2+a3+a4
b5 = thickness at vertex

Notes:
- If a1+a2+a3+a4 = 100 then the thickness will be expresed in % of the chord.
- Trying the appropiates parameters for a1-a4 and b1-b5 result in a desired profile

Simple surface profile
Fig 1: Geometrical parameters definition

     Curves 1-2-3
Fig 2: Analytic expresions for the curves 1,2,3 of the profile

Curve 4
Fig 3: Analytic expresions for the reflex curve of the profile

profile  
Fig 4: Profile example drawing

File data and FORTRAN program for compute and drawing simple surface profiles:
The gnudwing-cl battens profiles will be designed wiht the program.

'profile.dat'

Profile data

25. a1 elipse
25. a2 circle
35. a3 line
15. a4 reflex
14. a5 vertex

10. b1 max thickness
8. b2 thickness at a1+a2

1. b5 thickness at vertex

50. le_dia leading edge diameter mm
15. le_ds double surface lenght


FORTRAN PROGRAM for simple surface profiles
(Compiles under g77 GNU Fortran)


ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
c
c HANG GLIDER SIMPLE SURFACE PROFILE v-0.1 (2004-01-26)
c by
c Pere Hernández Casellas
c LABORATORI D'ENVOL
c http://www.geocities.com/Yosemite/Meadows/2822/
c
c Program computes points (x,y) for a simple surface profile
c and creates 'profile.txt' result and 'profile.dxf' grafic
c Reads data from 'profile.dat' or internal code
c
c Runs well under g77 fortran compiler in Debian GNU/Linux 3.0
c
ccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc

PROGRAM hgssprofile

REAL a1,a2,a3,a4,a5,b1,b2,b3,b4,b5
REAL le_ds, le_dia
REAL PI
REAL x,y,x1,y1,x2,y2,xx
REAL mu, omega, s, radius,m,theta
REAL p1x,p2x,p1y,p2y
REAL k1,k2,k3,ym,yym,xn,xxn

c Basic parameters (see schemes)

a1= 25.
a2= 25.
a3= 35.
a4= 15.
a5= 14.

b1= 10.
b2= 8.
c b3 derived
c b4 derived
b5= 1.

le_dia= 50.
le_ds= 15.

PI=4.*atan(1.)
write (*,*) 'PI=',PI

c Read parameters from a profile.dat file. Comment if desired.
open (unit=15,file='profile.dat')
read (15,'(/)')
read (15,*) a1
read (15,*) a2
read (15,*) a3
read (15,*) a4
read (15,*) a5
read (15,*) b1
read (15,*) b2
read (15,*) b5
read (15,*) le_dia
read (15,*) le_ds
close(15)
write (*,*) a1,a2,a3,b5,le_ds

c Open result file wiht coordinates x,y
open(unit=10,file='profile.txt')
i=0


c Ellipse

do theta=0.,90.,5.
i=i+1
x=a1-a1*cos(theta*PI/180.)
y=b1*sin(theta*PI/180.)
write(10,*) x,y
end do
write(*,*) i,x,'fi elipse'


c Circle

mu=atan(a2/(b1-b2))
omega=PI-2.*mu
s=sqrt(a2*a2+(b1-b2)*(b1-b2))
radius=0.5*s/sin(0.5*omega)

do theta=0.,omega,0.0088
i=i+1
x=a1+radius*sin(theta)
y=b2-(radius-(b1-b2))+radius*cos(theta)
write(10,*) x,y
end do
write (*,*) i,x,'fi circle'

c Line

b3=b2-a3*tan(omega)
write(*,*) 'hola'
write(*,*) 'b3,b2,omega=',b3,b2,omega
m=(b3-b2)/a3
do xx=0.,a3,a3/4.
i=i+1
x=a1+a2+xx
y=m*xx+b2
write(10,*) x,y
end do
write(*,*) i,x,m,'fi line'

c Reflex

k1=(b3-b5+m*a5)/(-a5*a5)
k2=m+2.*k1*a5
k3=b5
do xx=-a5,a4-a5,a4/20.
i=i+1
x=a1+a2+a3+a5+xx
y=k1*xx*xx+k2*xx+k3
write(10,*) x,y
end do
write(*,*) i,x,'fi reflex'

c Close result file
close (10)

c Open result file wiht coordinates x,y
open(unit=10,file='profile.txt')

do j=1,i
read (10,*) x,y
write(*,*) j,x,y
end do
write (*,*) i
write (*,*) 'fi arxiu'
close(10)

c Generation of .dxf drawing profile

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

c Grid

do ym=0.,5.,1.
yym=ym*4.
call line(0.,-yym,100.,-yym,7)
end do

do xn=0.,10.,1.
xxn=xn*10.
call line(xxn,-0.,xxn,-20.,7)
end do

c Profile

do j=1,i-1
read (10,*) x1,y1
read (10,*) x2,y2
call line(x1,-y1,x2,-y2,2)
backspace (10)
end do


c Close the output .dxf file
write(20,'(/,A,/,I1,/,A)') "ENDSEC",0,"EOF"

c Close units

close (10)
close (20)

100 FORMAT (F6.2,3x,F6.2,/)
end


SUBROUTINE line(p1x,p1y,p2x,p2y,linecolor)

c line P1-P2
write(20,*)
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



index