我试图弄清楚如何在 numpy 网格上定义周期性边界。
假设我定义了一个大小为 1x1x1 的盒子,我在里面放了一个半径为 0.25 的球体。这个球体不在中心,但离边界足够近,以至于球体的一部分必须从盒子的另一侧出来。
例如,如果以下代码
import numpy as np
x_ = np.linspace(0,1,100)
y_ = np.linspace(0,1,100)
z_ = np.linspace(0,1,100)
X,Y,Z = np.meshgrid(x_,y_,z_,indexing='ij')
I = (X-particle['x'])**2 + (Y-particle['y'])**2 + (Z-particle['z'])**2 < particle['r']**2
我将得到一个 3D 布尔数组,其中 True 值是落在球体内的网格点,而 False 值是落在球体内的网格点。然而,这并不能保证我想要的周期性边界。
有什么优雅的方法,而不必遍历每个网格点