Hysys Recycle模块与物流撕裂技巧
本文主要是对Hysys 8.8/9.0 的新版说明文档中Recycle模块的翻译,加入了一些个人理解。
本文的内容仅供参考,若有错误,你打我啊=w=(告诉我也行)。
稳定而高效地求解循环物流的能力,对任一流程模拟器来说都至关重要。在这一方面,Hysys相对其他模拟软件具有先天优势。Hysys中能够以非序贯的方式对部分单元模型进行反向计算,可以明确地解决部分循环物流,例如,你可以通过换热器的出口物流参数计算该单元的进料物流。而当下游物流与上游物流出现了混合时,则需要使用Recycle单元。
大多数情况下,对于换热和压力变化模块是可以通过下游物料计算上游组成的。但也有例外的情况,比如上游的温度是一个已知值,下游虽然是初值,但其状态也是可变的时(多见于塔器热回收)此时与其依靠你想计算+Adjust,不如使用Recycle。
Recycle是流程中的一个概念模块。该模块允许物料参数从入口到出口(forward),或是从出口到入口(backward)进行传递。在问题求解的角度上,也就是确定两个物流中,哪个作为假定而哪个作为计算值。如果用户选择从入口到出口作为温度变量的传送方向,则假定值是入口温度,而计算值是出口温度。(上面的假定值和计算值是数值方法中的概念,在这里主要是只解Recycle所内含的非线性方程时所使用的迭代算法中所用的概念。下文将会有所涉及。)
Hysys将遵循下列步骤对Recycle进行计算:
- Hysys使用假定值计算Recycle模块附近的流程;
- 完成计算后,Hysys会提取连接到Recycle的物流的参数,将假定值与计算值进行对比;
- 根据计算值和假定值的差异,Hysys会生成下一次计算的所用的假定值;
- 当假定值与计算值的差异小于容差(tolerance)时,计算结束。
注意:使用循环建议(Recycle Adviser)可以减少流程中的Recycle模块数量,并将Recycle模块调整到最适合进行物流撕裂的位置。该功能不单单调整了物流撕裂的位置,也优化了各个Recycle的计算顺序。
- Property View 属性总览 选项卡
项目 | 描述 |
---|---|
Continue按钮 | 当循环迭代计算达到限制的次数后,点击该按钮可以继续进行迭代计算。 |
+ Connection Tab 物流连接
物流连接 选项卡里包含了两组页面:
- Connections 物流连接
一般状况下都用图形界面完成连接的吧...
- Notes 笔记界面
一个好的模拟应该要让后面的人看懂,嗯...
具体的连接方式在这里就不详细翻译了。
但还是要提示一点,连接页面中的Fluid Package(物性包)会影响Recycle模块推算下一个假定物流。如果上下游出现物性差异,请确定这里的选择是否合适。
- Parameters Tab 参数 选项卡
参数选项卡包含了下面两组页面:
- Variables 变量设置
- Numerical 数值方法设置
如果安装了Hysys petroleum Refining还会多一个收敛(Convergence)页面。对不起我没有
+ Variable Pages 变量设置 界面
Hysys允许您为列出的每个变量和组件设置收敛指标。 此处输入的灵敏度(sensitivity)实际上充当Hysys内部收敛容差的倍率。看例子呗
下表中是各个参数的内置容差,除了流量是相对差,其他参数均使用绝对差。
变量类型 | 内置容差 |
---|---|
气相比率 Vapour Fraction | 0.01 |
温度 Temperature | 0.01 |
压力 Pressure | 0.01 |
流量 Flow | 0.001 |
焓 Enthalpy | 1.00 |
组分 Composition | 0.0001 |
熵 Entropy | 0.01 |
注意:在乘以灵敏度(默认为10)以后,气相比率的内置容差为0.1,看起来过于宽容。然而,在大多数情况下,如果其他的变量均已收敛,则Recycle两侧物流的相态一致。对于近沸点(露点/泡点)的体系而言,由于其他参数的细微变化就会引起气相比率的剧变,宽容的气相比率会有助于收敛的进行。
例如,温度内置容差为0.01,默认乘以10(灵敏度),因此回收收敛算法使用的绝对容差为0.01 * 10 = 0.1。因此,如果Recycle要收敛,假定温度和计算温度必须之差在0.1℃之内(℃是内部单位。在执行计算之前,Hysys总是将输入值转换为内部单位)。
灵敏度=10(默认)是正常的,建议用于常见的计算。 小于10的值更严格,也就是说,乘数越小,收敛宽容度越小。
注意:无需把各个参数的倍率(灵敏度)设置为同一数值。若你对关键组分的要求是ppm级别,你可以只把该组份的倍率调少。ppm级别的话,至少要在0.001以下
Transfer Direction(传递方向)列允许你设置参数的传递方向。其中有三种选项:
- 不传递 not to transfer
- 向前传递 transfer forward
- 往后传递 transfer backward
如果您只想传递部分物流变量,则可以使用未转移选项。 例如,如果您只想传递P、T、组分和流量,则其他变量可以设置为“not to transfer”。
若你勾选了部分步进(Take Partial Steps)复选框后,只要能传递的变量足够Recycle进行计算的,Recycle就会进行计算;反之,Recycle会等待所有变量都计算结束后才进行下一个迭代循环的计算。默认情况下,复选框是没有勾选的。
除了能收敛基本物性外,Recycle还能对各个组分在设定容差下进行迭代。循环物流的物流会自动添加到Recycle的计算逻辑中。若勾选了使用组分灵敏度(Use Component Sensitive)复选框时,Recycle会使用单独组分的灵敏度会覆盖整体的灵敏度进行计算。默认情况下,该复选框不会被勾选。 选择使用组分灵敏度后,各个组分的灵敏度会在列表中列出。默认的组分灵敏度为10.00。你所做的每一个变动都会被记录。
+ Numerical Page 数值方法设置 页面
数值方法设置页面包含了Wegstein加速方式(Wegstein Acceleration Method)的各种选项。Recycle会根据设置修改参数的传递方式,而非直接替换。
下表列出了数值方法设置的参数:
参数 | 描述 |
---|---|
计算模式 Calculation Mode |
嵌套 Nested:使用嵌套模式后,当求解器计算到Recycle模块时,才进行Recycle的计算。如果流程中有多个不相连的Recycle,可使用嵌套模式。 同时 Simultaneous:所有设置为同时模式的Recycle会在循环物流(计算端)计算结束后被唤醒。如果流程中有多个相连的Recycle,使用同时模式。 |
加速方式 Acceleration Method |
Wegstein:忽略被加速的变量之间的关系。 主导特征值 Dominant Eigenvalue:包含被加速变量之间的关系。进而,该模式更适用于物系非理想度高或有强烈相互作用的情况下 |
迭代限制 Maximum Iteration | Recycle自动停止前可进行的最大的迭代次数。你可以点击Continue按钮以继续计算。 |
闪蒸计算方式 Flash Type | Recycle计算假定物流所使用的闪蒸方式。 |
Wegstein 参数 Wegstein Parameters |
加速频率 Acceleration Frequency:为Recycle设定两次应用变量加速的间隔(数值越小加速次数更多) 松弛系数上限 Q Maximum:加速时所用的松弛系数上限。(默认0,最大1)。 松弛系数下限 Q Minimum: 加速时所用的松弛系数的下限。(默认-20) 加速延时 Acceleration Delay:为Recycle设定收敛运行多少次后才开始引入加速。 |
颗粒大小分布 PSD Properties | 颗粒大小分布Practicle size distribution - 要使流股数据中包含PSD,组分表中必须含有颗粒物。一般不会用到...
|
这里我调整了一下内容的顺序,先解释下各种功能的作用,再说明小细节。
* 收敛次数上限 Maximum Number of Iterations
当Hysys达到最大迭代次数时,弹出一个警告窗口,说明Recycle在给定的迭代次数内为收敛。您可以选择是否继续计算。
如果你建立了一个新流程,我们建议你是用一个较少的迭代次数上限,比如3。若计算十分顺利,可以提升迭代次数上限。所需的迭代次数不单单受流程的复杂度影响,迭代开始时是用的初值也会影响到迭代的次数。
* 松弛因子 Damping Factors - Qmax and Qmin
在进行迭代收敛时,会使用Wegstein加速来产生下一步计算的假定值。估算值的计算方法如下:
其中:
- X:假定值
- Y:计算值
- n:迭代次数
- Q:松弛因子
Hysys会根据持续迭代的结果确认使用的松弛因子Q
的大小。用户设定的Qmax和Qmin则设定了松弛因子的上下限。注意当Q=0时,系统会使用直接迭代;当Q<0时则使用加速;当1>Q>0,则处于松弛状态。
注意:如果您发现Recycle在振荡迭代,同时数个迭代都使用了直接迭代,此时可以将Qmax设置为一个更大的数值,此时每次循环的步进更为保守
。
* 加速频率 Acceleration Frequency
原文是 迭代计数(iteration count) 但是按照文意来说应该是Acceleration Frequency。
实际上迭代计数所代表的是本次迭代实际执行的次数。
加速频率规定了两次迭代加速之间进行了多少步迭代。默认次数为3;在3次迭代后(假定迭代延时小于3),Recycle会使用Wegstein加速法结合假定值和计算值计算下一步迭代所使用的假定值。若下一步迭代无需使用加速(比如加速延时内的任意一次迭代),则将本次的计算值直接作为下一步的假定值。
要注意加速延迟优先于迭代频率,即若加速延迟的值为x,前x次迭代均采用直接迭代,无论迭代频率是否小于x。而第x+1次则会应用迭代加速。
虽然加速迭代对大多数问题都有好的效果,但在某些情况下,可能导致过校正、振荡、甚至不收敛。 比如高敏感度循环过程,或存在多个强相互作用的循环的流程。 在这些情况下,直接迭代可能是最佳方法。 要避免使用加速迭代,只需将加速频率(或加速延迟)设置为无法达到的数值(例如100)。 在罕见的情况下,直接迭代也无法达到收敛,此时需要调节$Q_{max}$
和$Q_{min}$
来实现松弛迭代。
* 加速延迟 Acceleration Delay
加速延迟将加速迭代的引入推迟到所设定迭代步数后。 该延迟只适用于迭代开始后的几步迭代,当迭代计数超过迭代延迟后,迭代频率将起效。 也就是说,在达到延迟值之前不执行加速,并且在延迟之后,根据迭代频率施加加速。 迭代延迟的默认值为2。 例如,如果“delay”设置为5,迭代计数为3,则前5次迭代使用直接替换,第6次使用加速,然后在每第三次迭代后应用加速。
终于能把注意点搬下来了。
对于Recycle还需要注意下列几点:
- 若Recycle不能在给定的迭代次数内收敛,Hysys将停止计算。 如果你确定该流程能在更多步骤下收敛,请点击Continue按钮。Recycle将初始化迭代计数器,并继续计算,直到找到一个解或者再次到达迭代上限。
- 如果流程没有在合理的迭代次数内收敛,在你的流程存在限制条件,使流程无法收敛。比如,一股循环物流的流量不断增长,这很可能是流程没有足够的出口使所有进入的物料流出。 一种实例是在工厂中,使用低压天然气冷却制备液体产品和不凝气的过程。若单纯通过液体循环来洗脱,丙烷和丁烷会无法移出系统,此时它们循环物流中积累。另一种情况是,容差过于严格,一个或多个变量无法达到条件。 这可以容易地通过检查收敛历史,从中比较未收敛的偏差和容差结果来确定。
注意:Monitor Tab(监视 选项卡)提供了记录收敛历史的功能。所以后面几个选项卡我都不会翻译了 =w=
- 逻辑操作(例如Recycle,Adjust和Controller)与其他操作不同,因为这些操作修改了物流的设定。 因此,如果你删除这些操作,被修改的物流设定仍会被保存。可以说,这些操作都不会被流程“遗忘”。但这些操作也会触发Recycle进行计算。 如果要进行流程图修改,但不想调用Recycle,可以将Recycle删除或Ignore。
- 容差设置对于对Recycle的成功收敛相当重要。 尤其是流程中存在多个Recycle时。 如果这些Recycle没有相互作用,或它们相互连接并同时求解,则对于所有Recycle可使用统一的容差。 但是,如果Recycle是相互嵌套的,从外到内容差应该越来越严格。 没有这种预防措施,外部Recycle可能不会收敛。
Monitor Tab 和 User Variable这两个就不在这写了,这两个基本上跟大多模块都一样呢。
倒是日后有空写个UV的使用教程。
- Calculation 计算
HYSYS提供了一种非常简单的解决循环问题的方法,并通过界面为用户提供了对求解过程的全面控制和反馈。
注意:在动态模拟(Dynamic mode)中,所有Recycle将会被忽略,此时模块的出入口物流参数一致。
当单个Recycle被设置时,它代表了一股被撕裂的循环物流。多个Recycle则代表了多股循环物流,这些循环物流可以是相连的、嵌套的或两者俱备的。与多个Adjust相似,Recycle可以根据设置对多个循环流进行同时求解。
设置Recycle的过程如下:
- 估计连接到Recycle的物流的参数(温度、压力、流量、组成)。流量的值可以是0,但为了更快收敛,应给出一个估算值。
注意:如果Recycle是连接到塔器中,必须给出估算值,确保塔器先收敛。
比较简单的确定冷凝/再沸量的技巧是,手算一次全塔的进出物料平衡,这样可以得出各个物流的大体流量;然后通过Hysys估算各个物流的热焓,可以计算大概的塔顶冷凝量/再沸量。
- 构建你的流程,直到循环流的另一侧的计算值可以由Hysys确定。
注意:Recycle的进出口物流的名称必须不同。
- 创建Recycle模块。
提示两点:
- Recycle中物流参数传递的设定,最好与使用假定值的物流的设定集一致。比如物流使用的是T-P-F-x(温度、压力、流量、组成)来定义的话,Recycle中相应要传递上述参数中的一种或数种。具体根据循环中的设备来选择,比如,循环中有精馏塔,则应该全部选上;如果循环中只有压缩机/换热器,那么只需传递T-P。
- 根据你的传递方式选择合适的闪蒸方式。比如上游是换热,而且出现相变的话,选择P-H闪蒸会比较合适。选择方法请看化工热力学(口胡)
- 这条并不存在。有时候加上Vapour Fraction的传递并不有害,嗯。
- 最讨厌别人说个不停=w=。
- 缩短收敛时间的建议
循环流股的撕裂位置对Recycle的求解至关重要。尽管看上撕裂流股就应该是循环流股,但实际上在循环中的任意一股物流都能被撕裂。对于复杂流程模拟而言,必须考虑一些因素,下面是一些通用指引:
- 选择使用Recycle数量最少的撕裂位置
- 减少需要迭代的位置的数量可以减少总收敛时间。Recycle的位置主要由流程图的拓扑结构决定。尝试选择一个位置,尽可能满足的所有循环。这个位置一般为分流器的上游和汇流器的上游。
- 选择使用Recycle变量数量最少的撕裂位置
- 变量包括气相组分、温度、压力、流量、焓和组成。选择一个撕裂物流的位置,其中可以固定的数量最多,从而需要收敛的变量数目最少,提高收敛的稳定性。合适的选择比如分离器的进口(各个变量均有可能,Q=0的话气相组分的可能性比较大)、压缩机后冷出口(可固定温度T)、加热器出口(可固定压力P)。
注意:避免撕裂由其他调节器调控的物流。不按理出牌是很难收敛的
- 变量包括气相组分、温度、压力、流量、焓和组成。选择一个撕裂物流的位置,其中可以固定的数量最多,从而需要收敛的变量数目最少,提高收敛的稳定性。合适的选择比如分离器的进口(各个变量均有可能,Q=0的话气相组分的可能性比较大)、压缩机后冷出口(可固定温度T)、加热器出口(可固定压力P)。
- 选择稳定的撕裂位置
- 选择合适的撕裂位置,使撕裂物流迭代时震荡最少。 例如,将撕裂位置置于主物流,而非回流物流上。这中做法的效果取决于收敛算法。在连续迭代时,该做法的结果更为显著。在选择多流股同时迭代的情况下,选择一个稳定的撕裂点同样重要。
主物流的数值基数比较大,循环回流的数值基数比较小,就比例而言选择主物流是比较稳定的做法,具体可以参照下图。
- 选择合适的撕裂位置,使撕裂物流迭代时震荡最少。 例如,将撕裂位置置于主物流,而非回流物流上。这中做法的效果取决于收敛算法。在连续迭代时,该做法的结果更为显著。在选择多流股同时迭代的情况下,选择一个稳定的撕裂点同样重要。
- (个人意见)在设置了多个非同时运算的Recycle时,请在workbook中调整各个Recycle的运算顺序Calc.level。
总体上,Hysys所建议的撕裂规也是适用于A+的,实际用的时候拿过去干就好。
这一期就到此结束了。