Function dummy_maven_l2_struct, vars, only_1_time_array = only_1_time_array, $
instrument = instrument, _extra=_extra
otp_struct = -1
If(keyword_set(instrument)) Then instr = instrument Else instr = 'L2'
var_attributes = {catdesc:'', display_type:'', fieldnam:'', $
fillval:!values.f_nan, format:'e13.6', $
units:'NA', depend_time:'', depend_epoch0:'', $
depend_0:'', depend_1:'NA', validmin:-1.0e38, $
validmax:1.0e+38, var_type:'data', $
coordinate_system:'sensor', $
property:'', scaletyp:'', lablaxis:'',$
form_ptr:'', monoton:'', scalemin:'',scalemax:''}
timevar_attributes = {catdesc:'', fieldnam:'', $
fillval:!values.f_nan, format:'f12.8', $
units:'sec', validmin:0.0, $
validmax:5.0e9, var_type:'support_data', $
lablaxis:'UT'}
yvar_attributes = {catdesc:'', fieldnam:'', $
fillval:!values.f_nan, format:'e13.6', $
units:'NA', depend_time:'', depend_epoch0:'', $
depend_0:'', validmin:-1.0e38, $
validmax:1.0e+38, var_type:'support_data', lablaxis:''}
vars_struct = {name:'', num:0, is_zvar:1, datatype:'CDF_FLOAT', $
type:4, numattr: -1, numelem: 1, recvary: 1b, $
numrec:0L, ndimen: 0, d:lonarr(6), dataptr:ptr_new(), $
attrptr:ptr_new()}
nv = n_elements(vars)
vatt = replicate(var_attributes, nv)
vstr = replicate(vars_struct, nv)
If(keyword_set(only_1_time_array)) Then Begin
vtatt = timevar_attributes
Endif Else Begin
vtatt = replicate(timevar_attributes, nv)
Endelse
vtstr = vstr
vtatt = replicate(timevar_attributes, nv)
vtstr = vstr
vyatt = replicate(yvar_attributes, nv)
vystr = vstr
has_yaxis = bytarr(nv)
has_data = bytarr(nv)
For j = 0, nv-1 Do Begin
vj = tnames(vars[j])
If(is_string(vj) Eq 0) Then Begin
message, /info, 'No variable name: '+vars[j]
continue
Endif
vj = vj[0]
get_data, vars[j], data = d, dlimits = dl
If(is_struct(d) Eq 0) Then Begin
message, /info, 'Data not a structure: '+vars[j]
continue
Endif
has_data[j] = 1
dx = d.x
dy = d.y
ny = n_elements(d.y)
vatt[j].catdesc = vj
If(is_struct(dl) && tag_exist(dl, 'spec') && dl.spec Eq 1) Then $
vatt[j].display_type = 'spectrogram' $
Else vatt[j].display_type = 'time_series'
vatt[j].fieldnam = vj
If(is_struct(dl) && tag_exist(dl, 'data_att') && $
tag_exist(dl.data_att, 'units')) Then vatt[j].units = dl.data_att.units
If(keyword_set(only_1_time_array)) Then Begin
vatt[j].depend_time = vj+'_time'
vatt[j].depend_epoch0 = vj+'_epoch0'
vatt[j].depend_0 = vj+'_epoch'
Endif Else Begin
vatt[j].depend_time = instr+'_time'
vatt[j].depend_epoch0 = instr+'_epoch0'
vatt[j].depend_0 = instr+'_epoch'
Endelse
If(tag_exist(d, 'v')) Then vatt[j].depend_1 = vj+'_yaxis'
If(is_struct(dl) && tag_exist(dl, 'data_att') && $
tag_exist(dl.data_att, 'coord_sys')) Then $
vatt[j].coordinate_system = dl.data_att.coord_sys
If(is_struct(dl) && tag_exist(dl, 'spec') && dl.spec Eq 1) Then $
vatt[j].property = 'spectrogram' Else Begin
If(ny Eq 1) Then vatt[j].property = 'scalar' $
Else vatt[j].property = 'vector'
Endelse
If(is_struct(dl) && tag_exist(dl, 'log') && dl.log Eq 1) Then $
vatt[j].scaletyp = 'log' Else vatt[j].scaletyp = 'linear'
vatt[j].lablaxis = vj
vstr[j].attrptr = ptr_new(vatt[j])
vstr[j].name = vj
vstr[j].num = n_elements(dx)
vstr[j].datatype = idl2cdftype(dy)
vstr[j].type = size(dy, /type)
vstr[j].d[0] = ny
vstr[j].dataptr = ptr_new(dy)
If(~keyword_set(only_1_time_array)) Then Begin
vtatt[j].catdesc = vj+'_time'
vtatt[j].fieldnam = vj+'_time'
vtstr[j].attrptr = ptr_new(vtatt[j])
vtstr[j].name = vj+'_time'
vtstr[j].num = n_elements(dx)
vtstr[j].datatype = 'CDF_DOUBLE'
vtstr[j].type = 5
vtstr[j].dataptr = ptr_new(dx)
Endif Else Begin
If(j Eq 0) Then Begin
vtatt[j].catdesc = instr+'_time'
vtatt[j].fieldnam = instr+'_time'
vtstr[j].attrptr = ptr_new(vtatt[j])
vtstr[j].name = vj+'_time'
vtstr[j].num = n_elements(dx)
vtstr[j].datatype = 'CDF_DOUBLE'
vtstr[j].type = 5
vtstr[j].dataptr = ptr_new(dx)
Endif
Endelse
If(tag_exist(d, 'v')) Then Begin
has_yaxis[j] = 1
dv = d.v
vyatt[j].catdesc = vj+'_yaxis'
vyatt[j].fieldnam = vj+'_yaxis'
vyatt[j].depend_time = vj+'_time'
vyatt[j].depend_epoch0 = vj+'_epoch0'
vyatt[j].depend_0 = vj+'_epoch'
vyatt[j].lablaxis = vj+'_yaxis'
vystr[j].name = vj+'_yaxis'
vystr[j].num = n_elements(dx)
vstr[j].datatype = idl2cdftype(dv)
vystr[j].type = size(dv, /type)
vystr[j].ndimen = 1
vystr[j].d[0] = ny
vystr[j].dataptr = ptr_new(dv)
vystr[j].attrptr = ptr_new(vyatt[j])
Endif
Endfor
keep_data = where(has_data Eq 1, vc)
If(vc Gt 0) Then Begin
keep_yaxis = where(has_yaxis Eq 1, nkeep)
If(nkeep Gt 0) Then Begin
vystr = vystr[keep_yaxis]
allvars = [vstr[keep_data], vtstr[keep_data], vystr]
Endif Else allvars = [vstr[keep_data], vtstr[keep_data]]
nvars = n_elements(allvars)
global_att = {project:'MAVEN', $
descriptor:'Test L2 CDF file', $
source_name: '', $
discipline:'', $
data_type:'', $
data_version:'',$
pi_name:'' , $
pi_affiliation:'' , $
text:'' , $
instrument_type:'' , $
mission_group:'' , $
logical_file_id:'',$
logical_source:'' , $
logical_source_description:'' , $
}
natts = n_tags(global_att)+n_tags(variable_attributes)
inq = {ndims:0l, decoding:'HOST_DECODING', $
encoding:'NETWORK_ENCODING', $
majority:'ROW_MAJOR', maxrec:-1,$
nvars:0, nzvars:nvars, natts:natts, dim:lonarr(1)}
otp_struct = {filename:'', g_attributes:global_att, inq:inq, nv:nvars, vars:allvars}
Endif Else Begin
message, /info, 'No Non-composite tplot variables'
otp_struct = 1
Endelse
Return, otp_struct
End