derivs.f 3.92 KB
      subroutine derivs (ds3,dir,indval,tilt,rggsm,rgsmg,xgsm,ygsm,zgsm,
     >                   rxp1,rxp2,rxp3,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 - avril 1996
c*AUT port. CISI
c*
c*ROL Theme : Calculs de geophysique
c*ROL         Calcul des pas elementaires rxp1,rxp2,rxp3 au point  
c*ROL         courant xgsm,ygsm,zgsm. 
c*
c*PAR ds3    (I) : pas elementaire d'integration
c*
c*PAR dir    (I) : direction du trace des lignes de champ
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 de passage du repere geographique au
c*PAR            : repere solaire magnetospherique
c*PAR rgsmg  (I) : matrice de passage du repere solaire
c*PAR            : magnetospherique au repere geographique
c*
c*PAR xgsm   (I) : coordonnee solaire magnetospherique en x (rayons terrestres)
c*PAR ygsm   (I) : coordonnee solaire magnetospherique en y (rayons terrestres)
c*PAR zgsm   (I) : coordonnee solaire magnetospherique en z (rayons terrestres)
c*
c*PAR rxp1   (O) : pas elementaire sur x (au point xgsm)
c*PAR rxp2   (O) : pas elementaire sur y (au point ygsm)
c*PAR rxp3   (O) : pas elementaire sur z (au point zgsm)
c*
c*PAR ier    (O) : code de retour
c*
c*NOT dir      : +1 = trace vers les altitudes plus elevees
c*NOT          :      (depuis la surface vers l hemisphere oppose)
c*NOT          : -1 = trace vers les altitudes plus basses
c*NOT          :      (vers la surface du meme hemispher
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*INF utilise  : magtots
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 ds3, dir
      double precision xgsm, ygsm, zgsm
      double precision rxp1, rxp2, rxp3
      integer ier
c
c     ---------------------------------
c*FON Declaration des variables locales
c     ---------------------------------
c
      double precision bt
c*LOC bt : composante tangentielle du champ total
c
      double precision bi
c*LOC bi : module du champ
c
      double precision bxt,byt,bzt
c*LOC bxt,byt,bzt : coordonnees solaires magnetospheriques x,y et z 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
c
c     ------------------------------------------------
c*FON Calcul des derivees pour l' algorithme de Merson
c     ------------------------------------------------
c
      call magtots (indval,tilt,rggsm,rgsmg,xgsm,ygsm,zgsm,
     >              bxt,byt,bzt,bt,bi,ier)

c
      bt = sqrt(bxt * bxt + byt * byt + bzt * bzt)
c
      rxp1 = dir * ds3 * bxt / bt
      rxp2 = dir * ds3 * byt / bt
      rxp3 = dir * ds3 * bzt / bt
c
c     ****************
c     Fin de programme
c     ****************
c
      return
      end