【发布时间】:2020-07-28 03:29:59
【问题描述】:
【问题讨论】:
-
\phi 是向量吗?如果不是,我什至不确定那个表达是什么意思。
-
是的,它是一个向量。
标签: fipy
【问题讨论】:
标签: fipy
我没有看到如何使用@wd15 的建议来使用各向异性扩散系数来实现转置。
通过爱因斯坦符号来工作,在我看来,它看起来像:
也许这是一个明显的结果,但对我来说并不明显。
FiPy 没有代表这个的Term,所以我认为你只需要明确地计算它,例如
grad_div_phi = phi.divergence.grad
u_eq = TransientTerm(...) == ... + grad_div_phi.dot([1, 0, 0])
v_eq = TransientTerm(...) == ... + grad_div_phi.dot([0, 1, 0])
w_eq = TransientTerm(...) == ... + grad_div_phi.dot([0, 0, 1])
如果@wd15 同意我对这个术语的解释,他可能会看到一种更隐含的方式将其纳入你的方程式。
【讨论】:
FiPy 允许以下形式的一般扩散术语
系数需要 2D 中的 2x2 分量或 3D 中的 3x3 分量,但在每个分量中仍然可以在空间上变化。有关详细信息,请参阅FiPy FAQ。
现在我明白了以上内容并不是特别有用 应该是一个向量。让我们假设一组方程的形式,
其中 k 没有求和,但表示方程和 的部分分量正在求解。这导致以下扩散项,
在你的情况下。在 FiPy 中,您需要用多个扩散项来表示这一点,因为现在每个方程中要求解的变量不止一个。假设我们有 k=x,y,那么只有第一个方程的扩散项才会是
eq_x = ... ==
DiffusionTerm(coeff=[[1, 0], [0, 0]], var=phi_x) + DiffusionTerm(coeff=[[0, 1], [0, 0]], var=phi_y)
然后需要使用eq = eq_x & eq_y 将方程组合成一个方程
【讨论】: