subroutine magtots (indval,tilt,rggsm,rgsmg,xgsm,ygsm,zgsm, > bxt,byt,bzt,bt,bd,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.30 - V 2.0 c*VER 03.01.06 - V 2.1 c* c*AUT spec. CNES - JC KOSIK - juin 1998 c*AUT port. CISI c* c*ROL Theme : Calculs de geophysique c*ROL Calcul du champ total comme somme du champ dipolaire et du c*ROL champ externe: ichp = 1 Tsyganenko 89Kp, ichp = Tsyganenko 87 c*ROL ichp = 3, Kosik 97 c* c*PAR indval (I) : indice geomagnetique : niveau d'amplitude du champ c* c*PAR tilt (I) : angle de tilt (radians) c* c*PAR rggsm (I) : matrice (3,3) de passage du repere geocentrique c*PAR : au repere magnetospherique c*PAR rgsmg (I) : matrice (3,3) de passage du repere solaire c*PAR : magnetospherique au repere geocentrique c* c*PAR xgsm (I) : coordonnee solaire magnetospherique x du point c*PAR : (rayons terrestres) c*PAR ygsm (I) : coordonnee solaire magnetospherique y du point c*PAR : (rayons terrestres) c*PAR zgsm (I) : coordonnee solaire magnetospherique z du point c*PAR : (rayons terrestres) c* c*PAR bxt (O) : coordonnee solaire magnetospherique x du champ c*PAR byt (O) : coordonnee solaire magnetospherique y du champ c*PAR bzt (O) : coordonnee solaire magnetospherique z du champ c* c*PAR bt (O) : composante tangentielle du champ total (gauss) c* c*PAR bd (O) : module du champ dipolaire c* c*PAR ier (O) : code de retour c* c*NOT indval : 1 = Kp = 0 , 0+ c*NOT indval : 2 = Kp = 1- , 1 , 1+ c*NOT indval : 3 = Kp = 2- , 2 , 2+ c*NOT indval : 4 = Kp = 3- , 3 , 3+ c*NOT indval : 5 = Kp = 4- , 4 , 4+ c*NOT indval : 6 = Kp > 5- c* c*NOT ier : sans objet c* c*NOT common : choichp c* c*INF utilise : gsmgeo, dipols, geogsm, ex89kp, tsyg87, kk97kp c* c*HST version 1.0 - 99.03.31 - creation de la maglib au CDPP c*HST version 2.0 - 01.05.30 - 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 integer indval double precision tilt double precision rggsm(3,3),rgsmg(3,3) double precision xgsm,ygsm,zgsm double precision bxt,byt,bzt,bt,bd integer ier c c ---------------------------------- c*FON Declaration des variables communes c ---------------------------------- c integer ichp c*COM ichp : type du champ externe (1 : Tsyganenko 89Kp, 2 : Tsyganenko 87, c*COM : 3 : Kosik 97) c common/choichp/ichp c c --------------------------------- c*FON Declaration des variables locales c --------------------------------- c double precision bxme,byme,bzme,btme c*LOC btme : composante tangentielle du champ c double precision xg,yg,zg c*LOC xg,yg,zg : composantes cartesiennes en x, y et z c double precision bxd,byd,bzd c*LOC xg,yg,zg : composantes cartesiennes en x, y et z c double precision bxdgsm,bydgsm,bzdgsm c*LOC xg,yg,zg : composantes gsm en x, y et z 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 c ------------------------------------------------------- c*FON Calcul des coordonnees dipolaires cartesiennes du point c ------------------------------------------------------- c call gsmgeo(rgsmg,xgsm,ygsm,zgsm,xg,yg,zg,ier) c c ----------------------------------------------------- c*FON Calcul du champ du dipole en coordonnees cartesiennes c*FON bdx ,bdy, bdz c ----------------------------------------------------- c call dipols(xg,yg,zg,bxd,byd,bzd,bd,ier) c c -------------------------------- c*FON On transforme en composantes gsm c -------------------------------- c call geogsm(rggsm,bxd,byd,bzd,bxdgsm,bydgsm,bzdgsm,ier) c if (ichp .eq. 1) then c c ---------------------------------- c*FON Calcul du champ de Tsyganenko 89Kp c ---------------------------------- c call ex89kp (indval,tilt,xgsm,ygsm,zgsm,bxme,byme,bzme,ier) c else if (ichp .eq. 2) then c c -------------------------------- c*FON Calcul du champ de Tsyganenko 87 c -------------------------------- c call tsyg87 (indval,tilt,xgsm,ygsm,zgsm,bxme,byme,bzme,ier) c elseif (ichp .eq. 3) then c call kk97kp (indval,tilt,xgsm,ygsm,zgsm, > bxme,byme,bzme,btme,ier) c endif c c ---------------------------------------------------------- c*FON Somme des composantes GSM des champs dipolaire et externe c ---------------------------------------------------------- c bxt = bxdgsm + bxme byt = bydgsm + byme bzt = bzdgsm + bzme c c ------------------------------- c*FON Calcul du module du champ total c ------------------------------- c bt = sqrt(bxt * bxt + byt * byt + bzt * bzt) c c **************** c Fin de programme c **************** c return end