Blame view

maglib/src/inigeom.f 8.52 KB
eb2d6c5c   Hacene SI HADJ MOHAND   adding maglib
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
      subroutine inigeom (iyear,imonth,iday,ihour,imin,isec,year,
     >                    alfag,tetdip,phidip,alfas,deltas,
     >                    rig,rgi,rgdip,rdipg,rgsm,rsmg,tilt,
     >                    rggsm,rgsmg,rgse,rseg,rigsm,rgsmi,ier)
c*
c***********************************************************************
c*
c*      "Copyright [c] CNES 98 - tous droits reserves"
c*      **********************************************
c*
c*PRO MAGLIB
c*
c*VER 99.03.31 - V 1.0
c*VER 01.10.23 - V 2.0
c*VER 03.01.06 - V 2.1
c*VER 01.01.07 - V 3.0
c*VER 13.10.10 - V 4.0
41e01c78   Hacene SI HADJ MOHAND   Mise a jours magl...
18
19
c*VER 17.02.24 - V 5.0
c*VER 20.07.15 - V 6.0
eb2d6c5c   Hacene SI HADJ MOHAND   adding maglib
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
c*
c*AUT spec. CNES - JC KOSIK - janvier 1991
c*AUT port. CISI
c*AUT adapt. AKKA
c*
c*ROL Theme : Modules d'initialisation
c*ROL         Initialisation de toutes les matrices de rotation
c*ROL         necessaires aux calculs geophysiques et geomagnetiques
c*ROL         depuis 2000, ainsi que l'angle de tilt, l'orientation
c*ROL         de l'axe du dipole, l'ascension droite et la declinaison
c*ROL         du soleil.
c*
c*PAR iyear  (I) : annee (>= 2000)
c*PAR imonth (I) : mois
c*PAR iday   (I) : jour
c*PAR ihour  (I) : heures
c*PAR imin   (I) : minutes
c*PAR isec   (I) : secondes
c*
c*PAR year   (O) : annee fractionnaire (>= 2000.)
c*
c*PAR alfag  (O) : ascension droite de Greenwich (radians)
c*PAR tetdip (O) : colatitude geocentrique du point ou le dipole
c*PAR            : coupe l'hemisphere nord (radians)
c*PAR phidip (O) : longitude geocentrique du point ou le dipole
c*PAR            : coupe l'hemisphere nord (radians)
c*
c*PAR alfas  (O) : ascension droite du soleil (radians)
c*PAR deltas (O) : declinaison du soleil (radians)
c*
c*PAR rig    (O) : matrice (3,3) de passage du repere inertiel
c*PAR            : au repere geocentrique
c*PAR rgi    (O) : matrice (3,3) de passage du repere geocentrique
c*PAR            : au repere inertiel
c*
c*PAR rgdip  (O) : matrice (3,3) de passage du repere geographique
c*PAR            : au repere dipolaire
c*PAR rdipg  (O) : matrice (3,3) de passage du repere dipolaire
c*PAR            : au repere geocentrique
c*
c*PAR rgsm   (O) : matrice (3,3) de passage du repere geocentrique
c*PAR            : au repere solaire magnetique
c*PAR rsmg   (O) : matrice (3,3) de passage du repere solaire
c*PAR            : magnetique au repere geocentrique
c*
c*PAR tilt   (O) : angle de tilt (radians)
c*
c*PAR rggsm  (O) : matrice (3,3) de passage du repere geocentrique
c*PAR            : au repere solaire magnetospherique
c*PAR rgsmg  (O) : matrice (3,3) de passage du repere solaire
c*PAR            : magnetospherique au repere geocentrique
c*
c*PAR rgse   (O) : matrice (3,3) de passage du repere geocentrique
c*PAR            : au repere solaire ecliptique
c*PAR rseg   (O) : matrice (3,3) de passage du repere solaire
c*PAR            : ecliptique au repere geocentrique
c*
c*PAR rigsm  (O) : matrice (3,3) de passage du repere inertiel
c*PAR            : au repere solaire magnetospherique
c*PAR rgsmi  (O) : matrice (3,3) de passage du repere solaire
c*PAR            : magnetospherique au repere inertiel
c*
c*NOT ier        : = 1 si iyear < 2000
c*
c*NOT ier        : sans objet
c*
41e01c78   Hacene SI HADJ MOHAND   Mise a jours magl...
86
c*INF utilise    : solter00, solter05, solter10, solter15, solter20
eb2d6c5c   Hacene SI HADJ MOHAND   adding maglib
87
88
89
90
91
92
93
c*INF utilise    : roig, rogdip, rogsm, roggsm, rogse, roigsm
c*
c*HST version 1.0 - 99.03.31 - creation de la maglib au CDPP
c*HST version 2.0 - 01.10.23 - ajout de soltern
c*HST version 2.1 - 03.01.06 - corrections en compilation avec g77
c*HST version 3.0 - 01.01.07 - calcul entre 2000 et 2010
c*HST version 4.0 - 13.10.10 - calcul entre 2000 et 2015
41e01c78   Hacene SI HADJ MOHAND   Mise a jours magl...
94
95
96
97
c*HST version 5.0 - 17.02.24 - calcul entre 2015 et 2020 (ajout du 
c*HST                          module solter15).
c*HST version 6.0 - 20.07.15 - calcul entre 2020 et 2025 (ajout du 
c*HST                          module solter20).
eb2d6c5c   Hacene SI HADJ MOHAND   adding maglib
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
c*
c***********************************************************************
c*
      implicit none
