inigeomv.f 7.31 KB
      subroutine inigeomv (iyear,imonth,iday,ihour,imin,isec,year,
     >                     alfag,tetdip,phidip,alfas,deltas,
     >                     rig,rgi,rgdip,rdipg,rgsm,rsmg,tilt,
     >                     rggsm,rgsmg,rgse,rseg,rigsm,rgsmi,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*VER 01.01.07 - V 3.0
c*
c*AUT spec. CNES - JC KOSIK - janvier 1998
c*AUT port. CISI
c*
c*ROL Theme : Modules d'initialisation
c*ROL         Initialisation de toutes les matrices de rotation
c*ROL         necessaires aux calculs geophysiques et geomagnetiques
c*ROL         entre 1945 et 2000, ainsi que l'angle de tilt, l'orientation
c*ROL         de l'axe du dipole, l'ascension droite et la declinaison
c*ROL         du soleil.
c*
c*PAR iyear  (I) : annee de la date
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*PAR year   (O) : annee fractionnaire
c*
c*PAR alfag  (O) : ascension droite de Greenwich (radians)
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 alfas  (O) : ascension droite du soleil (radians)
c*PAR deltas (O) : declinaison du soleil (radians)
c*PAR rig    (O) : matrice (3,3) de passage du repere inertiel
c*
c*PAR            : au repere geocentrique
c*PAR rgi    (O) : matrice (3,3) de passage du repere geocentrique
c*PAR            : au repere inertiel
c*
c*PAR rgdip  (O) : matrice (3,3) de passage du repere geographique
c*PAR            : au repere dipolaire
c*PAR rdipg  (O) : matrice (3,3) de passage du repere dipolaire
c*PAR            : au repere geocentrique
c*
c*PAR rgsm   (O) : matrice (3,3) de passage du repere geocentrique
c*PAR            : au repere solaire magnetique
c*PAR rsmg   (O) : matrice (3,3) de passage du repere solaire
c*PAR            : magnetique au repere geocentrique
c*
c*PAR tilt   (O) : angle de tilt (radians)
c*
c*PAR rggsm  (O) : matrice (3,3) de passage du repere geocentrique
c*PAR            : au repere solaire magnetospherique
c*PAR rgsmg  (O) : matrice (3,3) de passage du repere solaire
c*PAR            : magnetospherique au repere geocentrique
c*
c*PAR rgse   (O) : matrice (3,3) de passage du repere geocentrique
c*PAR            : au repere solaire ecliptique
c*PAR rseg   (O) : matrice (3,3) de passage du repere solaire
c*PAR            : ecliptique au repere geocentrique
c*
c*PAR rigsm  (O) : matrice (3,3) de passage du repere inertiel
c*PAR            : au repere solaire magnetospherique
c*PAR rgsmi  (O) : matrice (3,3) de passage du repere solaire
c*PAR            : magnetospherique au repere inertiel
c*
c*PAR ier    (O) : code de retour
c*
c*NOT ier        : = 1 si iyear < 1945 ou si iyear >= 2000
c*
c*INF utilise    : soltervo, solterv, roig, rogdip, rogsm
c*INF utilise    : roggsm, rogse, roigsm
c*
c*HST version 1.0 - 15.01.91 - 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*HST version 3.0 - 01.01.07 - calculs entre 1945 et 2000
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, tetdip, phidip, alfas, deltas
      double precision rig(3,3), rgi(3,3), rgdip(3,3), rdipg(3,3)
      double precision rgsm(3,3), rsmg(3,3)
      double precision tilt
      double precision rggsm(3,3), rgsmg(3,3), rgse(3,3), rseg(3,3)
      double precision rigsm(3,3), rgsmi(3,3)
      integer ier
c
c     ---------------------------------
c*FON Declaration des variables locales
c     ---------------------------------
c
      integer ier1,ier2,ier3,ier4,ier5,ier6,ier7
c*LOC ier1,ier2,ier3,ier4,ier5,ier6,ier7 : codes retour des modules appeles
c
      double precision obliq
c*LOC obliq : obliquite de l'ecliptique en radians
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
      ier1 = 0
      ier2 = 0
      ier3 = 0
      ier4 = 0
      ier5 = 0
      ier6 = 0
      ier7 = 0
c
c     ----------------------------------------------------------
c*FON Calcul de la position inertielle de Greenwich et du soleil
c*FON et des angles d'orientation du dipole terrestre suivant
c*FON la periode, 1945-1970 ou 1970-2005
c     ----------------------------------------------------------
c
      if (iyear .ge. 1945 .and. iyear .lt. 1970) then
c
         call soltervo(iyear,imonth,iday,ihour,imin,isec,year,alfag,
     >                 alfas,deltas,obliq,tetdip,phidip,ier1)
c
      else if (iyear .ge. 1970 .and. iyear .lt. 2000) then
c
          call solterv(iyear,imonth,iday,ihour,imin,isec,year,alfag,
     >                alfas,deltas,obliq,tetdip,phidip,ier1)
c
      else
         ier = 1
      endif
c
c     ------------------------------------------------------
c*FON Calcul des matrices de passage du repere inertiel vers
c*FON le repere geographique
c     ------------------------------------------------------
c
      call roig(alfag,rig,rgi,ier2)
c
c     --------------------------------------------------------
c*FON Calcul des matrices de passage du repere geographique au
c*FON repere dipolaire
c     --------------------------------------------------------
c
      call rogdip(tetdip,phidip,rgdip,rdipg,ier3)
c
c     ----------------------------------------------------------
c*FON Calcul des matrices de passage du repere geographique vers
c*FON le repere solaire-magnetique
c     ----------------------------------------------------------
c
      call rogsm(rgdip,alfag,alfas,deltas,rgsm,rsmg,
     >           tilt,ier4)
c
c     ----------------------------------------------------------
c*FON Calcul des matrices de passage du repere geographique vers
c*FON le repere solaire-magnetospherique
c     ----------------------------------------------------------
c
      call roggsm(tilt,rgsm,rggsm,rgsmg,ier5)
c
c     --------------------------------------------------------
c*FON Calcul des matrices de passage du repere geographique au
c*FON repere solaire ecliptique
c     --------------------------------------------------------
c
      call rogse(alfag,alfas,deltas,obliq,rgse,rseg,ier6)
c
c     -----------------------------------------------------------
c*FON Calcul des matrices de passage du repere inertiel au repere
c*FON solaire magnetospherique GSM
c     -----------------------------------------------------------
c
      call roigsm(rig,rggsm,rigsm,rgsmi,ier7)
c
c     ****************
c     Fin de programme
c     ****************
c
      return
      end