- 积分
- 55946
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2011-6-21
- 最后登录
- 1970-1-1
|
登录后查看更多精彩内容~
您需要 登录 才可以下载或查看,没有帐号?立即注册
x
本帖最后由 MeteoInfo 于 2022-12-27 11:09 编辑
参考了 MIT 的 Kirill Pankratov 博士1994年的MATLAB程序,在MeteoInfoLab的meteolib包中实现了flowfun函数来计算流场的流函数和速度势,具体可以参考此网页:http://www-pord.ucsd.edu/matlab/stream.htm。
网上例子的实现:
- e = 2.; g = 1.
- x, y = meshgrid(arange(0, 21), arange(0, 16)) # This makes regular grid
- u = e*x-g*y # Linear velocity field
- v = g*x-e*y
- psi, phi = meteolib.flowfun(u, v) # Here comes the streamfun and potential.
- contour(phi, 20, colors='r', linestyle='--') # Contours of potential
- contour(psi, 20, colors='g') # Contours of streamfunction
- quiver(u, v, color='b', size=6) # Now superimpose the velocity field
一个实际气象风场数据的例子:
- fn = 'D:/Temp/nc/_grib2netcdf-webmars-public-svc-green-003-6fe5cac1a363ec1525f54343b6cc9fd8-VvjKkH.nc'
- f = addfile(fn)
- u = f['u'][0,'10:55','70:140']
- v = f['v'][0,'10:55','70:140']
- lon = u.dimvalue(1)
- lat = u.dimvalue(0)
- psi, phi = meteo.flowfun(u, v) # Here comes the streamfunction and potential.
- axesm()
- geoshow('country')
- layer = contour(lon, lat, psi, 20) # Contours of streamfunction
- s = 3
- quiver(lon[::s], lat[::s], u[::s,::s], v[::s,::s], color='b', size=20) # Now superimpose the velocity field
- colorbar(layer)
|
|