subroutine posin (lfile,nsat,day,revnum,xikm,yikm,zikm, > vxi,vyi,vzi,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 - juin 1995 c*AUT port. CISI c* c*ROL Theme : Astronomie et calculs d'orbite c*ROL Calcul du vecteur d'etat a partir des donnees c*ROL d'orbitographie de Cluster (compsants de Chebychev). c*ROL Un fichier de coefficients de Chebychev est necessaire. c*ROL Calcul du vecteur position vitesse dans le repere inertiel c*ROL de la date. c* c*PAR lfile (I) : numero logique associe au fichier de donnees c* c*PAR nsat (I) : identification du satellite 1, 2, 3 ou 4 c* c*PAR day (I) : date julienne ref 2000 (a partir de 01/01/2000) c* c*PAR revnum (O) : numero d'orbite c* c*PAR xikm (O) : coordonnee position en x (kilometres) c*PAR yikm (O) : coordonnee position en y (kilometres) c*PAR zikm (O) : coordonnee position en z (kilometres) c* c*PAR vxi (O) : coordonnee vitesse en x (kilometres/secondes) c*PAR vyi (O) : coordonnee vitesse en y (kilometres/secondes) c*PAR vzi (O) : coordonnee vitesse en z (kilometres/secondes) c* c*PAR ier (O) : code de retour c* c*NOT ier : cf codes de retour de orbit c*NOT ier : 0 = OK c*NOT ier : 1 = date julienne erronee (trop petite) c*NOT ier : 2 = date julienne erronee (trop grande) c*NOT ier : 3 = non continuite de la date entre 2 enreg consecutifs c*NOT ier : 4 = valeur de kode erronee (differente de 3 ou 6) c*NOT ier : 5 = fichier incoherent (donnees invalides) c*NOT ier : 6 = erreur de lecture c* c*NOT : Le fichier doit etre ouvert au prealable. c*NOT : Les enregistrements doivent avoir des dates consecutives c*NOT : date debut enreg i - date de fin enreg i-1 > gap c*NOT : avec gap = 2.d-4) c* c*INF utilise : orbit, pr2000, promal 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 integer lfile,nsat double precision day double precision revnum double precision xikm,yikm,zikm double precision vxi,vyi,vzi integer ier c c --------------------------------- c*FON Declaration des variables locales c --------------------------------- c integer kode c*LOC kode : dimemsion du vecteur d'etat c integer ierror c*LOC ierror : code de retour des modules apples c double precision x(6) c*LOC x : position du satellite em km (vitesse en km/s) c double precision x2000,y2000,z2000 c*LOC x2000,y2000,z2000 : vecteur position dans le repere 2000 c double precision vx2000,vy2000,vz2000 c*LOC vx2000,vy2000,vz2000 : vecteur vitesse dans le repere 2000 c double precision pr(3,3) c*LOC pr : matrice de precession du rep 2000 au rep moyen de la date 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-vitesse dans le repere 2000 c*FON kode = 6 pour les 6 elements x(i), i=1,6 c ------------------------------------------------- c kode = 6 call orbit(day,kode,lfile,nsat,x,revnum,ierror) c if (ierror .ne. 0) then ier = ierror else x2000 = x(1) y2000 = x(2) z2000 = x(3) vx2000 = x(4) vy2000 = x(5) vz2000 = x(6) c c ---------------------------------------------------- c*FON Calcul de la matrice de precession du repere 2000 au c*FON repere moyen de la date c ---------------------------------------------------- c call pr2000(day,pr,ier) c c ---------------------------------------------------- c*FON Calcul de la position-vitesse dans le repere inertiel c*FON moyen de la date c ---------------------------------------------------- c call promal(pr,x2000,y2000,z2000,xikm,yikm,zikm,ier) c call promal(pr,vx2000,vy2000,vz2000,vxi,vyi,vzi,ier) c endif c c **************** c Fin de programme c **************** c return end