fluidsim by davila7/claude-code-templates
npx skills add https://github.com/davila7/claude-code-templates --skill fluidsimFluidSim 是一个面向对象的高性能计算流体动力学(CFD)模拟 Python 框架。它使用基于 FFT 的伪谱方法为周期性域方程提供求解器,在保持 Python 易用性的同时,提供与 Fortran/C++ 相媲美的性能。
主要优势:
使用 uv 并指定相应的功能标志安装 fluidsim:
# 基础安装
uv uv pip install fluidsim
# 包含 FFT 支持(大多数求解器必需)
uv uv pip install "fluidsim[fft]"
# 包含 MPI 以支持并行计算
uv uv pip install "fluidsim[fft,mpi]"
设置输出目录的环境变量(可选):
export FLUIDSIM_PATH=/path/to/simulation/outputs
export FLUIDDYN_PATH_SCRATCH=/path/to/working/directory
无需 API 密钥或身份验证。
完整的安装说明和环境配置请参阅 references/installation.md。
标准工作流程包含五个步骤:
步骤 1:导入求解器
广告位招租
在这里展示您的产品或服务
触达数万 AI 开发者,精准高效
from fluidsim.solvers.ns2d.solver import Simul
步骤 2:创建并配置参数
params = Simul.create_default_params()
params.oper.nx = params.oper.ny = 256
params.oper.Lx = params.oper.Ly = 2 * 3.14159
params.nu_2 = 1e-3
params.time_stepping.t_end = 10.0
params.init_fields.type = "noise"
步骤 3:实例化模拟
sim = Simul(params)
步骤 4:执行
sim.time_stepping.start()
步骤 5:分析结果
sim.output.phys_fields.plot("vorticity")
sim.output.spatial_means.plot()
完整的示例、重启模拟以及集群部署请参阅 references/simulation_workflow.md。
根据物理问题选择求解器:
2D 纳维-斯托克斯 (ns2d):2D 湍流、涡旋动力学
from fluidsim.solvers.ns2d.solver import Simul
3D 纳维-斯托克斯 (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 # 布伦特-维赛拉频率
浅水方程 (sw1l):地球物理流动、旋转系统
from fluidsim.solvers.sw1l.solver import Simul
params.f = 1.0 # 科里奥利参数
完整的求解器列表和选择指南请参阅 references/solvers.md。
参数按层次结构组织,并通过点号访问:
域和分辨率:
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 # 每 1.0 个时间单位保存一次
params.output.periods_save.spectra = 0.5
params.output.periods_save.spatial_means = 0.1
Parameters 对象会对拼写错误抛出 AttributeError,防止静默配置错误。
全面的参数文档请参阅 references/parameters.md。
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 可视化。
详细的分析工作流、参数化研究分析和数据导出请参阅 references/output_analysis.md。
自定义强迫:维持湍流或驱动特定动力学
params.forcing.enable = True
params.forcing.type = "tcrandom" # 时间相关随机强迫
params.forcing.forcing_rate = 1.0
自定义初始条件:在脚本中定义场
params.init_fields.type = "in_script"
sim = Simul(params)
X, Y = sim.oper.get_XY_loc()
vx = sim.state.state_phys.get_var("vx")
vx[:] = sin(X) * cos(Y)
sim.time_stepping.start()
MPI 并行化:在多个处理器上运行
mpirun -np 8 python simulation_script.py
参数化研究:使用不同参数运行多个模拟
for nu in [1e-3, 5e-4, 1e-4]:
params = Simul.create_default_params()
params.nu_2 = nu
params.output.sub_directory = f"nu{nu}"
sim = Simul(params)
sim.time_stepping.start()
强迫类型、自定义求解器、集群提交和性能优化请参阅 references/advanced_features.md。
from fluidsim.solvers.ns2d.solver import Simul
from math import pi
params = Simul.create_default_params()
params.oper.nx = params.oper.ny = 512
params.oper.Lx = params.oper.Ly = 2 * pi
params.nu_2 = 1e-4
params.time_stepping.t_end = 50.0
params.time_stepping.USE_CFL = True
params.init_fields.type = "noise"
params.output.periods_save.phys_fields = 5.0
params.output.periods_save.spectra = 1.0
sim = Simul(params)
sim.time_stepping.start()
# 分析能量级串
sim.output.spectra.plot1d(tmin=30.0, tmax=50.0)
from fluidsim.solvers.ns2d.strat.solver import Simul
params = Simul.create_default_params()
params.oper.nx = params.oper.ny = 256
params.N = 2.0 # 分层强度
params.nu_2 = 5e-4
params.time_stepping.t_end = 20.0
# 用致密层初始化
params.init_fields.type = "in_script"
sim = Simul(params)
X, Y = sim.oper.get_XY_loc()
b = sim.state.state_phys.get_var("b")
b[:] = exp(-((X - 3.14)**2 + (Y - 3.14)**2) / 0.5)
sim.state.statephys_from_statespect()
sim.time_stepping.start()
sim.output.phys_fields.plot("b")
from fluidsim.solvers.ns3d.solver import Simul
params = Simul.create_default_params()
params.oper.nx = params.oper.ny = params.oper.nz = 512
params.nu_2 = 1e-5
params.time_stepping.t_end = 10.0
params.init_fields.type = "noise"
sim = Simul(params)
sim.time_stepping.start()
运行命令:
mpirun -np 64 python script.py
from fluidsim.solvers.ns2d.solver import Simul
import numpy as np
from math import pi
params = Simul.create_default_params()
params.oper.nx = params.oper.ny = 128
params.oper.Lx = params.oper.Ly = 2 * pi
params.nu_2 = 1e-3
params.time_stepping.t_end = 10.0
params.init_fields.type = "in_script"
sim = Simul(params)
X, Y = sim.oper.get_XY_loc()
vx = sim.state.state_phys.get_var("vx")
vy = sim.state.state_phys.get_var("vy")
vx[:] = np.sin(X) * np.cos(Y)
vy[:] = -np.cos(X) * np.sin(Y)
sim.state.statephys_from_statespect()
sim.time_stepping.start()
# 验证能量衰减
df = sim.output.spatial_means.load()
# 与解析解比较
导入求解器: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")
参考文件:
references/installation.md:完整的安装说明references/solvers.md:可用的求解器和选择指南references/simulation_workflow.md:详细的工作流示例references/parameters.md:全面的参数文档references/output_analysis.md:输出类型和分析方法references/advanced_features.md:强迫、MPI、参数化研究、自定义求解器每周安装量
149
代码仓库
GitHub 星标数
23.4K
首次出现
2026 年 1 月 21 日
安全审计
已安装于
claude-code130
opencode124
gemini-cli119
cursor117
antigravity107
codex107
FluidSim is an object-oriented Python framework for high-performance computational fluid dynamics (CFD) simulations. It provides solvers for periodic-domain equations using pseudospectral methods with FFT, delivering performance comparable to Fortran/C++ while maintaining Python's ease of use.
Key strengths :
Install fluidsim using uv with appropriate feature flags:
# Basic installation
uv uv pip install fluidsim
# With FFT support (required for most solvers)
uv uv pip install "fluidsim[fft]"
# With MPI for parallel computing
uv uv pip install "fluidsim[fft,mpi]"
Set environment variables for output directories (optional):
export FLUIDSIM_PATH=/path/to/simulation/outputs
export FLUIDDYN_PATH_SCRATCH=/path/to/working/directory
No API keys or authentication required.
See references/installation.md for complete installation instructions and environment configuration.
Standard workflow consists of five steps:
Step 1 : Import solver
from fluidsim.solvers.ns2d.solver import Simul
Step 2 : Create and configure parameters
params = Simul.create_default_params()
params.oper.nx = params.oper.ny = 256
params.oper.Lx = params.oper.Ly = 2 * 3.14159
params.nu_2 = 1e-3
params.time_stepping.t_end = 10.0
params.init_fields.type = "noise"
Step 3 : Instantiate simulation
sim = Simul(params)
Step 4 : Execute
sim.time_stepping.start()
Step 5 : Analyze results
sim.output.phys_fields.plot("vorticity")
sim.output.spatial_means.plot()
See references/simulation_workflow.md for complete examples, restarting simulations, and cluster deployment.
Choose solver based on physical problem:
2D Navier-Stokes (ns2d): 2D turbulence, vortex dynamics
from fluidsim.solvers.ns2d.solver import Simul
3D Navier-Stokes (ns3d): 3D turbulence, realistic flows
from fluidsim.solvers.ns3d.solver import Simul
Stratified flows (ns2d.strat, ns3d.strat): Oceanic/atmospheric flows
from fluidsim.solvers.ns2d.strat.solver import Simul
params.N = 1.0 # Brunt-Väisälä frequency
Shallow water (sw1l): Geophysical flows, rotating systems
from fluidsim.solvers.sw1l.solver import Simul
params.f = 1.0 # Coriolis parameter
See references/solvers.md for complete solver list and selection guidance.
Parameters are organized hierarchically and accessed via dot notation:
Domain and resolution :
params.oper.nx = 256 # grid points
params.oper.Lx = 2 * pi # domain size
Physical parameters :
params.nu_2 = 1e-3 # viscosity
params.nu_4 = 0 # hyperviscosity (optional)
Time stepping :
params.time_stepping.t_end = 10.0
params.time_stepping.USE_CFL = True # adaptive time step
params.time_stepping.CFL = 0.5
Initial conditions :
params.init_fields.type = "noise" # or "dipole", "vortex", "from_file", "in_script"
Output settings :
params.output.periods_save.phys_fields = 1.0 # save every 1.0 time units
params.output.periods_save.spectra = 0.5
params.output.periods_save.spatial_means = 0.1
The Parameters object raises AttributeError for typos, preventing silent configuration errors.
See references/parameters.md for comprehensive parameter documentation.
FluidSim produces multiple output types automatically saved during simulation:
Physical fields : Velocity, vorticity in HDF5 format
sim.output.phys_fields.plot("vorticity")
sim.output.phys_fields.plot("vx")
Spatial means : Time series of volume-averaged quantities
sim.output.spatial_means.plot()
Spectra : Energy and enstrophy spectra
sim.output.spectra.plot1d()
sim.output.spectra.plot2d()
Load previous simulations :
from fluidsim import load_sim_for_plot
sim = load_sim_for_plot("simulation_dir")
sim.output.phys_fields.plot()
Advanced visualization : Open .h5 files in ParaView or VisIt for 3D visualization.
See references/output_analysis.md for detailed analysis workflows, parametric study analysis, and data export.
Custom forcing : Maintain turbulence or drive specific dynamics
params.forcing.enable = True
params.forcing.type = "tcrandom" # time-correlated random forcing
params.forcing.forcing_rate = 1.0
Custom initial conditions : Define fields in script
params.init_fields.type = "in_script"
sim = Simul(params)
X, Y = sim.oper.get_XY_loc()
vx = sim.state.state_phys.get_var("vx")
vx[:] = sin(X) * cos(Y)
sim.time_stepping.start()
MPI parallelization : Run on multiple processors
mpirun -np 8 python simulation_script.py
Parametric studies : Run multiple simulations with different parameters
for nu in [1e-3, 5e-4, 1e-4]:
params = Simul.create_default_params()
params.nu_2 = nu
params.output.sub_directory = f"nu{nu}"
sim = Simul(params)
sim.time_stepping.start()
See references/advanced_features.md for forcing types, custom solvers, cluster submission, and performance optimization.
from fluidsim.solvers.ns2d.solver import Simul
from math import pi
params = Simul.create_default_params()
params.oper.nx = params.oper.ny = 512
params.oper.Lx = params.oper.Ly = 2 * pi
params.nu_2 = 1e-4
params.time_stepping.t_end = 50.0
params.time_stepping.USE_CFL = True
params.init_fields.type = "noise"
params.output.periods_save.phys_fields = 5.0
params.output.periods_save.spectra = 1.0
sim = Simul(params)
sim.time_stepping.start()
# Analyze energy cascade
sim.output.spectra.plot1d(tmin=30.0, tmax=50.0)
from fluidsim.solvers.ns2d.strat.solver import Simul
params = Simul.create_default_params()
params.oper.nx = params.oper.ny = 256
params.N = 2.0 # stratification strength
params.nu_2 = 5e-4
params.time_stepping.t_end = 20.0
# Initialize with dense layer
params.init_fields.type = "in_script"
sim = Simul(params)
X, Y = sim.oper.get_XY_loc()
b = sim.state.state_phys.get_var("b")
b[:] = exp(-((X - 3.14)**2 + (Y - 3.14)**2) / 0.5)
sim.state.statephys_from_statespect()
sim.time_stepping.start()
sim.output.phys_fields.plot("b")
from fluidsim.solvers.ns3d.solver import Simul
params = Simul.create_default_params()
params.oper.nx = params.oper.ny = params.oper.nz = 512
params.nu_2 = 1e-5
params.time_stepping.t_end = 10.0
params.init_fields.type = "noise"
sim = Simul(params)
sim.time_stepping.start()
Run with:
mpirun -np 64 python script.py
from fluidsim.solvers.ns2d.solver import Simul
import numpy as np
from math import pi
params = Simul.create_default_params()
params.oper.nx = params.oper.ny = 128
params.oper.Lx = params.oper.Ly = 2 * pi
params.nu_2 = 1e-3
params.time_stepping.t_end = 10.0
params.init_fields.type = "in_script"
sim = Simul(params)
X, Y = sim.oper.get_XY_loc()
vx = sim.state.state_phys.get_var("vx")
vy = sim.state.state_phys.get_var("vy")
vx[:] = np.sin(X) * np.cos(Y)
vy[:] = -np.cos(X) * np.sin(Y)
sim.state.statephys_from_statespect()
sim.time_stepping.start()
# Validate energy decay
df = sim.output.spatial_means.load()
# Compare with analytical solution
Import solver : from fluidsim.solvers.ns2d.solver import Simul
Create parameters : params = Simul.create_default_params()
Set resolution : params.oper.nx = params.oper.ny = 256
Set viscosity : params.nu_2 = 1e-3
Set end time : params.time_stepping.t_end = 10.0
Run simulation : sim = Simul(params); sim.time_stepping.start()
Plot results : sim.output.phys_fields.plot("vorticity")
Load simulation : sim = load_sim_for_plot("path/to/sim")
Documentation : https://fluidsim.readthedocs.io/
Reference files :
references/installation.md: Complete installation instructionsreferences/solvers.md: Available solvers and selection guidereferences/simulation_workflow.md: Detailed workflow examplesreferences/parameters.md: Comprehensive parameter documentationreferences/output_analysis.md: Output types and analysis methodsreferences/advanced_features.md: Forcing, MPI, parametric studies, custom solversWeekly Installs
149
Repository
GitHub Stars
23.4K
First Seen
Jan 21, 2026
Security Audits
Gen Agent Trust HubPassSocketPassSnykPass
Installed on
claude-code130
opencode124
gemini-cli119
cursor117
antigravity107
codex107
PPTX 文件处理全攻略:Python 脚本创建、编辑、分析 .pptx 文件内容与结构
877 周安装
Azure AI 网关配置指南:使用APIM治理AI模型、MCP工具与智能体 | Microsoft Copilot
103,100 周安装
Azure Application Insights 仪表化指南 - ASP.NET Core/Node.js/Python 应用监控教程
103,100 周安装
Microsoft Foundry 技能指南:部署、调用、监控智能体全流程详解
103,200 周安装
Azure存储服务全解析:Blob、文件、队列、表存储及Data Lake使用指南
103,300 周安装
Azure 诊断官方指南 - 调试排查生产问题、函数应用、容器应用故障排除
103,300 周安装
Azure部署指南:从验证到执行,确保云应用成功上线
103,400 周安装