gctl_potential/README.md
2025-02-03 12:23:42 +08:00

108 lines
3.6 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

![logo](GCTL_logo.jpg)
> **注意**: 本文档由 Cursor AI 自动生成。文档中的函数名称、参数和用法说明可能存在错误,请以头文件(`.h`)中的实际函数声明为准。如发现任何不一致,请以源代码为准。
# GCTL Potential
GCTL Potential 是地球物理计算工具与库Geophysical Computational Tools & Library, GCTL的重力和磁力场正演模拟模块。该模块提供了一系列用于计算重力场和磁场的核心功能。
## 功能特性
### 重力场计算 (G-Kernel)
- 2D模型计算
- `gkernel_triangle2d`: 二维三角形体
- `gkernel_rectangle2d`: 二维矩形体
- `gkernel_polygon`: 二维多边形体
- 3D模型计算
- `gkernel_triangle`: 三维三角形体
- `gkernel_sphere`: 球体
- `gkernel_block`: 长方体
- `gkernel_tetrahedron`: 四面体
- `gkernel_tricone`: 三锥体
- `gkernel_tesseroid`: 曲面格网体(需要 GCTL_POTENTIAL_TESS 选项)
### 磁场计算 (M-Kernel)
- `mkernel_dipole`: 偶极子
- `mkernel_block`: 长方体
- `mkernel_triangle`: 三角形体
- `mkernel_tricone`: 三锥体
- `mkernel_tetrahedron`: 四面体
- 标准实现
- Ren2017 实现方法
- `mkernel_tesseroid`: 曲面格网体(需要 GCTL_POTENTIAL_MAGTESS 选项)
### 网格与数据结构
- `gm_data`: 基础数据结构
- `gm_regular_grid`: 规则网格
- `gm_regular_mesh_2d`: 二维规则网格
- `gm_regular_mesh_3d`: 三维规则网格
- `gm_regular_mesh_sph_3d`: 三维球面规则网格
- `gm_tet_mesh`: 四面体网格
## 依赖
- Eigen (矩阵运算库)
- autodiff (自动微分库,用于梯度计算)
## 许可证
GCTL Potential 采用双重许可证方案:
1. GNU Lesser General Public License v2 或更高版本
2. 商业许可证(需单独购买)
## 作者
- Yi Zhang (yizhang-geo@zju.edu.cn)
## 安装
使用 CMake 构建系统:
```bash
mkdir build
cd build
cmake ..
make
make install
```
## 示例
`example` 目录下提供了丰富的示例代码,展示了各种计算功能的使用方法:
### 重力场计算示例
- `gobser_tri2d_ex.cpp`: 二维三角形体重力场计算
- 演示了如何读取 GMSH 格式的网格文件
- 计算重力位、重力分量和重力梯度张量
- 结果输出为 DSV 格式
- `gobser_tri2d_sph_ex.cpp`: 球面坐标系下的二维三角形体重力场计算
### 磁场计算示例
- `mobser_tetra_ex.cpp`: 四面体磁场计算
- 展示了标准实现和 Ren2017 方法的对比
- 包含磁位、磁场分量和 ΔT 异常计算
- 支持 NetCDF 格式输出
- `mobser_tetra_ex2.cpp`: 四面体磁场计算的另一个示例
- `mobser_block_ex.cpp`: 长方体磁场计算
- `mobser_tricone_ex.cpp`: 三锥体磁场计算
- `mobser_tesseroid_ex.cpp`: 曲面格网体磁场计算
- `mobser_dipole_ex.cpp`: 偶极子磁场计算
- `mobser_tri_ex.cpp`: 三角形体磁场计算
- `mobser_tri_sph_ex.cpp`: 球面坐标系下的三角形体磁场计算
### 特殊功能示例
- `power_spectrum_ex.cpp`: 功率谱计算示例
- `read_IGRF_ex.cpp`: IGRF 地磁场模型数据读取示例
- `mobser_block_gradient_ex.cpp`: 长方体磁场梯度计算
### 数据格式支持
- 网格文件格式:
- GMSH 格式 (.msh)
- Tetgen 格式 (.node, .ele)
- 输出格式:
- DSV (Delimiter-Separated Values)
- NetCDF
- 文本格式
所有示例代码都包含详细的注释,并提供了完整的数据输入输出流程。用户可以根据需要修改示例代码中的参数来适应自己的应用场景。
## 注意事项
- 某些功能(如 tesseroid 计算)需要在编译时启用特定选项
- 商业用途请联系作者获取商业许可证