首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >eqn3在Fipy examples.cahnHilliard.mesh2DCoupled中的作用

eqn3在Fipy examples.cahnHilliard.mesh2DCoupled中的作用
EN

Stack Overflow用户
提问于 2020-01-08 15:42:58
回答 1查看 38关注 0票数 0

我目前正在处理fipy文档中的示例,并试图调整examples.cahnHilliard.mesh2DCoupled来执行一些模拟。链接是:https://www.ctcms.nist.gov/fipy/examples/cahnHilliard/generated/examples.cahnHilliard.mesh2DCoupled.html

似乎示例代码声明了一个eq3和一个dfdphi_,并且没有在其他任何地方使用这些等式,即使在解决方案中也是如此。

从文档中:

代码语言:javascript
复制
>>> D = a = epsilon = 1.
>>> dfdphi = a**2 * phi * (1 - phi) * (1 - 2 * phi)
>>> dfdphi_ = a**2 * (1 - phi) * (1 - 2 * phi)
>>> d2fdphi2 = a**2 * (1 - 6 * phi * (1 - phi))
>>> eq1 = (TransientTerm(var=phi) == DiffusionTerm(coeff=D, var=psi))
>>> eq2 = (ImplicitSourceTerm(coeff=1., var=psi)
...        == ImplicitSourceTerm(coeff=d2fdphi2, var=phi) - d2fdphi2 * phi + dfdphi
...        - DiffusionTerm(coeff=epsilon**2, var=phi))
>>> eq3 = (ImplicitSourceTerm(coeff=1., var=psi)
...        == ImplicitSourceTerm(coeff=dfdphi_, var=phi)
...        - DiffusionTerm(coeff=epsilon**2, var=phi))
>>> eq = eq1 & eq2

在解决方案块中:

代码语言:javascript
复制
>>> while elapsed < duration:
...     dt = min(100, numerix.exp(dexp))
...     elapsed += dt
...     dexp += 0.01
...     eq.solve(dt=dt)
...     if __name__ == "__main__":
...         viewer.plot()

如果有任何关于eq3dfdphi_术语作用的见解,我将不胜感激。作为扩展,求解器如何知道使用$\phi$的旧值来评估泰勒表达式之后的线性化形式,因为求解器块似乎没有考虑到这一点。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2020-01-08 20:08:36

eqn2eqn3在无限小的时间和空间步长的限制下,编码相同的方程。然而,在他们的离散化中,他们挑选了不同的术语,以便在时间步长传播器的构建中发挥更积极的作用。

在短期内,这只会导致结果中微不足道的差异,但从长期来看,可能会在稳定性和准确性方面存在更明显的差异。

“更自然”的方程式eq3的存在似乎间接地邀请我们对其进行实验,也许是为了探索eq2中的转换及其可能的优势是巧合还是某些更深层次的想法的结果。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59641437

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档