FEniCS:为试验函数编写方程时如何访问坐标

计算科学 有限元 Python 芬尼克斯
2021-11-28 19:23:13

我需要在 FEniCS 中求解以下方程:

(f(y)uxg(x,y)uyg(x,y)ux+f(x)uy)=0.
据我了解,弱形式将如下所示:
Ω(f(y)uxg(x,y)uyg(x,y)ux+f(x)uy)vdx=0vV.
我在 FEniCS 中表达这个方程时遇到问题。我想我需要这样的东西:

u = TrialFunction(V)
v = TestFunction(V)
g = as_vector((u.dx(0), u.dx(1))) # <-- modify here?
a = dot(g, grad(v))*dx
u = Function(V)
solve(a == Constant(0) * v * dx, u, bc)

如何添加取决于坐标的东西x,y到上面的变量g

我还必须写Constant(0) * v * dx正确的部分吗?可以只有0吗?

1个回答
x = V.cell().x

然后使用x[0]x[1]作为xy分别。

需要的右手边LinearVariationalProblem是 1 级形式 - 这由依赖TestFunction和独立于表示TrialFunction