粒子不同方向上具有不同扩散系数的粒子的二维模拟

计算科学 matlab 模拟 扩散
2021-12-05 04:07:30

如何模拟具有自然轴的粒子的扩散,并且粒子在轴方向上的扩散系数为 D_1,垂直于轴的方向为 D_2?有人可以提供代码吗?

3个回答

如果我没看错,记得扩散算子只是

D1uyy+D2uxx=D1ui+1,j2ui,j+ui1,jΔy2+D2ui,j+12ui,j+ui,j1Δx2

到二阶。这应该让您了解如何编写循环。

但是还有另一种方法可以做到这一点。如果是扩散算子,它是一个 Strang 矩阵(对角线上为 -2,非对角线上为 1),那么请注意,如果你将设为矩阵,其中,即每一列是一个单独的并且每一行是一个单独的(注意那里的索引交换),那么这很容易以矢量化形式编码。请注意,使用的列,因此它沿扩散。同时,沿扩散。因此,乘以得到Auui,j(t)=u(xj,yi,t)xyAuuyuAxDzΔz2z=x,y分别,

Ayu+uAx

是一种简单的矢量化方式来执行扩散。这样做的好处是 BLAS 是多线程的,因此这将在 Julia、MATLAB 和 Python 等多种语言中自动并行化。

如果要模拟具有取决于轴的扩散系数的物体的(随机)布朗运动,本文对此进行了详细讨论:

牛顿流体中一般形状粒子的布朗运动 Makino 和 Doi,J. Phys。社会党。日本。73,第 2739-2745 页 (2004) https://doi.org/10.1143/JPSJ.73.2739

关键问题是旋转扩散会改变轴的位置,从而导致非常不同的行为。

还应该可以编写和求解用于方向变量和对象位置的概率分布的 Fokker-Planck 方程。这(我认为)在 Doi + Edwards 的《聚合物动力学理论》一书中进行了讨论。

这里的问题相当于在粒子的身体参考系中应用随机力。在那里,您可以分别设置摩擦和/或扩散系数。计算出力后,您可以将它们旋转回实验室参考系。诸如“胶体动力学”之类的书将为您提供所有必要的背景知识。https://www.amazon.fr/Introduction-Dynamics-Colloids-JKG-Dhont-ebook/dp/B00DTSEAY2/ref=sr_1_1?ie=UTF8&qid=1495569759&sr=8-1&keywords=dynamics+of+colloids