9
\ begingroup美元

我有$u$-风$v$-风和比湿度。我想计算一个网格点上的水分通量收敛。因此,我需要计算$q(\frac{du}{dx} + \frac{dv}{dy})$的值

我的问题是如何计算$\frac{du}{dx}$和$\frac{dv}{dy}$从$u$-wind和$v$-wind在网格点$(x,y)$?

\ endgroup美元
7
  • 1
    \ begingroup美元 我没有那样做。此外,这是与NCL。我想用FORTRAN代码或shell脚本这样的程序来做。 \ endgroup美元
    - - - - - -
    2017年2月9日14:07
  • 3.
    \ begingroup美元 对于这个计算,您可能需要u风和v-相邻网格单元的风以及到相邻网格单元的距离。 \ endgroup美元
    - - - - - -FuzzyLeapfrog
    2017年2月9日16:21
  • 2
    \ begingroup美元 见下文第3项www.hoelymoley.com/questions/19/..。 \ endgroup美元
    - - - - - -milancurcic
    2017年2月9日21:11
  • 1
    \ begingroup美元 @milancurcic:非常感谢。这正是我要找的。 \ endgroup美元
    - - - - - -
    2017年2月10日0:46
  • 1
    \ begingroup美元 @gansub:非常感谢你的评论。我在谷歌上搜了很多。但我的怀疑被毛绒绒跳蛙和米兰库西奇消除了。 \ endgroup美元
    - - - - - -
    2017年2月10日0:58

2答案2

5
\ begingroup美元

我想象你有一个水平网格(x,y)和风分量u(x,y)和v(x,y)。

通常我们做1度纬度常数(y维),等于110000米。所以你的dy取决于每个格点有多少度(yresolution)。然而,dx会根据纬度而有所不同。

dy = 110000 * yesolution;

现在,我们可以用中心有限差分来计算你想要的。(下面是一个Matlab代码,但我相信足够通用,可以在其他语言中重现)。

对于y=2:长度(latt)-1 dx=abs(110000*cos(latx(y)*(2*pi/360))*xresolution);x = 2:长度(朗)1 div (x, y, 1) = (u (x + 1, y, 1) - u (x - 1, y, 1)) / (2 * dx) + (v (x, y + 1, - 1) - v (x, y-1, 1) / (2 * (dy);结束结束

请注意,当x=1, x=max(x), y=1和y=max(y)时,散度场周围将有一个空框架,一旦它们没有两个邻居来计算差值。当你这样做的时候也是一样的hdivg例如,在梯度函数。

顺便说一下,这是基于和产生相同的结果毕业生(我已经检查!)使用cdiff复制hdivg

还要注意,这里的余弦函数适用于弧度,所以如果你直接以角度计算余弦(即弧度)。cosd函数),你应该省略术语缩放by(2 *π/ 360),这只是一种转换。

希望能有所帮助!

\ endgroup美元
3.
  • 1
    \ begingroup美元 中心有限差分只适用于非边界网格点。在网格点边界(例如极点),您将需要使用向前和向后的差异。 \ endgroup美元
    - - - - - -gansub
    2019年1月26日2:32
  • \ begingroup美元 过一会儿再检查这个答案,关于边界你是正确的@gansub。用梯度法计算散度和涡度hdivg而且hcurl,也会返回边界网格单元的缺失值。我想这对大多数应用程序来说都没问题。 \ endgroup美元
    - - - - - -
    2019年3月22日10:55
  • 1
    \ begingroup美元 如果您正在使用大多数区域网格,这是没问题的。如果你想计算极涡的旋度(在两极上方),这是不可以的。 \ endgroup美元
    - - - - - -gansub
    2019年3月22日12:11
3.
\ begingroup美元

简单的答案是用有限差分。哪一个完全是你的选择。例如,我将选择一个简单的居中差分格式。

假设你有一个网格,你的点($x$,$y$)在第i和第j个网格点上,其中i表示网格上的左右索引,j表示网格上的南北索引。因此美元u和v可以表示为美元美元u(间{i, j}, y_ {i, j})和v美元(间{i, j}, y_ {i, j})美元。

$ $ \压裂{du} {dx} \大约\压裂{\δu}{\δx} = \压裂{u (x + \δx, y) - u (x - \δx, y)}{\δx} = \压裂{u(间{i + 1, j}, y) - u(间{张,j}, y)}{间{i + 1, j}间{张,j}} = \压裂{u_ {i + 1, j} u_{张,j}}{间{i + 1, j}间{张,j}} $ $

类似的过程也可以应用于v分量,只是改变了下标和变量

\ endgroup美元

    你的答案

    点击“张贴您的答案”,即表示您同意我们的服务条款隐私政策而且饼干的政策

    这不是你想要的答案?浏览带标签的其他问题问自己的问题