☰
燃烧后CO2捕集MEA吸收过程模拟教程(16):DWSIM开源自建路线——自动化API、CAPE-OPEN与缺失部件补齐
2026/10/13 9:03:26 网站建设 项目流程

燃烧后CO2捕集MEA吸收过程模拟教程(16):DWSIM开源自建路线——自动化API、CAPE-OPEN与缺失部件补齐

版本声明块

  • 工具/软件:DWSIM桌面稳定分支 v9.0.5(2025-10-03,GitHub);DWSIM 10 线官网列10.2.0 Release Candidate 10(2026-08-15)——两者均须注明抓取日期 2026-09-12,版本滚动快、双轨并存
  • 语言/环境:DWSIM 内置 IronPython/Python 控制台(官方仓库含DWSIM.Libraries.PythonLink等组件);外部 Python 侧以社区做法为主
  • 本文目标:判断「DWSIM 能不能替代 Aspen 跑 MEA 吸收」,并把不能替代的那部分变成一份可执行的补齐清单

一句话结论:DWSIM 是 GPL-3 开源、CAPE-OPEN 兼容的流程模拟器,其官方源码DWSIM.Automation/Automation.cs中定义了Automation3(COM Guid62486815-2330-4CDE-8962-41F576B0C2B8)并提供LoadFlowsheet、CalculateFlowsheet3、CreateFlowsheet、ReleaseResources等方法,但其自动化属性包注册列表中没有 eNRTL 专用包,因此不能断言 DWSIM 支持 eNRTL。

〇、本篇要解决的认知问题

  1. DWSIM 的版本号为什么必须带抓取日期?v9 与 10 线该怎么选?
  2. DWSIM.Automation.Automation3有哪些真实存在的方法与属性?该用Automation3还是Automation2?
  3. DWSIM 的属性包里有没有 eNRTL?缺的部件(电解质活度模型、速率基吸收塔)怎么补?
  4. 用 pythonnet 调Automation3是官方支持的吗?哪些类名不能写死?
  5. CAPE-OPEN 与 COBIA 在开源路线里各自扮演什么角色?32/64 位不匹配这类故障怎么排查?

一、机制解析

1.1 先接受一个事实:DWSIM 与 Aspen 不是替代关系

底账给出的结论很明确:速率基吸收塔 + 电解质热力学的「双支持」,目前最成熟的是 Aspen Plus / Aspen HYSYS。开源侧 DWSIM 具备 CAPE-OPEN 与自动化能力,但在 eNRTL 与速率基 CO₂ 吸收塔的现成支持上明显弱于商业软件,需要自行开发或接入外部包。

所以开源路线的正确定位不是「省钱替代」,而是在特定场景下换取可控性:

维度商业路线(Aspen Plus / HYSYS)开源路线(DWSIM)
电解质热力学内置 eNRTL 等 property method,并有 MEA 专用物性 insert属性包有 NRTL / UNIQUAC / UNIFAC / IdealElectrolyte / CAPEOPEN,无 eNRTL 专用包
速率基塔官方Aspen Rate-Based Distillation(文献称 RateSep),RadFrac 之上扩展未见官方等价速率基 CO₂ 吸收塔部件,需自建或接入
自动化Happ ActiveX interface(Apwn.Document一族,文档在《Aspen Plus User Guide》第 38 章,需账号)DWSIM.Automation源码公开可读,方法签名一目了然;另有 MCP Server(10.2.0 RC10)
许可商业许可核心 GPL-3;Patreon Edition 额外组件可自由测试,但保存含这类组件的模拟文件需要有效会员
可审计性闭源未闭合,可读到属性包注册代码

最后一行要注意:GPL-3 不等于「随便用」。自动化批量跑工况、批量SaveFlowsheet时,如果模拟文件里含 Patreon Edition 组件,会踩到「能测试、不能保存」的限制。

1.2 版本双轨与 MCP Server

DWSIM 的版本信息必须带抓取日期,原因是官方下载页与搜索快照的版本号并不一致,且存在两条并行线:

  • 桌面稳定分支 v9.0.5(2025-10-03,GitHub)——生态成熟,社区代码与文档多按 9.x 写;
  • DWSIM 10 线:10.2.0 Release Candidate 10(2026-08-15,官网;抓取日期 2026-09-12)——架构与旧版差异大;
  • DWSIM MCP Server是 10.2.0 RC10 的新增官方能力:以 MCP(Model Context Protocol)暴露 DWSIM 引擎,支持 HTTP 或 stdio,默认端口 5901,另有 Docker / Debian / 便携包形态。

