用Hysys搭建好流程后,就一直想自己写一个操作界面,因为在Hysys的建模界面上操作实在太不方便了。之后就用C#写了一个操作界面。将Hysys作为后台计算,将数据与操作界面相互传递。
大学的时候虽然学的是化工,但酷爱计算机编程,几乎所有的业余时间都用来学习编程了。对C#不敢说精通,但是能想出的功能自己都能做出来。再次给大家推荐一本计算机编程的书《NET 2.0面向对象编程揭秘》(金旭亮)这是上学的时候我看过的最好的书之一(国内)。
2011年,偶然的机会有幸从事OTS行业。之后就开始全身心的研究动态模拟技术。学习过其他仿真平台,有国内的国外的。每一个平台也有自己的优点,但我始终认为Hysys是动态模拟最优秀的平台。为了验证自己对于动态模拟的理解和研究一些技术难点,萌生了自己写一个动态模拟软件的想法。经过这几年的尝试和改进,稍具雏形。主要是想整理和总结几个技术难点和大家交流分享一下。 下图我写的动态模拟软件的几张截图。
动态模拟软件采用的方法大都是“动态序贯模块法”。就是流量和压力联立求解、质量衡算、能量衡算序贯求解。
其中一个核心就是流量压力求解器(Pressure Flow Solver),P-F Solver 说白了就是解大量的非线性方程组。一个工艺流程中需要求解的方程组一般都在好几千。所以求解之前需要进行预处理,即不相关子系统的识别。通过不相关子系统识别可以将方程分组联立求解,会大大降低方程组的维数。但是分隔后的方程组有时依旧很庞大。特别是在有精馏塔的时候,如果塔板算法考虑到Vapour Holdup ,那么每块板的压力和气相流量必须联立求解,有些模拟平台为了简化处理,塔板算法忽略了Vapour Holdup,这样虽然简化了计算,但降低了动态响应的真实性。所以P-F Solver的核心就是寻找到一种快速稳定的非线性方程组求解策略。
另一个难点就是闪蒸算法。流量压力求解完成后就是对每个单元设备进行质量衡算、能量衡算、闪蒸计算。动态模拟软件在每一圈执行的时候要对所有设备进行闪蒸,同时由于动态模拟软件是用来模拟开车停车,经常有可能在极端条件操作。所以要求闪蒸算法非常稳定、高效。有几种类型的闪蒸计算:PT-Flash、PH-Flash、PS-Flash等。动态模拟中用的最多的是PH-Flash,其次是PT-Flash。PS-Flash在压缩机和透平机中使用。教科书中所写的闪蒸计算方法,几乎没办法在动态模拟软件中使用。目前使用较多的闪蒸计算方法是双层法,但是对于相变点附近单纯的双层法常常会失败,所以必须结合其他方法使用。关于闪蒸计算公开的论文有好多,有兴趣的可以找找资料,或者我们相互交流交流。化工流程非常复杂庞大,有了高效、稳定的闪蒸算法,也必须有一定的求解策略。下图是Hysys中的求解策略:流量压力每个积分时间算一次,能量衡算两个积分时间算一次、组分和严格闪蒸10个积分时间算一次。这样既保证了速度,又保障了精度,非常巧妙。
还有一些文献中提出采用双层法的思想,用简化的模型进行计算,一定时间后用严格模型进行校正。我一直打算尝试一下这种方法,效果应该会不错的。
以上两点是我认为动态模拟最核心的地方,希望和大家相互交流。
最后给大家推荐一本《化工系统工程-理论与实践》(王健红)。这是13年我同学给我推荐的一本书,我一直爱不释手,一有空了就是拿出来看看,每次读完都会有新的体会。我看书习惯先看序言或者跋,因为从其中可以轻而易举的辨别出书的好坏。好的书一般都是作者多年的心得所成,而非那些东拼西凑的垃圾。所以好书的序言或者结尾都会有作者写书的经历和感想。下面摘出这本书跋中的一段:
“从上大学高年级迄今,我与化工系统工程已经打交道近三十年了。为了这门学问或技艺的真谛,我得到了许多,也失去了许多。我仍然要为它继续付出,也希望更多的年轻学子有志从事这一领域的工作并真正掌握其原理。因此,我必须写一本关于化工系统工程的书。我写这本书,不是为了获奖,不是为了提职,也不是为了营利。正因如此,我只愿意写出自己有深刻体会的内容,结果使得这本书写了十年。……”