       program weights
c
       implicit real*8 (a-h,o-z)
       real*8 rho,vel,Swing,Nzult,AR,L,D,Wfuel,Wen,
     ^ Nen,Bw,Npass,Wpass,Wpay,wtot,wtot0,Wempty,
     ^ Length,Diameter
c
c      namelist /WeightsIn/ rho,vel,Swing,Nzult,AR,
c    ^ Length,Diameter,Wfuel,Wen,Nen,Npass,Wpay
c
       open(3,file='WeightsIn')
       read(3,*) rho,vel,Swing,Nzult,AR,Length,Diameter,
     ^ Wfuel,Wen,Nen,Npass,Wpay
       close(3)
c
       open(2,file='WeightsTable',status='unknown',form='formatted')
       write(2,302)
 302   format(' ','      Interation and Convergence of Individual 
     $Aircrafts Component Weights')   
       write(2,300)
 300   format(' ',t4,'Wing',t18,'H. Tail',t33,'V. Tail',t47,'Fuselage',
     $        t62, 'Main Gear', t77, 'Nose Gear', t92, 'Engines',
     $        t107, 'Fuel Sys', t122, 'Controls', t137, 'Hydraulics',
     $        t152, 'Avionics', t167, 'Electrical',
     $        t181, 'A/C&Anti-Ice', t196, 'Total Empty')
       write(2,301)
 301   format(' ')    
c
       open(4, file='WeightsOut', status='unknown', form='formatted')
c
       write(4,*) ' '
       write(4,*) ' ===========  Convergence Data ============ '
       write(4,*) ' '
c
       L=Length
       D=Diameter
       PassWt=175.0
       con_tol = 0.001
       wtot = 0.0
       Wpass = PassWt*npass
c
  10   wtot0 = wtot
c
c      weights calculations
c
       Wtot=Wpay+Wfuel+Wpass+Wempty
c
c      empty weight estimation
c
       Bw=sqrt(AR*Swing)
c
       call w_mpt(rho,vel,Swing,Wfuel,Nzult,Wtot,AR,L,D,Wen,
     ^ Nen,Bw,Npass,Wstruct,Wlg,Wprop,Wequip,Wempty)
c
       diff = abs(wtot0 - Wtot)
c
       write(4,*) "    Convergence difference:", diff
       if (diff.gt.con_tol) goto 10
c
       write(4,*) ' '
       write(4,*) ' ===========  Weight Analysis ============ '
       write(4,*) ' '
       write(4,101) Wpay
 101   format('Weight of Payload (lbs.) =',G15.6)
       write(4,102) Wfuel
 102   format('Weight of Fuel (lbs.) =',G15.6)
       write(4,103) NPass
 103   format('Number of Passengers =',F6.1)
       write(4,104) PassWt, WPass
 104   format('Weight of Passengers @',F5.1,' (lbs.) each =',F8.1)
       write(4,*) ' '
       write(4,*) ' ====  Weight of Aircrafts Components ===== '
       write(4,*) ' '
       write(4,204) WStruct
 204   format('Weight of Aircrafts Structure (lbs.) =',G15.6)
       write(4,205) Wlg
 205   format('Weight of Aircrafts Landing Gear (lbs.) =',G15.6)
       write(4,206) Wprop
 206   format('Weight of Aircrafts Propulsion System (lbs.) =',G15.6)
       write(4,207) Wequip
 207   format('Weight of Aircrafts Internal Equiptment (lbs.) =',G15.6)
       write(4,208) Wempty
 208   format('Total Weight of Empty Aircraft (lbs.) =',G15.6)
       write(4,209) Wtot
 209   format('Total Weight of Loaded Aircraft (lbs.) =',G15.6)
c
        close(4)
c       
        stop
        end
c
c###############################################################
c
        subroutine w_mpt(rho,vel,Sw,Wfw,Nzult,Wdg,AR,L,D,Wen,
     ^  Nen,Bw,Np,Wstruct,Wlg,Wprop,Wequip,Wempty)
c
c       baseline GA aircraft weights - Raymer(modified)
c       simplified estimates for level0 sizing
c
        implicit real*8(a-h,o-z)
        real*8 lambda, Nzult, Lt, L, Lm, Nl, Ln, Nen, Nt, M, Np
        wsweep=0.		
        lambda=1.
        toc=0.15
        Sht=.2*Sw
        htsweep=0.
        httoc=0.15
        htlambda=1.
        htAR=.8*AR
        Svt=.1*Sw
        vtsweep=0.
        vttoc=0.15
        vtlambda=1.
        vtAR=.8*AR
        vtplace=0.
        Sf=3.14159*D*L
        Lt=.8*L
        Nl=Nzult
        Wl=Wdg
        Lm=(D/2.)*12.
        Ln=(D/2.)*12.
        Vt=Wfw/6.5
        Vi=Vt
        Nt=1.
        Wuav=.02*Wdg
        M=vel/1100.
c
        Q=.5*rho*vel**2
        wsweep=wsweep/57.29
        htsweep=htsweep/57.29
        vtsweep=vtsweep/57.29
c
c       wing weight
c
        Wwing=.036
     $  *(Sw**.758)
     $  *(Wfw**.0035)
     $  *(AR/(cos(wsweep))**2)**.6
     $  *(Q**.006)
     $  *(lambda**.04)
     $  *((100.*toc/cos(wsweep))**(-.3))
     $  *(Nzult*Wdg)**.49
c
c
c       horizontal tail
c
        Wht=.016
     $  *(Sht**.896)
     $  *(htAR/(cos(htsweep))**2)**0.043
     $  *(Q**.168)
     $  *(htlambda**(-.02))
     $  *((100.*httoc/cos(htsweep))**(-.12))
     $  *(Nzult*Wdg)**.414
c
c
c       vertical tail
c
        Wvt=.073
     $  *(1.+.2*vtplace)
     $  *(Svt**.873)
     $  *(vtAR/(cos(vtsweep))**2)**0.357
     $  *(Q**.122)
     $  *(vtlambda**.039)
     $  *((100.*vttoc/cos(vtsweep))**(-.49))
     $  *(Nzult*Wdg)**.376
c
c
c       fuselage (nonpressurized)
c
        Wfus =0.052
     $  *Sf**1.086
     $  *(Nzult*Wdg)**.177
     $  *(Lt**(-.051))
     $  *((L/D)**(-.072))
     $  *Q**.241
c
c
        Wmaingr = .095
     $  * (Nl*Wl)**.768
     $  * (Lm/12.)**0.409
c
c
c
        Wnosegr = .125
     $  * (Nl*Wl)**.556
     $  * (Ln/12.)**0.845
c
c
c
        Wengine = 2.575
     $  * Wen**.922
     $  * Nen
c
c
c
        Wfuelsys= 2.49
     $  * Vt**.726
     $  * (1./(1.+Vi/Vt))**.363
     $  * Nt**.242
     $  * Nen**.157
c
c
        Wflightcon = 0.053
     $  * L**1.536
     $  * Bw**0.371
     $  *(Nzult*Wdg*.0001)**.8
c
c
        Whydraulics = 0.001
     $  * Wdg
c
c
        Wavionics= 2.117
     $  * Wuav**.933
c
c
        Welec= 12.57
     $  *(Wfuelsys+Wavionics)**.51
c
c
        Wacai = .265
     $  * Wdg**.52
     $  * Np**.68
     $  * Wavionics**.17
     $  * M**0.08
c
c
        Wstruct= Wwing + Wht + Wvt + Wfus
        Wlg = Wmaingr + Wnosegr
        Wprop = Wengine + Wfuelsys
        Wequip = Wflightcon +Whydraulics +Wavionics + Welec + Wacai
c
        Wempty=Wstruct+Wlg+Wprop+Wequip
c
        write(2,305) Wwing, Wht, Wvt, Wfus, Wmaingr, Wnosegr, Wengine, 
     $                 Wfuelsys, Wflightcon, Whydraulics, Wavionics, 
     $                 Welec, Wacai, Wempty
 305    format(' ',14(G13.8,2x))
c
c
        return
        end