c
c     ---------------------------------
c*FON Declaration identificateur rcs_id
c     ---------------------------------
c
      character rcs_id*100
c
c     --------------------------
c*FON Declaration des parametres
c     --------------------------
c
      integer iyear, imonth, iday, ihour, imin, isec
      double precision year
      double precision alfag
      double precision tetdip, phidip
      double precision alfas, deltas
      double precision rig(3,3), rgi(3,3)
      double precision rgdip(3,3), rdipg(3,3)
      double precision rgsm(3,3), rsmg(3,3)
      double precision tilt
      double precision rggsm(3,3), rgsmg(3,3)
      double precision rgse(3,3), rseg(3,3)
      double precision rigsm(3,3), rgsmi(3,3)
      integer ier
c
c     ---------------------------------
c*FON Declaration des variables locales
c     ---------------------------------
c
      integer ier1,ier2,ier3,ier4,ier5,ier6,ier7
c*LOC ier1,ier2,ier3,ier4,ier5,ier6,ier7 : codes retour des modules appeles
c
      double precision obliq
c*LOC obliq : obliquite de l'ecliptique en radians
c
      SAVE
c
c     ---------------------------------
c*FON Affectation identificateur rcs_id
c     ---------------------------------
c
      data rcs_id /"
     >$Id$"/
c
c     ******************
c     Debut de programme
c     ******************
c
      ier  = 0
      ier1 = 0
      ier2 = 0
      ier3 = 0
      ier4 = 0
      ier5 = 0
      ier6 = 0
      ier7 = 0
c
c     ----------------------------------------------------------
c*FON Calcul de la position inertielle de Greenwich, du Soleil
c*FON et des angles d'orientation du dipole terrestre suivant
c*FON la periode, 2000-2005 ou 2005-2010 ou 2010-2015 ou 2015-2020
41e01c78   Hacene SI HADJ MOHAND   Mise a jours magl...
163
c*FON ou 2020-2025
eb2d6c5c   Hacene SI HADJ MOHAND   adding maglib
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
c     ----------------------------------------------------------
c
      if (iyear .ge. 2000 .and. iyear .lt. 2005) then
c
         call solter00(iyear,imonth,iday,ihour,imin,isec,year,alfag,
     >               alfas,deltas,obliq,tetdip,phidip,ier1)
c
      else if (iyear .ge. 2005 .and. iyear .lt. 2010) then
c
         call solter05(iyear,imonth,iday,ihour,imin,isec,year,alfag,
     >                 alfas,deltas,obliq,tetdip,phidip,ier1)
c
      else if (iyear .ge. 2010 .and. iyear .lt. 2015) then
c
         call solter10(iyear,imonth,iday,ihour,imin,isec,year,alfag,
     >                 alfas,deltas,obliq,tetdip,phidip,ier1)
c
41e01c78   Hacene SI HADJ MOHAND   Mise a jours magl...
181
      else if (iyear .ge. 2015 .and. iyear .lt. 2020) then
eb2d6c5c   Hacene SI HADJ MOHAND   adding maglib
182
183
184
185
c
         call solter15(iyear,imonth,iday,ihour,imin,isec,year,alfag,
     >                 alfas,deltas,obliq,tetdip,phidip,ier1)
c
41e01c78   Hacene SI HADJ MOHAND   Mise a jours magl...
186
187
188
189
190
      else if (iyear .ge. 2020) then
c
         call solter20(iyear,imonth,iday,ihour,imin,isec,year,alfag,
     >                 alfas,deltas,obliq,tetdip,phidip,ier1)
c
eb2d6c5c   Hacene SI HADJ MOHAND   adding maglib
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
      else
         ier = 1
      endif
c
c     ------------------------------------------------------
c*FON Calcul des matrices de passage du repere inertiel vers
c*FON le repere geographique
c     ------------------------------------------------------
c
      call roig(alfag,rig,rgi,ier2)
c
c     --------------------------------------------------------
c*FON Calcul des matrices de passage du repere geographique au
c*FON repere dipolaire
c     --------------------------------------------------------
c
      call rogdip(tetdip,phidip,rgdip,rdipg,ier3)
c
c     ----------------------------------------------------------
c*FON Calcul des matrices de passage du repere geographique vers
c*FON le repere solaire-magnetique
c     ----------------------------------------------------------
c
      call rogsm(rgdip,alfag,alfas,deltas,rgsm,rsmg,
     >           tilt,ier4)
c
c     ----------------------------------------------------------
c*FON Calcul des matrices de passage du repere geographique vers
c*FON le repere solaire-magnetospherique
c     ----------------------------------------------------------
c
      call roggsm(tilt,rgsm,rggsm,rgsmg,ier5)
c
c     --------------------------------------------------------
c*FON Calcul des matrices de passage du repere geographique au
c*FON repere solaire ecliptique
c     --------------------------------------------------------
c
      call rogse(alfag,alfas,deltas,obliq,rgse,rseg,ier6)
c
c     -----------------------------------------------------------
c*FON Calcul des matrices de passage du repere inertiel au repere
c*FON solaire magnetospherique gsm
c     -----------------------------------------------------------
c
      call roigsm(rig,rggsm,rigsm,rgsmi,ier7)
c
c     ****************
c     Fin de programme
c     ****************
c
      return
      end