subroutine dipol (year,rr,thet,phi,brd,btd,bpd,bd,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.05.30 - V 2.0 c*VER 03.01.06 - V 2.1 c*VER 01.01.07 - V 3.0 c*VER 13.10.10 - V 4.0 c*VER 2017.02.23 - V 5.0 c* c*AUT spec. CNES - JC KOSIK - janvier 1991 c*AUT port. CISI c*AUT adapt. AKKA c* c*ROL Theme : Modeles de champs magnetiques c*ROL Calcul du champ dipolaire d'un dipole incline. c*ROL L'orientation du dipole est donnee par les termes g11 c*ROL et h11 du developpement en harmoniques spheriques du c*ROL champ IGRF 2015 affectes de l'evolution seculaire. c* c*PAR year (I) : annee fractionnaire >= 2015.) c* c*PAR rr (I) : distance radiale geocentrique (rayons terrestres) c*PAR thet (I) : colatitude geocentrique (radians) c*PAR phi (I) : longitude geocentrique (radians) c* c*PAR brd (O) : composante radiale du champ dipolaire le long du c* : meridien positive vers l'exterieur (gauss) c*PAR btd (O) : composante tangentielle du champ dipolaire c* : le long du meridien, positive vers le sud (gauss) c*PAR bpd (O) : composante azimuthale du champ dipolaire positive c* : vers l'est (gauss) c* c*PAR bd (O) : module du champ dipolaire (gauss) c* c*PAR ier (O) : code de retour c* c*NOT ier : sans objet c* c*NOT common : util, util2 c* c*INF utilise : sans objet c* c*HST version 1.0 - 99.03.31 - creation de la maglib au CDPP c*HST version 2.0 - 01.05.30 - 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 - adoption des coefficients de l'igrf 2005 c*HST version 4.0 - 13.10.10 - adoption des coefficients de l'igrf 2010 c*HST version 5.0 - 2017.02.23 - adoption des coefficients de l'igrf 2015 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 year double precision rr, thet, phi double precision brd, btd, bpd, bd integer ier c c ---------------------------------- c*FON Declaration des variables communes c ---------------------------------- c double precision pi,dpi,rad,deg,pid,xmu,rayt c c*COM pi : constante pi (obtenue a partir de acos(-1.)) c*COM dpi : constante 2 * pi c*COM pid : constante pi / 2 c*COM rad : facteur de conversion degres ----> radians c*COM deg : facteur de conversion radians ----> degres c*COM xmu : constante de gravitation terrestre (km**3/sec**2) c*COM rayt : rayon equatorial terrestre (km) c common/util/pi,dpi,rad,deg,pid,xmu,rayt c double precision rgmt c c*COM rgmt : rayon geocentrique terrestre (km) c common/util2/rgmt c c --------------------------------- c*FON Declaration des variables locales c --------------------------------- c double precision r3,ar3,dt,g10,g11,h11,cph,sph,ct,st,rmag 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 Initialisation a 0 des composantes du champ c ------------------------------------------- c brd = 0.0d0 btd = 0.0d0 bpd = 0.0d0 c c ---------------------- c*FON Calculs intermediaires c ---------------------- c rmag = rr * rayt/ rgmt r3 = rmag**3 ar3 = 1.d0 / r3 dt = year - 2015.d0 g10 = +29442.0d0 - 10.3d0 * dt g11 = +1501.0d0 - 18.1d0 * dt h11 = -4997.1d0 + 26.6d0 * dt c cph = cos(phi) sph = sin(phi) ct = cos(thet) st = sin(thet) c c ------------------------------------------ c*FON Calculs des composantes du champ dipolaire c*FON brd = composante radiale c*FON btd = composante tangentielle c*FON bpd = composante azimuthale c ------------------------------------------ c brd = -2.d0 * ar3 * (g10 * ct + (g11 * cph + h11 * sph) * st) btd = ar3 * (-g10 * st + (g11 * cph + h11 * sph) * ct) bpd = ar3 * (-g11 * sph + h11 * cph) c c -------------------------------------------- c*FON Calcul du module du champ dipolaire en gauss c -------------------------------------------- c brd = brd / 100000.d0 btd = btd / 100000.d0 bpd = bpd / 100000.d0 bd = sqrt(brd * brd + btd * btd + bpd * bpd) c c **************** c Fin de programme c **************** c return end