This directory contains pe_icon_out.nc.gz - A compressed output file from a 30 day simulation initialized at 12:00gmt on August 1, 2000 pe_icon_out.header - A dump of the header information of pe_icon_out.nc created by the ncdump utility ReadMe.txt - This file. grids_AOSN2_med_sasm.nc.gz - A compressed grid file. The relevent information for extracting velocity data is given by the following dimensions and variables: dimensions: vlat = 84 ; vlon = 53 ; outlev = 20 ; vector = 2 ; time = UNLIMITED ; // (61 currently) axis3 = 3 ; variables: float vgrid3(vlat, vlon, outlev, axis3) ; vgrid3:long_name = "3D grid positions at velocity points" ; vgrid3:axis = "1: longitude, 2: latitude, 3: depth" ; vgrid3:units = "degrees_east, degrees_north, meter" ; float time(time) ; time:long_name = "time since initialization" ; time:units = "seconds" ; time:field = "time, scalar, series" ; float vtot(time, vlat, vlon, outlev, vector) ; vtot:long_name = "total velocity" ; vtot:units = "centimeter second-1" ; vtot:field = "total velocity, vector, series" ; vtot:positions = "vgrid3" ; vtot:_FillValue = 1.e+35f ; vtot:missing_value = 1.e+35f ; To get the positions of every velocity point on the HOPS sigma-coordinate system: longitude = vgrid3(:,:,1,1) latitude = vgrid3(:,:,1,2) depth = vgrid3(:,:,:,1) Notice that only the top level LAT/LON data is necessary. These values don't change with depth. The navigation of the total velocity ("vtot") is indicated by the positions attribute. One thing to beware of: the velocity is oriented along the model grid vtot(:,:,:,:,1) is roughly across isobaths vtot(:,:,:,:,2) is roughly along isobaths To rotate back to lat/lon orientation, extract the variable "lrotang" from the grids file and use the formula phi(i,j) = lrotang(i,j)*pi/180 ulon(n,j,i,k) = vtot(n,j,i,k,1)*cos(phi(i,j)) - vtot(n,j,i,k,2)*sin(phi(i,j)) vlat(n,j,i,k) = vtot(n,j,i,k,1)*sin(phi(i,j)) + vtot(n,j,i,k,2)*cos(phi(i,j)) One other pointer, the last slab of velocity data vtot(:,vlat,:,:,:) is filler and just contains the fill values vtot:_FillValue = 1.e+35f ; If you're working in Matlab, it's usually a good idea to check for these fill values when the data is first read in, and replace them with NaN's.