FluidSim 是一个面向对象的 Python 框架,用于高性能计算流体力学(CFD)模拟。它为周期域方程提供基于伪谱方法与 FFT 的求解器,性能可与 Fortran/C++ 相比,同时保持 Python 的易用性。
主要优势
- 多种求解器:2D/3D Navier-Stokes、浅水、分层流
- 高性能:Pythran/Transonic 编译、MPI 并行化
- 完整工作流:参数配置、模拟执行、输出分析
- 交互式分析:基于 Python 的后处理与可视化
安装与设置 使用 uv 并配合相应功能标志安装 fluidsim:
- 基础安装:uv pip install fluidsim
- 带 FFT 支持(多数求解器需要):uv pip install "fluidsim[fft]"
- 带 MPI 并行计算:uv pip install "fluidsim[fft,mpi]" 可选设置输出目录环境变量:
- export FLUIDSIM_PATH=/path/to/simulation/outputs
- export FLUIDDYN_PATH_SCRATCH=/path/to/working/directory 无需 API 密钥或身份验证。
运行模拟 标准工作流包含五步:
- 导入求解器:from fluidsim.solvers.ns2d.solver import Simul
- 创建并配置参数:params = Simul.create_default_params(),随后设置网格、域大小、粘性、结束时间、初始场类型等
- 实例化模拟:sim = Simul(params)
- 执行:sim.time_stepping.start()
- 分析结果:sim.output.phys_fields.plot("vorticity")、sim.output.spatial_means.plot()
可用求解器 根据物理问题选择求解器:
- 2D Navier-Stokes(ns2d):2D 湍流、涡动力学,from fluidsim.solvers.ns2d.solver import Simul
- 3D Navier-Stokes(ns3d):3D 湍流、真实流动,from fluidsim.solvers.ns3d.solver import Simul
- 分层流(ns2d.strat、ns3d.strat):海洋/大气流动,from fluidsim.solvers.ns2d.strat.solver import Simul,params.N = 1.0(Brunt-Väisälä 频率)
- 浅水(sw1l):地球物理流动、旋转系统,from fluidsim.solvers.sw1l.solver import Simul,params.f = 1.0(科里奥利参数)
参数配置 参数按层级组织,通过点号访问:
- 域与分辨率:params.oper.nx = 256、params.oper.Lx = 2 * pi
- 物理参数:params.nu_2 = 1e-3(粘性)、params.nu_4 = 0(超粘性,可选)
- 时间步进:params.time_stepping.t_end = 10.0、params.time_stepping.USE_CFL = True、params.time_stepping.CFL = 0.5
- 初始条件:params.init_fields.type = "noise"(或 "dipole"、"vortex"、"from_file"、"in_script")
- 输出设置:params.output.periods_save.phys_fields = 1.0、params.output.periods_save.spectra = 0.5、params.output.periods_save.spatial_means = 0.1 Parameters 对象对拼写错误会抛出 AttributeError,防止静默配置错误。
输出与分析 FluidSim 在模拟过程中自动保存多种输出:
- 物理场:速度、涡度,HDF5 格式,sim.output.phys_fields.plot("vorticity")、sim.output.phys_fields.plot("vx")
- 空间均值:体积平均量的时间序列,sim.output.spatial_means.plot()
- 谱:能量与拟能谱,sim.output.spectra.plot1d()、sim.output.spectra.plot2d() 加载之前的模拟:from fluidsim import load_sim_for_plot,sim = load_sim_for_plot("simulation_dir"),sim.output.phys_fields.plot() 高级可视化:可在 ParaView 或 VisIt 中打开 .h5 文件进行 3D 可视化。
高级功能
- 自定义强迫:params.forcing.enable = True、params.forcing.type = "tcrandom"、params.forcing.forcing_rate = 1.0
- 自定义初始条件:params.init_fields.type = "in_script",随后在脚本中定义场
- MPI 并行化:mpirun -np 8 python simulation_script.py
- 参数研究:循环不同参数运行多个模拟,并设置 params.output.sub_directory
常见用例
- 2D 湍流研究:设置 512 网格、粘性 1e-4、结束时间 50.0、USE_CFL、噪声初始场,分析能量级联
- 分层流模拟:设置 N = 2.0、粘性 5e-4、结束时间 20.0,以脚本方式初始化密度层
- 高分辨率 3D 模拟配合 MPI:512^3 网格、粘性 1e-5,使用 mpirun -np 64 运行
- Taylor-Green 涡验证:128 网格、粘性 1e-3,以脚本设置正弦速度场,验证能量衰减
快速参考
- 导入求解器:from fluidsim.solvers.ns2d.solver import Simul
- 创建参数:params = Simul.create_default_params()
- 设置分辨率:params.oper.nx = params.oper.ny = 256
- 设置粘性:params.nu_2 = 1e-3
- 设置结束时间:params.time_stepping.t_end = 10.0
- 运行模拟:sim = Simul(params); sim.time_stepping.start()
- 绘制结果:sim.output.phys_fields.plot("vorticity")
- 加载模拟:sim = load_sim_for_plot("path/to/sim")
资源
- 文档:https://fluidsim.readthedocs.io/
- 参考文件:references/installation.md、references/solvers.md、references/simulation_workflow.md、references/parameters.md、references/output_analysis.md、references/advanced_features.md
限制 资料未提供关于收费、价格、平台支持范围、性能基准数值或具体效果保证的信息,暂未提供。