subroutine magtot (magin,year,magout,indgm,indval,tilt,rggsm, > rgsmg,rre,thet,phi,br,bt,bp,bb,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*VER 01.01.07 - V 3.0 c*VER 13.10.10 - V 4.0 c*VER 2017.02.24 - V 5.0 c* c*AUT spec. CNES - JC KOSIK - juin 1995 c*AUT port. CISI c*AUT adapt. AKKA c* c*ROL Theme : Calculs de geophysique c*ROL Calcul du champ magnetique total en un point. c*ROL Ce champ est la combinaison possible d'un champ dipole c*ROL ou complet et d'un champ externe, ici Tsyganenko. c* c*PAR magin (I) : type de champ magnetique interne c* c*PAR year (I) : annee fractionnaire (>= 2000.) 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* 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 total (gauss) c*PAR bt (O) : composante tangentielle du champ total (gauss) c*PAR bp (O) : composante azimuthale du champ total (gauss) c* c*PAR bb (O) : module du champ magnetique total (gauss) c*PAR ier (O) : code de retour c* c*NOT magin : 1 = dipole + g11 + h11 c*NOT magin : 2 = champ DGRF 2000 c*NOT magin : 3 = champ DGRF 2005 c*NOT magin : 4 = champ DGRF 2010 c*NOT magin : 5 = champ IGRF 2015 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 : inmag, outma1 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*HST version 3.0 - 01.01.07 - utilisation du champ 2005 c*HST version 4.0 - 13.10.10 - Introductiondu champ IGRF10 et c*HST passage de IGRF05 a DGRF05 c*HST version 5.0 - 2017.02.24 - Introduction du champ IGRF15 et c*HST passage de IGRF10 a DGRF10 * 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 magin double precision year integer magout, indgm, indval double precision tilt double precision rggsm(3,3), rgsmg(3,3) double precision rre, thet, phi double precision br, bt, bp, bb integer ier c c --------------------------------- c*FON Declaration des variables locales c --------------------------------- c integer ier1,ier2 c*LOC ier1,ier2 : codes retour des modules appeles c double precision bpe,bre,bte c*LOC bpe,bre,bte : composantes radiale, tangentielle et azimuthale du champ c* : externe c double precision bpi,bri,bti c*LOC bpi,bri,bti : composantes radiale, tangentielle et azimuthale du champ c* : interne c double precision bi c*LOC bi : module du champ 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 c c -------------------------------------------- c*FON Initialisation a 0. des composantes du champ c -------------------------------------------- c bre = 0.d0 bte = 0.d0 bpe = 0.d0 c bri = 0.d0 bti = 0.d0 bpi = 0.d0 c if (magin .ne. 0) then c c -------------------------------------------- c*FON Calcul du champ magnetique d'origine interne c -------------------------------------------- c call inmag(magin,year,rre,thet,phi,bri,bti,bpi,bi,ier1) c endif c c -------------------------------------------- c*FON Calcul du champ magnetique d'origine externe c -------------------------------------------- c if (magout .ne. 0) then call outma1(magout,indgm,indval,tilt,rggsm,rgsmg, > rre,thet,phi,bre,bte,bpe,ier2) endif c c -------------------------------- c*FON Calcul du champ magnetique total c -------------------------------- c br = bri + bre bt = bti + bte bp = bpi + bpe bb = sqrt(br * br + bt * bt + bp * bp) c c **************** c Fin de programme c **************** c return end