caldis.f 5.62 KB
      subroutine caldis (ityp,isw,xgse,ygse,zgse,distby,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 - juin 1995
c*AUT port. CISI
c*
c*ROL Theme : Frontieres et regions
c*ROL         Calcul de la distance d'un satellite a une frontiere :
c*ROL         magnetopause ou onde de choc.
c*
c*PAR ityp   (I) : parametre permettant de fixer le choix de frontiere
c*PAR            :    --> 1 magnetopause
c*PAR            :    --> 2 onde de choc
c*
c*PAR isw    (I) : valeur de l'indice de variabilite du vent solaire
c*
c*PAR xgse   (I) : coordonnee solaire ecliptique x (rayons terrestres)
c*PAR ygse   (I) : coordonnee solaire ecliptique y (rayons terrestres)
c*PAR zgse   (I) : coordonnee solaire ecliptique y (rayons terrestres)
c*
c*PAR distby (O) : distance satellite frontiere (rayons terrestres)
c*
c*PAR ier    (O) : code de retour
c*
c*NOT isw        : 1 a 5
c*NOT isw        : 1 : distance subsolaire = 12.6 rayons terrestres
c*NOT isw        : 2 : distance subsolaire = 11.7 rayons terrestres
c*NOT isw        : 3 : distance subsolaire = 11.  rayons terrestres
c*NOT isw        : 4 : distance subsolaire = 10.  rayons terrestres
c*NOT isw        : 5 : distance subsolaire = 8.8  rayons terrestres
c*
c*NOT ier        : sans objet
c*
c*INF utilise    : aberrm, inipbs, form, ptnew, boundy, disgb
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
      integer ityp,isw 
      double precision xgse,ygse,zgse
      double precision distby
      integer ier 
c
c     ---------------------------------
c*FON Declaration des variables locales
c     ---------------------------------
c
      integer ier0,ier1,ier2,ier3,ier4,ier5
c*LOC ier1,ier2,ier3,ier4,ier5 : codes retour des modules appeles
c
      double precision xgsa,ygsa,zgsa
c*LOC xgsa,ygsa,zgsa : coordonnees solaires ecliptiques x, y et z corrigees
c
      double precision pa,pb,pc,pd,pe
c*LOC pa,pb,pc,pd,pe : parametres decrivant l'expression quadratique
c*LOC                : de la frontiere dans le repere solaire ecliptique
c
      double precision ga,gb,gc,gd,ge
c*LOC ga,gb,gc,gd,ge : parametres decrivant l'expression quadratique
c*LOC                : de la frontiere dans un repere annulant le terme xy
c
      double precision xss
c*LOC xss : parametre decrivant l'expression quadratique de la frontiere
c
      double precision posby
c*LOC posby : position par rapport a la magnetopause ou a l'onde de choc
c
      double precision tetby
c*LOC tetby : angle de rotation qui amene le repere solaire
c*LOC        : ecliptique dans le nouveau repere
c
      double precision rosnew
c*LOC rosnew : distance du satellite a l'axe de symetrie axiale
c
      double precision xsnew
c*LOC xsnew : coordonnee x du satellite dans le repere de symetrie axiale
c
      SAVE
c
c     ---------------------------------
c*FON Affectation identificateur rcs_id
c     ---------------------------------
c
      data rcs_id /"
     >$Id$"/
c
c     ******************
c     Debut de programme
c     ******************
c
      ier  = 0
      ier0 = 0
      ier1 = 0
      ier2 = 0
      ier3 = 0
      ier4 = 0
      ier5 = 0
c
c     -------------------------------------------------------------
c*FON Prise en compte de l'aberration du au deplacement de la terre
c*FON l'angle d'aberration est fixe a 4. degres 
c     -------------------------------------------------------------
c
      call aberrm(xgse,ygse,zgse,xgsa,ygsa,zgsa,ier0)
c
c     ----------------------------------------------------------
c*FON Initialisation des parametres du modele de magnetopause et
c*FON du modele d'onde de choc
c     ----------------------------------------------------------
c
      call inipbs(ityp,isw,pa,pb,pc,pd,pe,xss,ier1)
c
c     -------------------------------------------------------------
c*FON Calcul de l'equation de la frontiere dans un repere cartesien
c*FON lui donnant la symetrie axiale
c     -------------------------------------------------------------
c
      call form(pa,pb,pc,pd,pe,ga,gb,gc,gd,ge,tetby,ier2)
c
c     ------------------------------------------------------------------
c*FON Calcul des coordonnees d'un point du repere solaire ecliptique
c*FON dans le repere offrant la symetrie de revolution pour la frontiere
c    -------------------------------------------------------------------
c
      call ptnew(tetby,xgsa,ygsa,zgsa,xsnew,rosnew,ier3)
c
c     ----------------------------------------------------------------
c*FON Determination de la position du point par rapport a la frontiere
c     ----------------------------------------------------------------
c
      call boundy(ga,gd,ge,xsnew,rosnew,posby,ier4)
c
c     ----------------------------------------------------
c*FON Calcul de la distance du satellite a la frontiere en
c*FON conformite avec le standard trotignon
c     ----------------------------------------------------
c
      call disgb(ityp,xsnew,rosnew,ga,gd,ge,posby,distby,ier5)
c
c     ****************
c     Fin de programme
c     ****************
c
      return
      end