subroutine carsp (xx,yy,zz,rr,thet,phi,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.01 - V 2.0 c*VER 03.01.06 - V 2.1 c* c*AUT spec. CNES - JC KOSIK - janvier 1997 c*AUT port. CISI c* c*ROL Theme : Calculs mathematiques c*ROL Transformation des coordonnees geocentriques c*ROL cartesiennes d'un point en coordonnees spheriques. c* c*PAR xx (I) : coordonnee geocentrique en x (rayons terrestres ou kilometres) c*PAR yy (I) : coordonnee geocentrique en y (rayons terrestres ou kilometres) c*PAR zz (I) : coordonnee geocentrique en z (rayons terrestres ou kilometres) c* c*PAR rr (O) : distance radiale geocentrique (idem input) c*PAR thet (O) : colatitude geocentrique (radians) c*PAR phi (O) : longitude geocentrique (radians) c* c*PAR ier (O) : code de retour c* c*NOT ier : sans objet c* c*NOT common : util c* c*INF utilise : angleg c* c*HST version 1.0 - 99.03.31 - creation de la maglib au CDPP c*HST version 2.0 - 01.06.01 - 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 xx,yy,zz double precision rr,thet,phi 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 c ---------------------------------- c*FON Declaration des fonctions externes c ---------------------------------- c external angleg double precision angleg c c --------------------------------- c*FON Declaration des variables locales c --------------------------------- c integer ier1 c*LOC ier1 : code retour des modules appeles c double precision rp2 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 ier1 = 0 ier = 0 c rp2 = (xx * xx + yy * yy) rr = sqrt(rp2 + zz * zz) c if (rp2 .ne. 0.0d0) then c thet = acos(zz / rr) phi = angleg(xx,yy,ier1) c else c phi = 0.0d0 if (zz .ge. 0.0d0) then thet = 0.0d0 else if (zz .lt. 0.0d0) then thet = pi endif c endif c c **************** c Fin de programme c **************** c return end