; main_program nutate_data ; ; Extract the IAU Nutation Theory coefficients from the file ; nutate_data.txt, and rewrite them as Fortran data statements, ; in the order of coefficient magnitude. ; ; B. Knapp, 1999-06-10 ; in_txt = strarr(106) cmag = fltarr(106) j = 0 line = '' openr,lun,'nutate_data.txt',/get_lun while not eof(lun) do begin readf,lun,line if long(strmid(line,1,3)) eq j+1 then begin in_txt[j] = line cmag[j] = sqrt( float(strmid(line,31,8))^2 + $ float(strmid(line,47,8))^2 ) j = j+1 endif endwhile close,lun free_lun,lun ; ; Sort in order of magnitude in_txt = in_txt[reverse(sort(cmag))] for j=0,105 do print,in_txt[j],cmag[j] ; ; Now break out each coefficient term and multiplier into ; their separate arrays, and write the Fortran data statements datafmt1 = "( 7(' & ',16(a3,',')/))" datafmt2 = "(14(' & ', 8(a7,',')/))" openw, lun, 'nutate_data.out', /get_lun ; cm = strmid(in_txt, 5,3) printf, lun, ' REAL*8 CM(106) /' printf, lun, cm, format=datafmt1 printf, lun, ' & /' ; ce = strmid(in_txt, 8,3) printf, lun, ' REAL*8 CE(106) /' printf, lun, ce, format=datafmt1 printf, lun, ' & /' ; cf = strmid(in_txt,11,3) printf, lun, ' REAL*8 CF(106) /' printf, lun, cf, format=datafmt1 printf, lun, ' & /' ; cd = strmid(in_txt,14,3) printf, lun, ' REAL*8 CD(106) /' printf, lun, cd, format=datafmt1 printf, lun, ' & /' ; co = strmid(in_txt,17,3) printf, lun, ' REAL*8 CO(106) /' printf, lun, co, format=datafmt1 printf, lun, ' & /' ; psi0 = strmid(in_txt,32,7) printf, lun, ' REAL*8 PSI0(106) /' printf, lun, psi0, format=datafmt2 printf, lun, ' & /' ; psi1 = strmid(in_txt,40,7) printf, lun, ' REAL*8 PSI1(106) /' printf, lun, psi1, format=datafmt2 printf, lun, ' & /' ; eps0 = strmid(in_txt,48,7) printf, lun, ' REAL*8 EPS0(106) /' printf, lun, eps0, format=datafmt2 printf, lun, ' & /' ; eps1 = strmid(in_txt,56,7) printf, lun, ' REAL*8 EPS1(106) /' printf, lun, eps1, format=datafmt2 printf, lun, ' & /' ; close, lun free_lun, lun ; end