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.
		
		
		
		
		
			| 
				
					 | 
			2 years ago | |
|---|---|---|
| cmake | 2 years ago | |
| external | 2 years ago | |
| sim | 2 years ago | |
| src | 2 years ago | |
| .DS_Store | 2 years ago | |
| .gitignore | 2 years ago | |
| CMakeLists.txt | 2 years ago | |
| README.md | 2 years 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.5GHzcmake 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: 通过包围盒来定义边界条件