pospsh.f 3.74 KB
      subroutine pospsh (tilt,xgsm,ygsm,zgsm,ipsh,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 : Frontieres et regions
c*ROL         Calcul de l'appartenace d'un satellite a la couche de plasma.
c*
c*PAR tilt (I) : angle de tilt (radians)
c*
c*PAR xgsm (I) : coordonnee solaire magnetospherique x du satellite
c*PAR          : (rayons terrestres)
c*PAR ygsm (I) : coordonnee solaire magnetospherique y du satellite
c*PAR          : (rayons terrestres)
c*PAR zgsm (I) : coordonnee solaire magnetospherique z du satellite
c*PAR          : (rayons terrestres)
c*
c*PAR ipsh (O) : indicateur de presence du satellite dans la
c*PAR          : couche de plasma
c*
c*PAR ier  (O) : code de retour
c*
c*NOT ipsh     : 0 = satellite hors de la couche de plasma
c*NOT ipsh     : 1 = satellite dans la couche de plasma
c*
c*NOT La couche de plasma est definie par rapport au modele de
c*NOT de couche neutre de Dandouras.
c*NOT Le satellite doit etre dans la couche neutre.
c*NOT On definit les frontieres nord et sud de la couche de plasma
c*NOT par rapport a la couche neutre et on teste zgsm.
c*
c*NOT ier      : sans objet
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*
      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 tilt
      double precision xgsm, ygsm, zgsm
      integer ipsh
      integer ier
c
c     ---------------------------------
c*FON Declaration des variables locales
c     ---------------------------------
c
      double precision a1,b1,ho,yo,dd
      double precision aygsm,zcpn,zcps,radic
      double precision rlim,znsh,rp
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 a1 /0.186d0/
      data b1 /3.d0/
      data ho /10.5d0/
      data yo /22.5d0/
      data dd /14.d0/
c
c     ******************
c     Debut de programme
c     ******************
c
      ier = 0
      ipsh = 0
c
c     ---------------------------------------------------
c*FON Calcul de la position du satellite par rapport a la
c*FON couche de plasma si celui ci est pres de cette zone
c     ---------------------------------------------------
c
      znsh = -dd * sin(tilt)
      rlim =  ho * cos(tilt)
c
      if (xgsm .lt. 0.d0) then
c
         rp = sqrt(xgsm * xgsm + ygsm * ygsm)
c
         if (rp .gt. rlim) then
c
            aygsm = abs(ygsm)
c
            if (aygsm .lt. yo) then
               radic = 1.d0 - (aygsm / yo)**2
               znsh  = ((ho + dd) * sqrt(radic) - dd) * sin(tilt)
            endif
c
            zcpn = znsh + a1 * aygsm + b1
            zcps = znsh - a1 * aygsm - b1
c
           if (zgsm .lt. zcpn .and. zgsm .gt. zcps) then
              ipsh = 1
           endif
c
         endif
c
      endif
c
c     ****************
c     Fin de programme
c     ****************
c
      return
      end