fipy 메쉬의 경계면에 대한 플럭스 법선을 명시 적으로 특정 값으로 설정하고면 내의 플럭스 구성 요소를 제한하지 않으려면 어떻게해야합니까?Fipy에서 노이만 (경계에 고정 된 자속) 경계 조건을 어떻게 지정합니까?
노이만 경계 조건은 (1) 경계면에 수직 인 플럭스의 고정 된 구성 요소 또는 (2) 얼굴에서 플럭스의 완전한 사양으로 지정할 수 있습니다. 기본 fipy 조건은 전자 (값 = 0)이지만 명시적인 방법 (faceGrad.constrain)은 후자입니다. 이 문제는 다음 코드를 fyy 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]
어떤 경계 조건이 다른 조건의 그라디언트의 크기에 종속되기를 원하면 일반 구성 요소 만 설정하려고합니다. 말해,'phi1.constrain (fp.numerix.dot (phi2.faceGrad, phi2.faceGrad))'여기서 경계 상에'phi2'의 법선 성분만을 지정하고 싶습니다. 이 대답은 그렇게 할 수 없다는 뜻입니까? (나는 호기심이 좋은 좋은 예가 없다.) 어쩌면 @ jeguyer의 대답이 그 경우에 적절합니까? – muon
@muon; 나는 대부분의 임의의 복잡한 상호 의존적 인 경계 조건에 대해 제약 방법이 실패하고 소스 용어 방법이 필요하다고 생각한다 (@ jeguyer 대답). – wd15
의미가 있습니다. 감사! – muon