source: trunk/LMDZ.PLUTO.old/libf/phypluto/iniorbit.F @ 3436

Last change on this file since 3436 was 3175, checked in by emillour, 11 months ago

Pluto PCM:
Add the old Pluto LMDZ for reference (required prior step to making
an LMDZ.PLUTO using the same framework as the other physics packages).
TB+EM

File size: 2.9 KB
Line 
1      SUBROUTINE iniorbit
2     $     (paphelie,pperiheli,pyear_day,pperi_day,pobliq)
3      use planet_h         
4      IMPLICIT NONE
5
6c=======================================================================
7c
8c   Auteur:
9c   -------
10c     Frederic Hourdin      22 Fevrier 1991
11c
12c   Objet:
13c   ------
14c    Initialisation du sous programme orbite qui calcule
15c    a une date donnee de l'annee de duree year_day commencant
16c    a l'equinoxe de printemps et dont le perihelie se situe
17c    a la date peri_day, la distance au soleil et la declinaison.
18c
19c   Interface:
20c   ----------
21c   - Doit etre appele avant d'utiliser orbite.
22c   - initialise une partie du common planete.h
23c
24c   Arguments:
25c   ----------
26c
27c   Input:
28c   ------
29c   aphelie       \   aphelie et perihelie de l'orbite
30c   periheli      /   en millions de kilometres.
31c
32c=======================================================================
33
34c-----------------------------------------------------------------------
35c   Declarations:
36c   -------------
37
38!#include "planete.h"
39#include "comcstfi.h"
40
41c   Arguments:
42c   ----------
43
44      REAL paphelie,pperiheli,pyear_day,pperi_day,pobliq
45
46c   Local:
47c   ------
48
49      REAL zxref,zanom,zz,zx0,zdx
50      INTEGER iter
51
52c-----------------------------------------------------------------------
53
54      pi=2.*asin(1.)
55
56      aphelie =paphelie
57      periheli=pperiheli
58      year_day=pyear_day
59      obliquit=pobliq
60      peri_day=pperi_day
61
62      PRINT*,'Perihelie en Mkm  ',periheli
63      PRINT*,'Aphelise  en Mkm  ',aphelie
64      PRINT*,'obliquite en degres  :',obliquit
65c     Astronomical Unit : 1 AU
66      unitastr=149.597870700
67      e_elips=(aphelie-periheli)/(periheli+aphelie)
68c     parametre de l'ellipse 
69      p_elips=0.5*(periheli+aphelie)*(1-e_elips*e_elips)/unitastr
70
71      print*,'iniorbit: e_elips= ',e_elips
72      print*,'iniorbit: p_elips= ',p_elips,' AU'
73      print*,'iniorbit: year_day= ',year_day,' sols'
74      print*,'iniorbit: peri_day= ',peri_day,' sols'
75
76c-----------------------------------------------------------------------
77c calcul de l'angle polaire et de la distance au soleil :
78c -------------------------------------------------------
79
80c  calcul de l'zanomalie moyenne
81
82      zz=(year_day-pperi_day)/year_day
83      zanom=2.*pi*(zz-nint(zz))
84      zxref=abs(zanom)
85      PRINT*,'zanom  ',zanom
86
87c  resolution de l'equation horaire  zx0 - e * sin (zx0) = zxref
88c  methode de Newton
89
90      zx0=zxref+e_elips*sin(zxref)
91      DO 110 iter=1,100
92         zdx=-(zx0-e_elips*sin(zx0)-zxref)/(1.-e_elips*cos(zx0))
93         if(abs(zdx).le.(1.e-12)) goto 120
94         zx0=zx0+zdx
95110   continue
96120   continue
97      zx0=zx0+zdx
98      if(zanom.lt.0.) zx0=-zx0
99      PRINT*,'zx0   ',zx0
100
101c zteta est la longitude solaire
102
103      timeperi=2.*atan(sqrt((1.+e_elips)/(1.-e_elips))*tan(zx0/2.))
104      PRINT*,'longitude solaire du perihelie timeperi= ',timeperi,'rad'
105
106      RETURN
107      END
Note: See TracBrowser for help on using the repository browser.