3. 平台总体架构设计
参数化仿真自动化平台要同时解决三类问题:参数如何被统一管理、仿真任务如何被可靠调度执行、结果如何被结构化回收并驱动下一轮迭代。如果把这些职责混在一个“大服务”里,短期看似开发快,长期必然出现参数来源不清、任务状态丢失、结果无法追溯、界面与求解器强耦合等问题。因此平台总体架构采用四层分层架构:用户交互层、参数管理层、仿真执行层、结果处理层。分层的核心不是“多写几个模块”,而是明确职责边界与依赖方向——上层依赖下层提供的稳定接口,下层不感知上层的具体界面形态。
四层职责边界
用户交互层面向工程师,负责参数录入、任务提交、进度查看与结果可视化。它不直接调用求解器,也不直接读写结果数据库,而是通过平台API与参数管理层、结果处理层交互。典型对象包括参数表单、任务看板、收敛曲线视图和报告导出入口。
参数管理层是平台的“单一数据源”。它维护参数定义(名称、类型、单位、默认值、取值范围)、参数集版本、参数与模型文件的映射关系,以及参数变更历史。参数管理层对外提供参数校验、参数快照生成和参数集冻结能力。例如一个结构仿真参数集可定义为:plate_thickness=2.5 mm、youngs_modulus=210 GPa、load=1200 N,并附带版本号 v3。
仿真执行层负责把“参数快照”转换为可执行的求解任务。它包含任务编排、求解器适配、资源调度和状态监控四个子模块。任务编排根据仿真类型选择模板;求解器适配把平台参数翻译为求解器输入文件;资源调度决定任务在本地、容器还是HPC队列上运行;状态监控持续回传 queued/running/succeeded/failed 等状态。
结果处理层负责结果解析、指标提取、对比分析与归档。它从求解器输出中抽取关键物理量(如最大应力、最大位移、一阶固有频率),写入结果库,并支持多方案对比。结果处理层不修改参数,只产出“结果指标 + 元数据”,供用户交互层展示或触发下一轮参数更新。
数据流与调用关系
一次典型的参数化仿真迭代,数据流如下:用户在交互层提交参数集 → 参数管理层校验并生成不可变参数快照 snapshot_id → 仿真执行层依据快照创建任务并调用求解器 → 求解器输出结果文件 → 结果处理层解析并写入指标 → 交互层读取指标展示。调用关系上,交互层只调用参数管理层和结果处理层的API;仿真执行层只读取参数快照、写入任务状态;结果处理层只读取求解器输出和任务元数据。这样,求解器替换、界面改版、结果指标扩展都不会互相牵连。
模块划分与接口约定
为了让分层真正落地,需要把每层拆成可独立测试的模块,并约定接口。参数管理层对外暴露 POST /params/validate、POST /params/snapshot、GET /params/{id}/history;仿真执行层暴露 POST /jobs、GET /jobs/{id}/status;结果处理层暴露 GET /results/{jobId}/metrics、POST /results/compare。接口以JSON为载荷,参数快照一旦生成即不可修改,保证同一 snapshot_id 在任何时间重跑都能得到可复现的输入。
一个可执行的参数快照示例
假设某支架静力分析需要三个参数,参数管理层生成的快照可表示为:
{
"snapshot_id": "snap-20240612-003",
"version": "v3",
"params": {
"plate_thickness": {"value": 2.5, "unit": "mm", "range": [1.0, 5.0]},
"youngs_modulus": {"value": 210000, "unit": "MPa", "range": [190000, 220000]},
"load": {"value": 1200, "unit": "N", "range": [500, 2000]}
},
"model_ref": "bracket_v2.cdb",
"created_by": "engineer_a"
}
仿真执行层读取该快照后,由求解器适配模块把 plate_thickness 写入几何参数、把 youngs_modulus 写入材料卡片、把 load 写入载荷步,生成求解输入并提交。任务状态从 queued 变为 running,求解完成后变为 succeeded,同时把结果文件路径写回任务记录。结果处理层解析该文件,提取 max_stress=186.4 MPa、max_displacement=0.82 mm,写入结果库。用户交互层读取指标后,可判断最大应力是否低于材料许用应力,从而决定是否调整 plate_thickness 进入下一轮。
调用关系中的关键约束
- 禁止跨层直连:用户交互层不得直接调用求解器命令,也不得直接读取结果文件。
- 快照不可变:参数管理层生成快照后,任何修改都产生新版本,保证可追溯。
- 状态单一来源:任务状态只由仿真执行层维护,其他层只读。
- 结果只增不改:结果处理层写入的指标记录不允许覆盖,只能追加新版本。
按上述分层与调用关系实现后,平台可以在不改变用户界面的前提下替换求解器,也可以在不影响求解流程的前提下扩展结果指标。这种“职责清晰、依赖单向”的架构,是后续参数扫描、优化迭代和自动化报告能够稳定运行的基础。