Skip to content

核心仿真服务逻辑

simulation_service.py 是系统从“Web 应用”转向“科学计算”的转折点。它负责调用高度复杂的物理模型引擎,并将产生的原始高维矩阵通过 optimize_calculation_data 进行压缩和归一化,以确保前端渲染的流畅度。


系统内置了两套不同维度的仿真引擎,分别应对标准模拟与带参数反馈的深度模拟。

调用 run_simulation_final 执行标准的煤热解动力学计算。

  • 输入:经过预处理的 params 字典(包含煤结构参数、升温速率等)。
  • 输出:物理量表头 (headers) 与时间序列矩阵 (data_rows)。
  • 应用场景:常规热解产物产率预测。

仿真任务在 Service 层的执行路径如下:

  1. 引擎调用:通过 Calculate_module 的入口函数触发 Fortran/C++ 驱动或高性能 Python 数值解算器。
  2. 数据压缩 (Optimization): 调用 optimize_calculation_data。由于求解器通常采用自适应步长,会产生极高密度的点。该函数负责在不损失物理特征的前提下,对矩阵进行等间隔采样显著性过滤
  3. 结构标准化:将结果封装为包含 status, headers, results 的标准 Service 对象,便于上层 tasks 模块进行持久化操作。

# 关键步骤:数据量精简
optimized_data = optimize_calculation_data(data_rows)

设计意图:原始仿真可能产生数百万行数据,直接返回会导致浏览器崩溃。该步骤确保传输给前端的数据量控制在 1MB 以内,平衡了模拟精度与 UI 性能。

def run_engine_2_logic(params):
# 多返回值适配:headers, rows, 加上关键的反馈字典 data_front
headers, data_rows, data_front = run_simulation_final2(params)
return {
"status": "success",
"headers": headers,
"results": optimized_data,
"data_front": data_front # 这里的 data_front 是 SIM2 模式的灵魂
}