10

我想在三维空间中的某些物体上模拟具有吸收和反射的传播波。我想用python来做。我应该使用 numpy 吗?我应该使用一些特殊的库吗?

如何模拟波浪?我可以使用波动方程吗?但是,如果我有反思呢?有没有更好的方法?我应该用向量来做吗?但是当光线发散时,强度会降低。难的。

提前致谢。

4

4 回答 4

14

如果您在 Python 中进行任何计算密集型数值模拟,则绝对应该使用 NumPy。

模拟任意形状材料中的电磁波的最通用算法是有限差分时域法(FDTD)。它在 3-D 晶格上求解波动方程,一次一个时间步长。但是,自己编程非常复杂,最好使用Meep等专用包。

有一些关于如何编写自己的 FDTD 模拟的书籍:这是一个这是一个文档,其中包含一些 1-D FDTD 的代码和多维的解释,谷歌搜索“编写 FDTD ”会发现更多相同的内容。

您也可以通过假设所有波都是平面波来解决这个问题,然后您可以使用向量和菲涅耳方程。或者,如果您想模拟从平面或曲面传输和反射的高斯光束,您可以使用 ABCD 矩阵形式(也称为光线传输矩阵)。这考虑了光束的发散。

于 2011-02-10T11:39:28.930 回答
3

如果您正在解决 3D 自定义 PDE,我建议您至少看一下FiPy。它将为您省去从头开始构建大量矩阵调节器和求解器的麻烦。它使用 numpy 和/或 trilinos。下面是一些例子

于 2011-02-10T11:30:47.117 回答
0

我建议您使用我的项目GarlicSim作为构建模拟的框架。您仍然需要自己编写算法,可能在 Numpy 中,但 GarlicSim 可能会为您节省大量样板文件,并允许您以类似于版本控制系统的灵活方式探索您的模拟结果。

于 2011-02-10T15:31:23.320 回答
-5

不要使用 Python。我已经尝试将它用于计算昂贵的东西,但它并不是为此而生的。

如果您需要在 Python 程序中模拟波浪,请用 C/C++ 编写必要的代码并将其导出到 Python。
这是 C API 的链接:http: //docs.python.org/c-api/
请注意,它不是世界上最简单的 API :)

于 2011-02-10T11:28:29.567 回答