subroutine ctrlpar (itypda,datjul,iyear,imonth,iday,ihour,imin, > isec,magin,magout,indgm,indval,iunitr, > rr,theta,phi,ierdat,ierind,ierdis,ierpos) 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 adpat. AKKA c* c*ROL Theme : Modules de controle c*ROL Controle des donnees en entree des modules de calcul. c*ROL Validite de la date sous forme julienne ou calendaire c*ROL julienne : date >= 14610.0 c*ROL calendaire : prise en compte des annees bisextiles c*ROL annee >= 1990 c*ROL 1 <= mois <= 12 c*ROL 1 <= jour <= 28 29 30 31 c*ROL 0 <= heures <= 24 c*ROL 0 <= minutes <= 59 c*ROL 0 <= secondes <= 59 c*ROL Validite de magin 1 <= magin <= 4 c*ROL Validite de magout 0 <= magout <= 3 c*ROL Validite de indgm 1 <= indgm <= 2 c*ROL Validite de indval 1 <= indval <= 6 c*ROL Validite de r (r >= 1 r.g.m ou >= 6371.2 km) c*ROL Validite de theta (0 <= theta <= pi) c*ROL Validite de phi (0 <= phi <= 2*pi) c*ROL Controle de la position du satellite par rapport a la c*ROL magnetosphere (1=en dehors 0=dans la magnetosphere) c* c*PAR itypda (I) : type de date (0 = julienne, 1 = calendaire) c* c*PAR datjul (I) : date julienne fractionnaire (depuis le 01/01/1950) c* c*PAR iyear (I) : annee c*PAR imonth (I) : mois c*PAR iday (I) : jour c*PAR ihour (I) : heure c*PAR imin (I) : minutes c*PAR isec (I) : secondes c* c*PAR magin (I) : type de champ magnetique interne c*PAR magout (I) : type de champ magnetique externe c* c*PAR indgm (I) : type d'indice geomagnetique Kp ou Ae c*PAR indval (I) : indice geomagnetique : niveau d'amplitude du champ c* c*PAR iunitr (I) : unite de la distance rr c* : (0 = kilometres , 1 = rayons terrestres) c* c*PAR rr (I) : distance (dans l'unite iunitr) c*PAR theta (I) : angle theta (radians) c*PAR phi (I) : angle phi (radians) c* c*PAR ierdat (O) : indicateur de validite de la date c* c*PAR ierind (O) : indicateur de validite des indicateurs de champ c* c*PAR ierdis (O) : indicateur de validite des coordonnees satellite c* c*PAR ierpos (O) : indicateur de position du satellite par rapport a c*PAR ierpos : la magnetopause c* c*NOT magin : 1 = dipole + g11 + h11 c*NOT magin : 2 = champ DGRF 2000 c*NOT magin : 3 = champ DGRF 2005 c*NOT magin : 4 = champ DGRF 2010 c*NOT magin : 5 = champ IGRF 2015 c* c*NOT magout : 0 = pas de champ externe c*NOT magout : 1 = Tsyganenko 87 c*NOT magout : 2 = Tsyganenko 89 c*NOT magout : 3 = Kosik 97 c* c*NOT indgm : 1 ---> indice geomagnetique Kp c*NOT indval : 1 ---> Kp = 0 , 0+ c*NOT indval : 2 ---> Kp = 1- , 1 , 1+ c*NOT indval : 3 ---> Kp = 2- , 2 , 2+ c*NOT indval : 4 ---> Kp = 3- , 3 , 3+ c*NOT indval : 5 ---> Kp = 4- , 4 , 4+ c*NOT indval : 6 ---> Kp > 5- c* c*NOT indgm : 2 ---> indice geomagnetique Ae c*NOT indval : 1 ---> Ae = 0 - 50 c*NOT indval : 2 ---> Ae = 50 - 100 c*NOT indval : 3 ---> Ae = 100 - 150 c*NOT indval : 4 ---> Ae = 150 - 250 c*NOT indval : 5 ---> Ae = 250 - 400 c*NOT indval : 6 ---> Ae >= 400 c* c*NOT dates : si date julienne choisie, mettre a 0 les parametres c*NOT dates : concernant la date calendaire et reciproquement c* c*NOT ier(xxx) : 0 = OK c* c*NOT ierdat : 1 = date incorrecte (ex : jour = 34) c*NOT ierdat : 2 = warning - date < 1990 (valide pour gsfc65) c*NOT ierind : 1 = indicateurs de calcul des champs incorrects c*NOT ierdis : 1 = coordonnees du satellite (r theta phi) incorrectes c*NOT ierpos : 1 = satellite en dehors de la magnetosphere c* c*INF utilise : ctrldat, ctrlind, ctrldis, ctrlpos 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 - mise a jour des models de champ interne c*HST version 4.0 - 13.10.10 - mise a jour des models de champ interne c* (DGRF05 et IGRF10) c*HST version 5.0 - 2017.02.23 - mise a jour des modeles de champ interne c* (DGRF10 et IGRF15) 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 itypda double precision datjul integer iyear, imonth, iday, ihour, imin, isec integer magin, magout, indgm, indval integer iunitr double precision rr, theta, phi integer ierdat, ierind, ierdis, ierpos c c --------------------------------- c*FON Declaration des variables locales c --------------------------------- c integer ier1,ier2,ier3,ier4,ier5,ier6,ier7,ier8,ier9 c*LOC ier1 a ier9 : codes retour des modules appeles c SAVE c c --------------------------------- c*FON Affectation identificateur rcs_id c --------------------------------- c data rcs_id /" >$Id$"/ c c ****************** c Debut de programme c ****************** c ierdat = 0 ierind = 0 ierdis = 0 ierpos = 0 c c ------------------- c*FON Controle de la date c ------------------- c call ctrldat(itypda,datjul,iyear,imonth,iday, > ihour,imin,isec,ier1) if (ier1 .ne. 0) then ierdat = ier1 endif c c --------------------------------------------- c*FON Controle des indicateurs de calcul des champs c --------------------------------------------- c call ctrlind(magin,magout,indgm,indval,ier2,ier3,ier4,ier5) if (ier2 .ne. 0 .or. ier3 .ne. 0 .or. > ier4 .ne. 0 .or. ier5 .ne. 0) then ierind = 1 endif c c -------------------------------------------------- c*FON Controle des coordonnees rr theta phi du satellite c -------------------------------------------------- c call ctrldis(iunitr,rr,theta,phi,ier6,ier7,ier8) if (ier6 .ne. 0 .or. ier7 .ne. 0 .or. ier8 .ne. 0) then ierdis = 1 endif c c ------------------------------------ c*FON Controle de la position du satellite c*FON par rapport a la maghetosphere c ------------------------------------ c call ctrlpos(itypda,datjul,iyear,imonth,iday,ihour, > imin,isec,iunitr,rr,theta,phi,ier9) if (ier9 .ne. 0) then ierpos = 1 endif c c **************** c Fin de programme c **************** c return end