source: trunk/LMDZ.MARS/libf/phymars/solarlong.F @ 1009

Last change on this file since 1009 was 608, checked in by aslmd, 13 years ago

LMDZ.MARS: minor correction in solarlong. MESOSCALE: output mtot and icetot now same units, notes updated, improved save_this_simu so that all .def are saved. UTIL PYTHON: now in mesoscale mode, sections show lat/lon instead of nx or ny (to be improved), also corrected 1D labels that was not working for several time asked.

File size: 2.5 KB
RevLine 
[38]1      SUBROUTINE solarlong(pday,psollong)
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   lwrite        clef logique pour sorties de controle
30c
31c   Output:
32c   -------
33c   pdist_sol     distance entre le soleil et la planete
34c                 ( en unite astronomique pour utiliser la constante
35c                  solaire terrestre 1370 Wm-2 )
36c   pdecli        declinaison ( en radians )
37c
38c=======================================================================
39c-----------------------------------------------------------------------
40c   Declarations:
41c   -------------
42
43#include "planete.h"
44#include "comcstfi.h"
45
46c arguments:
47c ----------
48
49      REAL pday,pdist_sol,pdecli,psollong
50      LOGICAL lwrite
51
52c Local:
53c ------
54
55      REAL zanom,xref,zx0,zdx,zteta,zz
56      INTEGER iter
57
58
59c-----------------------------------------------------------------------
60c calcul de l'angle polaire et de la distance au soleil :
61c -------------------------------------------------------
62
63c  calcul de l'zanomalie moyenne
64
65      zz=(pday-peri_day)/year_day
66      pi=2.*asin(1.)
67      zanom=2.*pi*(zz-nint(zz))
68      xref=abs(zanom)
69
70c  resolution de l'equation horaire  zx0 - e * sin (zx0) = xref
71c  methode de Newton
72
73      zx0=xref+e_elips*sin(xref)
74      DO 110 iter=1,10
75         zdx=-(zx0-e_elips*sin(zx0)-xref)/(1.-e_elips*cos(zx0))
76         if(abs(zdx).le.(1.e-7)) goto 120
77         zx0=zx0+zdx
78110   continue
79120   continue
80      zx0=zx0+zdx
81      if(zanom.lt.0.) zx0=-zx0
82
83c zteta est la longitude solaire
84
85      zteta=2.*atan(sqrt((1.+e_elips)/(1.-e_elips))*tan(zx0/2.))
86
87      psollong=zteta-timeperi
88
89      IF(psollong.LT.0.) psollong=psollong+2.*pi
90      IF(psollong.GT.2.*pi) psollong=psollong-2.*pi
91c-----------------------------------------------------------------------
92c   sorties eventuelles:
93c   ---------------------
94
95c     IF (lwrite) THEN
96c        PRINT*,'jour de l"annee   :',pday
97c        PRINT*,'distance au soleil (en unite astronomique) :',pdist_sol
98c        PRINT*,'declinaison (en degres) :',pdecli*180./pi
99c     ENDIF
100
101      RETURN
102      END
Note: See TracBrowser for help on using the repository browser.