Go to file
2025-02-09 20:59:18 +08:00
data mtp 2025-01-17 13:17:10 +08:00
example tmp 2025-02-09 20:59:18 +08:00
lib tmp 2025-02-09 20:59:18 +08:00
tool tmp 2025-02-09 20:59:18 +08:00
.gitignore initial upload 2024-09-10 19:56:41 +08:00
CMakeLists.txt tmp 2025-02-09 20:59:18 +08:00
config.h.in initial upload 2024-09-10 19:56:41 +08:00
GCTL_logo.jpg update readme 2025-02-03 12:06:47 +08:00
GCTL_POTENTIALConfig.cmake.in tmp 2025-02-09 20:59:18 +08:00
installer initial upload 2024-09-10 19:56:41 +08:00
README.md tmp 2025-02-03 12:27:06 +08:00

logo

GCTL Potential

注意: 本文档由 Cursor AI 自动生成。文档中的函数名称、参数和用法说明可能存在错误,请以头文件(.h)中的实际函数声明为准。如发现任何不一致,请以源代码为准。

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. 商业许可证(需单独购买)

作者

安装

使用 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 计算)需要在编译时启用特定选项
  • 商业用途请联系作者获取商业许可证