일반적인 경계 조건 설정에 대한 도움을 주시면 감사하겠습니다. -grad(y) + g(y) = 0
여기서 g
은 알 수없는 기능인 y
입니다. 여기에 내가 일을 얻을 수있는 간단한 1D 예입니다 :일반 경계 조건
N=3
h=1./(float(N)-1.)
mesh = Grid1D(nx=N, dx=h)
c=CellVariable(mesh=mesh,value=0.5)
## Dirichlet boundary conditions
#c.constrain(2., mesh.facesLeft)
#c.constrain(1., mesh.facesRight)
## Neumann boundary conditions
c.faceGrad.constrain(-1, where=mesh.facesLeft)
c.faceGrad.constrain(-c.faceValue , where=mesh.facesRight)
Eq = DiffusionTerm(coeff=1.0)
Eq.cacheMatrix()
Eq.cacheRHSvector()
Eq.solve(var=c)
m = Eq.matrix.numpyArray
b = Eq.RHSvector
이 코드는 해결되지 않습니다하지만 난 행렬을보고받을 수 있나요 및 RHS :
m= array([[-2., 2., 0.],
[ 2., -4., 2.],
[ 0., 2., -2.]])
b= array([-1. , 0. , 0.5])
매트릭스, m
, 근원 용어가 마지막 줄에 포함되지 않았기 때문에 명확하게 단수입니다. 그것을 포함시키는 방법에 대한 제안?
감사합니다. 가까이에있는 것처럼 보입니다. 그러나 플럭스 용어가 어떻게 도입되었는지는 분명치 않습니다. 아마 그것은 발산 속성과 관련이 있습니까? 이 접근법은 또한 얼굴 값과 셀 중심 값이 경계에서 동일하도록 제한하는 것으로 보입니다. 위의 예는 [이 플롯] (http://imgur.com/a/jJz3M)을 참조하십시오.) 셀 크기에 따라 오차가 발생합니다. –
나는 소스가 왜 그렇게 생겼는지 알고 싶어한다고 느꼈다. 내가 왜 그렇게 생겼는지 알아내는 좋은 변명.파생물을 설명하고 경계를보다 잘 외삽 할 수 있도록 내 대답을 편집했습니다. – jeguyer