;
; Open file containing surface pressure data for the
; entire globe.
;
a = addfile("data/94072700_aP.cdf","r")

;
; Open X workstation.
;
wks = create "wks" xWorkstationLayerClass noparent end create

;
; Read in surface pressure and convert it to millibars.
;
p = a->Psl/100.0
frtime = a->frtime
tmp = new(dimsizes(p(0,:,:)),float)
ind = 0

;
; Sort timesteps to put them in order.
;
do i = 0, dimsizes(frtime) - 2
        ind = i
        do j = i + 1, 10
                if(frtime(j) .lt. frtime(ind))
                        ind = j
                end if
        end do

;
; Swap 2D subsection with 2D subsection.
;
        if(ind.ne.i)
                tmp = p(ind,:,:)
                p(ind,:,:) = p(i,:,:)
                p(i,:,:) = tmp
		tmp2 = frtime(ind)
		frtime(ind) = frtime(i)
		frtime(i) = tmp2
        end if
end do

;
; Create scalar field configured with first time step
; of pressure data.
;
field1 = create "field1" scalarFieldLayerClass noparent
	"sfDataArray" : p(0,:,:) 
	"sfMissingValueV" : p@_FillValue
	"sfXCStartV" : a->lon(0)
	"sfXCEndV" : a->lon(dimsizes(a->lon)- 1)
	"sfYCStartV" : a->lat(0)
	"sfYCEndV" : a->lat(dimsizes(a->lon) - 1)
end create

;
; Create contour object using manual level spacing and solid
; color fill.
;
con1 = create "con1" contourLayerClass wks
	"cnScalarFieldData" : field1
	"cnLevelSelectionMode" : "MANUAL"
	"cnMinLevelValF" : 960.0
	"cnMaxLevelValF" : 1040.0
	"cnLevelSpacingF" : 5.0
	"cnMaxLevelCount" : 25
	"cnInfoLabelOn" : "OFF"
	"cnHighLabelsOn" : "OFF"
	"cnLowLabelsOn" : "OFF"
	"cnLineLabelsOn" : "False"
	"cnMonoFillPattern" : "True"
	"cnFillPatterns" : 0
	"cnMonoLineColor" : "True"
	"cnLineColors" : 0
	"cnMonoLevelFlag" : "True"
	"cnLevelFlags" : 0
	"tiMainString" : "Forcast Time " + 0
end create

; 
; Draw first frame.
;
draw(con1)
frame(wks)

;
; Loop and draw remaining frames, resetting the scalar field object
; with a new array for each iteration.
;
do i = 1, dimsizes(frtime) - 1 
	setvalues field1
		"sfDataArray" : p(i,:,:)
	end setvalues
	setvalues con1
		"tiMainString" : "Forcast Time " + frtime(i)
	end setvalues
	draw(con1)
	frame(wks)
end do
;
; Free variables used in this script.
;
delete(tmp)
delete(a)
delete(con1)
delete(wks)
delete(field1)
delete(i)
delete(j)
delete(p)
delete(frtime)
delete(ind)