我想使用SciPy
. 有一些关于一维扩散的教程。墨水虽然是单向的,但不会是笔直的。如果您能帮助我考虑墨水的扩散以及其他维度,我将不胜感激。
在一维中求解菲克第二定律给出了一个简单的方程来绘制不同时间对x的浓度分布。如何计算c(x,y,z,t)在不同时间的轮廓?
如果以任何其他编程语言引入代码,我可以将其转换为 python。我只是想了解算法结构。
我想使用SciPy
. 有一些关于一维扩散的教程。墨水虽然是单向的,但不会是笔直的。如果您能帮助我考虑墨水的扩散以及其他维度,我将不胜感激。
在一维中求解菲克第二定律给出了一个简单的方程来绘制不同时间对x的浓度分布。如何计算c(x,y,z,t)在不同时间的轮廓?
如果以任何其他编程语言引入代码,我可以将其转换为 python。我只是想了解算法结构。
您只需沿其他维度添加扩散。这种来自正交方向的叠加是有道理的,因为它们是独立的。
因此,通过维基百科了解Fick 的一维扩散第二定律:
我们将其扩展到 2d 为:
二阶导数称为“拉普拉斯算子”,对于向量微积分(超过一维),您可能会看到它被标记为。当应用于标量值时,如这里,它表示相对于每个维度的偏微分之和。
你需要“离散化”这个。(稍后我可能会在此处添加详细信息。)
一维扩散(步骤 3) 和二维扩散(步骤 7)的数学、离散化和 Python 代码
我认为一旦您看过 2D 案例,将其扩展到 3D 将很容易。
然而,这种扩散不会很有趣,只是一个圆形(或 3d 中的球体)在中心具有较高浓度(“密度”)随着时间的推移而扩散 - 就像热扩散通过均匀的金属一样。虽然我已经在这里解决了您关于多维扩散的具体问题,但从“从容器一侧释放的墨水”和#advection-diffusion 标签可能是您想要模拟通过流体的扩散,这需要流体模拟,当然更复杂。
在这种情况下,我建议先查看上述完整的 12 个步骤。