红线:MCP Server 的工具清单与调用协议在权威源中尚未覆盖,所以本文只写「端口 5901、HTTP/stdio」这类已核实事实,不臆造任何 MCP 方法名与 JSON 字段。要用它,请以官方文档为准并在本机验证。

1.3 Automation3:选对类名,别踩 Automation2 的坑

DWSIM.Automation/Automation.cs(官方源码)里定义了三个类:Automation(旧)、Automation2、Automation3,均带[ComVisible(true)];自动化接口为AutomationInterface(COM Guided615e8f-da69-4c24-80e2-bfe342168060)。

为什么必须选Automation3:Automation2的GetMainWindow()会抛NotImplementedException——选错类名会直接报错,且错误信息不会告诉你「换一个类就行」。

已核实的方法与属性:

成员签名/说明
LoadFlowsheet(filepath)加载模拟文件;支持.dwxmz/.dwxml/.xml
CreateFlowsheet()新建空白流程图
CalculateFlowsheet(flowsheet, sender)计算(带 sender 参数)
CalculateFlowsheet2(flowsheet)计算(无 sender)
CalculateFlowsheet3(flowsheet, timeout_seconds)带超时的计算——批量脚本首选
SaveFlowsheet(flowsheet, path, compressed)保存,可指定是否压缩
SaveFlowsheet2(flowsheet, path)保存(简化签名)
ReleaseResources()释放资源;批次结束必须调用
GetMainWindow()取主窗口(Automation2中抛NotImplementedException)
AvailablePropertyPackagesAutomation3额外属性:可用属性包
AvailableCompoundsAutomation3额外属性:可用化合物

返回对象类型是DWSIM.Interfaces.IFlowsheet,仿真对象接口为ISimulationObject。

为什么CalculateFlowsheet3(flowsheet, timeout_seconds)是批量脚本的正确选择:MEA 吸收塔这类强耦合体系,偶发不收敛会让单次计算无限期挂住。带超时的版本把「卡死」变成「可控失败」,这在第 15 篇的收敛诊断思路里是同一个原则——让失败可观测、可恢复。

1.4 属性包清单与缺失部件

已注册属性包(部分,来自官方源码Automation.cs):

PengRobinsonPropertyPackage SRKPropertyPackage NRTLPropertyPackage UNIQUACPropertyPackage UNIFACPropertyPackage IdealElectrolytePropertyPackage GERG2008PropertyPackage PCSAFT2PropertyPackage CAPEOPENPropertyPackage (组件名 "CAPE-OPEN")

对照 MEA 吸收的需要,缺口很清晰:

需要的部件DWSIM 现状补齐手段
电解质活度系数(eNRTL)无专用包;有IdealElectrolytePropertyPackage(理想电解质)自建 eNRTL(第 13 篇的回归流程)→ 通过 CAPE-OPEN Thermo 接口暴露;或寻找第三方 CAPE-OPEN 电解质属性包
速率基吸收塔未见官方等价部件自建速率基模型(第 5、6、7 篇的传质/关联式/动力学)并封装为 CAPE-OPEN Unit 组件
反应动力学(两性离子/氨基甲酸盐路径)需按反应包实现用 CORN 类反应包思路或 CAPE-OPEN Unit;动力学形式 k₂=A·exp(−Ea/RT),A、Ea 具体数值须回原始文献核对后再写
非平衡级精馏DWSIM 侧未核实参照 COCO 经验:非平衡级精馏需完整版 ChemSep,COCO 自带的 ChemSep-LITE 为平衡级(上限 40 组分 / 300 级)

1.5 CAPE-OPEN / COBIA:把「缺件」变成「插件」

CAPE-OPEN 由CO-LaN管理,定义「允许 CAPE(计算机辅助过程工程)应用或组件互操作的规则与接口」,提供 Object、Unit、Thermo、Numerical、ESO(Equation Set Object)等接口族,并有新一代COBIA(CAPE-OPEN Binary Interop Architecture)。工业落地案例包括 BASF ProcessNet、Air Liquide、BP、TOTAL,以及 Honeywell UniSim Design 的 CAPE-OPEN Unit Operation socket、VMGSim socket、SuperPro Designer socket、ChemSep 属性包、KBC Petro-SIM/Multiflash(2024 CAPE-OPEN Award)。

