核心仿真服务逻辑
simulation_service.py 是系统从“Web 应用”转向“科学计算”的转折点。它负责调用高度复杂的物理模型引擎,并将产生的原始高维矩阵通过 optimize_calculation_data 进行压缩和归一化,以确保前端渲染的流畅度。
⚙️ 引擎分发架构
Section titled “⚙️ 引擎分发架构”系统内置了两套不同维度的仿真引擎,分别应对标准模拟与带参数反馈的深度模拟。
基础 CPD 模拟逻辑
Section titled “基础 CPD 模拟逻辑”调用 run_simulation_final 执行标准的煤热解动力学计算。
- 输入:经过预处理的
params字典(包含煤结构参数、升温速率等)。 - 输出:物理量表头 (
headers) 与时间序列矩阵 (data_rows)。 - 应用场景:常规热解产物产率预测。
参数回填增强模拟
Section titled “参数回填增强模拟”调用 run_simulation_final2,该版本在计算过程中会执行额外的结构参数校准。
- 额外产出 (
data_front):该字典包含了引擎在计算过程中优化后的 13C NMR 参数。 - 双向同步:这些参数最终会被写回前端界面,实现物理模型的自适应调优。
- 应用场景:未知煤种的结构反推与精密拟合。
🛠️ 核心处理流程
Section titled “🛠️ 核心处理流程”仿真任务在 Service 层的执行路径如下:
- 引擎调用:通过
Calculate_module的入口函数触发 Fortran/C++ 驱动或高性能 Python 数值解算器。 - 数据压缩 (Optimization):
调用
optimize_calculation_data。由于求解器通常采用自适应步长,会产生极高密度的点。该函数负责在不损失物理特征的前提下,对矩阵进行等间隔采样或显著性过滤。 - 结构标准化:将结果封装为包含
status,headers,results的标准 Service 对象,便于上层tasks模块进行持久化操作。
💻 源码深度解析
Section titled “💻 源码深度解析”1. 结果优化逻辑
Section titled “1. 结果优化逻辑”# 关键步骤:数据量精简optimized_data = optimize_calculation_data(data_rows)设计意图:原始仿真可能产生数百万行数据,直接返回会导致浏览器崩溃。该步骤确保传输给前端的数据量控制在 1MB 以内,平衡了模拟精度与 UI 性能。
2. 引擎适配器函数
Section titled “2. 引擎适配器函数”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 模式的灵魂 }