parabn.f
3.38 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
subroutine parabn (arond,drond,yy,zz,xnpar,ynpar,znpar,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.06.05 - V 2.0
c*VER 03.01.06 - V 2.1
c*
c*AUT spec. CNES - JC KOSIK - juin 1995
c*AUT port. CISI
c*
c*ROL Theme : Calculs mathematiques
c*ROL Calcul de la normale a la parabole de la magnetopause ou
c*ROL a l'onde de choc.
c*
c*PAR arond (I) : parametre modifie par la transformation quadratique
c*PAR drond (I) : parametre modifie par la transformation quadratique
c*
c*PAR yy (I) : composante en x dans le repere de symetrie axiale
c*PAR zz (I) : composante en y dans le repere de symetrie axiale
c*
c*PAR xnpar (O) : composante en x de la normale
c*PAR ynpar (O) : composante en y de la normale
c*PAR znpar (O) : composante en z de la normale
c*
c*PAR ier (O) : code de retour
c*
c*NOT ier : sans objet
c*
c*INF utilise : angleg, norma
c*
c*HST version 1.0 - 99.03.31 - creation de la maglib au CDPP
c*HST version 2.0 - 01.06.05 - 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 arond,drond
double precision yy,zz
double precision xnpar,ynpar,znpar
integer ier
c
c ----------------------------------
c*FON Declaration des fonctions externes
c ----------------------------------
c
external angleg
double precision angleg
c
c ---------------------------------
c*FON Declaration des variables locales
c ---------------------------------
c
double precision yy2,zz2,ro2,ro
double precision phir,cph,sph
double precision gradro,gradfx,gradfy,gradfz
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 Debut de programme
c ******************
c
ier = 0
c
yy2 = yy * yy
zz2 = zz * zz
c
c -----------------------------
c*FON Calcul de la distance a l'axe
c -----------------------------
c
ro2 = yy2 + zz2
ro = sqrt(ro2)
c
c ----------------------------------
c*FON Calcul de la phase sur la parabole
c ----------------------------------
c
phir = angleg(yy,zz,ier)
c
cph = cos(phir)
sph = sin(phir)
c
c --------------------
c*FON Calcul des gradients
c --------------------
c
gradfx = 2.d0 * arond + drond
gradro = 2.d0 * ro
gradfy = gradro * cph
gradfz = gradro * sph
c
c ------------------------------------------------------
c*FON Calcul de la normale par normalisation des composantes
c ------------------------------------------------------
c
call norma(gradfx,gradfy,gradfz,xnpar,ynpar,znpar,ier)
c
c ****************
c Fin de programme
c ****************
c
return
end