我正在尝试为 C++ 中的有限元方法开发一个库,为此我正在研究网格的数据结构。根据我对 fenics 和 deal.ii 的阅读,一般的理解似乎是一个基本的网格类应该具有以下成员:
- 单元格、面、顶点。
- 连通性关系(给定单元的邻居是什么,单元之间的共同面,给定单元的顶点,单元的边界指示符,面和顶点)
- 单元迭代器
这些是我的问题:
- 存储网格单元的最佳方法是什么。我认为一个 STL 向量就足够了。这是流行的选择吗?我还读过链接列表已用于单元格,但在这种情况下我看不到链接列表相对于向量的优势。
- 同样,对于连接关系,STL 映射对我来说似乎是最好的方法。对此有何评论?
- 相同的数据结构是否适用于三角形和四边形网格。我认为应该,但我不确定我是否在这里遗漏了任何基本的东西?
- 是否还有更多的连接关系需要牢记?
- 对有限元库进行编程有什么好的参考吗?
谢谢你。