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