引用注意:统一使用https://www.colan.org/;www.cape-open.org本轮抓取失败,不要引用。

位数不匹配是 CAPE-OPEN 集成的典型故障源:COCO 自带 OATS 工具,专门用于 32 位 in-proc 属性包在 64 位客户端中的代理运行与 CAPE-OPEN 通信日志排查。也就是说,如果你的电解质属性包编译成 32 位、而 DWSIM 是 64 位,症状通常不是「加载失败」,而是「加载成功但调用时异常」——这一条在排查时应作为首要怀疑对象。

同类红线延伸:本系列不写 Aspen HYSYS 的 COM ProgID(如HYSYS.Application),因为该 ProgID 未获核实;同理,DWSIM 侧也不要把未核实的MaterialStream/Flowsheet具体类名写死,需要时以官方 User Guide 与本机验证为准。

二、完整代码与逐行剖析

代码 1:pythonnet 调Automation3的最小骨架

环境:Windows + DWSIM 已安装 + Python 3.9+ / pythonnet。
风险声明:pythonnet 调DWSIM.Automation属社区做法,非官方文档。官方仓库存在 Python Link 与 IronPython 控制台组件,但未检索到官方给出的「pythonnet + DWSIM.Automation」逐步示例。因此本脚本只使用官方源码中已核实的方法名,并用「能力探测」代替未核实的类名——绝不写死MaterialStream、Flowsheet等未核实类型。

# 16_1_dwsim_automation.py —— 社区做法骨架(非官方文档)# 环境:Windows + DWSIM 桌面版 + Python 3.9+ / pythonnet# 说明:类名与方法名均取自官方源码 DWSIM.Automation/Automation.cs。# 凡未在该文件中出现过的成员,本脚本一律不调用。importsysimportclr# pythonnetDWSIM_BIN=r"C:\Program Files\DWSIM"# 换成你的安装目录,需在本机验证sys.path.append(DWSIM_BIN)defload_automation3():""" 加载 DWSIM 程序集并实例化 Automation3。 为什么优先 Automation3: Automation2 的 GetMainWindow() 会抛 NotImplementedException; Automation3 还额外提供 AvailablePropertyPackages / AvailableCompounds, 这是审计"缺什么部件"的唯一官方入口。 """clr.AddReference("DWSIM.Automation")# 程序集名以官方仓库为准fromDWSIM.AutomationimportAutomation3returnAutomation3()defaudit_capability(autom):"""能力审计:把可用属性包与化合物列出来落盘。 为什么先审计再建模:开源路线的第一问永远是"缺什么", 而不是"怎么搭"——搭之前先确认电解质模型在不在。"""pkgs=[]try:fornameinautom.AvailablePropertyPackages:pkgs.append(str(name))# 逐项转字符串,避开 COM 对象比较问题exceptExceptionasexc:print(f"AvailablePropertyPackages 读取失败:{exc}")withopen("dwsim_property_packages.txt","w",encoding="utf-8")asfp:fp.write("\n".join(pkgs))print(f"共读取属性包{len(pkgs)}个 -> dwsim_property_packages.txt")returnpkgsdefrun_case(autom,dwxmz_path,out_path,timeout_s=300):""" 加载 -> 计算 -> 保存 的最小闭环。 为什么用 CalculateFlowsheet3 而不是 CalculateFlowsheet2: 带 timeout 参数,能把"卡死"变成"可控失败", 避免批量扫描时一个工况拖死整批任务。 """flowsheet=autom.LoadFlowsheet(dwxmz_path)# 支持 .dwxmz / .dwxml / .xmlautom.CalculateFlowsheet3(flowsheet,timeout_s)# 超时保护autom.SaveFlowsheet2(flowsheet,out_path)# 简化签名的保存returnflowsheetdefmain():autom=load_automation3()pkgs=audit_capability(autom)# 只要找不到电解质相关包,就应停止"直接照搬 Aspen 流程"的打算ifnotany("Electrolyte"inpor"CAPE"inpforpinpkgs):print("警告:未发现电解质/ CAPE-OPEN 属性包,电解质体系需外部补齐")try:run_case(autom,r"D:\cases\mea_base.dwxmz",r"D:\cases\mea_base_out.dwxmz")print("计算与保存完成")finally:# 为什么必须放 finally:DWSIM 进程若未释放资源,下一批次会加载失败autom.ReleaseResources()if__name__=="__main__":main()

