subroutine dipols (xg,yg,zg,bxd,byd,bzd,bd,ier) c* c*********************************************************************** c* c* "Copyright [c] CNES 98 - tous droits reserves" c* ********************************************** c* c*PRO MAGLIB c* c*VER 01.10.98 - V 1.0 c* c*AUT spec. CNES - JC KOSIK - juillet 1998 c*AUT port. CISI c* c*ROL Theme : Modeles de champs magnetiques c*ROL Calcul du champ dipolaire a partir des coordonnees c*ROL geocentriques. Le champ magnetique et ses composantes c*ROL sont evaluees en nanoteslas c* c*PAR xg (I) : composante geocentrique en x c*PAR yg (I) : composante geocentrique en y c*PAR zg (I) : composante geocentrique en z c* c*PAR bxd (I) : composante en x du champ dipolaire (nanoteslas) c*PAR byd (O) : composante en y du champ dipolaire (nanoteslas) c*PAR bzd (O) : composante en z du champ dipolaire (nanoteslas) c* c*PAR bd (O) : module du champ dipolaire c* c*PAR ier (O) : code de retour c* c*NOT ier : sans objet c* c*INF utilise : sans objet c* c*HST version 1.0 - 01.10.98 - 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 xg, yg, zg double precision bxd, byd, bzd, bd integer ier c c --------------------------------- c*FON Declaration des variables locales c --------------------------------- c double precision r2,r,r3,r5,zg2 double precision g10 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*FON Affectation des constantes c -------------------------- c data g10 /-31000.d0/ c c ****************** c Debut de programme c ****************** c ier = 0 c r2 = xg * xg + yg * yg + zg * zg r = sqrt(r2) r3 = r2 * r r5 = r2 * r3 zg2 = zg * zg bxd = 3.d0 * g10 * zg * xg / r5 byd = 3.d0 * g10 * zg * yg / r5 bzd = -g10 / r3 + 3.d0 * g10 * zg2 / r5 bd = sqrt(bxd * bxd + byd * byd + bzd * bzd) c c **************** c Fin de programme c **************** c return end