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.
 
 
forty-twoo b4a941d194 first commit 1 year ago
cmake first commit 1 year ago
external first commit 1 year ago
sim first commit 1 year ago
src first commit 1 year ago
.DS_Store first commit 1 year ago
.gitignore first commit 1 year ago
CMakeLists.txt first commit 1 year ago
README.md first commit 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: 通过包围盒来定义边界条件