PROGRAM gnuportaglider c GNU-PORTA-GLIDER c Geometrical design c Pere Hernández Casellas c LABORATORI D'ENVOL, october 2003 REAL a,b,c,d1,ga1,d2,g2,d3,ga3 REAL q,l,span,Area,d4,ga4,ar REAL PI,d2r,r2d c Basic parameters (see design) a=220. b=330. c=470. alfa=52. beta=77. d1=44. ga1=60. d2=150. ga2=10. d3=180. ga3=22. c Computes PI=4*ATAN(1.) d2r=PI/180. r2d=180./PI q=a+b span=2*c*SIN(beta*d2r) l=SQRT((a+c*COS(beta*d2r))**2+(c*SIN(beta*d2r))**2) Ax=0. Ay=0. Bx=0. By=a Cx=-l*SIN(alfa*d2r) Cy=l*COS(alfa*d2r) Cpx=-Cx Cpy=Cy Dx=0. Dy=a+b Ex=Cx+d1*COS(ga1*d2r) Ey=Cy+d1*SIN(ga1*d2r) Epx=-Ex Epy=Ey Fx=Ex+d2*COS(ga2*d2r) Fy=Ey+d2*SIN(ga2*d2r) Fpx=-Fx Fpy=Fy Gx=Fx+d3*COS(ga3*d2r) Gy=Fy+d3*SIN(ga3*d2r) Gpx=-Gx Gpy=Gy d4=SQRT((Dx-Gx)**2+(Dy-Gy)**2) ga4=r2d*ATAN((Dy-Gy)/(Dx-Gx)) c Results output write(*,*) "GNU-PORTA-GLIDER" write(*,*) "by Pere Hernández Casellas, october 2003" write(*,*) "- units in cm and degrees-" write(*,*) write(*,*) "a=",a," b=",b," c=",c," q=",q write(*,'(A,4(2x,F4.1))') "ga1,ga2,ga3,ga4",ga1,ga2,ga3,ga4 write(*,'(A,4(2x,F5.1))') "d1,d2,d3,d4",d1,d2,d3,d4 write(*,'(A,F6.1)') "cable leading edge=",l write(*,'(A,F6.1)') "span=",span write(*,*) "nose angle=",alfa," crossbar angle=",beta write(*,*) "Points coordinates:" write(*,100) "(Ax,Ay)=",Ax,Ay write(*,100) "(Bx,By)=",Bx,By write(*,100) "(Cx,Cy)=",Cx,Cy write(*,100) "(C'x,C'y)=", Cpx,Cpy write(*,100) "(Dx,Dy)=",Dx,Dy write(*,100) "(Ex,Ey)=",Ex,Ey write(*,100) "(E'x,E'y)=", Epx,Epy write(*,100) "(Fx,Fy)=",Fx,Fy write(*,100) "(F'x,F'y)=", Fpx,Fpy write(*,100) "(Gx,Gy)=",Gx,Gy write(*,100) "(G'x,G'y)=", Gpx,Gpy A1=0.25*span*l*COS(alfa*d2r) A2=0.5*d1*COS(ga1*d2r)*d1*SIN(ga1*d2r) A3=0.5*d2*COS(ga2*d2r)*d2*SIN(ga2*d2r) A4=0.5*d3*COS(ga3*d2r)*d3*SIN(ga3*d2r) A5=0.5*d4*COS(ga4*d2r)*d4*SIN(ga4*d2r) A6=d4*COS(ga4*d2r)*d3*SIN(ga3*d2r) A7=d3*COS(ga3*d2r)*d2*SIN(ga2) A8=d4*COS(ga4*d2r)*d2*SIN(ga2) A9=d1*SIN(ga1*d2r)*(d2*COS(ga2*d2r)+d3*COS(ga3*d2r) c +d4*COS(ga4*d2r)) Area=(A1+A2+A2+A4+A5+A6+A7+A8+A9)*2./10000. write(*,*) A1,A2,A3,A4,A5,A6,A7,A8,A9 write(*,'(A,F5.2)') "Sail area (m2)=", Area ar=span*span/(10000.*Area) write(*,'(A,F4.2)') "Aspect ratio=",ar c Now the basic lines writen in .dxf format open (20,FILE="lin.dxf") c line A-B 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,Ax,20,-Ay write(20,'(I2,/,F6.1,/,I2,/,F6.1)') 11,Bx,21,-By write(20,'(I2,/,I2,/,I2,/,I2,/,I2)') 39,0,62,9,0 c line B-D 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,Bx,20,-By write(20,'(I2,/,F6.1,/,I2,/,F6.1)') 11,Dx,21,-Dy write(20,'(I2,/,I2,/,I2,/,I2,/,I2)') 39,0,62,9,0 c line B-C (crossbar left) 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,Bx,20,-By write(20,'(I2,/,F6.1,/,I2,/,F6.1)') 11,Cx,21,-Cy write(20,'(I2,/,I2,/,I2,/,I2,/,I2)') 39,0,62,9,0 c line B-C' (crossbar right) 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,Bx,20,-By write(20,'(I2,/,F6.1,/,I2,/,F6.1)') 11,Cpx,21,-Cpy write(20,'(I2,/,I2,/,I2,/,I2,/,I2)') 39,0,62,9,0 c line A-C (cable leading edge left) 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,Ax,20,-Ay write(20,'(I2,/,F6.1,/,I2,/,F6.1)') 11,Cx,21,-Cy write(20,'(I2,/,I2,/,I2,/,I2,/,I2)') 39,0,62,12,0 c line A-C' (cable leading edge right) 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,Ax,20,-Ay write(20,'(I2,/,F6.1,/,I2,/,F6.1)') 11,Cpx,21,-Cpy write(20,'(I2,/,I2,/,I2,/,I2,/,I2)') 39,0,62,12,0 c line C-E 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,Cx,20,-Cy write(20,'(I2,/,F6.1,/,I2,/,F6.1)') 11,Ex,21,-Ey write(20,'(I2,/,I2,/,I2,/,I2,/,I2)') 39,0,62,2,0 c line C'-E' 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,Cpx,20,-Cpy write(20,'(I2,/,F6.1,/,I2,/,F6.1)') 11,Epx,21,-Epy write(20,'(I2,/,I2,/,I2,/,I2,/,I2)') 39,0,62,2,0 c line E-F 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,Ex,20,-Ey write(20,'(I2,/,F6.1,/,I2,/,F6.1)') 11,Fx,21,-Fy write(20,'(I2,/,I2,/,I2,/,I2,/,I2)') 39,0,62,2,0 c line E'-F' 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,Epx,20,-Epy write(20,'(I2,/,F6.1,/,I2,/,F6.1)') 11,Fpx,21,-Fpy write(20,'(I2,/,I2,/,I2,/,I2,/,I2)') 39,0,62,2,0 c line F-G 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,Fx,20,-Fy write(20,'(I2,/,F6.1,/,I2,/,F6.1)') 11,Gx,21,-Gy write(20,'(I2,/,I2,/,I2,/,I2,/,I2)') 39,0,62,2,0 c line F'-G' 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,Fpx,20,-Fpy write(20,'(I2,/,F6.1,/,I2,/,F6.1)') 11,Gpx,21,-Gpy write(20,'(I2,/,I2,/,I2,/,I2,/,I2)') 39,0,62,2,0 c line G-D 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,Gx,20,-Gy write(20,'(I2,/,F6.1,/,I2,/,F6.1)') 11,Dx,21,-Dy write(20,'(I2,/,I2,/,I2,/,I2,/,I2)') 39,0,62,2,0 c line G'-D 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,Gpx,20,-Gpy write(20,'(I2,/,F6.1,/,I2,/,F6.1)') 11,Dx,21,-Dy write(20,'(I2,/,I2,/,I2,/,I2,/,I2)') 39,0,62,2,0 write(20,'(/,A,/,I1,/,A)') "ENDSEC",0,"EOF" close (20) 100 FORMAT (A,3x,F6.1,3x,F6.1) end