【发布时间】:2017-03-13 17:25:40
【问题描述】:
我希望能帮助我设置一般边界条件,-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 显然是单数的,因为源项未包含在最后一行中。关于如何包含它的任何建议?
【问题讨论】:
标签: fipy