我应该如何在FiPy中编写这些耦合的PDE?

时间:2016-10-05 15:30:00

标签: pde fipy

我正在尝试使用FiPy实现三元合金的相场凝固模型。我查看了FiPy网站上提供的大多数阶段字段示例,我的模型类似于examples.phase.quaternary

浓度的演化方程式如下:

http://i.stack.imgur.com/KvM1r.png

C_1和C_2应该解决哪个问题(C_3是溶剂)。浓度方程与相位演化方程耦合,我们得到D_i = D_i(phi),h = h(phi)。

在所有三个术语中,(C_i)解决了变量的非线性依赖性,这使我不确定如何在FiPy中定义它们。第一项(红色)是具有非线性系数的扩散项,应该没问题,但我应该如何定义反扩散和相变项呢?

我尝试将它们定义为具有非线性系数的扩散和对流项,但没有成功。因此,我希望就如何定义以便FiPy喜欢它提供一些建议。

非常感谢任何帮助,谢谢! /安德斯

1 个答案:

答案 0 :(得分:1)

这组方程可以以耦合方式求解。反扩散项可以定义为耦合扩散项,相变项可以定义为对流项。方程将是,

eqn1 = fipy.TransientTerm(var=C_1) == \
       fipy.DiffusionTerm(D_1 - coeff_1 * (D_1 - D_3), var=C_1) \ # coupled
       - fipy.DiffusionTerm(coeff_1 * (D_2 - D_3), var=C_2) \ # coupled
       + fipy.ConvectionTerm(conv_coeff_1, var=C_1)

,其中

coeff_1 = D_1 * C_1 / ((D_1 - D_3) * C_1 + (D_2 - D_3) * C_2 + D_3)
conv_coeff_1 = Vm / R * D_1 * h.faceGrad * inner_sum_1.faceValue

inner_sum_1是相变项中复杂的内部和。 $ \ nabla h $部分已从内部金额中扣除。您可以使用(h.grad * inner_sum_1).faceValueh.faceGrad * inner_sum_1.faceValue,也可以将面值用于构成inner_sum_1的变量。我不知道它有多大的不同。在以类似的方式定义C_1C_2方程后,然后将它们组合成一个方程

eqn = eqn1 & eqn2