; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX ; ; write the field "constant_data" in the RFF file ; ; P. Robert, CETP, December 2007 ; ; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX PRO thm_scmwf_wrff_condat, unit, time_state, spinper,spinrasc,spindecl ; write constant data u=unit fa='(2a)' fd='(a,E20.13)' fr='(a,E13.6)' fi='(a,i8)' nbval=N_elements(time_state) ; one select only blocks with new values index=INTARR(nbval) index(0)=0 FOR i=1,nbval-1 DO BEGIN IF ( spinper(i) EQ spinper(i-1) AND $ spinrasc(i) EQ spinrasc(i-1) AND $ spindecl(i) EQ spindecl(i-1) ) THEN index(i) =-999 ELSE index(i)=i ENDFOR ; compute the number of significant blocks sel=WHERE(index NE -999, nbval2) PRINTF,u,FORMAT=fi, $ 'VAR NUMBER_OF_BLOCK (INT), u=None : ',nbval2 PRINTF,u,FORMAT=fa,'' ; writing only significant blocs FOR n=0,nbval-1 DO BEGIN IF(index(n) NE -999) THEN BEGIN datiso=julsec_to_isodatim(time_state(n),8) PRINTF,u,FORMAT=fa, $ 'VAR TIME_STAT_FILE (STR), u=ISO_Time : ',datiso PRINTF,u,FORMAT=fd, $ 'VAR SPIN_PERIOD (DBL), u=second : ',spinper(n) PRINTF,u,FORMAT=fr, $ 'VAR SPIN_GEI_RIGHT_ASCENT (FLT), u=degree : ',spinrasc(n) PRINTF,u,FORMAT=fr, $ 'VAR SPIN_GEI_DECLINATION (FLT), u=degree : ',spindecl(n) PRINTF,u,FORMAT=fa,'' ENDIF ENDFOR ; prepare the following indexed data PRINTF,u,FORMAT=fa,'END CONSTANT_DATA' PRINTF,u,FORMAT=fa,'' PRINTF,u,FORMAT=fa, $ '# ----------------------------------------------------------------------' PRINTF,u,FORMAT=fa,'' PRINTF,u,FORMAT=fa,'START INDEXED_DATA' PRINTF,u,FORMAT=fa,'' END ; XXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXXX