subroutine outma1 (magout,indgm,indval,tilt,rggsm,rgsmg, > rre,thet,phi,bre,bte,bpe,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 1995 c*AUT port. CISI c* c*ROL Theme : Calculs de geophysique c*ROL Calcul du champ magnetique d'origine externe. c* c*PAR magout (I) : type de champ magnetique externe c* c*PAR indgm (I) : type d'indice geomagnetique Kp ou Ae 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 rre (I) : distance radiale geocentrique (rayons terrestres) c*PAR thet (I) : colatitude geocentrique (radians) c*PAR phi (I) : longitude geocentrique (radians) c* c*PAR br (O) : composante radiale du champ magnetique le long du c* : meridien positive vers l'exterieur (gauss) c*PAR bt (O) : composante tangentielle du champ magnetique le long c*PAR : du meridien positive vers le sud (gauss) c*PAR bp (O) : composante azimuthale du champ magnetique, positive c*PAR : vers l'est (gauss) c* c*PAR ier (O) : code de retour c* c*NOT magout : 0 = pas de champ externe c*NOT magout : 1 = Tsyganenko 87 c*NOT magout : 2 = Tsyganenko 89 c*NOT magout : 3 = Kosik 97 c* c*NOT indgm : 1 ---> indice geomagnetique Kp 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 indgm : 2 ---> indice geomagnetique Ae c*NOT indval : 1 ---> Ae = 0 - 50 c*NOT indval : 2 ---> Ae = 50 - 100 c*NOT indval : 3 ---> Ae = 100 - 150 c*NOT indval : 4 ---> Ae = 150 - 250 c*NOT indval : 5 ---> Ae = 250 - 400 c*NOT indval : 6 ---> Ae >= 400 c* c*NOT ier : sans objet c* c*INF utilise : spcar, geogsm, tsyg87, ex89kp, ex89ae, kk97kp c*INF utilise : gsmgeo, vcarvsp c* c*HST version 1.0 - 99.03.31 - creation de la maglib au CDPP c*HST version 2.0 - 01.05.30 - Ajout indice Kosik 97 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 magout, indgm, indval double precision tilt double precision rggsm(3,3), rgsmg(3,3) double precision rre, thet, phi double precision bre, bte, bpe integer ier c c --------------------------------- c*FON Declaration des variables locales c --------------------------------- c integer ier1,ier2,ier3,ier4,ier5,ier6,ier7,ier8 c*LOC ier1,ier2,ier3,ier4,ier5,ier6,ier7 : codes retour des modules appeles c double precision xg,yg,zg c*LOC xg,yg,zg : composantes cartesiennes en x,y et z c double precision xgsm,ygsm,zgsm c*LOC xgsm,ygsm,zgsm : composantes solaires magnetospheriques en x,y et z c double precision bgx,bgy,bgz c*LOC bgx,bgy,bgz : composantes cartesiennes c double precision bp c*LOC bp : module du champ magnetique c double precision bxgsm,bygsm,bzgsm c*LOC bxgsm,bygsm,bzgsm : composantes suivant xgsm, ygsm et zgsm c* du champ magnetique 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 ier8 = 0 c bre = 0.d0 bte = 0.d0 bpe = 0.d0 c c -------------------------------------------- c*FON Transformation des coordonnees spheriques en c*FON coordonnees cartesiennes c -------------------------------------------- c call spcar(rre,thet,phi,xg,yg,zg,ier1) c c ----------------------------------------------- c*FON Transformation des composantes geocentriques en c*FON composantes solaires magnetospheriques c ----------------------------------------------- c call geogsm(rggsm,xg,yg,zg,xgsm,ygsm,zgsm,ier2) c c -------------------------------------- c*FON Traitement du champ de type Tsyganenko c -------------------------------------- c if (magout .eq. 1) then call tsyg87(indval,tilt,xgsm,ygsm,zgsm,bxgsm, > bygsm,bzgsm,ier3) c c ------------------------------------------------ c*FON Traitement des indices geomagnetiques de type Kp c ------------------------------------------------ c elseif (magout .eq. 2 .and. indgm .eq. 1) then call ex89kp(indval,tilt,xgsm,ygsm,zgsm, > bxgsm,bygsm,bzgsm,ier4) c c ------------------------------------------------ c*FON Traitement des indices geomagnetiques de type Ae c ------------------------------------------------ c elseif (magout .eq. 2 .and. indgm .eq. 2) then call ex89ae(indval,tilt,xgsm,ygsm,zgsm, > bxgsm,bygsm,bzgsm,ier5) c c ------------------------------------------------------ c*FON Traitement des indices geomagnetiques de type Kosik 97 c ------------------------------------------------------ c elseif (magout .eq. 3) then call kk97kp (indval,tilt,xgsm,ygsm,zgsm, > bxgsm,bygsm,bzgsm,bp,ier6) endif c c ----------------------------------------------------- c*FON On transforme les composantes les nanoteslas en gauss c ----------------------------------------------------- c bxgsm = bxgsm / 100000.d0 bygsm = bygsm / 100000.d0 bzgsm = bzgsm / 100000.d0 c if (magout .ne. 0) then c c -------------------------------------------------------- c*FON Transformation des composantes solaire magnetospheriques c*FON en composantes geocentriques c -------------------------------------------------------- c call gsmgeo(rgsmg,bxgsm,bygsm,bzgsm,bgx,bgy,bgz,ier7) c c ------------------------------------------------ c*FON Transformation d'un vecteur cartesien en vecteur c*FON spherique c ------------------------------------------------ c call vcarvsp(thet,phi,bgx,bgy,bgz,bre,bte,bpe,ier8) endif c c **************** c Fin de programme c **************** c return end