disgb.f 3.46 KB
      subroutine disgb (ityp,xsnew,rosnew,arond,drond,erond,
     >                  posby,dist,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 - juin 1995
c*AUT port. CISI
c*
c*ROL Theme : Frontieres et regions
c*ROL         Calcul de la distance du satellite a la frontiere de
c*ROL         la magnetopause ou de l'onde de choc en fonction de 
c*ROL         la valeur de ityp.
c*
c*PAR ityp   (I) : parametre permettant de fixer le choix de frontiere
c*
c*PAR xsnew  (I) : coordonnee x du satellite dans le repere solaire
c*PAR            : ecliptique (rayons terrestres)
c*
c*PAR rosnew (I) : distance du satellite a l'axe de symetrie dans le 
c*PAR            : repere solaire ecliptique (rayons terrestres)
c*
c*PAR arond  (I) : parametre modifie par la transformation quadratique
c*PAR drond  (I) : parametre modifie par la transformation quadratique
c*PAR erond  (I) : parametre modifie par la transformation quadratique
c*
c*PAR posby  (I) : position du point
c*
c*PAR dist   (O) : distance du satellite (rayons terrestres)
c*
c*PAR ier    (O) : code de retour
c*
c*NOT ityp       :  fixe le choix de frontiere :
c*NOT            :   -->  ityp = 1 magnetopause
c*NOT            :   -->  ityp = 2 onde de choc
c*
c*NOT posby      :  Resultats dans posby :
c*NOT            :    -->  posby = +1., point au dela de la frontiere
c*NOT            :    -->  posby = -1., point en deca de la frontiere
c*
c*NOT ier        : sans objet
c*
c*INF utilise    : rootmp
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
       integer ityp
       double precision xsnew,rosnew 
       double precision arond,drond,erond
       double precision posby
       double precision dist              
       integer ier 
c
c     ---------------------------------
c*FON Declaration des variables locales
c     ---------------------------------
c
      double precision rtab(5)
      double precision ro1,x1
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
      ro1 = rosnew
      x1  = xsnew
c
      if (ityp .eq. 2) then
         ro1 = rosnew - 0.314665d0
      endif
c
      rtab(1) = arond
      rtab(2) = drond
      rtab(3) = erond
      rtab(4) = ro1
      rtab(5) = x1
c
      call rootmp(rtab,dist,ier)
c
c     ----------------------------------------------------
c*FON  posby affecte un signe a la distance a la frontiere
c     ----------------------------------------------------
c
      dist = dist * posby
c
c     ****************
c     Fin de programme
c     ****************
c
      return
      end