pro varget,info,field,data ; ; Read variable from the netcdf file. ; ; Handle special case of ntime==1 (only one time on the file) ; by sizing the time dimension 2 instead of 1. If it is dimensioned ; only 1, then IDL chops it off, producing a var with ndims-1 ; dimensions! ; var = ncdf_varinq(info.cdfid,field.idvar) ndims = var.ndims ;print,' ' ;print,'VARGET: ndims=',ndims,' field.dimnames=',field.dimnames,$ ; ' field.ntime=',field.ntime ;print,' dimnames[ndimes-1]=',field.dimnames[ndims-1] ;print,'help,field=' & help,field,/struct ;print,' ' ncdf_varget,info.cdfid,field.idvar,rddata if field.dimnames[ndims-1] ne 'time' then return ; if field.ntime ne 1 then begin data = rddata endif else begin ; ntime=1 dims = size(rddata,/dimensions) ndimsdata = n_elements(dims) ; print,' varget: ndimsdata=',ndimsdata,' dims=',dims & help,dims case ndimsdata of 3: begin ; print,'varget: adding time dimension to 3d var ',field.name ; Note data[*,*,*,1] will never by referenced ; data = fltarr(dims[0],dims[1],dims[2],2) data[*,*,*,0] = rddata[*,*,*] ; ; Reform works, but still causes problems later when, ; e.g. data = *fields[i].data then data has ndims-1 dimensions... ; ; data = reform(rddata,dims[0],dims[1],dims[2],1) ; print,'varget: help,data = ' & help,data end 2: begin ; print,'varget: adding time dimension to 2d var ',field.name data = fltarr(dims[0],dims[1],2) data[*,*,0] = rddata[*,*] end 1: begin ; print,'varget: adding time dimension to 1d var ',field.name data = fltarr(dims[0],2) data[*,0] = rddata[*] end endcase endelse end ; pro varget