Changeset 4191 for dynamico_lmdz/simple_physics/phyparam/physics
- Timestamp:
- Dec 20, 2019, 12:41:10 AM (6 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
dynamico_lmdz/simple_physics/phyparam/physics/astronomy.F90
r4190 r4191 85 85 END SUBROUTINE solarlong 86 86 87 SUBROUTINE iniorbit 88 !======================================================================= 89 ! 90 ! Auteur: 91 ! ------- 92 ! Frederic Hourdin 22 Fevrier 1991 93 ! 94 ! Objet: 95 ! ------ 96 ! Initialisation du sous programme orbite qui calcule 97 ! a une date donnee de l'annee de duree year_day commencant 98 ! a l'equinoxe de printemps et dont le perihelie se situe 99 ! a la date peri_day, la distance au soleil et la declinaison. 100 ! 101 ! Interface: 102 ! ---------- 103 ! - initialise certaines variables de ce module 104 ! - Doit etre appele avant d'utiliser orbite. 105 ! 106 ! Arguments: 107 ! ---------- 108 ! 109 ! Input: 110 ! ------ 111 ! aphelie \ aphelie et perihelie de l'orbite 112 ! periheli / en millions de kilometres. 113 ! 114 !======================================================================= 115 116 !----------------------------------------------------------------------- 117 118 ! Local: 119 ! ------ 120 REAL zxref,zanom,zz,zx0,zdx 121 INTEGER iter 122 123 !----------------------------------------------------------------------- 124 125 PRINT*,'Perihelie en Mkm ',periheli 126 PRINT*,'Aphelise en Mkm ',aphelie 127 PRINT*,'obliquite en degres :',obliquit 128 129 e_elips=(aphelie-periheli)/(periheli+aphelie) 130 p_elips=0.5*(periheli+aphelie)*(1-e_elips*e_elips)/unitastr 131 132 print*,'e_elips',e_elips 133 print*,'p_elips',p_elips 134 135 !----------------------------------------------------------------------- 136 ! calcul de l'angle polaire et de la distance au soleil : 137 ! ------------------------------------------------------- 138 139 ! calcul de l'zanomalie moyenne 140 141 zz=(year_day-peri_day)/year_day 142 zanom=2.*pi*(zz-nint(zz)) 143 zxref=abs(zanom) 144 PRINT*,'zanom ',zanom 145 146 ! resolution de l'equation horaire zx0 - e * sin (zx0) = zxref 147 ! methode de Newton 148 149 zx0=zxref+e_elips*sin(zxref) 150 DO iter=1,100 151 zdx=-(zx0-e_elips*sin(zx0)-zxref)/(1.-e_elips*cos(zx0)) 152 ! if(abs(zdx).le.(1.e-12)) goto 120 153 zx0=zx0+zdx 154 END DO 155 156 zx0=zx0+zdx 157 if(zanom.lt.0.) zx0=-zx0 158 PRINT*,'zx0 ',zx0 159 160 ! zteta est la longitude solaire 161 162 timeperi=2.*atan(sqrt((1.+e_elips)/(1.-e_elips))*tan(zx0/2.)) 163 PRINT*,'longitude solaire du perihelie timeperi = ',timeperi 164 165 166 END SUBROUTINE iniorbit 167 87 168 END MODULE astronomy 169
Note: See TracChangeset
for help on using the changeset viewer.