2015-10-13 143 views
1

我是一个新人,FiPy,我解决了泊松方程的三维体积内的潜力。它适用于表面边界条件,但现在我需要在里面放置一个导体。这将是一个恒定的潜在表面,我意识到你不能将potential.constrain用于内部表面。FiPy内部进行边界条件

该文档建议使用ImplicitSourceTerm以及定义表面的掩膜,但不清楚如何使用它来限制电位恒定,或者等同于约束电场垂直于表面。这可能吗?

感谢您的任何帮助。

回答

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 

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

+0

谢谢你的反应和你的IPython清晰笔记本例子。 在我的具体情况下,问题不是条款的顺序。我正在处理巨大的潜力(10^5),因此我设置了大值= 10^15。这给出了无意义的结果。但是,我发现设置largeValue = 10^10给出了合理的结果。看起来我在某处创建了溢出。 – OnTheContrary