mpsib.f
4.23 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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
86
87
88
89
90
91
92
93
94
95
96
97
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
subroutine mpsib (xgsm,ygsm,zgsm,imp,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.05.31 - V 2.0
c*VER 03.01.06 - V 2.1
c*
c*AUT spec. CNES - JC KOSIK - janvier 1991
c*AUT port. CISI
c*
c*ROL Theme : Frontieres et regions
c*ROL Calcul de l'appartenance d'un satellite a la magnetopause
c*ROL de Sibeck.
c*ROL On prend deux valeurs moyennes de l'activite du vent
c*ROL solaire pour calculer les frontieres internes et externes.
c*
c*PAR xgsm (I) : coordonnee solaire magnetospherique x (rayons terrestres)
c*PAR ygsm (I) : coordonnee solaire magnetospherique y (rayons terrestres)
c*PAR zgsm (I) : coordonnee solaire magnetospherique z (rayons terrestres)
c*
c*PAR imp (O) : indicateur d'appartenance du satellite a la
c*PAR : magnetopause de Sibeck
c*
c*PAR ier (O) : code de retour
c*
c*NOT imp : 0 = satellite en deca de la magnetopause, dans la magnetosphere
c*NOT imp : 1 = satellite dans la magnetopause
c*NOT imp : 2 = satellite au dela de la magnetopause
c*
c*NOT ier : sans objet
c*
c*INF utilise : aberrm
c
c*HST version 1.0 - 99.03.31 - creation de la maglib au CDPP
c*HST version 2.0 - 01.05.31 - correction de commentaires de code
c*HST version 2.1 - 03.01.06 - corrections en compilation avec g77
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
double precision xgsm, ygsm, zgsm
integer imp
integer ier
c
c ---------------------------------
c*FON Declaration des variables locales
c ---------------------------------
c
integer i
c*LOC i : indice de boucles
c
integer ier1
c*LOC ier1 : code retour des modules appeles
c
double precision xgsa,ygsa,zgsa
c*LOC xgsa,ygsa,zgsa : coordonnees solaires magnetospheriques x, y et z
c*LOC : corrigees
c
double precision aa(5),bb(5),cc(5),b1,b2,r2,x2
c*LOC Variables de travail intermediaires
c
SAVE
c
c ---------------------------------
c*FON Affectation identificateur rcs_id
c ---------------------------------
c
data rcs_id /"
>$Id$"/
c
c --------------------------
c*FON Affectation des constantes
c --------------------------
c
data (aa(i), i = 1, 5)
> /0.19d0, 0.19d0, 0.14d0, 0.15d0, 0.18d0/
data (bb(i), i = 1, 5)
> /19.3d0, 18.7d0, 18.2d0, 17.3d0, 14.2d0/
data (cc(i), i = 1, 5)/
> -272.4d0, -243.9d0, -217.2d0, -187.4d0, -139.2d0/
c
c ******************
c Debut de programme
c ******************
c
ier = 0
ier1 = 0
c
c -------------------------------------------------------------
c*FON Prise en compte de l'aberration du au deplacement de la terre
c*FON l'angle d'aberration est fixe a 4.0d0 degres
c -------------------------------------------------------------
c
call aberrm(xgsm,ygsm,zgsm,xgsa,ygsa,zgsa,ier1)
c
c ---------------------------------------------------------
c*FON Calculs pour la determination de la position du satellite
c ---------------------------------------------------------
c
r2 = ygsa * ygsa + zgsa * zgsa
x2 = xgsa * xgsa
b2 = r2 + aa(2) * x2 + bb(2) * xgsa + cc(2)
b1 = r2 + aa(4) * x2 + bb(4) * xgsa + cc(4)
c
imp = 0
c
c -----------------------------------------
c*FON Determination de la position du satellite
c -----------------------------------------
c
if (b1 .ge. 0.d0 .and. b2 .le. 0.d0) then
c
c satellite a l'interieur de la magnetopause
c
imp = 1
else if (b1 .lt. 0.d0) then
c
c satellite a l'interieur de la magnetosphere
c
imp = 0
else if (b2 .gt. 0.d0) then
c
c satellite a l'exterieur de la magnetosphere, (magnetopause)
c
imp = 2
endif
c
c ****************
c Fin de programme
c ****************
c
return
end