复现论文:arXiv:2511.19371v1 - Historical Reconstruction of Solar Surface Magnetism from Cycle 1-24
| 模块 | 状态 | 关键技术 |
|---|---|---|
| SARG — 合成活动区生成器 | ✅ 已完成 | Python,6步算法 |
| AFT — 磁通量输运模拟 | ✅ 已完成 | C++ 核心 + pybind11 + OpenMP |
| AFT 数值方案 | ✅ 已升级 | MUSCL (van Leer 限幅器) + RK2 + ∇⁴ 超扩散 |
| 速度场 | ✅ 已完成 | 差动旋转 + 子午环流 (C++) |
| 网格 | ✅ 已完成 | Carrington 球面网格 90×180 |
cd /home/guiyu/solar_SARG/project
pip install -r requirements.txtcd project
mkdir -p build && cd build
cmake .. -DCMAKE_BUILD_TYPE=Release \
-Dpybind11_DIR=$(python3 -c "import pybind11; print(pybind11.get_cmake_dir())")
make -j8
cp aft_core.cpython-*-linux-gnu.so ../src/aft/
cd ..python demo_sarg.pyPYTHONPATH=src/aft python3 demo_aft.py这将:
- 生成示例黑子数数据
- SARG 生成活动区目录
- AFT 模拟 11 年磁通量输运演化
- 输出极场诊断
输出文件位于 data/output/:
ar_catalog.csv- 活动区目录数据butterfly_diagram.png- 蝴蝶图cycle_statistics.png- 周期统计
project/
├── CMakeLists.txt # C++ 编译配置
├── config/
│ └── parameters.yaml # 模型参数配置
├── src/
│ ├── sarg/ # SARG模块 (Python)
│ │ ├── generator.py # 核心生成器
│ │ ├── distributions.py # 统计分布
│ │ └── empirical_laws.py # 经验定律
│ ├── aft/ # AFT模块 (Python + C++)
│ │ ├── __init__.py
│ │ ├── grid.py # 网格 Python 封装
│ │ ├── transport.py # 求解器 Python 封装
│ │ ├── velocity_fields.py # 速度场 Python 封装
│ │ ├── aft_core.*.so # C++ 编译产物
│ │ └── core/ # C++ 源码
│ │ ├── grid.{h,cpp} # Carrington 球面网格
│ │ ├── solver.{h,cpp} # 平流/扩散/RK2 (MUSCL + ∇⁴)
│ │ ├── velocity.{h,cpp} # 速度场
│ │ └── bindings.cpp # pybind11
│ ├── utils/ # 工具模块
│ │ └── io.py
│ └── visualization/ # 可视化
│ └── plots.py
├── data/
│ ├── input/
│ └── output/
├── demo_sarg.py # SARG 演示
├── demo_aft.py # SARG+AFT 集成演示
└── requirements.txt
SARG实现6步算法生成合成太阳活动区:
- 磁通量选择 - 对数正态分布:ΦM = exp(μ + σX)
- 纬度分配 - Spörer定律:μλ(t) = λ₀ exp(-(t-t₀)/τ)
- 经度分配 - 均匀随机分布:φ ~ U[0°, 360°)
- 双极分离 - 面积关系:Δφ = 3.0° + 8.0° tanh(A/500)
- 倾角计算 - Joy定律:μγ = 32.0° sin(λ)
- 浮现速率 - 黑子数驱动:Δt = (365.25/12) / (a + b[SSN + N(0,5)])
编辑 config/parameters.yaml 修改模型参数:
sarg:
flux:
mu: 50.05 # 对数正态分布均值
sigma: 0.75 # 标准差
latitude:
lambda0: 28.0 # 初始纬度
tau: 90.0 # 衰减时间常数(月)
tilt:
joy_coefficient: 32.0 # Joy定律系数
sigma: 22.31 # 倾角标准差
# ... 更多参数AFT 求解二维球面上的对流-扩散方程,两层架构(Python 调度 + C++ 计算):
| 组件 | 方案 | 说明 |
|---|---|---|
| 空间平流 | MUSCL (van Leer 限幅器) | 二阶 TVD,替代一阶迎风 |
| 空间扩散 | 二阶中心差分 | 球面拉普拉斯 |
| 时间积分 | RK2 (Heun) | 两阶显式 |
| 超扩散 | ∇⁴ 双调和滤波 | 系数自动缩放,自适应平滑检测 |
| 极区处理 | sinθ < 0.1 → 一阶上风回退 | 规避限幅器在极区失单调 |
| 并行 | OpenMP | #pragma omp parallel for |
完整数学推导见
/home/guiyu/AFT_mathematical_documentation.md
- 论文: Mishra et al. (2025), arXiv:2511.19371v1
- AFT 模型: Upton & Hathaway (2014), ApJ, 780:5
- HipFT: Caplan et al. (2025), arXiv:2501.06377
- SARG: Cameron & Schüssler (2015), Science, 347:1333
- 超米粒对流(非轴对称时变速度场)
- 更大网格 (180×360) 测试
- 内存预分配优化(减少每步 alloc/free)
- GPU 加速 (CUDA)