首页 / 资讯中心 / 文章详情

燃烧后CO2捕集MEA吸收过程模拟教程(13):电解质热力学自定义——eNRTL参数回归与Aspen电解质向导

燃烧后CO2捕集MEA吸收过程模拟教程(13):电解质热力学自定义——eNRTL参数回归与Aspen电解质向导 ★ FEATURED ARTICLE
燃烧后CO2捕集MEA吸收过程模拟教程13电解质热力学自定义——eNRTL参数回归与Aspen电解质向导版本声明块工具/软件Aspen Plus当前 aspenONE 版本引用前需在官网核对本系列不写 Aspen Plus 的数字版本号DWSIM版本号必须带抓取日期见第 16 篇语言/环境Python 3.9依赖 numpy、scipy库版本以本机环境为准本文目标独立完成一次 eNRTL 交互参数的最小二乘回归与残差诊断并说清 Aspen Plus 电解质向导能做什么、不能替你做什么一句话结论eNRTL 的规范引用是Chen Evans (1986)AIChE J. 32, 444–454多组分水溶液推广其前身是 Chen、Britt、Boston、Evans (1982) 的单溶剂完全解离体系工作用scipy.optimize.least_squaresmethodtrf带界做参数回收测试本机实测在 0.1% 相对噪声下两个交互参数回收误差约 0.011 与 0.0003噪声升到 5% 时误差涨到约 0.46 与 0.016——参数可信度对数据精度极其敏感。〇、本篇要解决的认知问题eNRTL 到底该引用哪一篇文献网上流传的「Chen Song 2004」为什么是错的eNRTL 的活度系数由哪几部分构成被回归的参数究竟是哪些量怎么用 Python scipy 对 eNRTL 参数做带界最小二乘回归并判断参数是「可辨识」还是「过拟合」Aspen Plus 电解质向导生成 MEA-H₂O-CO₂ 体系 eNRTL 参数的官方流程是什么为什么本系列不给出具体菜单路径开源侧DWSIM能不能直接替代这条路如果不能缺的是什么一、机制解析1.1 先把引用钉死eNRTL 不是 Chen Song (2004)热力学自定义的第一步不是写代码而是搞清模型谱系。这是本系列反复强调的铁律因为一旦引用错后面所有参数都失去了可追溯性。模型类型特征支点文献eNRTLelectrolyte NRTL活度系数模型γ-φ严格热力学基于「同号离子互斥」与「局部电中性」两个假设1982 年先提出单溶剂、完全解离单电解质体系1986 年推广到多组分水溶液可计算所有物种离子/分子、溶质/溶剂的活度系数Chen 等 (1982)Chen Evans (1986)Kent-Eisenberg / modified Kent-Eisenberg半经验平衡模型用表观平衡常数拟合负载计算快、参数少高负载时精度相对下降Kent Eisenberg (1976) 一系Deshmukh-Mather电解质平衡模型Debye-Hückel 型 相互作用参数文献结论低 CO₂ 分压时比 Kent-Eisenberg 更准Deshmukh Mather (1981)必读纠偏把 eNRTL 写成「Chen Song 2004」是命题错误。Chen Song (2004) 的原文标题是Solubility Modeling with NonRandom Two-Liquid Segment Activity Coefficient ModelIECR 43, 8354–8362即NRTL-SAC 溶解度模型与 eNRTL 不是同一个模型。规范引用请只写Chen Evans (1986)可并列 1982 年原始文献。第 3 篇已经把这三种模型的选型决策树讲完了本篇的任务是当你决定用 eNRTL 之后参数从哪里来、怎么核对、怎么自己回归。1.2 eNRTL 的结构长程项 局部组成项eNRTL 的过量吉布斯能由两块叠加一块是长程静电项离子与离子之间的静电作用决定稀溶液极限行为另一块是局部组成项NRTL 型用G exp(−α·τ)的非随机因子描述局部组成的非理想性。它的独特之处不在数学形式而在两个物理假设同号离子互斥局部组成中中心离子周围排斥同号离子局部电中性任一点附近的局部区域近似电中性。这两条假设把「分子-分子」「分子-离子」「离子-离子」三类配对的 τ 定义捆绑在一起使得离子-离子对参数并不是自由参数而可以由分子-离子对参数导出。这正是 eNRTL 比「普通 NRTL 一堆自由参数」更可用的原因参数少、可辨识性高。Aspen 侧的温度外推形式Aspen 中平衡常数温度依赖写成ln K(T) a b/T c·lnT d·T这四项对应「常数项 / 焓项 / 熵项 / 热容项」。工程上要注意d·T项在窄温区内几乎不可辨识例如吸收侧 40–60 ℃ 这类典型设计区间属经验区间跨度太小如果拿一个窄温区的数据去回归四项回归器会把误差在四项之间乱分。这是新手最常见的过拟合来源之一。1.3 回归流程与「参数从哪里来」┌──────────────────────┐ 公开/自有 │ VLE / 溶解度 / 热量 │ 注意必须记录 T、P、总浓度、 实验数据 → │ 数据带工况与出处│ 物种存在形式、分析误差 └──────────┬───────────┘ v ┌──────────────────────┐ │ 物种与反应集确定 │ MEA-H2O-CO2 体系含 MEACOO-、 │ 真物种 vs 表观物种 │ HCO3- 等见底账 [C5] 的平衡反应式 └──────────┬───────────┘ v ┌──────────────────────┐ │ 参数分组哪些回归、 │ 长程项参数固定离子-离子对参数 │ 哪些固定防止耦合 │ 由分子-离子对导出不独立回归 └──────────┬───────────┘ v ┌──────────────────────┐ │ 加权目标函数 │ 权重按测量误差方差的倒数1/σ² │ Σ w_i (y_calc - y_exp)²│ CO2 分压跨越数量级时必须用对数残差 └──────────┬───────────┘ v ┌──────────────────────┐ │ 残差诊断 可辨识性 │ 看 Jacobian 奇异值、参数相关系数矩阵 └──────────┬───────────┘ v ┌──────────────────────┐ │ 交叉验证留一/留组 │ 验证的不是拟合优度而是外推能力 └──────────────────────┘参数从哪里来只有三条合法路径文献已发表参数集例如针对 MEA-H₂O-CO₂ 的 eNRTL VLE 对比研究[C2]——最省事但必须核对温区、浓度区间、物种集是否与你的模型一致Aspen Plus 电解质向导生成——注意官方步骤文档需 AspenTech 授权账号底账附录 A 第 2 条明确列为「本轮未覆盖」本文只讲清它与回归的关系不给具体菜单路径避免臆造自己回归——数据必须是你手上有的、带出处的数据本文的代码用「参数回收测试」来演示流程先设定已知参数生成数据再回归回去这样既能跑通代码又不会伪造任何真实物性数据。最新进展可以补一句2024 年AIChE Journal有 modified eNRTL 含过量焓解析式的工作用于 MEA-H₂O-CO₂ 体系可作为「最新进展」引用但它是变体而非基线模型。1.4 边界DWSIM 走不了同一条路DWSIM 的自动化属性包注册表中出现的是NRTLPropertyPackage、UNIQUACPropertyPackage、UNIFACPropertyPackage、IdealElectrolytePropertyPackage、CAPEOPENPropertyPackage组件名 “CAPE-OPEN”等没有 eNRTL 专用包。因此禁止断言「DWSIM 支持 eNRTL」要在开源侧做电解质热力学只能走「CAPE-OPEN 接入外部电解质包」这条不轻松的路第 16 篇展开。二、完整代码与逐行剖析代码 1eNRTL 局部组成项的教学简化实现示意参数环境Python 3.9仅依赖 numpy。重要声明下面的函数不是Chen Evans (1986) 的完整式。它把 1:1 电解质当作「盐伪组分」再套标准二元 NRTL 局部组成式目的是让读者看清「τ 如何进入活度系数、为什么可以被回归」。eNRTL 与它的差别恰恰是那两个假设同号离子互斥、局部电中性——所以本函数只能用于回归流程演练不得用于定量预测任何真实体系。# enrtl_demo.py —— eNRTL 风格局部组成项的简化实现教学用非完整 eNRTL# 环境Python 3.9 / numpy。无其他依赖。importnumpyasnpdefgamma_local_nrtl(x_s,tau_sm,tau_ms,alpha0.2): 标准二元 NRTL 局部组成项把「盐」当成一个伪组分 s溶剂记为 m。 为什么这样写 - NRTL 的核心是 G exp(-alpha * tau)tau 是无量纲交互能alpha 是非随机因子。 - alpha 固定、只回归 tau是电解质参数估计中的常见做法减少参数相关性、 提高可辨识性。这里取 0.2 是**示意值**实际取值必须以 Chen Evans (1986) 原文与所用软件的数据表为准。 - x_s 是「盐」的摩尔分数按表观摩尔量计。 G_smnp.exp(-alpha*tau_sm)# 盐 - 溶剂 方向的非随机因子G_msnp.exp(-alpha*tau_ms)# 溶剂 - 盐 方向x_m1.0-x_s# 二元体系溶剂摩尔分数由归一化得到# 标准二元 NRTL 的 ln gamma 表达式两项分别来自两个方向的局部组成修正term1x_s**2*tau_sm*(G_sm/(x_mx_s*G_sm))**2term2x_m**2*tau_ms*(G_ms/(x_sx_m*G_ms))**2returnterm1term2# 返回溶剂MEA 或水的 ln gamma 局部项defln_gamma_solvent(x_s,tau_sm,tau_ms,ln_gamma_lr0.0): 溶剂总活度系数 长程项 局部组成项。 这里的长程项用参数 ln_gamma_lr 简化传入真实实现需要按离子强度逐点计算 这样拆分是为了让读者看到回归的只是局部项的 tau长程项通常固定不回归。 returnln_gamma_lrgamma_local_nrtl(x_s,tau_sm,tau_ms)if__name____main__:# 演示固定一对 tau扫描盐浓度观察 ln gamma 的形态tau_sm,tau_ms1.8,-0.6print(f{x_s:6}{ln_gamma_local:16})forx_sinnp.linspace(0.01,0.40,8):valgamma_local_nrtl(x_s,tau_sm,tau_ms)print(f{x_s:6.3f}{val:16.6f})# 预期输出本机实测x_s0.010~0.400# ln_gamma_local 由 -0.589 单调上升到 -0.056# 即随盐浓度增大而上升量级 1e-1注意此处为负值说明局部组成项# 在该示意参数下整体拉低了溶剂的活度系数反直觉默认值提示alpha0.2看起来像个无关紧要的常数但它决定了 τ 的可辨识性。α 越大Gexp(−ατ)对 τ 越敏感回归越容易收敛但数值越刚性α 越小不同 τ 组合给出的曲线越接近回归越容易「飘」。所以固定 α 再回归 τ是数值上更稳的选择不是偷懒。代码 2带界最小二乘回归 参数回收测试numpy / scipy环境Python 3.9依赖 numpy、scipy。数据来源说明本段不引用任何真实实验数据而是用「已知真值参数 → 生成伪 VLE 数据 → 加噪 → 回归」的参数回收测试验证流程。这是参数估计中最标准的自检手段如果连自己造的数据都回收不回来就不要拿真实数据去回归。# enrtl_regress.py —— eNRTL 风格交互参数的最小二乘回归 可辨识性诊断# 环境Python 3.9 / numpy / scipyimportnumpyasnpfromscipy.optimizeimportleast_squares# ---------- 1) 前向模型与代码 1 保持同一套简化式 ----------def_ln_gamma_local(x_s,tau_sm,tau_ms,alpha0.2):G_smnp.exp(-alpha*tau_sm)G_msnp.exp(-alpha*tau_ms)x_m1.0-x_s t1x_s**2*tau_sm*(G_sm/(x_mx_s*G_sm))**2t2x_m**2*tau_ms*(G_ms/(x_sx_m*G_ms))**2returnt1t2defpseudo_observable(x_s,tau_sm,tau_ms): 把 ln gamma 映射成一个「类 VLE 观测量」。 为什么不做真实 VLE真实 p_CO2 还需要亨利常数与化学反应平衡 那部分不属于本篇属第 7 篇动力学与反应平衡的范围。 这里只用单调映射保证回归问题结构与真实回归一致 观测量 1 ln gamma相当于把活度系数按理想溶液归一化后的相对偏离。 return1.0_ln_gamma_local(np.asarray(x_s,float),tau_sm,tau_ms)# ---------- 2) 造「伪数据」先定真值再加指定水平的相对噪声 ----------rngnp.random.default_rng(20260912)# 固定随机种子保证可复现TAU_TRUEnp.array([1.80,-0.60])# 真值参数示意值非真实体系参数x_expnp.linspace(0.02,0.38,25)# 25 个「实验点」的盐摩尔分数NOISE0.01# 1% 相对噪声对应较好的分析精度y_cleanpseudo_observable(x_exp,*TAU_TRUE)y_expy_clean*(1.0NOISE*rng.standard_normal(x_exp.size))# ---------- 3) 目标函数残差向量least_squares 需要返回残差本身 ----------defresiduals(tau):returnpseudo_observable(x_exp,tau[0],tau[1])-y_exp# ---------- 4) 带界回归 ----------# 为什么必须用 methodtrflevenberg-marquardt 不支持 bounds只有 trf/dogbox 支持。# 为什么要给界tau 的物理量级通常是有界的几十以内无界回归极易跑到# 无物理意义的解上去例如 |tau| 50 对应几百 kJ/mol 的交互能不成立。resultleast_squares(residuals,x0np.array([1.0,0.0]),# 初值从「接近理想」出发是电解质回归的安全起点bounds([-10.0,-10.0],[10.0,10.0]),methodtrf,xtol1e-12,ftol1e-12,gtol1e-12,)tau_hatresult.xprint(回归结果,np.round(tau_hat,4), 真值,TAU_TRUE)print(参数回收误差,np.round(np.abs(tau_hat-TAU_TRUE),4))print(f残差平方和 {result.cost*2:.6e}迭代次数 {result.nfev})# ---------- 5) 可辨识性诊断看 Jacobian 的奇异值 ----------# 为什么看奇异值least_squares 的 jac 是 d(残差)/d(参数) 的矩阵。# 如果最小奇异值远小于最大奇异值条件数很大说明参数方向「几乎不可分辨」# 此时即使拟合优度很好参数也是不可信的。Jresult.jac svnp.linalg.svd(J,compute_uvFalse)print(Jacobian 奇异值 ,np.round(sv,4))print(f条件数 {sv[0]/sv[-1]:.2f}1e3 提示参数强相关需固定其中一个)# 预期输出本机实测随机种子 20260912NOISE1%# 回归结果[1.6918 -0.5969] 真值[1.80 -0.60]# 参数回收误差[0.1082 0.0031]# Jacobian 奇异值条件数 41.26残差平方和 4.993e-04# 反直觉1% 的测量噪声就让 tau_sm 偏了 0.108约真值的 6%而 tau_ms 几乎不动。# 这说明哪个参数更可信取决于观测量对它的灵敏度不能一概而论# 也不能只看条件数——条件数 41 看起来很健康但 tau_sm 已经不精确了。逐段剖析第 2 段把随机种子固定成20260912是为了让「参数回收误差」这个判据可复现否则同一份代码每次跑出的误差不同无法作为验收标准。第 4 段的x0 [1.0, 0.0]是非随机因子式初值τ1 量级对应约 2.5 kJ/mol 的交互能接近理想溶液从理想出发再让回归器往外走比从随机初值出发更少陷入局部极小。第 5 段是新手最容易跳过、但最重要的一步。拟合残差小 ≠ 参数可信。判断可信度看的是 Jacobian 奇异值或参数相关系数矩阵这和第 14 篇用交叉验证判过拟合是同一件事的两种表述。代码 3Aspen COM 侧——不做「硬编码路径」先做路径考古环境Windows 本机已安装 Aspen Plus 桌面版 Pythonpywin32。风险声明Apwn.Document、InitFromArchive2、Tree.FindNode、Node.Value、Engine.Run2()、Reinit、SuppressDialogs、Application.Export(code, filename)均来自第三方可运行实现与官方示例佐证属第三方示例随作者更新可能失效Export的代码含义以《Aspen Plus User Guide》第 38 章需账号为准。带版本后缀的 ProgID如Apwn.Document.37.0未获官方确认需在本机验证。# aspen_path_archaeology.py —— 电解质/物性相关节点的路径考古脚本# 环境Windows Aspen Plus 桌面版已安装 pywin32# 说明物性方法相关节点的树路径名未在权威源核实因此本脚本不硬编码# 而是「先探测、再打印、由人确认」把路径写进配置后复用。importwin32com.clientaswin32 PROGIDApwn.Document# 第三方实现常用 ProgID需在本机验证ARCHIVErD:\cases\mea_absorber.apw# 换成你自己的 .apw / .bkp# 候选路径清单只放两类——# (a) 已被权威/第三方代码证据确认存在的路径Streams/Blocks# (b) 你从 Aspen GUI 里「抄」下来的路径物性/电解质相关节点请自己补。# 为什么这么做接口随版本演进会迁移硬编码路径在升级后必断# 把路径当配置项、用存在性探测兜底是脚本长期可用性的关键。CANDIDATE_PATHS[r\Data\Streams\FEED\Input\TOTFLOW,# 已验证示例改流量r\Data\Blocks\B1\Input\BASIS_RR,# 已验证示例改精馏/分离设定# r\Data\Properties\..., # -- 物性/电解质参数节点请从 GUI 抄录后填入]defprobe(app,path):探测单个路径是否存在不存在返回 None 而不是抛异常。try:nodeapp.Tree.FindNode(path)exceptExceptionasexc:# COM 在路径非法时可能直接抛错print(f [异常]{path}-{exc})returnNonereturnnodedefmain():appwin32.gencache.EnsureDispatch(PROGID)# 生成类型库包装提速后续调用app.InitFromArchive2(ARCHIVE)# 从 .apw 启动仿真app.VisibleFalse# 关界面可提速app.SuppressDialogsTrue# 批量脚本必须否则收敛弹窗会挂死脚本print( 路径考古 )inventory{}forpinCANDIDATE_PATHS:nodeprobe(app,p)oknodeisnotNoneinventory[p](OKifokelseMISSING)print(f{OK ifokelseMISS}{p})# 把探针结果落盘便于版本升级前后做 diff路径消失 需要迁移withopen(node_inventory.csv,w,encodingutf-8)asfp:fp.write(path,status\n)forp,sininventory.items():fp.write(f{p},{s}\n)# 只对探测成功的节点写值避免在错误路径上静默失败nodeprobe(app,CANDIDATE_PATHS[0])ifnodeisnotNone:node.Value100.0# 例如把进料总量设为 100# 重置 运行两种写法在不同封装/版本中都被使用过这里做「容错双写」# 为什么双写权威证据里 Application.Run2() 与 Application.Engine.Run2() 并存# 不存在唯一正确的写法脚本应当自适应而不是假设一种。try:app.Reinit()exceptExceptionasexc:print(fReinit 失败不同封装差异{exc})ranFalseforcallin(lambda:app.Engine.Run2(),lambda:app.Run2()):try:call()ranTruebreakexceptExceptionasexc:print(f Run2 变体失败{exc})print(运行发起成功ifranelse两种 Run2 写法都失败请查版本与接口文档)# 导出代码含义以《Aspen Plus User Guide》第 38 章为准需账号# 这里演示 .inp代码 4的写法输出可用于外部工具复核物性参数表try:app.Export(4,rD:\cases\mea_absorber.inp)print(已导出 .inp请打开核对电解质参数表是否被完整写出)exceptExceptionasexc:print(fExport 失败{exc})app.Quit()ifhasattr(app,Quit)elseNone# 不同封装退出方法名未核实做存在性保护if__name____main__:main()这一段真正的知识点不是 API而是工程态度物性/电解质节点的树路径在权威源中没有核实所以脚本不写死它而是「探测 → 落盘 → 人工确认 → 写回配置」。升级 Aspen 版本后重跑一次探针把node_inventory.csv与旧版做 diff就能在几秒内定位迁移断点而不是等到批量扫描跑到第 30 个工况才崩。三、常见报错与排查报错 1ValueError: Method lm doesnt support bounds.根因least_squares的默认方法lmLevenberg-Marquardt不支持边界约束。解法显式写methodtrf。带界回归在电解质参数估计里几乎是必需的因为 τ 有物理量级上限。报错 2回归出的 τ 量级荒谬|τ| 20根因有三种按概率排序(a) 把长程项参数与局部项参数一起回归二者强相关(b) CO₂ 分压这类跨数量级的观测量没取对数大值点完全主导残差© 数据温区太窄而仍在回归d·T项。解法固定长程项 → 改用对数残差 → 把温度依赖降阶先只回归a再加b/T。报错 3Aspen 提示某对组分缺少物性参数根因电解质向导没有为「分子-离子」或「离子-离子」对生成参数或者你手动删掉了某些对。解法先确认体系物种集是否完整MEA-H₂O-CO₂ 需要 MEACOO⁻、HCO₃⁻ 等见第 3 篇的物种清单再交给向导重新生成不要手工给离子-离子对填自由值——eNRTL 的设计就是让它们由分子-离子对导出。报错 4Tree.FindNode(path)返回None但脚本没报错根因COM 在路径不存在时返回None而非抛异常于是「静默失败」——你以为改了参数其实什么都没改。解法所有FindNode之后立即做if node is None: raise或直接采用代码 3 的探针模式并落盘比对。报错 5与实验 VLE 存在系统性偏差且残差随负载单调漂移根因这不是参数问题是模型结构问题——常见于体系里存在未纳入的反应路径例如只建了氨基甲酸盐路径未纳入 CO₂ OH⁻ → HCO₃⁻ 的水合路径。解法先查物种子集与反应集再谈回归。参数回归永远修不好一个结构错误的模型这一点在第 7 篇动力学、第 14 篇标定会反复出现。四、动手练习练习 1参数回收的噪声敏感性把代码 2 的NOISE依次设为 0.001、0.01、0.05各跑一次记录三组「参数回收误差」与「Jacobian 条件数」。成功判据本机实测基线噪声 0.001 时tau_sm回收误差约 0.0110.01 时约 0.1080.05 时约 0.462——误差放大约 40 倍而 Jacobian 条件数反而从 45.1 降到 30.7。能解释「为什么条件数没有随数据变差而恶化误差却涨了 40 倍」说明你真正理解了拟合优度、条件数与参数可信度是三个不同的东西。练习 2温度依赖的可辨识性把前向模型改成tau_sm a b/TT 取 313.15 K 与 333.15 K 两组跨度 20 K回归a、b。成功判据b的回收误差与a相比显著更大通常大 3~10 倍条件数上升到 1e2 以上。这个练习让你亲手摸到 1.2 节那个结论窄温区回归高阶温度项是过拟合。练习 3本机路径考古在你能访问 Aspen Plus 的机器上跑代码 3把CANDIDATE_PATHS里注释掉的物性节点补全从 GUI 抄路径生成node_inventory.csv。成功判据node_inventory.csv中至少一条物性/电解质相关路径为OK且你能说清这条路径对应的是哪一类参数交互参数 / 平衡常数 / 传递物性。若本机无 Aspen Plus务必在记录中标明「未验证」不要凭记忆填写路径。五、小结与下一篇预告本篇把 eNRTL 从「一个模型名」落成了「一条可追溯的参数链」引用固定在 Chen Evans (1986)参数来源只有文献参数集 / 电解质向导 / 自己回归三条路判断参数可信度看 Jacobian 奇异值与交叉验证而不是看残差平方和Aspen 侧的实际困难是节点路径会随版本迁移——用探针脚本管理而不是硬编码。但到目前为止我们回归用的都是自己造的伪数据。参数好不好最终要拿真实中试数据说话。下一篇第 14 篇转向中试数据标定用 TCM 公开出版物集与 CCSI 报告中被 NCCCWilsonville, Alabama中试整定过的数据建立「数据清洗 → 稳态筛选 → 参数选择 → 误差度量 → 交叉验证」的完整闭环并给出 TCM MEA 基线 SRD 从 4.10 到 3.62 GJ/t 的标定对照表。第 3 篇建立的模型选型、第 7 篇的动力学参数不确定度都会在这条标定链上重新出现。本篇认知问题回显FAQQ1eNRTL 模型的标准文献引用是 Chen Evans (1986) 还是 Chen Song 2004AeNRTL 的规范引用是 Chen Evans (1986)Chen Song (2004) 则是 NRTL-SAC 溶解度模型两者不是同一个模型不能互相替代。Q2eNRTL 的活度系数由哪几部分构成被回归的参数是什么AeNRTL 活度系数由长程静电项与局部组成NRTL 型项叠加回归的是局部项交互参数 τ离子-离子对参数由分子-离子对导出不独立回归。Q3怎么用 scipy 对 eNRTL 参数做带界回归并判断参数可辨识而不是过拟合A用 scipy 的 least_squares 并把 method 设为 trf给 τ 加物理上界再查 Jacobian 条件数超 1e3 说明参数强相关、不可辨识。Q4Aspen Plus 电解质向导生成 MEA-H2O-CO2 的 eNRTL 参数有官方步骤文档吗A有但官方步骤文档需 AspenTech 授权账号才能获取本文不臆造菜单路径工程上应先确认物种集完整再让向导生成参数。Q5DWSIM 能直接替代 Aspen 做 eNRTL 电解质热力学吗A不能。DWSIM 属性包注册表有 NRTL、UNIQUAC、UNIFAC、IdealElectrolyte、CAPEOPEN无 eNRTL 专用包不能断言其支持 eNRTL。
阅读完成 · 觉得有帮助?
咨询建站