solter15.f 4.63 KB
      subroutine solter15 (iyear,imonth,iday,ihour,imin,isec,year,
     >                   alfag,alfas,deltas,obliq,tetdip,phidip,ier)
c*
c***********************************************************************
c*
c*          "Copyright [c] CNES 98 - tous droits reserves"
c*          **********************************************
c*
c*PRO MAGLIB
c*
c*VER 2017.02.24 - V 1.0
c*
c*AUT spec. CNES - JC KOSIK - octobre 2001
c*AUT port. CISI
c*AUT adapt. CISI
c*
c*ROL Theme : Astronomie et calculs d'orbite
c*ROL         Calcul de l'ascension droite de Greenwich.
c*ROL         Calcul de l'ascension droite et de la declinaison
c*ROL         du soleil.
c*ROL         Calcul de la position geographique du point ou le dipole
c*ROL         coupe l'hemisphere nord.
c*
c*PAR iyear  (I) : annee de la date (annee >= 2015)
c*PAR imonth (I) : mois de la date
c*PAR iday   (I) : jour de la date
c*PAR ihour  (I) : heures de la date
c*PAR imin   (I) : minutes de la date
c*PAR isec   (I) : secondes de la date
c*
c*PAR year   (O) : annee fractionnaire (>= 2015)
c*
c*PAR alfag  (O) : ascension droite de Greenwich (radians)
c*
c*PAR alfas  (O) : ascension droite du soleil (radians)
c*PAR deltas (O) : declinaison du soleil (radians)
c*
c*PAR obliq  (O) : obliquite de l'ecliptique (radians)
c*
c*PAR tetdip (O) : colatitude geocentrique du point ou le dipole
c*PAR            : coupe l'hemisphere nord (radians)
c*PAR phidip (O) : longitude geocentrique du point ou le dipole
c*PAR            : coupe l'hemisphere nord (radians)
c*
c*PAR ier    (O) : code de retour
c*
c*NOT ier        : sans objet
c*
c*INF utilise    : julg, sun
c*
c*HST version 1.0 - 2017.02.24 - Utilisation du champ IGRF15 (annee fractionnaire
c*HST                            entre 2015 et 2020)
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 iyear, imonth, iday, ihour, imin, isec
      double precision year
      double precision alfag, alfas, deltas
      double precision obliq, tetdip, phidip
      integer ier
c
c     ----------------------------------
c*FON Declaration des fonctions externes
c     ----------------------------------
c
      external julg
      integer julg
c
c     ---------------------------------
c*FON Declaration des variables locales
c     ---------------------------------
c
      integer julc,jul1,nujour
c
      double precision fjour,dt,g10,g11,c11,h11,gdt
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     Debut de programme
c     ******************
c
      ier = 0
c
c     -----------------------------
c*FON Calcul de la date en secondes
c     -----------------------------
c
      fjour = dble((ihour * 60 + imin) * 60 + isec) / 86400.d0
c
c     --------------------------------
c*FON Calcul du jour julien  CNES 1950
c     --------------------------------
c
      julc  = julg(iday,imonth,iyear,ier)
c
      jul1 = julg(1,1,iyear,ier)
c
c     ----------------------------------------------------------
c*FON Calcul du numero du jour compte a partir du 1er janvier de
c*FON l'annee courante
c     ----------------------------------------------------------
c
      nujour = julc - jul1 + 1
c
c     -----------------------------------------------------------
c*FON Calcul de la position du soleil dans le repere equatorial a
c*FON gamma 50
c     -----------------------------------------------------------
c
      call sun(iyear,nujour,fjour,alfag,alfas,deltas,obliq,ier)
c
      year = dble(iyear) + dble(nujour-1) / 365.d0
c
c     -------------------------------------------------------------
c*FON Calculs intermediaires pour obtenir les coordonnees du dipole
c     -------------------------------------------------------------
c
      dt  = year  - 2010.d0
      g10 = +29442.0d0 - 10.3d0 * dt
      g11 = +1501.0d0  - 18.1d0 * dt
      h11 = -4997.1d0  + 26.6d0 * dt
c
      c11 = sqrt(g11**2 + h11**2)
      gdt = sqrt(g11**2 + h11**2 + g10**2)
c
c     ---------------------------------------------------------------
c*FON Calcul de la longitude et de la colatitude du dipole en radians
c     ---------------------------------------------------------------
c
      phidip = atan(h11 / g11)
      tetdip = asin(c11 / gdt)
c
c     ****************
c     Fin de programme
c     ****************
c
      return
      end