newcoff.f 3.68 KB
      subroutine newcoff (beta,gama,g20,g21,h21,g22,h22,ginc20,
     >                    ginc21,hinc21,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.06.05 - V 2.0
c*VER 03.01.06 - V 2.1
c*
c*AUT spec. CNES - JC KOSIK - janvier 1998
c*AUT port. CISI
c*
c*ROL Theme : Modeles de champs magnetiques
c*ROL        Calcul des coefficients ginc20, ginc21, hinc21 dans le  
c*ROL        repere incline excentre en fonction des anciens 
c*ROL        coefficients.
c*ROL        Voir note Kosik DGA/T/TI/MS/AM 97-155.
c*
c*PAR beta   (I) : coefficient du champ IGRF
c*PAR gama   (I) : coefficient du champ IGRF
c*PAR g20    (I) : coefficient du champ IGRF
c*PAR g21    (I) : coefficient du champ IGRF
c*PAR h21    (I) : coefficient du champ IGRF
c*PAR g22    (I) : coefficient du champ IGRF
c*PAR h22    (I) : coefficient du champ IGRF
c*
c*PAR ginc20 (O) : coefficient du champ dipolaire excentre
c*PAR ginc21 (O) : coefficient du champ dipolaire excentre
c*PAR hinc21 (O) : coefficient du champ dipolaire excentre
c*
c*PAR ier    (O) : code de retour
c*
c*NOT ier        : sans objet
c*
c*INF utilise    : sans objet
c*
c*HST version 1.0 - 99.03.31 - creation de la maglib au CDPP
c*HST version 2.0 - 01.06.05 - 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
      double precision beta, gama, g20, g21, h21, g22
      double precision h22, ginc20, ginc21, hinc21
      integer ier 
c
c     ---------------------------------
c*FON Declaration des variables locales
c     ---------------------------------
c
      double precision bethalf, sqr1, cbeta, sbeta
      double precision cbethalf, sbethalf, cgama, sgama
      double precision cbeta2, sbeta2, cgama2, sgama2
      double precision s2beta, c2beta, s2gama, c2gama
      double precision cbethalf4, sbethalf4
c*LOC Variables de travail intermediaires
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
      bethalf = beta / 2.d0
c
      sqr1 = dsqrt(3.d0 / 4.d0)
c
      cbeta = dcos(beta)
      sbeta = dsin(beta)
c
      cbethalf = dcos(bethalf)
      sbethalf = dsin(bethalf)
c
      cgama = dcos(gama)
      sgama = dsin(gama)
c
      cbeta2 = cbeta * cbeta
      sbeta2 = sbeta * sbeta
c
      cgama2 = cgama * cgama
      sgama2 = sgama * sgama
c
      s2beta = 2.d0 * sbeta * cbeta
      c2beta = cbeta2 - sbeta2
c
      s2gama = 2.d0 * sgama * cgama
      c2gama = cgama2 - sgama2
c
      cbethalf4 = cbethalf**4
      sbethalf4 = sbethalf**4
c      
      ginc20 = g20 * (cbeta2 - 0.5d0 * sbeta2) - sqr1 * (g21 * cgama
     >         - h21 * sgama) * s2beta + sqr1 * (g22 * c2gama - h22
     >         * s2gama) * sbeta2
c
      ginc21 = sqr1 * s2beta * g20 + c2beta * (g21 * cgama - h21
     >         * sgama) - 0.5d0 * s2beta * (g22 * c2gama - h22 * s2gama)
c
      hinc21 = (cbethalf4 - sbethalf4) * (g21 * sgama + h21* cgama)
     >         - sbeta * (g22 * s2gama + h22 * c2gama)
c
c     ****************
c     Fin de programme
c     ****************
c
      return
      end