data | ||
example | ||
lib | ||
tool | ||
.gitignore | ||
CMakeLists.txt | ||
config.h.in | ||
GCTL_logo.jpg | ||
GCTL_POTENTIALConfig.cmake.in | ||
installer | ||
README.md |
注意: 本文档由 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 采用双重许可证方案:
- GNU Lesser General Public License v2 或更高版本
- 商业许可证(需单独购买)
作者
- Yi Zhang (yizhang-geo@zju.edu.cn)
安装
使用 CMake 构建系统:
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 计算)需要在编译时启用特定选项
- 商业用途请联系作者获取商业许可证