- 积分
- 123
- 贡献
-
- 精华
- 在线时间
- 小时
- 注册时间
- 2011-10-14
- 最后登录
- 1970-1-1
|
发表于 2015-4-2 06:49:31
|
显示全部楼层
本帖最后由 东风 于 2015-4-2 06:53 编辑
RIP里面提供了一个非常强大的平滑函数,其平滑效果远远超过grads的9点平滑。
smooth.f的说明如下,通过numpass控制平滑算法,其中3XX的平滑为Cressman平滑算法。
subroutine smooth(pslab,work,numpas,mabpl,njx,niy)
c
c This is a smoothing routine, with several choices:
c
c If numpas is between 1 and 99, then a 9-point weighted smoother is
c applied numpas times. The smoother follows equation 11-107 in
c Haltiner and Williams. One pass completely removes 2-delta-x waves
c on the interior. On the outer row and column, and near missing
c data points, smoothing is carried out in a manner that preserves
c the domain average value of the field.
c
c If numpas is between 101 and 199, then a smoother-desmoother is
c applied (numpas-100) times. One pass removes a large fraction
c of the 2-delta-x component, but is not as harsh on longer
c wavelengths as the 9-point smoother
c
c If numpas is between 201 and 299, then the smoother-desmoother is
c applied (numpas-200) times, and, after each pass, the data field
c is forced to be non-negative.
c
c If numpas is between 301 and 399, then a weighted
c smoother is applied, in which the smoothed value
c is given by a weighted average of values at
c surrounding grid points. The weighting function
c is the Cressman weighting function:
c
c w = ( D**2 - d**2 ) / ( D**2 + d**2 )
c
c In the above, d is the distance (in grid increments)
c of the neighboring point to the smoothing point, and
c D is the radius of influence [in grid increments,
c given by (numpas-300)].
c
c If numpas is between 401 and 499, then the smoothing
c is similar for numpas=301-399, except the weighting
c function is the circular apperture diffraction function
c (following a suggestion of Barnes et al. 1996):
c
c w = bessel(3.8317*d/D)/(3.8317*d/D)
c
c If numpas is between 501 and 599, then the smoothing
c is similar for numpas=301-399, except the weighting
c function is the product of the rectangular
c apperture diffraction function in the x and y directions
c (the function used in Barnes et al. 1996):
c
c w = [sin(pi*x/D)/(pi*x/D)]*[sin(pi*y/D)/(pi*y/D)]
c
c Note, the first index of pslab varies along the abcissa
c (or x), and the second index varies along the ordinate (or y).
|
|