inmag.f 4.3 KB
      subroutine inmag (magin,year,rre,thet,phi,bri,bti,bpi,bi,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 d'origine interne.
c*
c*PAR magin (I) : type de champ magnetique interne
c*
c*PAR year  (I) : annee fractionnaire (>= 2000. pour magin = 2 ;
c*PAR           : >= 2005. pour magin = 3)
c*PAR           : >= 2010. pour magin = 4)
c*PAR           : >= 2015. pour magin = 1 ou 5)
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 bri   (O) : composante radiale du champ magnetique le long du
c*              : meridien positive vers l'exterieur (gauss)
c*PAR bti   (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 bi    (O) : module du champ (gauss)
c*
c*PAR ier   (O) : code de retour
c*
c*NOT magin     :  1 = dipole + g11 + h11
c*NOT magin     :  2 = champ IGRF 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 ier       : sans objet
c*
c*INF utilise   : dipol, dgrf00, dgrf05, dgrf10, igrf15
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*HST version 3.0 - 01.01.07 - utilisation du champ 2005
c*HST version 4.0 - 13.10.10 - Introduction du 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***********************************************************************
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
      double precision rre, thet, phi
      double precision bri, bti, bpi, bi
      integer ier
c
c     ---------------------------------
c*FON Declaration des variables locales
c     ---------------------------------
c
      integer ier1,ier2,ier3
c*LOC ier1,ier2,ier3 : codes retour des modules appeles
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
c
c     ------------------------------------
c*FON Calcul du champ (dipole + g11 + h11)
c     ------------------------------------
c
      if (magin .eq. 1) then
c
         call dipol(year,rre,thet,phi,bri,bti,bpi,bi,ier1)
c
c     -------------------------
c*FON Calcul du champ DGRF 2000
c     -------------------------
c
      else if (magin .eq. 2) then
c
         call dgrf00(year,rre,thet,phi,bri,bti,bpi,bi,ier2)
c
c     -------------------------
c*FON Calcul du champ DGRF 2005
c     -------------------------
c
      else if (magin .eq. 3) then
c
         call dgrf05(year,rre,thet,phi,bri,bti,bpi,bi,ier2)
c
c     -------------------------
c*FON Calcul du champ DGRF 2010
c     -------------------------
c
      else if (magin .eq. 4) then
c
         call dgrf10(year,rre,thet,phi,bri,bti,bpi,bi,ier2)
c
c     -------------------------
c*FON Calcul du champ IGRF 2015
c     -------------------------
c
      else if (magin .eq. 5) then
c
         call igrf15(year,rre,thet,phi,bri,bti,bpi,bi,ier2)
c
      endif
c
c     ****************
c     Fin de programme
c     ****************
c
      return
      end