|
||
---|---|---|
dep | ||
doc | ||
example | ||
lib | ||
tool | ||
.gitignore | ||
CMakeLists.txt | ||
config.h.in | ||
Doxyfile | ||
GCTL_logo.jpg | ||
GCTLConfig.cmake.in | ||
LICENSE | ||
README.md |
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
)- 多种网格格式
- 网格转换
- 拓扑处理
- DSV 文件操作 (
-
数学计算 (
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++ 规范
- 代码格式化要求
- 命名规范
- 注释规范
开发流程
- Fork 项目
- 创建特性分支
- 提交变更
- 发起 Pull Request
测试要求
- 单元测试覆盖
- 集成测试
- 性能测试
- 回归测试
版本历史
v1.0.0 (2024-01)
- 初始版本发布
- 核心功能实现
- 基础文档完成
开发计划
- GPU 加速支持
- 分布式计算
- 深度学习集成
- 实时处理优化
联系方式
技术支持
致谢
感谢以下机构和个人的支持:
- 浙江大学地球科学学院
- 国家自然科学基金委员会