calpol.f 4.22 KB
      subroutine calpol (tgml,xlatgm,ipol,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.01 - 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 : Frontieres et regions
c*ROL         Calcul de l'appartenance d un satellite a la calotte
c*ROL         polaire nord.
c*ROL         La frontiere sud de la calotte polaire est definie
c*ROL         comme etant la frontiere nord de l'oval auroral.
c*
c*PAR tgml   (I) : temps geomagnetique local (heures fractionnaires)
c*PAR xlatgm (I) : latitude geomagnetique (radians)
c*
c*PAR ipol   (O) : indicateur d'appartenance a la calotte polaire
c*
c*PAR ier    (O) : code de retour
c*
c*NOT ipol       : 1 = le satellite appartient a la calotte polaire
c*NOT ipol       : 0 = le satellite est en dehors de la calotte polaire
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.01 - 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 tgml, xlatgm
      integer ipol
      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 k
c*LOC k : indice de boucle
c
      double precision tthetn(2),alfan,thetp,xthetn
      double precision a1n(2),a2n(2),a3n(2),t
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 a1n /15.22d0, 16.71d0/
      data a2n / 2.41d0,  0.37d0/
      data a3n /   3.d0,    3.d0/
c
c     ******************
c     Debut de programme
c     ******************
c
c     --------------------------------------
c*FON Initialisation des codes de retour a 0
c     --------------------------------------
c
      ier  = 0
      ipol = 0
c
c     ------------------------------------------------------
c*FON Calcul de la position du satellite en fonction de sa
c*FON latitude geomagnetique et du temps geomagnetique local
c     ------------------------------------------------------
c
      thetp = pid - xlatgm
      t     = tgml * 15.d0
      t     = mod(t,360.d0)
c
c     -----------------------------------------------
c*FON Calcul de la frontiere nord de l'oval auroral
c*FON il s'agit de la frontiere de la calotte polaire
c     -----------------------------------------------
c
      do 10 k = 1, 2
         alfan     = t + a3n(k)
         tthetn(k) = a1n(k) + a2n(k) * cos(alfan * rad)
10    continue
c
      xthetn = (tthetn(1) + tthetn(2)) * rad / 2.d0
c
c     ------------------------------------------------
c*FON Position du satellite par rapport a la frontiere
c*FON De la calotte polaire
c     ------------------------------------------------
c
      if (thetp .lt. xthetn) then
         ipol = 1
      endif
c
c     ****************
c     Fin de programme
c     ****************
c
      return
      end