source: trunk/MESOSCALE/LMD_LES_MARS/modif_mars/res/ls2sol.F @ 134

Last change on this file since 134 was 17, checked in by aslmd, 14 years ago

spiga:mineur

File size: 1.5 KB
Line 
1cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
2      real function ls2sol(ls)
3
4c  Returns solar longitude, Ls (in deg.), from day number (in sol),
5c  where sol=0=Ls=0 at the northern hemisphere spring equinox
6
7      implicit none
8
9c  Arguments:
10      real ls
11
12c  Local:
13      double precision xref,zx0,zteta,zz
14c       xref: mean anomaly, zteta: true anomaly, zx0: eccentric anomaly
15      double precision year_day
16      double precision peri_day,timeperi,e_elips
17      double precision pi,degrad
18      parameter (year_day=668.6d0) ! number of sols in a amartian year
19c      data peri_day /485.0/
20      parameter (peri_day=485.35d0) ! date (in sols) of perihelion
21c  timeperi: 2*pi*( 1 - Ls(perihelion)/ 360 ); Ls(perihelion)=250.99
22      parameter (timeperi=1.90258341759902d0)
23      parameter (e_elips=0.0934d0)  ! eccentricity of orbit
24      parameter (pi=3.14159265358979d0)
25      parameter (degrad=57.2957795130823d0)
26
27      if (abs(ls).lt.1.0e-5) then
28         if (ls.ge.0.0) then
29            ls2sol = 0.0
30         else
31            ls2sol = year_day
32         end if
33         return
34      end if
35
36      zteta = ls/degrad + timeperi
37      zx0 = 2.0*datan(dtan(0.5*zteta)/dsqrt((1.+e_elips)/(1.-e_elips)))
38      xref = zx0-e_elips*dsin(zx0)
39      zz = xref/(2.*pi)
40      ls2sol = zz*year_day + peri_day
41      if (ls2sol.lt.0.0) ls2sol = ls2sol + year_day
42      if (ls2sol.ge.year_day) ls2sol = ls2sol - year_day
43
44      return
45      end
46
47cccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccccc
Note: See TracBrowser for help on using the repository browser.