![logo](GCTL_logo.jpg) # Geophysical Computational Tools & Library (GCTL) 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 ## 致谢 感谢以下机构和个人的支持: - 浙江大学地球科学学院 - 国家自然科学基金委员会