FEniCS 中压力和速度的混合 FEM 矢量指数

计算科学 芬尼克斯
2021-12-09 17:25:31

看一下 FEniCS 的 stokes-iterative 演示,在使用求解线性系统之后

U = Function(W)
solver.solve(U.vector(), bb)

解决方案U分为:

u, p = U.split()

是否有一个函数可以让我获得U包含u解决方案和p解决方案的索引?例如,如果U =[u1 p1 u2 p2,...]那么我想要数组

indices_u = [0,2,4,...]
indices_p = [1,3,5,...]

我猜它在 FEniCS 某处,因为它应该用于拆分解决方案?我想知道如何在 C++ 和 python 中做到这一点。谢谢!

1个回答

正在做

u, p = U.split()

让您了解U,即upU共享自由度数据。正在做

u, p = U.split(deepcopy=True)

给出具有自己自由度向量的au和 a . DOLFIN 演示(来自 C++ 和 Python)p演示了浅层和深层子函数的使用。demo/undocumented/stokes-taylor-hood语法与上面 C++ 中的语法有点不同,但在演示中显示。

不能保证基础向量中自由度的顺序。通常,它们应该通过函数接口访问。