1

我是 FiPy 的新手,我正在为 3D 体积内的势求解泊松方程。它适用于表面边界条件,但现在我需要在里面放置一个导体。这将是一个恒定的电位表面,我意识到您不能将 potential.constrain 用于内部表面。

文档建议使用 ImplicitSourceTerm 以及定义表面的掩码,但不清楚如何使用它来将电势约束为恒定,或等效地将电场约束为垂直于表面。这可能吗?

谢谢你的帮助。

4

1 回答 1

2

http://www.ctcms.nist.gov/fipy/documentation/USAGE.html#applying-internal-boundary-conditions上的讨论准确地描述了您正在尝试做的事情。不过,我想我知道为什么它可能对您不起作用。在声明 时ImplicitSourceTerm,FiPy 必须小心不要将负值添加到矩阵的对角线,因此它会检查 的系数的符号,ImplicitSourceTerm并将它们与DiffusionTerm已经存在的(和其他)对角线元素的符号进行比较被放入矩阵;如果符号相反,则 FiPy 会明确处理这些单元格(将所有内容放在 RHS 向量上)。

如果您将方程式(就像我最初所做的那样)声明为

eq = (fp.DiffusionTerm(coeff=dielectric) + charge ==   
      conductor * largeValue * conductorPotential
      - fp.ImplicitSourceTerm(coeff=conductor * largeValue)

然后关于导体的所有内容都放在 RHS 向量上,而隐式求解器永远不会“看到”它。如果你颠倒最​​后两项的顺序,然后conductor * largeValue放在矩阵对角线上并conductor * largeValue * conductorPotential放在 RHS 上,这些单元格的解决方案将由 主导conductorPotential

简而言之,我要说的是(对于 FiPy(在这种情况下)来说)你是否说

V == conductorPotential

或者

conductorPotential == V

我在https://gist.github.com/guyer/a61d5adfa9a050eb970a上发布了一个 IPython 笔记本

于 2015-10-22T13:56:49.780 回答