如何在不限制面内通量分量的情况下,显式地将fipy网格中垂直于边界面的通量设置为特定值?
Neumann边界条件可以指定为:(1)垂直于边界面的通量的固定分量,或(2)作为面通量的完整规范。默认的fipy条件是前者(值=0),而显式方法(faceGrad.constrain)是后者。这个问题可以通过在fipydiffusion.mesh20x20示例的末尾添加以下代码并注意不同的面部渐变结果来理解。

facesNeumann = mesh.exteriorFaces & ~facesTopLeft & ~facesBottomRight
print 'grad(phi) with default Neumann BC...'
print phi.faceGrad.value.T[facesNeumann.value]
phi.faceGrad.constrain(0.,facesNeumann)
DiffusionTerm().solve(var=phi)
print 'and with explicit Neumann BC...'
print phi.faceGrad.value.T[facesNeumann.value]

最佳答案

请参阅关于fixed flux boundary conditions的讨论。基本上,在FiPy的默认无通量条件中添加一个包含所需边界通量散度的源。

10-07 12:35