在空间位置的均匀网格上:
我有一个速度函数:。
给定一个起始位置我可以通过快速行进方法 (FMM)计算到达空间中所有点所需的时间: ) 。
但是,我想在大于 RAM 的网格上执行此操作,例如。
FMM 需要访问所有速度数据。不可能只在网格的一部分上运行它,然后以某种方式组合结果。
然而,存储速度数据的数据结构可以是稀疏的。只要 FMM 可以请求任何的值,它就不会关心它是如何在内部存储的。
我想象一次设置值块:
struct SparseArray3D {
public:
SparseArray3D(int nx, int ny, int nz);
void setBlock(int i0, int j0, int k0, float block[64][64][64]); // i0 <= i < i0 + 64, j0 <= j < j0 + 64, k0 <= k < k0 + 64
float& operator()(int i, int j, int k); // needed by FMM
};
你对我可以使用哪种数据结构有什么建议吗?
(您可能已经猜到了)我正在使用 C/C++ 编程。