Skip to content

xupeng89/rust-handler-node

Repository files navigation

该文档使用napi-rs官方模版

@napi-rs/package-template

Usage

  1. Click Use this template.
  2. Clone your project.
  3. Run pnpm install to install dependencies.
  4. Run npx napi rename -n [name] command under the project folder to rename your package.

run

  • pnpm
  • pnpm build
  • pnpm test

DTSP 技术架构总览

┌──── L6 表现层 (Presentation) ────┐
│ Electron + AntV X6 + Leptos      │
├──── L5 应用层 (Application) ────┤
│ 工程操作 / Undo / Case 管理     │
├──── L4 仿真服务层 (Simulation) ─┤
│ 求解调度 / 收敛策略 / 任务管理  │
├──── L3 领域模型层 (Domain) ─────┤
│ Unit / Stream / Network / Spec  │
├──── L2 数学与物性层 (Math):这块有问题 ─────┤
│ 物性 / 数值方法 / 方程求解      │
├──── L1 基础设施层 (Infra) ──────┤
│ DB / 文件 / 日志 / 并发         │
└───────────────────────────────┘

L6:交互与表现层(Presentation / Reactive UI)

目标:高性能、可扩展的工业级流程交互界面

技术选型

  • 容器:Electron
  • UI 框架:Leptos(WASM)
  • 流程编辑器:AntV X6
  • 构建工具:Vite

核心设计

  • 前端引擎

    • Leptos(WASM)承载核心 UI 状态与业务逻辑
  • 渲染优化(大规模流程图)

    • AntV X6 启用 Canvas / Virtual DOM

    • 引入 LOD(Level of Detail)策略

      • 🔍 高倍率:仅显示节点轮廓
      • 🔎 中倍率:显示设备类型
      • 🎯 低倍率(聚焦):显示实时流股参数
  • 状态同步

    • 使用 Reactive Storage
    • UI 仅订阅当前 Viewport 内节点 的状态变化

L5:应用编排层(Application / Orchestration)

角色定位:UI 与仿真内核之间的“语义缓冲区”

核心职责

  • 计算图构建

    • 将流程节点转化为:

      • Directed Acyclic Graph(DAG)
      • 或 Cyclic Graph(含 recycle)
  • 子系统解耦

    • 自动切分大系统为多个 Sub-domain

    • 每个子系统:

      • 独立 Undo / Redo 栈
      • 独立参数事务
  • 工程语义

    • Case 管理
    • 参数修改事务
    • 操作级 Undo / Redo(非数值级)

L4:仿真服务层(Simulation Service)

目标:高可扩展、高可靠的求解调度系统

功能模块

  • Tearing
  • Recycle 处理
  • 收敛策略
  • 计算顺序管理
  • 错误与异常处理

分布式设计

  • 求解模式

    • 基于 Rust + Tokio 的 Task Worker 模型
    • 横向扩展(多核 / 多节点)
  • 热启动(Hot Start)

    • 保存历史收敛解
    • 作为新工况 Initial Guess
  • 负载均衡

    • 根据子系统规模与非线性程度
    • 动态分配计算资源

L3:领域模型层(Domain Model)【核心层】

数字孪生的语义核心

核心对象

  • UnitOperation
  • MaterialStream
  • EnergyStream
  • Specification
  • Network

统一接口规范

  • 强制执行 Unit Model Interface(UMI)
// L3
trait UnitOperation {
    fn residual(&self, x: &[f64], r: &mut [f64]);
    fn jacobian(&self, x: &[f64], entries: &mut Vec<(usize, usize, f64)>);
}

// L2
trait NonlinearProblem {
    fn assemble_residual(&self, x: &[f64], r: &mut [f64]);
    fn assemble_jacobian(&self, x: &[f64], j: &mut SparseMatrix);
}

状态模型

  • state:可计算变量(自由度)
  • spec:约束条件(设计规格)

参数体系

  • Global Parameter Space

    • 支持数万个参数
    • 高效索引 / 批量修改

L2:数学与物性层(Math & Thermo)这块有问题,该设计不明朗

目标:工业级高性能数值内核(HPC)

功能模块

  • 数值方法
  • 热物性计算
  • 非线性方程组
  • Jacobian 生成

技术特性

  • 稀疏矩阵求解

    • KLU
    • SuperLU
    • Intel MKL PARDISO
  • 自动微分(AD)

    • Rust 自动微分库
    • 自动生成 Jacobian
    • 相比数值差分:
  • 多精度支持

    • FP32 / FP64 动态切换
  • 外部集成

    • Fortran / C 数值库
    • 外部 Property Package

L1:基础设施层(Infrastructure)

目标:稳定、可维护、Rust-native

模块与技术选型

模块 技术
DB SQLite
ORM SeaORM
日志 tracing
并发 Rust async + rayon
文件 serde + 自定义格式

存储与通信

  • 高速通信总线

    • gRPC
    • Zenoh(Rust-native,适合高频数据流)
  • 数据存储

    • Parquet(OLAP / 结果分析)
    • RocksDB(临时快照 / 热状态)
    • sqlite 本地数据存储

About

构建数据库查询同步功能

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published