反直觉之处:脚本里最值钱的部分是audit_capability,不是run_case。开源路线的失败多数发生在「假设有某个属性包」——先审计、再决定建不建模,能省掉大量返工。

代码 2:缺失部件清单生成器(属性包 → 补齐任务)

环境:Python 3.9+,无第三方依赖。
说明:为便于离线运行,下面的PACKAGES_SEEN取自官方源码Automation.cs的注册列表(截至本次抓取)。上机时应改为由代码 1 的audit_capability()实时返回的结果——清单会随版本变化,必须现场复核。

# 16_2_gap_audit.py —— 从属性包清单推导 MEA 捕集所需的补齐任务# 环境:Python 3.9+,无第三方依赖# 官方源码 DWSIM.Automation/Automation.cs 中出现的属性包(抓取日期 2026-09-12)PACKAGES_SEEN=["PengRobinsonPropertyPackage","SRKPropertyPackage","NRTLPropertyPackage","UNIQUACPropertyPackage","UNIFACPropertyPackage","IdealElectrolytePropertyPackage","GERG2008PropertyPackage","PCSAFT2PropertyPackage","CAPEOPENPropertyPackage",]# MEA 捕集所需的能力 → 判定规则 → 补齐动作REQUIREMENTS=[dict(need="电解质活度系数模型(eNRTL)",hit=lambdaps:any("eNRTL"inpforpinps),fallback="IdealElectrolytePropertyPackage 只提供理想电解质行为",action="自建 eNRTL(见第 13 篇回归流程)并经 CAPE-OPEN Thermo 接口接入"),dict(need="电解质非理想性兜底",hit=lambdaps:any("Electrolyte"inpforpinps),fallback="见 PACKAGES_SEEN 中的 IdealElectrolytePropertyPackage",action="先用 IdealElectrolyte 跑通流程骨架,再替换为严格模型"),dict(need="外部组件挂接能力(属性包/单元操作)",hit=lambdaps:any("CAPEOPEN"inpforpinps),fallback="见 PACKAGES_SEEN 中的 CAPEOPENPropertyPackage(组件名 CAPE-OPEN)",action="确认 32/64 位一致;不一致时用代理运行并用通信日志排查"),]defaudit(pkgs,requirements=REQUIREMENTS):rows=[]forreqinrequirements:ok=req["hit"](pkgs)rows.append((req["need"],"具备"ifokelse"缺失",req["fallback"],req["action"]))returnrowsif__name__=="__main__":rows=audit(PACKAGES_SEEN)w=max(len(r[0])forrinrows)forneed,status,fb,actinrows:print(f"{need:<{w}}[{status}]")ifstatus=="缺失":print(f"{'':<{w}}-> 现状:{fb}")print(f"{'':<{w}}-> 动作:{act}")# 预期输出:第一行"电解质活度系数模型(eNRTL)"判为【缺失】,# 因为注册列表中没有 eNRTL 专用包 —— 这正是本系列的红线结论。

关键点:这里「eNRTL 判为缺失」不是本文的判断,而是官方源码注册列表的客观结果。教程能做的只是把结论落到代码里,让它每次都自动跑一遍——因为版本一升级,结论可能改变,任何人(包括本文)都不该把「DWSIM 不支持 eNRTL」写成永久事实。

代码 3:缺失部件补齐——外部电解质活度服务的最小接口契约

环境:Python 3.9+,仅依赖 numpy。
模型声明:下面的活度系数实现是示意参数的简化式(与第 13 篇同源的局部组成简化),目的不是算准,而是把「外部属性包必须向模拟器返回什么数据」这件事写成可执行的契约。

