diff --git a/GCTL_logo.jpg b/GCTL_logo.jpg new file mode 100644 index 0000000..80cc016 Binary files /dev/null and b/GCTL_logo.jpg differ diff --git a/README.md b/README.md index 5859dbf..a7892ca 100644 --- a/README.md +++ b/README.md @@ -1,2 +1,105 @@ -# gctl_potential +![logo](GCTL_logo.jpg) + +# 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 计算)需要在编译时启用特定选项 +- 商业用途请联系作者获取商业许可证