我正在尝试使用 Python 模拟Cahn-Hilliard方程,但是在任何条件下,这两种流体都不会按照需要分离成大块。我正在设置(我认为是)一个正交网格,其均匀浓度值为 0.5 加上 ±0.05 内的随机噪声值。。 = 50。时间步长为 1“秒”。总时间为 10 秒。
第一张图显示了 = 1s 的状态。第二张图片显示它在 = 2s 时,之后系统停止演化。放大后,图像 2 看起来有点像我的预期,但它太精细了;我希望像期待中那样有更大的团块:
1 秒后:
2 秒后:
期待:
要找到我使用的二阶导数(对于):
mesh_out[y][x] = mesh_in[y][x+2]) - (2 * mesh_in[y][x]) + mesh_in[y][x-2]
在每个时间步之后,如果某个点的浓度大于 1,则将其设置回 1。同样,如果小于 -1,我将其设置为 -1。
我试过弄乱时间步长、、初始浓度的值,但它们似乎没有什么区别。我没有使用任何插值 - 我应该使用吗?(如果是这样,您能否指出任何相关信息?)否则,我不确定为什么这不会产生我想要的结果。我怀疑我应该使用插值,但我不确定为什么这会有所作为。我需要某种能量最小化功能吗?例如,我见过有人提到吉布斯自由能。任何帮助/建议将不胜感激。
我没有发布任何代码,因为我不知道哪些位会有所帮助。



