distdip.f 2.88 KB
      subroutine distdip (r1,thet1r,xlchap,dischap,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 : Calculs de geophysique
c*ROL         Calcul de la distance minimum d'un point a une ligne
c*ROL         dipolaire.
c*
c*PAR r1      (I) : parametre de la ligne dipolaire
c*
c*PAR thet1r  (I) : colatitude geocentrique (rayons terrestres)
c*
c*PAR xlchap  (I) : colatitude du satellite
c*
c*PAR dischap (O) : distance minimum d'un point a une ligne dipolaire
c*PAR             : (rayons terrestres)
c*
c*PAR ier     (O) : code de retour
c*
c*NOT ier         : sans objet                 
c*
c*INF utilise     : rootlf
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*
      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 r1, thet1r
      double precision xlchap
      double precision dischap
      integer ier
c
c     ---------------------------------
c*FON Declaration des variables locales
c     ---------------------------------
c
      integer ier1 
c*LOC ier1 : code retour des modules appeles
c
      double precision rtab(3)
c*LOC rtab : coordonnees spheriques
c
      double precision sin2thet,xlpt,poschap,dist
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
c     ---------------
c*FON Initialisations
c     ---------------
c
      ier  = 0
      ier1 = 0
c
      rtab(1) = xlchap
      rtab(2) = r1
      rtab(3) = thet1r
c
      sin2thet = sin(thet1r) * sin(thet1r)
      xlpt     = r1 / sin2thet
c
      if (xlpt .ge. xlchap) then
         poschap = 1.d0
      else
         poschap = -1.d0
      endif
c
      thet1r = rtab(3)
c
c     --------------------------------------------------------------
c*FON Calcul de la distance minimum d'un point a une ligne dipolaire
c     --------------------------------------------------------------
c
      call rootlf(rtab,dist,ier1)
c
      dischap = dist * poschap
c
c     ****************
c     Fin de programme
c     ****************
c
      return
      end