# 16_3_thermo_contract.py —— CAPE-OPEN Thermo 侧外部属性包的最小数据契约(示意)# 环境:Python 3.9+ / numpyimportnumpyasnpdefln_gamma_local(x_s,tau_sm,tau_ms,alpha=0.2):"""简化局部组成项(示意参数):与第 13 篇代码 1 同源,便于交叉核对。 任何外部属性包至少要做到:给定 T、P、组成,返回每个物种的 ln(gamma)。"""G_sm,G_ms=np.exp(-alpha*tau_sm),np.exp(-alpha*tau_ms)x_m=1.0-x_s t1=x_s**2*tau_sm*(G_sm/(x_m+x_s*G_sm))**2t2=x_m**2*tau_ms*(G_ms/(x_s+x_m*G_ms))**2returnt1+t2defthermo_package_call(T_K,P_Pa,x,params):""" 契约函数:模拟器调用外部属性包时的最小输入/输出。 输入:T_K 温度(K)、P_Pa 压力(Pa)、x 摩尔分数向量、params 参数字典 输出:dict(ln_gamma=各物种 ln(gamma), h_excess=超额焓(J/mol), ok=是否在适用域) 为什么要把 ok 显式返回: 电解质模型都有适用域(浓度、温区)。模拟器在塔内会跑到各种组成, 如果外部包在不适用时静默外推,用户看到的会是"收敛但荒谬"的结果 ——这正是第 15 篇反复出现的失败模式。 """t_lo,t_hi=params["T_range"]x_max=params["x_salt_max"]x_s=float(x[1])# 约定:x[0]=溶剂, x[1]=盐(示意)in_domain=(t_lo<=T_K<=t_hi)and(x_s<=x_max)ln_g=np.array([ln_gamma_local(x_s,params["tau_sm"],params["tau_ms"]),0.0])# 超额焓:示意按 -R T^2 d(ln gamma)/dT 的差分近似给一个量级dT=1.0dln_g_dT=(ln_gamma_local(x_s,params["tau_sm"],params["tau_ms"])-ln_gamma_local(x_s,params["tau_sm"]*0.99,params["tau_ms"]))/dT h_excess=-8.314*T_K**2*dln_g_dTreturndict(ln_gamma=ln_g,h_excess=h_excess,ok=in_domain)if__name__=="__main__":# 示意参数:范围与取值均为占位,必须替换为经核实/自回归的参数(见第 13 篇)params=dict(T_range=(313.15,393.15),x_salt_max=0.45,tau_sm=1.80,tau_ms=-0.60)forTin(333.15,400.00):# 第二个温度故意越界,验证 ok 标志out=thermo_package_call(T,101325.0,np.array([0.75,0.25]),params)print(f"T={T:7.2f}K ok={out['ok']}ln_gamma={np.round(out['ln_gamma'],5)}"f"h_excess={out['h_excess']:.2f}J/mol")# 预期输出:T=333.15 判 ok=True;T=400.00 超出 393.15 判 ok=False

为什么这段值得写:CAPE-OPEN 的价值不是「有个标准」,而是它把「你自建的电解质模型」与「模拟器的求解循环」之间的数据契约固定下来。一旦契约明确(输入 T/P/x、输出 ln γ 与超额焓、外加适用域标志),补齐 eNRTL 就从「改模拟器源码」变成了「写一个插件」——工作量与风险完全不同。

三、常见报错与排查

报错 1:NotImplementedException(调用GetMainWindow)
根因:用了Automation2,其GetMainWindow()未实现。
解法:改用Automation3;Automation3还额外提供AvailablePropertyPackages/AvailableCompounds。

报错 2:属性包加载成功,但一调用就异常
根因:32/64 位不匹配是 CAPE-OPEN 集成的典型故障源——进程外/进程内组件位数与客户端不一致。
解法:核对位数;必要时用代理方式让 32 位 in-proc 属性包在 64 位客户端中运行,并打开 CAPE-OPEN 通信日志排查(COCO 自带的 OATS 工具就是干这个的)。

报错 3:批量保存时报「需要有效会员」
根因:模拟文件含Patreon Edition的额外组件。官方说明是这类组件可自由测试,但保存含这类组件的模拟文件需要有效会员。
解法:把 Patreon 组件从自动化批处理的流程中剥离,或改为核心 GPL-3 组件可表达的结构;批量脚本在SaveFlowsheet2前先做组件清单检查。

报错 4:CalculateFlowsheet2无限期挂住
根因:某个工况不收敛(MEA 吸收塔强耦合时很常见),而该接口没有超时参数。
解法:换CalculateFlowsheet3(flowsheet, timeout_seconds);把失败工况记入日志后跳过,最后统一用第 15 篇的残差诊断方法分析。

报错 5:找不到 eNRTL 属性包,就以为是自己装错了
根因:这不是安装问题。官方源码的属性包注册列表中确实没有 eNRTL。
解法:接受缺口,走「IdealElectrolyte 先跑通骨架 → 自建 eNRTL → CAPE-OPEN 接入」的路线;或在文档中标注「以官方文档为准,本机验证后再定论」。不要写「DWSIM 支持 eNRTL」这类断言。

