subroutine rogsm (rgdip,alfag,alfas,deltas,rgsm,rsmg,tilt,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 : Changements de repere c*ROL Calcul de la matrice de passage du repere geocentrique au c*ROL repere solaire magnetospherique et de la matrice inverse. c* c*PAR rgdip (I) : matrice (3,3) de passage du repere geographique c*PAR : au repere dipolaire c* c*PAR alfag (I) : ascension droite de Greenwich (radians) c* c*PAR alfas (I) : ascension droite du soleil (radians) c*PAR deltas (I) : declinaison du soleil (radians) 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 ier (O) : code de retour c* c*NOT ier : sans objet c* c*INF utilise : geodip, promat 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*********************************************************************** 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 rgdip(3,3) double precision alfag, alfas, deltas double precision rgsm(3,3), rsmg(3,3) double precision tilt integer ier c c --------------------------------- c*FON Declaration des variables locales c --------------------------------- c integer i,j c*LOC i,j : indices de boucles c double precision rsun(3,3),dlons double precision xsun,ysun,zsun,xdsun,ydsun,zdsun double precision cphids,sphids,dpsun 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 position du soleil dans le c*FON repere geocentrique c --------------------------------------- c dlons = alfas - alfag c xsun = cos(deltas) * cos(dlons) ysun = cos(deltas) * sin(dlons) zsun = sin(deltas) c c ----------------------------------------- c*FON Calcul de la position dipolaire du soleil c ----------------------------------------- c call geodip(rgdip,xsun,ysun,zsun,xdsun,ydsun,zdsun,ier) c tilt = asin(zdsun) dpsun = sqrt(xdsun * xdsun + ydsun * ydsun) c cphids = xdsun / dpsun sphids = ydsun / dpsun c c ----------------------------------------------- c*FON Calcul matrice rotation vers dipole vers soleil c ----------------------------------------------- c do 10 i = 1, 3 do 20 j = 1, 3 rsun(i,j) = 0.d0 20 continue 10 continue c rsun(1,1) = cphids rsun(1,2) = sphids rsun(2,1) = -sphids rsun(2,2) = cphids rsun(3,3) = 1.d0 c c ---------------------------------------------------------------- c*FON Calcul de la matrice de rotation (coordonnees geographiques vers c*FON coordonnees solaires magnetiques) c ---------------------------------------------------------------- c call promat(rsun,rgdip,rgsm,rsmg,ier) c c **************** c Fin de programme c **************** c return end