update readme
This commit is contained in:
parent
45bbee79e9
commit
c8a39f403c
BIN
GCTL_logo.jpg
Normal file
BIN
GCTL_logo.jpg
Normal file
Binary file not shown.
After Width: | Height: | Size: 33 KiB |
265
README.md
265
README.md
@ -1,42 +1,249 @@
|
|||||||
|

|
||||||
|
|
||||||
# Geophysical Computational Tools & Library (GCTL)
|
# Geophysical Computational Tools & Library (GCTL)
|
||||||
|
|
||||||
GCTL is a package of computational tools and C++ library for geophysical studies. The complete package is composed of a core library and additional libraries and command line tools. A full list of GCTL's libraries are listed as:
|
GCTL 是一个用于地球物理研究的计算工具和 C++ 库。完整的软件包由核心库和额外的库以及命令行工具组成。本库采用现代 C++ 设计,提供高性能的数值计算和数据处理功能。
|
||||||
|
|
||||||
1. **gctl**: the core library (stored at this repository);
|
## 主要特性
|
||||||
2. **gctl_potential**: library of the algorithms for working with the potential field data (i.e., gravitational and magnetic data);
|
|
||||||
3. **gctl_seismic**: library of the algorithms for working with the seismic/earthquake data;
|
|
||||||
4. **gctl_elecmag**: library of the algorithms for working with the elecmagnetic/magnetotelluric data;
|
|
||||||
5. **gctl_optimization**: library of the optimization algorithms;
|
|
||||||
6. **gctl_ai**: library of the artificial intelligence algorithms;
|
|
||||||
6. **gctl_graphic**: library for data visualization;
|
|
||||||
7. **gctl_examples**: executable examples;
|
|
||||||
8. **gctl_toolkits**: command line tools.
|
|
||||||
|
|
||||||
## Dependences
|
- **高性能**: 采用现代 C++ 技术,支持并行计算和 SIMD 优化
|
||||||
|
- **易用性**: 直观的 API 设计,完善的文档和示例
|
||||||
|
- **可扩展**: 模块化设计,支持自定义扩展
|
||||||
|
- **可靠性**: 完整的单元测试,异常安全保证
|
||||||
|
- **跨平台**: 支持 Linux、macOS 和 Windows
|
||||||
|
|
||||||
There are several third-party libraries that could be employed by the GCTL during the compilation to enable extral functionalities. The inclusion of the exterior libraries are controlled using the CMake compile options as `-D<option>=ON|OFF`. And the availiable options are:
|
## 库结构
|
||||||
|
|
||||||
1. **GCTL_OPENMP**: Enable OpenMP support. The default is ON;
|
### 1. 核心库 (gctl)
|
||||||
2. **GCTL_NETCDF**: Use the netCDF libraries for reading and writing .nc files. This option requires the netCDF and netCDF_CXX libraries. The default is ON;
|
- **核心数据结构** (`core/`)
|
||||||
3. **GCTL_WAVELIB**: Use the WaveLIB for preforming the wavelet processes. The default is ON;
|
- 动态数组 (`array.h`, `array_enhanced.h`)
|
||||||
4. **GCTL_FFTW3**: Use the FFTW library for preforming the Fourier transformations. The default is ON;
|
- 自动内存管理
|
||||||
5. **GCTL_OPENBLAS**: Use the openblas library for linear algebras. The default is OFF;
|
- 并行算法支持
|
||||||
6. **GCTL_EIGEN**: Use the Eigen3 library. This is not a compiling option but could be used in applications to enable Eigen3 support.
|
- 数学运算功能
|
||||||
7. **GCTL\_CHECK_BOUNDER**: Check indexing validities in all array-like operations. This may affect the computational efficiency. The default is OFF;
|
- 序列化支持
|
||||||
8. **GCTL\_CHECK_SIZE**: Check sizes in all array-like operations. This may affect the computational efficiency. The default is OFF.
|
- 矩阵操作 (`matrix.h`)
|
||||||
|
- 基础矩阵运算
|
||||||
|
- 线性代数操作
|
||||||
|
- 分解算法
|
||||||
|
- 特征值计算
|
||||||
|
- 稀疏数据结构 (`spmat.h`, `sparray.h`)
|
||||||
|
- 压缩存储格式
|
||||||
|
- 高效稀疏运算
|
||||||
|
- 内存优化
|
||||||
|
- 向量模板 (`vector_t.h`)
|
||||||
|
- 2D/3D 向量运算
|
||||||
|
- 几何变换
|
||||||
|
- 坐标系转换
|
||||||
|
- 枚举定义 (`enum.h`)
|
||||||
|
- 类型安全枚举
|
||||||
|
- 状态定义
|
||||||
|
- 错误码
|
||||||
|
|
||||||
## Installation
|
- **输入输出** (`io/`)
|
||||||
|
- DSV 文件操作 (`dsv_io.h`)
|
||||||
|
- CSV/TSV 格式支持
|
||||||
|
- 自定义分隔符
|
||||||
|
- 表头处理
|
||||||
|
- 文本文件操作 (`text_io.h`)
|
||||||
|
- 文本读写
|
||||||
|
- 编码转换
|
||||||
|
- 流式处理
|
||||||
|
- NetCDF 支持 (`netcdf_io.h`)
|
||||||
|
- 科学数据格式
|
||||||
|
- 多维数组支持
|
||||||
|
- 元数据处理
|
||||||
|
- 网格文件操作 (`mesh_io.h`)
|
||||||
|
- 多种网格格式
|
||||||
|
- 网格转换
|
||||||
|
- 拓扑处理
|
||||||
|
|
||||||
You can use the enclosed shell script 'installer' to install.
|
- **数学计算** (`maths/`)
|
||||||
|
- 线性代数 (`linear_algebra.h`)
|
||||||
|
- 矩阵分解
|
||||||
|
- 特征值计算
|
||||||
|
- 线性方程组求解
|
||||||
|
- 数学函数 (`mathfunc.h`)
|
||||||
|
- 基础数学函数
|
||||||
|
- 特殊函数
|
||||||
|
- 插值函数
|
||||||
|
- 形状函数 (`shapefunc.h`)
|
||||||
|
- 有限元基函数
|
||||||
|
- 节点形函数
|
||||||
|
- 边界条件
|
||||||
|
- FFT 变换 (`fft.h`)
|
||||||
|
- 快速傅里叶变换
|
||||||
|
- 频谱分析
|
||||||
|
- 滤波器
|
||||||
|
|
||||||
```
|
- **几何处理** (`geometry/`)
|
||||||
./installer configure && ./installer build && ./installer install
|
- 基础几何 (`basic.h`)
|
||||||
```
|
- 点线面运算
|
||||||
|
- 几何变换
|
||||||
|
- 相交检测
|
||||||
|
- 网格处理 (`mesh.h`)
|
||||||
|
- 网格生成
|
||||||
|
- 网格优化
|
||||||
|
- 质量评估
|
||||||
|
- 形状函数 (`shape.h`)
|
||||||
|
- 几何形状描述
|
||||||
|
- 参数化曲面
|
||||||
|
- 边界表示
|
||||||
|
|
||||||
For more information of the 'installer', use:
|
- **工具函数** (`utility/`)
|
||||||
|
- 通用工具 (`common.h`)
|
||||||
|
- 字符串处理
|
||||||
|
- 时间日期
|
||||||
|
- 日志系统
|
||||||
|
- 算法实现 (`algorithm.h`)
|
||||||
|
- 排序算法
|
||||||
|
- 搜索算法
|
||||||
|
- 图算法
|
||||||
|
|
||||||
```
|
### 2. 扩展库
|
||||||
./installer help
|
- **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
|
||||||
|
|
||||||
|
## 致谢
|
||||||
|
|
||||||
|
感谢以下机构和个人的支持:
|
||||||
|
- 浙江大学地球科学学院
|
||||||
|
- 国家自然科学基金委员会
|
||||||
|
Loading…
Reference in New Issue
Block a user