我如何明確地設置fipy網格中的邊界面的流量法線爲一個特定值,而不會限制面內的流量分量? (1)通量的固定分量垂直於邊界面,或(2)作爲面的通量的完整規定。默認的fipy條件是前者(值= 0),但顯式方法(faceGrad.constrain)是後者。通過將以下代碼添加到fipy diffusion.mesh20x20示例的結尾並注意不同的臉部漸變結果可以理解此問題。您如何在Fipy中指定Neumann(法向面的固定通量)邊界條件?
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]
如果您希望一個邊界條件取決於另一個邊界的梯度的大小,並且僅僅需要設置正常分量,該怎麼辦?說,'phi1.constrain(fp.numerix.dot(phi2.faceGrad,phi2.faceGrad))'我們只想在邊界上指定phi2的正常分量。這個答案是否意味着這樣做不起作用? (我沒有一個很好的例子,只是好奇)。也許@ jeguyer的回答在這種情況下是適當的? – muon
@ muon;我認爲約束方法對於大多數任意複雜的相互依賴的邊界條件都是失敗的,並且需要源項方法(@jeguyer答案)。 – wd15
有道理。謝謝! – muon