# 计算与仿真 (/docs/subsystems/simulation)

## 它解决什么问题 [#它解决什么问题]

工程团队需要知道一个数字怎么算出来、采用哪个模型、输入来自哪批实验，以及原料变化后是否需要重算。本模块保存完整的计算上下文。

## 核心对象 [#核心对象]

| 对象 | 内容 |
| --- | --- |
| 模型版本 | 组分、物性方法、单元模型、反应或经验参数 |
| 计算工况 | 固定输入、求解变量、约束、单位与基准 |
| 运行任务 | 引擎版本、执行环境、输入快照、状态与日志 |
| 结果集 | 数值、图表、残差、收敛信息和输出文件 |
| 模型比较 | 实测引用、误差指标、适用范围和候选参数 |

## 内部结构建议 [#内部结构建议]

```text
项目 / 实验 / 工艺输入
          ↓
输入映射、单位校验与工况快照
          ↓
任务调度 → 求解器适配器 → 独立执行器
          ↓
结果解析、质量检查与版本化归档
```

适配器将平台对象映射到某个求解器。执行器负责真正运行程序；结果解析器再返回平台可理解的数据及引擎原始文件。

## 第一层：物料与能量衡算 [#第一层物料与能量衡算]

支持选定流程所需的组分、物流、反应或分配关系、循环、补加和排出。输入校验需要识别缺少约束、单位错误和不闭合情况。

能量衡算需要与问题相匹配的焓和物性依据。简单流量守恒成立，不代表完整热力学模型已经成立。

## 第二层：接入 DWSIM [#第二层接入-dwsim]

DWSIM 官方提供自动化接口，用于加载流程、修改对象和运行计算。当前计划将它作为首个流程仿真后端，具体版本与部署环境尚待验证。

一个最小适配闭环应完成：

1. 加载指定版本的模型文件。
2. 设置一个明确工况，检查单位及组分映射。
3. 启动求解，收集日志与状态。
4. 导出需要的物流、负荷和其他结果。
5. 与已知参考结果比较，并保存可复现运行包。

官方参考：[Automation](https://dwsim.org/wiki/index.php?title=Automation)、[Automation3 API](https://dwsim.org/api_help/html/T_DWSIM_Automation_Automation3.htm)。文档中的平台及版本说明需要与最终选择的发行版核对。

## 第三层：实验驱动的模型更新 [#第三层实验驱动的模型更新]

参数估计任务引用指定实验数据、拟合方法和初始模型。候选参数通过适配器进入新模型，再与实测工况比较。

求解成功、拟合误差降低、外部验证通过是不同结果。保留旧模型基线，并记录新模型适用的物料与工况范围。

## 人与 Agent 的分工 [#人与-agent-的分工]

Agent 准备工况、调用计算、整理对比并解释异常。工程师确定物性方法、模型假设和接受标准。数值来自求解器或分析程序，界面标明数据来源。

## 失败和恢复 [#失败和恢复]

不收敛、输入缺失、超时、执行器中断分别记录。失败结果不能替换为历史成功值。重试使用新的尝试记录并关联原任务；状态不明时先查询，避免重复消耗计算资源。

## 独立产品与首期验证 [#独立产品与首期验证]

可以独立提供工况管理、计算运行、结果比较和计算书导出。首期验证一个参考模型、两个工况、一次实验参数更新，以及一个可解释的失败案例。

复杂反应器、自定义物性、优化算法和其他商业求解器接入均需按项目逐项验证。
