pro cont2d,dfpar,vlim,ngrid=n,redf=redf,cpd=cpd,lim=lim,nocolor=nocolor,vout=vout,fill=fill,ccolors=ccolors,plot1=plot1
if keyword_set(n) eq 0 then n =30
if keyword_set(vlim) eq 0 then vlim = 20000.
str_element,lim,'xrange',xrange
str_element,lim,'cpd',cpd
if keyword_set(xrange) then vlim = max(xrange)
color = get_colors()
vout = (dindgen(2*n+1)/n-1) * vlim
vx = vout # replicate(1.,2*n+1)
vy = replicate(1.,2*n+1) # vout
df = distfunc(vx,vy,par=dfpar)
df_range= alog(minmax_range(df))/alog(10.)
if keyword_set(cpd) then cpd0=cpd $
else cpd0 = floor(15/(df_range(1)-df_range(0))) > 1.
df10 = alog(df)/alog(10.)
levels = (findgen(30)-29)/cpd0 + ceil(max(df10))
c_labels = levels eq floor(levels)
v2 = sqrt(vx^2+vy^2)
v02 = sqrt(dfpar.vx0^2 + dfpar.vy0^2)
mn = min(v02)/1.1
mn =0.
mx = max(v02)*1.1
bad = where((v2 lt mn) or (v2 gt mx),count)
if count ne 0 then df10(bad) = !values.f_nan
str_element,dfpar,'time',value=t
str_element,dfpar,'end_time',value=t2
if keyword_set(t) then title = trange_str(t,t2) else title=''
pos = plot_pos(1.,/top)
ndec = 4
col = floor(levels)+3
col = col-6*floor(col/6.) +1
overplot= keyword_set(fill)
lim1 = {xrange:[-vlim,vlim],xstyle:1,xlog:0,xtitle:'V parallel (km/s)', $
yrange:[-vlim,vlim],ystyle:1,ylog:0,ytitle:'V perpendicular (km/s)', $
title:title,aspect:1,top:1}
extract_tags,lim1,lim
lim1.yrange = lim1.xrange
lim1.xlog=0
lim1.ylog=0
box,lim1
if overplot then $
contour,df10,vout,vout,lev=levels,tit=title,c_labels=c_labels,/xstyle,/ystyle,xtitle='V parallel (km/s)',ytitle='V perpendicular (km/s)',overplot=1,/fill,/isotr
contour,df10,vout,vout,lev=levels,c_col=col,tit=title,c_labels=c_labels,/xstyle,/ystyle,xtitle='V parallel (km/s)',ytitle='V perpendicular (km/s)',overplot=1,color=ccolor,/isotr
oplot,dfpar.vx0,dfpar.vy0,psym=3,color=color.cyan
time_stamp
str_element,dfpar,'vs',val=vref
if keyword_set(vref) then begin
df10(where(vx lt 0)) = !values.f_nan
vtemp = vout(n:2*n)
df10 =df10(n:2*n,*)
help,vtemp,df10,vout
oplot,2*[vref,vref],[-vlim,vlim],color=color.green
print,vref
endif
str_element,dfpar,'br',val=brat
if keyword_set(brat) then begin
v = sqrt(2.)*(findgen(100)+1)/100*vlim
a = mirror_ang(v,par=dfpar)*!dtor
oplot,v*cos(a),v*sin(a),color = color.green
oplot,v*cos(a),-v*sin(a),color = color.green
xyouts,vlim,vlim*.9,'Solar Wind ',align=1.,col=color.green
xyouts,-vlim,vlim*.9,' Reflected',align=0.,col=color.green
xyouts,-vlim,-vlim*.9,' Reflected',align=0.,col=color.green
xyouts,-vlim,-vlim*.2,' Escaped',align=0.,col=color.green
endif
if keyword_set(redf) then redf=!pi*total(df * abs(vy),2) * vlim/n /redf
pos2 = pos
pos2(1)=.06
pos2(3)=pos(1)-.06
plot1 = get_plot_state()
if pos2(3) gt (pos2(1)+.10) then begin
df = distfunc(vout,0.,par=dfpar)
dflim={noerase:1,ylog:1,xstyle:1,title:'',ytitle:'f (sec!u3!n/km!u3!n/cm!u3!n)', $
xtitle:'Velocity (km/s)'}
extract_tags,dflim,lim
extract_tags,plotstuff,dflim,/plot
plotstuff.title=''
plot,vout,df,pos=pos2,_extra=plotstuff
df = distfunc(0.,vout,par=dfpar)
oplot,vout,df,col=color.green,lines=2
if keyword_set(redf) then oplot,vout,redf/1e7,col=color.red
endif
end