pro mvn_kp_iuvs_cdf_write, infiles, outpath, save_files=save_files, debug=debug
if not keyword_set(debug) then begin
catch, Error_status
if Error_status ne 0 then begin
print, '**ERROR HANDLING - ', !ERROR_STATE.MSG
print, '**ERROR HANDLING - Cannot proceed. Returning to main'
Error_status = 0
catch, /CANCEL
return
endif
endif
cdf_tools_result = routine_info('mvn_kp_iuvs_cdf_write',/source)
cdf_tools_directory = strsplit(cdf_tools_result.path,'mvn_kp_iuvs_cdf_write.pro',/extract,/regex)
masterCDFlores = cdf_tools_directory+'/mvn_kp_iuvs_lores_master.cdf'
masterCDFechelle = cdf_tools_directory+'/mvn_kp_iuvs_echelle_master.cdf'
iuvs_data_spec = mvn_kp_config(/iuvs_data)
N_common = iuvs_data_spec.num_common
foreach file , infiles do begin
if not keyword_set(save_files) then begin
base = file_basename(file, '.txt')
mvn_kp_read_iuvs_file, file, iuvs, /text_files
endif else begin
base = file_basename(file, '.sav')
mvn_kp_read_iuvs_file, file, iuvs, /save_files
endelse
outcdffile = outpath+'/'+base+'.cdf'
iuvs_cut = iuvs[0]
insitu=0
iuvs=0
periapse1 = iuvs_cut.periapse[0]
periapse2 = iuvs_cut.periapse[1]
periapse3 = iuvs_cut.periapse[2]
c_e_disk = iuvs_cut.CORONA_E_DISK
c_e_limb = iuvs_cut.CORONA_E_LIMB
c_e_high = iuvs_cut.CORONA_E_HIGH
c_l_disk = iuvs_cut.CORONA_LO_DISK
c_l_limb = iuvs_cut.CORONA_LO_LIMB
c_l_high = iuvs_cut.CORONA_LO_HIGH
apoapse = iuvs_cut.APOAPSE
if strlen(c_e_limb.time_start) ne 0 then begin
file_mode = 'echelle'
endif else if strlen(c_l_limb.time_start) ne 0 then begin
file_mode = 'lores'
endif else begin
message, 'Problem with IUVS file mode. Can not determine if echelle or lores mode for cdf creation'
endelse
if file_mode eq 'echelle' then begin
cdfi_p = cdf_load_vars(masterCDFechelle, /ALL)
mvn_kp_time_split_string, periapse1.time_start, year=yr, month=mo, day=dy, hour=hr, min=min, sec=sec, /FIX
cdf_tt2000, periapse1_tt2000_start, yr, mo, dy, hr, min, sec, /COMPUTE_EPOCH
mvn_kp_time_split_string, periapse2.time_start, year=yr, month=mo, day=dy, hour=hr, min=min, sec=sec, /FIX
cdf_tt2000, periapse2_tt2000_start, yr, mo, dy, hr, min, sec, /COMPUTE_EPOCH
mvn_kp_time_split_string, periapse3.time_start, year=yr, month=mo, day=dy, hour=hr, min=min, sec=sec, /FIX
cdf_tt2000, periapse3_tt2000_start, yr, mo, dy, hr, min, sec, /COMPUTE_EPOCH
mvn_kp_time_split_string, c_e_disk.time_start, year=yr, month=mo, day=dy, hour=hr, min=min, sec=sec, /FIX
cdf_tt2000, c_e_disk_tt2000_start, yr, mo, dy, hr, min, sec, /COMPUTE_EPOCH
mvn_kp_time_split_string, c_e_limb.time_start, year=yr, month=mo, day=dy, hour=hr, min=min, sec=sec, /FIX
cdf_tt2000, c_e_limb_tt2000_start, yr, mo, dy, hr, min, sec, /COMPUTE_EPOCH
mvn_kp_time_split_string, c_e_high.time_start, year=yr, month=mo, day=dy, hour=hr, min=min, sec=sec, /FIX
cdf_tt2000, c_e_high_tt2000_start, yr, mo, dy, hr, min, sec, /COMPUTE_EPOCH
mvn_kp_time_split_string, apoapse.time_start, year=yr, month=mo, day=dy, hour=hr, min=min, sec=sec, /FIX
cdf_tt2000, apoapse_tt2000_start, yr, mo, dy, hr, min, sec, /COMPUTE_EPOCH
ptr = PTR_NEW([periapse1_tt2000_start, periapse2_tt2000_start, periapse3_tt2000_start, $
c_e_disk_tt2000_start, c_e_limb_tt2000_start, c_e_high_tt2000_start, apoapse_tt2000_start])
cdfi_p.vars[0].dataptr = ptr
ptr = PTR_NEW(["periapse1", "periapse2", "periapse3", "Corona Echelle disk", "Corona Echelle limb", "Corona Echelle high", "apoapse"])
cdfi_p.vars[1].dataptr = ptr
ptr = PTR_NEW([periapse1.time_start, periapse2.time_start, periapse3.time_start, $
c_e_disk.time_start, c_e_limb.time_start, c_e_high.time_start, apoapse.time_start])
cdfi_p.vars[2].dataptr = ptr
ptr = PTR_NEW([periapse1.time_stop, periapse2.time_stop, periapse3.time_stop, $
c_e_disk.time_stop, c_e_limb.time_stop, c_e_high.time_stop, apoapse.time_stop])
cdfi_p.vars[3].dataptr = ptr
cdfi_index = 4
for i=2, N_common-1 Do begin
ptr = PTR_NEW([[periapse1.(i)], [periapse2.(i)], [periapse3.(i)], $
[c_e_disk.(i)], [c_e_limb.(i)], [c_e_high.(i)], [apoapse.(i)]])
cdfi_p.vars[cdfi_index].dataptr = ptr
cdfi_index++
endfor
last_index=n_tags(periapse1)
for i=N_common, last_index-1 Do begin
if (size(periapse1.(i)))[0] le 1 then begin
ptr = PTR_NEW([[periapse1.(i)], [periapse2.(i)], [periapse3.(i)]])
endif else begin
ptr = PTR_NEW([[[periapse1.(i)]], [[periapse2.(i)]], [[periapse3.(i)]]])
endelse
cdfi_p.vars[cdfi_index].dataptr = ptr
cdfi_index++
endfor
last_index = n_tags(c_e_disk)
for i=N_common, last_index-1 Do begin
ptr = PTR_NEW([c_e_disk.(i)])
cdfi_p.vars[cdfi_index].dataptr = ptr
cdfi_index++
endfor
last_index = n_tags(c_e_limb)
for i=N_common, last_index-1 Do begin
ptr = PTR_NEW([c_e_limb.(i)])
cdfi_p.vars[cdfi_index].dataptr = ptr
cdfi_index++
endfor
last_index = n_tags(c_e_high)
for i=N_common, last_index-1 Do begin
ptr = PTR_NEW([c_e_high.(i)])
cdfi_p.vars[cdfi_index].dataptr = ptr
cdfi_index++
endfor
last_index = n_tags(apoapse)
for i=N_common, last_index-1 Do begin
ptr = PTR_NEW([apoapse.(i)])
cdfi_p.vars[cdfi_index].dataptr = ptr
cdfi_index++
endfor
endif else if file_mode eq 'lores' then begin
cdfi_p = cdf_load_vars(masterCDFlores, /ALL)
mvn_kp_time_split_string, periapse1.time_start, year=yr, month=mo, day=dy, hour=hr, min=min, sec=sec, /FIX
cdf_tt2000, periapse1_tt2000_start, yr, mo, dy, hr, min, sec, /COMPUTE_EPOCH
mvn_kp_time_split_string, periapse2.time_start, year=yr, month=mo, day=dy, hour=hr, min=min, sec=sec, /FIX
cdf_tt2000, periapse2_tt2000_start, yr, mo, dy, hr, min, sec, /COMPUTE_EPOCH
mvn_kp_time_split_string, periapse3.time_start, year=yr, month=mo, day=dy, hour=hr, min=min, sec=sec, /FIX
cdf_tt2000, periapse3_tt2000_start, yr, mo, dy, hr, min, sec, /COMPUTE_EPOCH
mvn_kp_time_split_string, c_l_disk.time_start, year=yr, month=mo, day=dy, hour=hr, min=min, sec=sec, /FIX
cdf_tt2000, c_l_disk_tt2000_start, yr, mo, dy, hr, min, sec, /COMPUTE_EPOCH
mvn_kp_time_split_string, c_l_limb.time_start, year=yr, month=mo, day=dy, hour=hr, min=min, sec=sec, /FIX
cdf_tt2000, c_l_limb_tt2000_start, yr, mo, dy, hr, min, sec, /COMPUTE_EPOCH
mvn_kp_time_split_string, c_l_high.time_start, year=yr, month=mo, day=dy, hour=hr, min=min, sec=sec, /FIX
cdf_tt2000, c_l_high_tt2000_start, yr, mo, dy, hr, min, sec, /COMPUTE_EPOCH
mvn_kp_time_split_string, apoapse.time_start, year=yr, month=mo, day=dy, hour=hr, min=min, sec=sec, /FIX
cdf_tt2000, apoapse_tt2000_start, yr, mo, dy, hr, min, sec, /COMPUTE_EPOCH
ptr = PTR_NEW([periapse1_tt2000_start, periapse2_tt2000_start, periapse3_tt2000_start, $
c_l_disk_tt2000_start, c_l_limb_tt2000_start, c_l_high_tt2000_start, apoapse_tt2000_start])
cdfi_p.vars[0].dataptr = ptr
ptr = PTR_NEW(["periapse1", "periapse2", "periapse3", "Corona Lores disk", "Corona Lores limb", "Corona Lores high", "apoapse"])
cdfi_p.vars[1].dataptr = ptr
ptr = PTR_NEW([periapse1.time_start, periapse2.time_start, periapse3.time_start, $
c_l_disk.time_start, c_l_limb.time_start, c_l_high.time_start, apoapse.time_start])
cdfi_p.vars[2].dataptr = ptr
ptr = PTR_NEW([periapse1.time_stop, periapse2.time_stop, periapse3.time_stop, $
c_l_disk.time_stop, c_l_limb.time_stop, c_l_high.time_stop, apoapse.time_stop])
cdfi_p.vars[3].dataptr = ptr
cdfi_index = 4
for i=2, N_common-1 Do begin
ptr = PTR_NEW([[periapse1.(i)], [periapse2.(i)], [periapse3.(i)], $
[c_l_disk.(i)], [c_l_limb.(i)], [c_l_high.(i)], [apoapse.(i)]])
cdfi_p.vars[cdfi_index].dataptr = ptr
cdfi_index++
endfor
last_index=n_tags(periapse1)
for i=N_common, last_index-1 Do begin
if (size(periapse1.(i)))[0] le 1 then begin
ptr = PTR_NEW([[periapse1.(i)], [periapse2.(i)], [periapse3.(i)]])
endif else begin
ptr = PTR_NEW([[[periapse1.(i)]], [[periapse2.(i)]], [[periapse3.(i)]]])
endelse
cdfi_p.vars[cdfi_index].dataptr = ptr
cdfi_index++
endfor
last_index = n_tags(c_l_disk)
for i=N_common, last_index-1 Do begin
ptr = PTR_NEW([c_l_disk.(i)])
cdfi_p.vars[cdfi_index].dataptr = ptr
cdfi_index++
endfor
last_index = n_tags(c_l_limb)
for i=N_common, last_index-1 Do begin
ptr = PTR_NEW([c_l_limb.(i)])
cdfi_p.vars[cdfi_index].dataptr = ptr
cdfi_index++
endfor
last_index = n_tags(c_l_high)
for i=N_common, last_index-1 Do begin
ptr = PTR_NEW([c_l_high.(i)])
cdfi_p.vars[cdfi_index].dataptr = ptr
cdfi_index++
endfor
last_index = n_tags(apoapse)
for i=N_common, last_index-1 Do begin
ptr = PTR_NEW([apoapse.(i)])
cdfi_p.vars[cdfi_index].dataptr = ptr
cdfi_index++
endfor
endif
dummy = mvn_kp_cdf_save_vars(cdfi_p, outcdffile)
endforeach
setenv, 'MVNTOOLKIT_DEBUG='
end