![logo](GCTL_logo.jpg)

# Geophysical Computational Tools & Library (GCTL)

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

GCTL 是一个用于地球物理研究的计算工具和 C++ 库。完整的软件包由核心库和额外的库以及命令行工具组成。本库采用现代 C++ 设计，提供高性能的数值计算和数据处理功能。

## 主要特性

- **高性能**: 采用现代 C++ 技术，支持并行计算和 SIMD 优化
- **易用性**: 直观的 API 设计，完善的文档和示例
- **可扩展**: 模块化设计，支持自定义扩展
- **可靠性**: 完整的单元测试，异常安全保证
- **跨平台**: 支持 Linux、macOS 和 Windows

## 库结构

### 1. 核心库 (gctl)
- **核心数据结构** (`core/`)
  - 动态数组 (`array.h`, `array_enhanced.h`)
    - 自动内存管理
    - 并行算法支持
    - 数学运算功能
    - 序列化支持
  - 矩阵操作 (`matrix.h`)
    - 基础矩阵运算
    - 线性代数操作
    - 分解算法
    - 特征值计算
  - 稀疏数据结构 (`spmat.h`, `sparray.h`)
    - 压缩存储格式
    - 高效稀疏运算
    - 内存优化
  - 向量模板 (`vector_t.h`)
    - 2D/3D 向量运算
    - 几何变换
    - 坐标系转换
  - 枚举定义 (`enum.h`)
    - 类型安全枚举
    - 状态定义
    - 错误码

- **输入输出** (`io/`)
  - DSV 文件操作 (`dsv_io.h`)
    - CSV/TSV 格式支持
    - 自定义分隔符
    - 表头处理
  - 文本文件操作 (`text_io.h`)
    - 文本读写
    - 编码转换
    - 流式处理
  - NetCDF 支持 (`netcdf_io.h`)
    - 科学数据格式
    - 多维数组支持
    - 元数据处理
  - 网格文件操作 (`mesh_io.h`)
    - 多种网格格式
    - 网格转换
    - 拓扑处理

- **数学计算** (`maths/`)
  - 线性代数 (`linear_algebra.h`)
    - 矩阵分解
    - 特征值计算
    - 线性方程组求解
  - 数学函数 (`mathfunc.h`)
    - 基础数学函数
    - 特殊函数
    - 插值函数
  - 形状函数 (`shapefunc.h`)
    - 有限元基函数
    - 节点形函数
    - 边界条件
  - FFT 变换 (`fft.h`)
    - 快速傅里叶变换
    - 频谱分析
    - 滤波器

- **几何处理** (`geometry/`)
  - 基础几何 (`basic.h`)
    - 点线面运算
    - 几何变换
    - 相交检测
  - 网格处理 (`mesh.h`)
    - 网格生成
    - 网格优化
    - 质量评估
  - 形状函数 (`shape.h`)
    - 几何形状描述
    - 参数化曲面
    - 边界表示

- **工具函数** (`utility/`)
  - 通用工具 (`common.h`)
    - 字符串处理
    - 时间日期
    - 日志系统
  - 算法实现 (`algorithm.h`)
    - 排序算法
    - 搜索算法
    - 图算法

### 2. 扩展库
- **gctl_potential**: 势场数据处理库
  - 重力数据处理
  - 磁场数据处理
  - 势场反演
  - 场源解释

- **gctl_seismic**: 地震数据处理库
  - 波形处理
  - 震相识别
  - 速度建模
  - 层析成像

- **gctl_elecmag**: 电磁数据处理库
  - MT数据处理
  - 电磁反演
  - 各向异性分析
  - 噪声处理

- **gctl_optimization**: 优化算法库
  - 线性规划
  - 非线性优化
  - 全局优化
  - 约束优化

- **gctl_ai**: 人工智能算法库
  - 神经网络
  - 机器学习
  - 深度学习
  - 模式识别

- **gctl_graphic**: 数据可视化库
  - 2D绘图
  - 3D可视化
  - 等值线图
  - 矢量场图

## 系统要求

### 编译器支持
- GCC 7.0 或更高版本
- Clang 6.0 或更高版本
- MSVC 2019 或更高版本

### 操作系统
- Linux (Ubuntu 18.04+, CentOS 7+)
- macOS (10.14+)
- Windows (10, 11)

### 依赖库版本
- CMake 3.10+
- OpenMP 4.0+
- NetCDF 4.6+
- FFTW 3.3+
- OpenBLAS 0.3+
- Eigen 3.3+

## 性能优化

### 1. 并行计算
- OpenMP 多线程并行
  - 自动线程分配
  - 负载均衡
  - 缓存优化
- SIMD 向量化
  - AVX/AVX2 指令集
  - 自动向量化
  - 手动优化
- GPU 加速（可选）
  - CUDA 支持
  - OpenCL 支持
  - 异构计算

### 2. 内存管理
- 智能指针管理
- 内存池技术
- 缓存对齐
- 零拷贝优化

### 3. 算法优化
- 自适应算法选择
- 数值稳定性保证
- 计算精度控制
- 资源使用优化

## 应用领域

### 1. 地球物理勘探
- 重力勘探
- 磁法勘探
- 地震勘探
- 电磁勘探

### 2. 地球科学研究
- 地壳结构研究
- 地球内部成像
- 地球动力学模拟
- 地震预测研究

### 3. 工程应用
- 矿产资源勘探
- 工程地质调查
- 环境地球物理
- 灾害监测预警

## 贡献指南

### 代码规范
- 遵循现代 C++ 规范
- 代码格式化要求
- 命名规范
- 注释规范

### 开发流程
1. Fork 项目
2. 创建特性分支
3. 提交变更
4. 发起 Pull Request

### 测试要求
- 单元测试覆盖
- 集成测试
- 性能测试
- 回归测试

## 版本历史

### v1.0.0 (2024-01)
- 初始版本发布
- 核心功能实现
- 基础文档完成

### 开发计划
- GPU 加速支持
- 分布式计算
- 深度学习集成
- 实时处理优化

## 联系方式

### 技术支持
- **邮箱**: yizhang-geo@zju.edu.cn

## 致谢

感谢以下机构和个人的支持：
- 浙江大学地球科学学院
- 国家自然科学基金委员会
