球坐标中的数值梯度

计算科学 数值分析
2021-12-02 06:42:36

假设我们有一个函数u以离散方式定义在一个球中:我们只知道u在节点(i,j,k)球面网格,其中i是半径坐标,j是角度的坐标φ,k是角度的坐标ψ.

考虑一个向量函数

ui,j,k=(uri,j,k,1risinψkuφi,j,k,1riuψi,j,k)
梯度u.

我需要知道ui,j,k在笛卡尔坐标的 z 轴上,对应于ψ=0-- 球坐标中的轴,但我们不能使用上面的公式,因为万一ψ=0第二项变成无穷大。

实际上,我们可以找到uz借助数值导数公式,但我们在寻找时遇到了问题ux,uy,因为网格不是矩形的。你能帮我解决这些问题并告诉我该怎么做吗?

1个回答

有 3 种方法可以避免这种情况,但在使用前必须检查由于计算错误,这种方法是否合适:

1)Green-Gauss单元法:这里使用梯度的定义:

ui1ViViudS¯k=1nufkSkn¯k,
在哪里k- 单元格的邻居数Vi

2)最小二乘法:误差

k=1n1dikEi,k2,Ei,k=uiΔri,k+uiuk
必须最小化,因此我们得到ui

3) 插值法。梯度的值是从梯度向量函数的值中插值得到的。