gdvgc.f 3.42 KB
      subroutine gdvgc (alt,gdlat,rkm,gclat,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 adap. CNES - JC KOSIK - janvier 1991
c*AUT port. CISI
c*
c*ROL Theme : Changements de coordonnees
c*ROL         Transformation des composantes geodesiques
c*ROL         en composantes geocentriques.
c*
c*PAR alt   (I) : altitude (kilometres)
c*PAR gdlat (I) : latitude geodesique (radians)
c*
c*PAR rkm   (O) : distance geocentrique (kilometres)
c*PAR gclat (O) : latitude geocentrique (radians)
c*
c*PAR ier   (O) : code de retour
c*
c*NOT ier       : sans objet
c*
c*NOT common    : util
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 alt
      double precision gdlat
      double precision rkm, gclat
      integer ier
c
c     ----------------------------------
c*FON Declaration des variables communes
c     ----------------------------------
c
      double precision pi,dpi,rad,deg,pid,xmu,rayt
c
c*COM pi   : constante pi (obtenue a partir de acos(-1.))
c*COM dpi  : constante 2 * pi
c*COM pid  : constante pi / 2
c*COM rad  : facteur de conversion degres  ----> radians
c*COM deg  : facteur de conversion radians ----> degres
c*COM xmu  : constante de gravitation terrestre (km**3/sec**2)
c*COM rayt : rayon equatorial terrestre (km)
c
      common/util/pi,dpi,rad,deg,pid,xmu,rayt
c
c     ---------------------------------
c*FON Declaration des variables locales
c     ---------------------------------
c
      double precision ab2,ep2,sinlat,coslat,sinth,costh,rgeoid
      double precision x,y
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*FON Affectation des constantes
c     --------------------------
c
      data ab2 /1.0067397d0/
      data ep2 /.0067397d0/
c
c     ******************
c     Debut de programme
c     ******************
c
c     ----------------------------------------------------
c*FON Calcul de la transformation
c*FON La reference geoid est celle adoptee par IAU en 1964
c*FON rayt = 6378.16, b = 6356.7746, f = 1 / 298.25
c     ----------------------------------------------------
c
      ier = 0
c
      sinlat = sin(gdlat)
      coslat = sqrt(1.d0 - sinlat**2)
      costh  = sinlat / sqrt((ab2 * coslat)**2 + sinlat**2)
      sinth  = sqrt(1.d0 - costh**2)
c
      rgeoid = rayt / sqrt(1.d0 + ep2 * costh**2)
c
      x      = rgeoid * sinth + alt * coslat
      y      = rgeoid * costh + alt * sinlat
c
      rkm    = sqrt(x * x + y * y)
      gclat  = atan(y / x)
c
c     ****************
c     Fin de programme
c     ****************
c
      return
      end