[ PROMPT_NODE_26602 ]
simulation_workflow
[ SKILL_DOCUMENTATION ]
# 仿真工作流
## 标准工作流
按照以下步骤运行 fluidsim 仿真:
### 1. 导入求解器
python
from fluidsim.solvers.ns2d.solver import Simul
# 或使用动态导入
import fluidsim
Simul = fluidsim.import_simul_class_from_key("ns2d")
### 2. 创建默认参数
python
params = Simul.create_default_params()
这将返回一个包含所有仿真设置的分层 `Parameters` 对象。
### 3. 配置参数
根据需要修改参数。Parameters 对象通过对不存在的参数引发 `AttributeError` 来防止拼写错误:
python
# 域和分辨率
params.oper.nx = 256 # x 方向网格点
params.oper.ny = 256 # y 方向网格点
params.oper.Lx = 2 * pi # x 方向域大小
params.oper.Ly = 2 * pi # y 方向域大小
# 物理参数
params.nu_2 = 1e-3 # 粘度(负拉普拉斯)
# 时间步长
params.time_stepping.t_end = 10.0 # 结束时间
params.time_stepping.deltat0 = 0.01 # 初始时间步长
params.time_stepping.USE_CFL = True # 自适应时间步长
# 初始条件
params.init_fields.type = "noise" # 或 "dipole", "vortex" 等
# 输出设置
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
### 4. 实例化仿真
python
sim = Simul(params)
这将初始化:
- 算子(FFT,微分算子)
- 状态变量(速度、涡度等)
- 输出处理器
- 时间步进方案
### 5. 运行仿真
python
sim.time_stepping.start()
仿真将运行至 `t_end` 或指定的迭代次数。
### 6. 在仿真期间/之后分析结果
python
# 绘制物理场
sim.output.phys_fields.plot()
sim.output.phys_fields.plot("vorticity")
sim.output.phys_fields.plot("div")
# 绘制空间平均值
sim.output.spatial_means.plot()
# 绘制谱
sim.output.spectra.plot1d()
sim.output.spectra.plot2d()
## 加载之前的仿真
### 快速加载(仅用于绘图)
python
from fluidsim import load_sim_for_plot
sim = load_sim_for_plot("path/to/simulation")
sim.output.phys_fields.plot()
sim.output.spatial_means.plot()
无需完全状态初始化的快速加载。用于后处理。
### 完整状态加载(用于重启)
python
from fluidsim import load_state_phys_file
sim = load_state_phys_file("path/to/state_file.h5")
sim.time_stepping.start() # 继续仿真
L