;+
;
; PROJECT:  CHIANTI
;
;       CHIANTI is an atomic database package for the calculation of
;       astrophysical emission line spectra.  It is a collaborative project
;       involving the Naval Research Laboratory, Washington DC, Arcetri 
;       Observatory, Florence, Cambridge University, Rutherford
;       Appleton Laboratory, and the University of Central Lancashire.
;
;
; NAME:
;	READ_IONEQ
;
; PURPOSE:
;
;	to read files containing the ionization equilibrium values
;
; CATEGORY:
;
;	science.
;
; CALLING SEQUENCE:
;
;       READ_IONEQ, File, T, Ioneq, Ref
;
;
; INPUTS:
;
;	File:	for example, !xuvtop+'/ioneq/arnaud_rothenflug.ioneq'
;
; OPTIONAL INPUTS:
;
;	None:
;	
;
; OUTPUTS:
;
;	T:  array of log10 temperatures
;       Ioneq: 2 dimensional array of ionization equilibrium values
;       Ref:  reference in the scientific literature
;
;
; EXAMPLE:
;
;             > read_ioneq,!xuvtop+'/ioneq/arnaud_rothenflug.ioneq'
;             > help,t,ioneq
;             > T               FLOAT     = Array(41)
;             > IONEQ           FLOAT     = Array(41, 28, 29)
;             > print, minmax(t)
;             >  4.00000      8.00000
;             > print,t(20)
;             >  6.0000
;             > print,ioneq(20,25,9)
;             >   0.269                  = log10 of ionization equilibrium of Fe X
;
; MODIFICATION HISTORY:
; 	Written by:	Ken Dere (KPD)
;	March 1996:     Version 2.0
;       March 1999:     KPD to read both number of temperature and number 
;                       of elements
;
;       25-Oct-2000     V. 4, Giulio Del Zanna (GDZ).
;                       Corrected to interpret the '-1' as a reference only
;                       if within the first 3 columns
;
; VERSION     : 
;       Version 4, 25-Oct-2000.
;
;-
pro read_ioneq,filename,t,ioneq,ref
;
;
if n_params(0) lt 4 then begin
   print,''
   print,' >  read_ioneq,filename,t,ioneq,ref '
   print,'      or'
   print,' > read_ioneq,''',''' , t,ioneq, ref'
   print,''
   return
endif
;
if strtrim(filename,2) eq '' then begin
;
    dir=add_subdir(!xuvtop,'ioneq')
    filename=dialog_pickfile(path=dir,filter='*.ioneq',title='Select Ionization Equilibrium File')
    print,' selected:  ',filename
endif
;
;
;
;
openr,lu,filename,/get_lun
;
string1=' '
;
str=''
nt=1
nz=1
;
readf,lu,str  ; read number of temperatures and elements
str=strtrim(str,2)
if strlen(str) le 3 then begin
   reads,str,nt    ;  v1.0 style
   ioneq=fltarr(nt,30,31)
endif else begin
    reads,str,nt,nz   ; v2.0 style
    ioneq=fltarr(nt,nz,nz+1)
endelse
   ioneq=fltarr(nt,30,31)   ;  hard-wired for now
;
z1=1 & ion1=1. & f1=fltarr(nt) 
;
readf,lu,f1
;
t=f1
;
;
;
;
;
while strpos(string1,'-1') EQ  -1 or strpos(string1,'-1') GT 2  do begin
readf,lu,string1
if(strpos(string1,'-1')   EQ  -1 or strpos(string1,'-1') GT 2) then begin

  reads,string1,z1,ion1,f1,format='(2i3,41e10.2)'
  ioneq(0,z1-1,ion1-1)=f1(*)
endif
endwhile
;
;  get references
refstring=strarr(100)
nref=0
;
string1=' '
while strpos(string1,'-1') EQ  -1  do begin
readf,lu,string1

if(strpos(string1,'-1') EQ -1) and (strpos(string1,'%file') EQ -1) then begin
  refstring(nref)=string1
  nref=nref+1
endif
endwhile
;
ref=refstring(0:nref-1)
;
;
;g=where(ioneq gt 0.)
;ioneq(g)=10.^(-ioneq(g))
;
;
free_lun,lu
;
;
end