反向梯度:整合两个二维数组

问题描述 投票:0回答:0

我有两个二维电场分量阵列:

Ex 与 (256, 512) 和 Ez 与 (256, 512) 尺寸。

我需要计算标量势。标量势的梯度是电场矢量。所以我需要梯度的反转。

我尝试使用以下循环来计算潜在的 Φ (

phi
):

nx = 256
nz = 512
phi = np.zeros([nx, nz])

for i in range(1, nz):
    phi[:, i] = -dx * Ex[:, i-1] + phi[:, i-1]
    for j in range(1, nx):
        phi[j, :] = -dz * Ez[j-1, :] + phi[j-1, :]

这给了我一个不错但很奇怪的 Φ(这些垂直线很可疑):

我期望收到这样的东西(一位同事在 Fortran 中计算了相同的值,但他的个人资料不同):

这是他们的 Fortran 代码:

allocate(phi(nx,nz))
phi(1,1)=0.0
do i=2,nx
    phi(i,1)=-dx*ex(i-1,1)+phi(i-1,1)
enddo
do i=1,nx
    do j=2,nz
        phi(i,j)=-dz*ez(i,j-1)+phi(i,j-1)
    enddo
enddo

我哪里做错了?或者是否有更好的方法来计算电场的标量势?

python numpy gradient physics integral
© www.soinside.com 2019 - 2024. All rights reserved.