报错 6:MCP Server 连不上
根因:MCP Server 是 10.2.0 RC10 的新增能力,需以 headless 形态启动并监听默认端口5901。
解法:确认版本线与启动形态(HTTP 还是 stdio、Docker 还是便携包),在本机用Test-NetConnection -ComputerName localhost -Port 5901验证端口可达;具体工具名与调用协议请以官方文档为准,本文不臆造。

四、动手练习

练习 1(能力审计跑一遍)
在本机安装 DWSIM(任一版本线均可),运行代码 1 的audit_capability,把AvailablePropertyPackages与AvailableCompounds的结果落盘,并与代码 2 中的PACKAGES_SEEN做 diff。
成功判据:能列出「本机存在、清单中没有」的属性包名称;若一个都没有差异,请注明你的版本号与抓取日期,作为该清单的时效证据。

练习 2(补齐清单可执行化)
把代码 2 的REQUIREMENTS扩展一项:「速率基吸收塔」,判定规则设为「是否存在与 rate-based 相关的属性包/单元操作」,补齐动作写清你会用哪一条途径(自建模型 / CAPE-OPEN Unit / 换工具)。
成功判据:输出一份三行以上的补齐清单,每行都有「现状 / 动作 / 验证方式」三要素,且验证方式必须是可在本机执行的检查。

练习 3(契约的适用域检查)
修改代码 3 的params["T_range"]与x_salt_max,让它在吸收塔的典型设计区间(经验值:吸收 40–60 ℃)内判为ok=True,在再生侧高温下判为ok=False。
成功判据:能给出两组温度下的ok输出,并解释为什么「静默外推」比「报 ok=False」更危险。

五、小结与下一篇预告

开源路线的第一问不是「怎么搭」,而是「缺什么」。本篇把这件事做成了三条可执行代码:用Automation3的AvailablePropertyPackages做能力审计;用属性包注册列表推导补齐清单(结论是没有 eNRTL 专用包,因此禁止断言 DWSIM 支持 eNRTL);用一份最小数据契约把自建电解质模型封装成可插拔组件。同时把三条红线钉死:DWSIM 版本号必须带抓取日期(v9.0.5 为 2025-10-03、10.2.0 RC10 为 2026-08-15,抓取日期 2026-09-12);pythonnet 调用属社区做法、非官方文档;未核实的类名(MaterialStream、Flowsheet)与 MCP 协议细节一律不写死。

至此,13–16 这四篇「高级」阶段结束:热力学参数能自己回归(第 13 篇)、模型能用中试数据标定(第 14 篇)、不收敛能分级排查(第 15 篇)、开源缺口能列成清单(第 16 篇)。接下来进入实战阶段:第 17 篇把单塔串成从烟气到 CO₂ 产品气的全流程闭环,重点解决循环流股收敛与全流程/单塔 KPI 口径一致性——本篇讲过的CalculateFlowsheet3超时策略、第 15 篇的分阶段初值、第 14 篇的标定对照表,都会在那一步合流。


本篇认知问题回显(FAQ)

Q1:DWSIM 当前版本号是多少,为什么必须标注抓取日期?

A:截至 2026-09-12 抓取:稳定分支 v9.0.5(2025-10-03),10 线为 10.2.0 RC10(2026-08-15),二者必须标注抓取日期。

Q2:DWSIM 的 Automation3 有哪些真实可用的方法与属性?

A:Automation3 的方法有 LoadFlowsheet、CalculateFlowsheet3、CreateFlowsheet、ReleaseResources,另有属性 AvailablePropertyPackages 与 AvailableCompounds;不用 Automation2,因其取主窗口会抛未实现异常。

Q3:DWSIM 属性包里有没有 eNRTL,缺的部件怎么补?

A:DWSIM 属性包里没有 eNRTL 专用包,现有的是 PengRobinson、SRK、NRTL、UNIQUAC、UNIFAC、IdealElectrolyte 等,需自建并经 CAPE-OPEN 接口接入。

Q4:用 pythonnet 调用 DWSIM Automation3 是官方支持的做法吗?

A:不是官方文档做法,属社区做法。官方仓库有 PythonLink 与 IronPython 控制台组件,但未提供 pythonnet 逐步示例,且未核实的类名不得写死。

Q5:CAPE-OPEN 集成时属性包加载成功却调用异常,最可能是什么原因?

A:最可能是 32/64 位不匹配。CAPE-OPEN 跨位数互操作是典型故障源,应核对组件与客户端位数,必要时用代理运行并查看 CAPE-OPEN 通信日志。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询