update readme
This commit is contained in:
parent
3cd0cc307b
commit
432f555a52
156
README.md
156
README.md
@ -13,6 +13,95 @@ GCTL Mesh是地球物理计算工具库(Geophysical Computational Tools & Librar
|
||||
- 支持网格数据的导入导出(包括Gmsh格式和二进制格式)
|
||||
- 支持标量、矢量和张量数据的处理
|
||||
|
||||
## 代码库结构
|
||||
|
||||
### 核心库 (lib/)
|
||||
```
|
||||
lib/
|
||||
├── mesh/ # 核心网格实现
|
||||
│ ├── mesh.h # 网格基类
|
||||
│ ├── meshdata.h # 网格数据结构
|
||||
│ ├── regular_grid.h # 规则网格实现
|
||||
│ ├── linear_mesh_2d.h # 2D线性网格
|
||||
│ ├── linear_mesh_3d.h # 3D线性网格
|
||||
│ ├── tri_mesh.h # 三角形网格
|
||||
│ ├── tet_mesh.h # 四面体网格
|
||||
│ └── regular_mesh_sph_3d.h # 球面网格
|
||||
├── io/ # 输入输出处理
|
||||
│ ├── gmsh_io.h # Gmsh格式支持
|
||||
│ ├── netcdf_io.h # NetCDF格式支持
|
||||
│ └── binary_io.h # 二进制格式支持
|
||||
└── utils/ # 工具函数
|
||||
├── math_utils.h # 数学工具
|
||||
└── geo_utils.h # 几何工具
|
||||
```
|
||||
|
||||
### 依赖关系
|
||||
- `mesh.h` → 基类,定义网格接口
|
||||
- `meshdata.h` → 依赖 mesh.h,实现数据管理
|
||||
- 具体网格类 → 继承自 mesh.h,实现特定网格功能
|
||||
|
||||
## 实现细节
|
||||
|
||||
### 数据结构
|
||||
|
||||
#### 网格节点 (Node)
|
||||
```cpp
|
||||
struct Node {
|
||||
int id; // 节点ID
|
||||
double x, y, z; // 节点坐标
|
||||
array<int> elems; // 相邻单元列表
|
||||
};
|
||||
```
|
||||
|
||||
#### 网格单元 (Element)
|
||||
```cpp
|
||||
struct Element {
|
||||
int id; // 单元ID
|
||||
array<Node*> vertices; // 顶点列表
|
||||
array<Element*> neighbors; // 相邻单元
|
||||
};
|
||||
```
|
||||
|
||||
#### 数据管理 (MeshData)
|
||||
```cpp
|
||||
class MeshData {
|
||||
string name; // 数据名称
|
||||
DataType type; // 数据类型
|
||||
array<double> values; // 数据值
|
||||
bool output_enabled; // 输出控制
|
||||
};
|
||||
```
|
||||
|
||||
### 核心功能实现
|
||||
|
||||
#### 网格生成
|
||||
- 规则网格:基于给定维度和间距生成
|
||||
- 非规则网格:支持从外部文件导入或程序化生成
|
||||
- 球面网格:基于经纬度和径向参数生成
|
||||
|
||||
#### 数据操作
|
||||
- 插值:支持线性插值和高阶插值
|
||||
- 梯度计算:支持一阶和二阶导数
|
||||
- 数据过滤:支持平滑和降噪操作
|
||||
|
||||
#### 文件格式支持
|
||||
- Gmsh格式:`.msh`文件,支持网格和数据的导入导出
|
||||
- NetCDF格式:`.nc`文件,支持结构化数据的存储
|
||||
- 二进制格式:`.bin`文件,用于高效的数据存储和读取
|
||||
|
||||
### 性能优化
|
||||
|
||||
#### 数据结构优化
|
||||
- 使用连续内存存储提高访问效率
|
||||
- 采用邻接表存储拓扑关系
|
||||
- 使用哈希表加速查找操作
|
||||
|
||||
#### 算法优化
|
||||
- 网格生成采用增量构建策略
|
||||
- 查找操作使用空间分区技术
|
||||
- 并行计算支持(可选)
|
||||
|
||||
## 文档
|
||||
|
||||
### 基础类
|
||||
@ -33,42 +122,31 @@ GCTL Mesh是地球物理计算工具库(Geophysical Computational Tools & Librar
|
||||
- [`tri_mesh.h`](doc/tri_mesh.md): 三角形网格,用于复杂2D区域的离散化
|
||||
- [`tet_mesh.h`](doc/tet_mesh.md): 四面体网格,用于复杂3D区域的离散化
|
||||
|
||||
## 核心功能
|
||||
## 编译和安装
|
||||
|
||||
### 网格数据管理
|
||||
- 支持在顶点或单元上定义数据
|
||||
- 支持三种数据类型:
|
||||
- 标量数据 (Scalar)
|
||||
- 矢量数据 (Vector)
|
||||
- 张量数据 (Tensor)
|
||||
- 数据操作功能:
|
||||
- 添加/删除数据
|
||||
- 数据导入导出
|
||||
- 数据统计分析
|
||||
### 系统要求
|
||||
- C++11或更高版本
|
||||
- CMake 3.10或更高版本
|
||||
- 可选依赖:
|
||||
- NetCDF (用于NetCDF格式支持)
|
||||
- MathGL (用于可视化支持)
|
||||
- GMT (用于地理数据处理)
|
||||
|
||||
### 网格操作
|
||||
- 网格初始化和清理
|
||||
- 网格信息查询(节点数、单元数等)
|
||||
- 网格文件导入导出
|
||||
- 支持Gmsh格式
|
||||
- 支持二进制格式
|
||||
- 支持NetCDF格式(部分网格类型)
|
||||
- 网格数据可视化输出
|
||||
### 编译步骤
|
||||
```bash
|
||||
mkdir build
|
||||
cd build
|
||||
cmake ..
|
||||
make
|
||||
make install
|
||||
```
|
||||
|
||||
### 网格类型
|
||||
支持的网格维度:
|
||||
- 0D网格 (MESH_0D)
|
||||
- 2D网格 (MESH_2D)
|
||||
- 3D网格 (MESH_3D)
|
||||
|
||||
支持的网格类别:
|
||||
- 规则网格 (REGULAR_MESH)
|
||||
- 线性网格 (LINEAR_MESH)
|
||||
- 三角形/四面体网格 (TRI_TET_MESH)
|
||||
- 球面规则网格 (REGULAR_MESH_SPH)
|
||||
- 球面线性网格 (LINEAR_MESH_SPH)
|
||||
- 球面三角形/四面体网格 (TRI_TET_MESH_SPH)
|
||||
- 规则网格 (REGULAR_GRID)
|
||||
### 配置选项
|
||||
- `GCTL_ENABLE_NETCDF`: 启用NetCDF支持
|
||||
- `GCTL_ENABLE_MATHGL`: 启用MathGL可视化
|
||||
- `GCTL_ENABLE_GMT`: 启用GMT支持
|
||||
- `GCTL_BUILD_EXAMPLES`: 构建示例程序
|
||||
- `GCTL_BUILD_TESTS`: 构建测试程序
|
||||
|
||||
## 应用场景
|
||||
|
||||
@ -80,6 +158,18 @@ GCTL Mesh是地球物理计算工具库(Geophysical Computational Tools & Librar
|
||||
- **四面体网格**:适用于复杂3D区域的有限元分析、计算流体力学等
|
||||
- **球面网格**:特别适用于地球物理学、大气科学等全球尺度的模拟
|
||||
|
||||
## 性能考虑
|
||||
|
||||
### 内存管理
|
||||
- 大规模网格处理时注意内存使用
|
||||
- 支持数据流式处理
|
||||
- 提供内存使用估算功能
|
||||
|
||||
### 计算效率
|
||||
- 网格操作采用高效算法
|
||||
- 支持并行计算(可选)
|
||||
- 提供性能分析工具
|
||||
|
||||
## API示例
|
||||
|
||||
详细的API使用示例请参考各个网格类型的文档。基本使用模式如下:
|
||||
|
Loading…
Reference in New Issue
Block a user