program sum_rap_mass c calcul de la somme des masse et du rapport de masse et precision c Auteur P. Morel OCA c--------------------------------------------------------------- use mod_ctephy use mod_kind implicit none real (kind=dp), parameter :: cte=6.283d0, radian=pi/180.d0, 1 ua=1.495978706d13, ctek=1.d5/ua*secon6*1.d-6 real (kind=dp) :: k, dk, pd, dpd, i, di, a, da, e, para, dpara, de, 1 b, db, s, ds, ma, dma, mb, dmb integer :: j c----------------------------------------------------------------- c j=1 j=2 c j=3 select case(j) case(1) pd=26.28 ; dpd=0.19 ; pd=26.275 ; dpd=0.1 a=0.83 ; da=0.02 ; a=0.83 ; da=0.01 i=-49.3 ; di= 2. ; i=-49.6 ; di= 1. e=0.38 ; de=0.01 ; e=0.38 ; de=0.005 para=0.0819 ; dpara=0.001 k=4.10 ; dk=0.15 case(2) pd=34.45 ; dpd=0.005 a=1.35 ; da=0.02 i=131.3 ; di= 0.3 e=0.462 ; de=0.002 para=0.094 ; dpara=0.001 k=4.010 ; dk=0.04 case(3) pd=26.27 ; dpd=0.19 a=0.83 ; da=0.02 i=-50. ; di= 2. e=0.38 ; de=0.01 para=0.082 ; dpara=0.001 k=4.10 ; dk=0.15 end select s=a**3/para**3/pd**2 ds=s*sqrt((3.d0*da/a)**2+(3.d0*dpara/para)**2+(2.d0*dpd/pd)**2) i=i*radian ; di=di*radian k=k*ctek ; dk=dk*ctek b=k*para*pd*sqrt(1-e**2)/a/abs(sin(i))/cte db=b*(dk/k+dpara/para+dpd/pd+da/a+de/e+abs(cos(i)/sin(i))*di) write(*,"('S=',es12.5,'+/-',es12.5,', B=',es12.5,'+/-',es12.5)") 1 s,ds,b,db mb=s*b ; dmb=mb*(ds/s+db/b) ma=s*(1.-b) ; dma=ma*(ds/s+db/b) write(*,"('mA=',es12.5,'+/-',es12.5,', mB=',es12.5,'+/-',es12.5)") 1 ma,dma,mb,dmb end program sum_rap_mass