文章目录
- 一、核心特性
- 1. **物理模块支持**
- 2. **维度与几何灵活性**
- 3. **并行与自适应网格**
- 4. **编程语言与工具链**
- 5. **设计理念**
- 二、典型使用流程
- 三、适用领域
- 四、资源链接
MPI-AMRVAC(MPI - Adaptive Mesh Refinement - Versatile Advection Code)是一个面向高性能科学计算的开源数值模拟框架,主要用于求解偏微分方程(PDEs),尤其擅长处理双曲型方程、守恒律系统以及激波主导的问题。以下是对其核心特性和使用方式的简明介绍:
- 官网文档:https://amrvac.org/
- 源码仓库:https://github.com/amrvac/amrvac
一、核心特性
1.物理模块支持
- 内置多个物理模块,最常用的是:
- 流体动力学(Hydrodynamics, HD)
- 磁流体动力学(Magnetohydrodynamics, MHD)
- 用户可自定义新的物理模块,或修改已有模块以适应特定问题。
2.维度与几何灵活性
- 支持1D、2D、3D模拟;
- 支持多种坐标系:笛卡尔(Cartesian)、柱坐标(cylindrical)、球坐标(spherical)。
3.并行与自适应网格
- 基于MPI实现分布式内存并行;
- 集成自适应网格细化(AMR),在关键区域自动加密网格以提高精度和效率。
4.编程语言与工具链
- 主要使用Fortran 90编写;
- 使用自研预处理器VACPP,允许编写维度无关的代码(用户无需掌握 VACPP 语法即可使用)。
5.设计理念
- 非黑盒设计:用户需自行编写初始条件、源项、特殊边界条件等子程序;
- 强调通用性与可维护性:通过统一框架支持多种物理模型,新功能可自动适配所有已有应用。
二、典型使用流程
安装依赖与编译
- 需要 Fortran 编译器(如 gfortran、ifort)、MPI 库(如 OpenMPI、MPICH);
- 从 GitHub 克隆源码;
- 使用
make或 CMake(视版本而定)配置并编译。
准备输入文件
- 使用
.par参数文件指定:- 网格设置(分辨率、AMR 层级)
- 物理模型(HD/MHD/自定义)
- 时间步长、输出频率等
- 示例参数文件位于
tests/或demo/目录。
- 使用
编写用户子程序(如需要)
- 在
mod_usr.t或类似模板中实现:usr_init_one_grid:初始条件usr_source:源项usr_boundary:边界条件
- 在
运行模拟
mpirun -np4./amrvac -i your_case.par后处理
- 输出格式通常为
.dat或.vtu(支持 Paraview 可视化); - 提供 Python 脚本工具辅助分析(部分版本包含)。
- 输出格式通常为
三、适用领域
- 天体物理(如超新星爆发、喷流、吸积盘)
- 等离子体物理
- 高速可压缩流
- 任何涉及激波、间断或大尺度动态范围的 PDE 问题
四、资源链接
- 官网文档:https://amrvac.org/
- 源码仓库:https://github.com/amrvac/amrvac
- 用户邮件列表:
amrvacusers@lists.kuleuven.be(可订阅与搜索历史问题)