我是 FEniCS 的初学者,但仍在努力学习一些基础知识。具体来说,
我在执行 Langtangen-Logg 书中解决 PDEs in Python - The FEniCS Tutorial Volume I 中的教程时遇到了一些问题。我认为有些问题是由于本书的不同版本和我的安装(2019.1.0)造成的。
问题之一是使用MeshFunctionor CellFunction,FacetFunction等。
示例(第 90 页的 4.3.2)说:
materials = CellFunction(’size_t’, mesh)
这对我不起作用。经过一些研究,我发现CellFunction自 2017.2.0 起已弃用:
Deprecate VertexFunction、EdgeFunction、FaceFunction、FacetFunction、CellFunction;改用 MeshFunction
我得到了这个例子来进行一些试验和错误(至少看起来它正在工作):
materials = MeshFunction('size_t', mesh, 2)
但我真的不明白如何以及为什么。特别是在尝试下一个使用FacetFunction.
2017.2.0文档并没有过多说明如何使用MeshFunction. 参数的描述是dim (unsigned int):
MeshFunction 的拓扑维度。可选的。
的描述CellFunction只是:
在给定的网格上创建拓扑码为 0 的 MeshFunction。
For FacetFunction:
在给定网格上创建拓扑余维 1 的 MeshFunction。
它不适用于materials = MeshFunction('size_t', mesh, 0). 我认为在“CellFunction”的情况下,codimension 0可能意味着0用于dim参数。
因此,我的问题是:
- “codimension”是指
dim论点吗? - 在这种情况下,“拓扑维度”和“拓扑余维度”是什么意思?
- 如果我应该使用
MeshFunction而不是上面提到的所有其他函数,那么将 MeshFunction 用于单元格与将其用于构面等有何不同?
PS:我知道Fenics: Meshfunction usage的问题,但它并没有真正回答我的问题