pro construct_cube, data, field_name, MIN=min_data, MAX=max_data, $ cube_center=cube_center, cube_length=cube_length, $ cube_dimensions=cdims ; constructs cube ; this is the wrapper around construct_3D_data used to compute ; fractions and do other special data dependent actions ; returns the data cube @common_blocks.inc if N_elements(cdims) eq 0 then cdims = cube_dim cube_center = slice_ori cube_center(where(slice_ori lt 1.e-30)) = $ [slice_size(0)+0.5*(slice_size(2)-slice_size(0)), $ slice_size(1)+0.5*(slice_size(3)-slice_size(1))] cube_length = slice_size(2)-slice_size(0) if vel.myturn eq 0 then begin field_name = list_str[var_index] construct_3D_data, grid_info, cube_center, cube_length, $ data_dir, field_name, cdims, data, $ interpolate=interpolate_i ; data = construct_3d_data(FIELDS=field_name, resolution=cdims, interpolation=interpolate_i) ; fudge problems with density and temperature data ; return min and max if requested min_data = min(data, max=max_data) endif else begin ; return vector field ffname = 'velocity' names = ['x-velocity', 'y-velocity', 'z-velocity'] if vector_field_b then begin names = ['Bx', 'By', 'Bz'] ffname = 'B' endif for i=0,2 do begin field_name = names[i] construct_3D_data, grid_info, cube_center, cube_length, $ data_dir, field_name, cdims, datatmp, $ interpolate=interpolate_i s = size(datatmp) if i eq 0 then data = fltarr(s[1], s[2], s[3], 3) data[*,*,*, i] = datatmp[*,*,*] endfor field_name = ffname endelse center = cube_center slice_size[[0,1]] = cube_center(where(slice_ori lt 1.e-30)) - 0.5*cube_length slice_size[[2,3]] = cube_center(where(slice_ori lt 1.e-30)) + 0.5*cube_length image_stack[0].slice_size = slice_size update_slice_text, slice_text, slice_size, center, image_stack(0).title, pofi ; common block variables for interactions with SD_vision: c_center= center c_length = cube_length END ; .compile construct_cube