source: codes/icosagcm/branches/SATURN_DYNAMICO/LMDZ.COMMON/config/ppsrc/phys/stellarlong.f @ 224

Last change on this file since 224 was 224, checked in by ymipsl, 10 years ago
File size: 3.4 KB
Line 
1      SUBROUTINE stellarlong(pday,pstellong)
2      IMPLICIT NONE
3
4c=======================================================================
5c
6c   Objet:
7c   ------
8c
9c      Calcul de la distance soleil-planete et de la declinaison
10c   en fonction du jour de l'annee.
11c
12c
13c   Methode:
14c   --------
15c
16c      Calcul complet de l'elipse
17c
18c   Interface:
19c   ----------
20c
21c      Uncommon comprenant les parametres orbitaux.
22c
23c   Arguments:
24c   ----------
25c
26c   Input:
27c   ------
28c   pday          jour de l'annee (le jour 0 correspondant a l'equinoxe)
29c
30c   Output:
31c   -------
32c   pdist_star     distance entre le soleil et la planete
33c                 ( en unite astronomique pour utiliser la constante 
34c                  solaire terrestre 1370 Wm-2 )
35c   pdecli        declinaison ( en radians )
36c
37c=======================================================================
38c-----------------------------------------------------------------------
39c   Declarations:
40c   -------------
41
42!-----------------------------------------------------------------------
43! INCLUDE planet.h
44
45      COMMON/planet/apoastr,periastr,year_day,peri_day,                 &
46     &       obliquit,nres,                                             &
47     &       z0,lmixmin,emin_turb,coefvis,coefir,                       &
48     &       timeperi,e_elips,p_elips
49
50      real apoastr,periastr,year_day,peri_day,                          &
51     &     obliquit,nres,                                               &
52     &     z0,lmixmin,emin_turb,coefvis,coefir,                         &
53     &       timeperi,e_elips,p_elips
54     
55
56!-----------------------------------------------------------------------
57!-----------------------------------------------------------------------
58! INCLUDE "comcstfi.h"
59
60      common/comcstfi/pi,rad,g,r,cpp,rcp,dtphys,daysec,mugaz,omeg
61      common/comcstfi/avocado!,molrad,visc
62     
63      real pi,rad,g,r,cpp,rcp,dtphys,daysec,mugaz,omeg
64      real avocado!,molrad,visc
65
66
67c arguments:
68c ----------
69
70      REAL pday,pdist_star,pdecli,pstellong
71      LOGICAL lwrite
72
73c Local:
74c ------
75
76      REAL zanom,xref,zx0,zdx,zteta,zz
77      INTEGER iter
78
79
80c-----------------------------------------------------------------------
81c calcul de l'angle polaire et de la distance au soleil :
82c -------------------------------------------------------
83
84c  calcul de l'zanomalie moyenne
85
86      zz=(pday-peri_day)/year_day
87      pi=2.*asin(1.)
88      zanom=2.*pi*(zz-nint(zz))
89      xref=abs(zanom)
90
91c  resolution de l'equation horaire  zx0 - e * sin (zx0) = xref
92c  methode de Newton
93
94      zx0=xref+e_elips*sin(xref)
95      DO 110 iter=1,10
96         zdx=-(zx0-e_elips*sin(zx0)-xref)/(1.-e_elips*cos(zx0))
97         if(abs(zdx).le.(1.e-7)) goto 120
98         zx0=zx0+zdx
99110   continue
100120   continue
101      zx0=zx0+zdx
102      if(zanom.lt.0.) zx0=-zx0
103
104c zteta est la longitude solaire
105
106      zteta=2.*atan(sqrt((1.+e_elips)/(1.-e_elips))*tan(zx0/2.))
107
108      pstellong=zteta-timeperi
109
110      IF(pstellong.LT.0.) pstellong=pstellong+2.*pi
111      IF(pstellong.GT.2.*pi) pstellong=pstellong-2.*pi
112c-----------------------------------------------------------------------
113c   sorties eventuelles:
114c   ---------------------
115
116c     IF (lwrite) THEN
117c        PRINT*,'jour de l"annee   :',pday
118c        PRINT*,'distance au soleil (en unite astronomique) :',pdist_star
119c        PRINT*,'declinaison (en degres) :',pdecli*180./pi
120c     ENDIF
121
122      RETURN
123      END
Note: See TracBrowser for help on using the repository browser.