FiPy 设置初始网格值

FiPy Setting Initial Grid Values

我是一个用例,我需要将值从 2D Numpy 数组转置到 2D FiPy 网格,然后用于求解系统。

我的代码如下:

for x in range(0, size[0]):
            for y in range(0, size[1]):
                source.setValue(tmpSource.getGrid()[x][y], where=(X < x + 1) & (X > x) & (Y > y) & (Y < y + 1))
                sink.setValue(tmpSink.getGrid()[x][y], where=(X < x + 1) & (X > x) & (Y > y) & (Y < y + 1))

其中tmpSource和tmpSink表示Numpy数组。

虽然这种方法有效,但 运行 非常慢。有人对可以加快速度的替代方法有任何建议吗?

谢谢!

你说 "transpose",但你的例子似乎是一个简单的数据传输,没有交换轴或数据范围。将值从 2D numpy 数组移动到 Grid2D 上定义的 FiPy CellVariable 应该像展平数组一样简单:

source.value = tmpSource.getGrid().flatten()
sink.value = tmpSink.getGrid().flatten()