如何在 fipy 网格中将法线方向的通量显式设置为特定值,而不限制面内的通量分量?
Neumann 边界条件可以指定为:(1) 垂直于边界面的通量的固定分量,或 (2) 作为面处通量的完整规范。默认的fipy条件是前者(值= 0),但显式方法(faceGrad.constrain)是后者。通过将以下代码添加到 fipy diffusion.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]