tgeogr.f 8.63 KB
      subroutine tgeogr (norb,tvect,djd,rgdip,rgsm,
     +                   rggsm,rgse,tgraph,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 1991
c*AUT port. CISI
c*
c*ROL Theme : Calculs de geophysique
c*ROL         Calcul des quantites geographiques et des parametres 
c*ROL         magnetospheriques locaux pour une date et une orbite
c*ROL         donnes.
c*
c*PAR norb   (I) : numero d'orbite
c*
c*PAR tvect  (I) : tableau des coordonnees inertielles (km,km/s)
c*
c*PAR djd    (I) : date julienne CNES fractionnaire (depuis le 01/01/1950)
c*
c*PAR rgdip  (I) : matrice (3,3) de passage du repere geographique
c*PAR            : au repere dipolaire
c*PAR rgsm   (I) : matrice de passage du repere geocentrique au repere
c*PAR            : solaire magnetique
c*PAR rggsm  (I) : matrice de passage du repere geocentrique
c*PAR            : au repere solaire magnetospherique
c*PAR rgse   (I) : matrice de passage du repere geocentrique
c*PAR            : au repere solaire eclyptique
c*
c*PAR tgraph (O) : tableau des grandeurs geographiques
c*
c*PAR ier    (O) : code de retour
c*
c*NOT tvect      : 1 a 3 : positions en kilometres 
c*NOT tvect      : 4 a 6 : vitesses en kilometres/secondes
c*
c*NOT tgraph     : tgraph(01) = date julienne 
c*NOT tgraph     : tgraph(02) = numero d'orbite
c*NOT tgraph     : tgraph(03) = position geographique en x (kilometres)
c*NOT tgraph     : tgraph(04) = position geographique en y (kilometres)
c*NOT tgraph     : tgraph(05) = position geographique en z (kilometres)
c*NOT tgraph     : tgraph(06) = vitesse geographique en x
c*               : (kilometres/secondes)
c*NOT tgraph     : tgraph(07) = vitesse geographique en y
c*               : (kilometres/secondes)
c*NOT tgraph     : tgraph(08) = vitesse geographique en z
c*               : (kilometres/secondes)
c*NOT tgraph     : tgraph(09) = altitude geocentrique (kilometres) 
c*NOT tgraph     : tgraph(10) = latitude geographique (radians)
c*NOT tgraph     : tgraph(11) = longitude geographique (radians)
c*NOT tgraph     : tgraph(12) = distance radiale geographique
c*               : (rayons terrestres)
c*NOT tgraph     : tgraph(13) = colatitude geocentrique (radians)
c*NOT tgraph     : tgraph(14) = longitude  geocentrique (radians)
c*NOT tgraph     : tgraph(15) = coordonnee solaire ecliptique en x
c*               : (rayons terrestres)
c*NOT tgraph     : tgraph(16) = coordonnee solaire ecliptique en y
c*               : (rayons terrestres)
c*NOT tgraph     : tgraph(17) = coordonnee solaire ecliptique en z
c*               : (rayons terrestres)
c*NOT tgraph     : tgraph(18) = coordonnee solaire magnetospherique en x
c*               : (rayons terrestres)
c*NOT tgraph     : tgraph(19) = coordonnee solaire magnetospherique en y
c*               : (rayons terrestres)
c*NOT tgraph     : tgraph(20) = coordonnee solaire magnetospherique en z
c*               : (rayons terrestres)
c*NOT tgraph     : tgraph(21) = latitude geomagnetique (radians)
c*NOT tgraph     : tgraph(22) = longitude geomagnetique (radians)
c*NOT tgraph     : tgraph(23) = temps geomagnetique local
c*NOT tgraph     : (heures fractionnaires)
c*
c*NOT ier        : sans objet
c*
c*NOT common     : util
c*
c*INF utilise    : pvig, geogkm, gcvgd, georre, geose,
c*INF utilise    : geogsm, ggeom, tgml
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 norb       
      double precision tvect(6)
      double precision djd   
      double precision rgdip(3,3), rgsm(3,3), rggsm(3,3), rgse(3,3)
      double precision tgraph(23)
      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
      integer ier1,ier2,ier3,ier4,ier5,ier6,ier7,ier8
c*LOC ier1 a ier8 : codes retour des modules appeles
c
      double precision xg,yg,zg
c*LOC xg,yg,zg : composantes cartesiennes en x,y et z
c
      double precision xi,yi,zi,vxi,vyi,vzi,vgx,vgy,vgz
c
      double precision rgc,dlatr,dlonr,alt,dlatgr
c
      double precision rre,thetr,phir
c*LOC rre,thetr,phir : coordonnees spheriques
c
      double precision xgse,ygse,zgse
c*LOC xgse,ygse,zgse : composantes solaires ecliptiques en x,y et z
c
      double precision xgsm,ygsm,zgsm
c*LOC xgsm,ygsm,zgsm : composantes solaires magnetospheriques en x,y et z
c
      double precision xlatgr,xlongr,tgl,xre,yre,zre
c
      SAVE
c
c     ---------------------------------
c*FON Affectation identificateur rcs_id
c     ---------------------------------
c
      data rcs_id /"
     >$Id$"/
c
c     ******************
c     Debut de programme
c     ******************
c
      ier1 = 0
      ier2 = 0
      ier3 = 0
      ier4 = 0
      ier5 = 0
      ier6 = 0
      ier7 = 0
      ier8 = 0
      ier  = 0
c
c     -----------------------------------------------------------------
c*FON Passage des coordonnees inertielles aux coordonnees geographiques
c     -----------------------------------------------------------------
c
      xi  = tvect(1)
      yi  = tvect(2)
      zi  = tvect(3)
      vxi = tvect(4)
      vyi = tvect(5)
      vzi = tvect(6)
c
      call pvig(djd,xi,yi,zi,vxi,vyi,vzi,xg,yg,zg,vgx,vgy,vgz,ier1)
c
      tgraph(1) = djd
      tgraph(2) = norb
      tgraph(3) = xg
      tgraph(4) = yg
      tgraph(5) = zg
      tgraph(6) = vgx
      tgraph(7) = vgy
      tgraph(8) = vgz
c
c     --------------------------------------------------
c*FON Calcul des coordonnees spheriques en km et radians
c     --------------------------------------------------
c
      call geogkm(xg,yg,zg,rgc,dlatr,dlonr,ier2)
c
c     ---------------------------------------------------
c*FON Calcul des coordonnees geodesiques en km et radians
c     ---------------------------------------------------
c
      call gcvgd(rgc,dlatr,alt,dlatgr,ier3)
c
      tgraph(9)  = alt
      tgraph(10) = dlatgr
      tgraph(11) = dlonr
c
c     ---------------------------------------------------------------
c*FON Calcul des coordonnees geocentriques cartesiennes et spheriques 
c*FON en rayons terrestres et colatitude en radians et longitude
c*FON en radians
c     ---------------------------------------------------------------
c
      call georre(xg,yg,zg,xre,yre,zre,rre,thetr,phir,ier4)
c
      tgraph(12) = rre
      tgraph(13) = thetr
      tgraph(14) = phir
c
c     ------------------------------------------
c*FON Calcul des coordonnees solaire-ecliptiques
c     ------------------------------------------
c
      call geose(rgse,xre,yre,zre,xgse,ygse,zgse,ier5)
c
      tgraph(15) = xgse
      tgraph(16) = ygse
      tgraph(17) = zgse
c
c     -------------------------------------------------
c*FON Calcul des coordonnees solaires magnetospheriques
c     -------------------------------------------------
c
      call geogsm(rggsm,xre,yre,zre,xgsm,ygsm,zgsm,ier6)
c
      tgraph(18) = xgsm
      tgraph(19) = ygsm
      tgraph(20) = zgsm
c
c     -------------------------------------------------------
c*FON Calcul de la latitude et de la longitude geomagnetiques
c     -------------------------------------------------------
c
      call ggeom(rgdip,thetr,phir,xlatgr,xlongr,ier7)
c
      tgraph(21) = xlatgr
      tgraph(22) = xlongr
c
c     ----------------------------------------------------
c*FON Calcul du temps geomagnetique local au satellite tgl
c     ----------------------------------------------------
c
      call tgml(rgsm,thetr,phir,tgl,ier8)
c
      tgraph(23) = tgl
c
c     ****************
c     Fin de programme
c     ****************
c
      return
      end