You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
|
1 year ago | |
---|---|---|
cmake | 1 year ago | |
external | 1 year ago | |
sim | 1 year ago | |
src | 1 year ago | |
.DS_Store | 1 year ago | |
.gitignore | 1 year ago | |
CMakeLists.txt | 1 year ago | |
README.md | 1 year ago |
README.md
README
实现了线弹性材料的静力学FEM (3D)仿真, 网格采用四面体单元.
结构
.
├── LinSysSolver // 实现两类线性方程求解器
├── Utils.hpp // 工具函数
├── Utils.cpp
├── Material.hpp // 单元形函数, 单元形函数偏导, 单元刚度矩阵
├── Material.cpp
├── Mesh.hpp // 网格类, 记录网格信息, 边界条件施加, 仿真求解
├── Mesh.cpp
├── main.cpp // 初始化仿真参数, 构造Mesh, 调用simulation
编译及运行
环境
Ubuntu 22.04
,Intel i7-11700 2.5GHz
cmake 3.22
,g++ 11.2.0
依赖
-
TBB: 并行编程库
-
Eigen
:向量运算 -
libigl
:几何处理 -
MshIO
: 四网格读入 -
spdlog
:用于日志输出
编译
mkdir build && cd build
cmake -DCMAKE_BUILD_TYPE=Release ..
make
一些代码细节
Mesh/vNeighbor
: 记录每个节点的邻接节点. 便于LinSysSolver中构建csr稀疏矩阵Mesh/vFloc
: 记录每个节点nodeI
所在的单元index (eleI
), 以及该nodeI
在该单元中的局部index (i.e., 在TT.row(eleI)
中的第几个). 便于按节点并行地装配刚度矩阵.Mesh/QS_DirichletBC, Mesh/QS_NeumannBC
: 通过包围盒来定义边界条件