-grad(y) + g(y) = 0
ここで、g
は不明な関数の一部ですy
です。ここで私は仕事を得ることができないという単純な1次元の例だ:一般的な境界条件
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
、ソース用語が最後の行に含まれていないため、明確に単数形です。どのようにそれを含めるための任意の提案?
ありがとうございます。しかし、フラックス項がどのように導入されたかは分かりませんが、おそらくそれは分岐属性と関係していますか?このアプローチはまた、顔の値とセルの中心値が境界で等しくなるように制約するように思われる。 (上記の例については、[this plot](http://imgur.com/a/jJz3M)を参照してください。)これにより、セルのサイズに合わせて誤差が生じます。 –
私は、ソースがなぜそんなに見えるのか知りたいと思っていた気がしました。なぜそれがそれのように見えるのか私には良い言い訳です。私は派生を記述し、境界をよりよく外挿するために私の答えを編集しました。 – jeguyer