书签 分享 收藏 举报 版权申诉 / 17

应用于嵌入式监测设备的IAPWSIF97物性幂次计算方法.pdf

  • 上传人:a***
  • 文档编号:4035056
  • 上传时间:2018-08-12
  • 格式:PDF
  • 页数:17
  • 大小:1.55MB
  • 摘要
    申请专利号:

    CN201410837601.8

    申请日:

    2014.12.29

    公开号:

    CN104461450A

    公开日:

    2015.03.25

    当前法律状态:

    驳回

    有效性:

    无权

    法律详情:

    发明专利申请公布后的驳回IPC(主分类):G06F 7/552申请公布日:20150325|||实质审查的生效IPC(主分类):G06F7/552申请日:20141229|||公开

    IPC分类号:

    G06F7/552

    主分类号:

    G06F7/552

    申请人:

    东南大学

    发明人:

    刘争光; 程懋华; 孙振业

    地址:

    210096江苏省南京市玄武区四牌楼2号

    优先权:

    专利代理机构:

    南京苏高专利商标事务所(普通合伙)32204

    代理人:

    李昊

    PDF完整版下载: PDF下载
    内容摘要

    本发明公开一种应用于嵌入式监测设备的IAPWS-IF97物性幂次计算方法,其特征在于,对于IAPWS-IF97公式中的任意常数x的xp幂次计算,调用如下方法实现:1)定义数组Xi(i=1~p正整数),并赋值X1=x;2)当P=1时,直接返回X1的计算值;当P=2时,计算X2=X1*X1,然后返回X2的计算值;当P=3时,依次计算X2=X1*X1、X3=X2*X1,然后返回X3的计算值;当P=4时,依次计算X2=X1*X1、X4=X2*X2,然后返回X4的计算值。

    权利要求书

    权利要求书
    1.  一种应用于嵌入式监测设备的IAPWS-IF97物性幂次计算方法,其特征在于,对于IAPWS-IF97公式中的任意常数x的xp幂次计算,调用如下方法实现:
    1)定义数组Xi(i=1~p正整数),并赋值X1=x;
    2)当P=1时,直接返回X1的计算值;
    当P=2时,计算X2=X1*X1,然后返回X2的计算值;
    当P=3时,依次计算X2=X1*X1、X3=X2*X1,然后返回X3的计算值;
    当P=4时,依次计算X2=X1*X1、X4=X2*X2,然后返回X4的计算值;
    当P=5时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2,然后返回X5的计算值;
    当P=6时,依次计算X2=X1*X1、X3=X2*X1、X6=X3*X3,然后返回X6的计算值;
    当P=7时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2、X7=X5*X2,然后返回X7的计算值;
    当P=8时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4,然后返回X8的计算值;
    当P=9时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X9=X8*X1,然后返回X9的计算值;
    当P=10时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2、X10=X5*X5,然后返回X10的计算值;
    当P=11时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2、X10=X5*X5、X11=X10*X1,然后返回X11的计算值;
    当P=12时,依次计算X2=X1*X1、X3=X2*X1、X6=X3*X3、X12=X6*X6,然后返回X12的计算值;
    当P=13时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X9=X8*X1、X13=X9*X4,然后返回X13的计算值;
    当P=14时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2、X7=X5*X2、X14=X7*X7,然后返回X14的计算值;
    当P=15时,依次计算X2=X1*X1、X3=X2*X1、X6=X3*X3、X12=X6*X6、X15=X12*X3,然后返回X15的计算值;
    当P=16时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X16=X8*X8,然后返回X16的计算值;
    当P=17时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X9=X8*X1、X17=X9*X8, 然后返回X17的计算值;
    当P=18时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X16=X8*X8、X18=X16*X2,然后返回X18的计算值;
    当P=19时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X16=X8*X8、X18=X16*X2、X19=X18*X1,然后返回X19的计算值;
    当P=20时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2、X10=X5*X5、X20=X10*X10,然后返回X20的计算值;
    当P=21时,依次计算X2=X1*X1、X3=X2*X1、X6=X3*X3、X12=X6*X6、X15=X12*X3、X21=X15*X6,然后返回X21的计算值;
    当P=22时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2、X10=X5*X5、X11=X10*X1、X22=X11*X11,然后返回X22的计算值;
    当P=23时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2、X10=X5*X5、X20=X10*X10、X23=X20*X3,然后返回X23的计算值;
    当P=24时,依次计算X2=X1*X1、X3=X2*X1、X6=X3*X3、X12=X6*X6、X24=X12*X12,然后返回X24的计算值;
    当P=25时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X9=X8*X1、X17=X9*X8、X25=X17*X8,然后返回X25的计算值;
    当P=26时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X9=X8*X1、X13=X9*X4、X26=X13*X13,然后返回X26的计算值;
    当P=27时,依次计算X2=X1*X1、X3=X2*X1、X6=X3*X3、X12=X6*X6、X24=X12*X12、X27=X24*X3,然后返回X27的计算值;
    当P=28时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2、X7=X5*X2、X14=X7*X7、X28=X14*X14,然后返回X28的计算值;
    当P=29时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X9=X8*X1、X17=X9*X8、X25=X17*X8、X29=X25*X4,然后返回X29的计算值;
    当P=30时,依次计算X2=X1*X1、X3=X2*X1、X6=X3*X3、X12=X6*X6、X15=X12*X3、X30=X15*X15,然后返回X30的计算值;
    当P=31时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2、X7=X5*X2、X14=X7*X7、X28=X14*X14、X31=X28*X3,然后返回X31的计算值;
    当P=32时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X16=X8*X8、X32=X16*X16,然后返回X32的计算值;
    当P=33时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X16=X8*X8、X32=X16*X16、X33=X32*X1,然后返回X33的计算值;
    当P=34时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X9=X8*X1、X17=X9*X8、X34=X17*X17,然后返回X34的计算值;
    当P=35时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X9=X8*X1、X13=X9*X4、X26=X13*X13、X35=X26*X9,然后返回X35的计算值;
    当P=36时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X16=X8*X8、X18=X16*X2、X36=X18*X18,然后返回X36的计算值;
    当P=37时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X16=X8*X8、X18=X16*X2、X36=X18*X18、X37=X36*X1,然后返回X37的计算值;
    当P=38时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X16=X8*X8、X18=X16*X2、X19=X18*X1、X38=X19*X19,然后返回X38的计算值;
    当P=39时,依次计算X2=X1*X1、X3=X2*X1、X6=X3*X3、X12=X6*X6、X24=X12*X12、X27=X24*X3、X39=X27*X12,然后返回X39的计算值;
    当P=40时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2、X10=X5*X5、X20=X10*X10、X40=X20*X20,然后返回X40的计算值;
    当P=41时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2、X10=X5*X5、X20=X10*X10、X40=X40*X40、X41=X40*X1,然后返回X41的计算值;
    当P=42时,依次计算X2=X1*X1、X3=X2*X1、X6=X3*X3、X12=X6*X6、X15=X12*X3、X21=X15*X6、X42=X21*X21,然后返回X42的计算值;
    当P=43时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X9=X8*X1、X17=X9*X8、X34=X17*X17、X43=X34*X9,然后返回X43的计算值;
    当P=44时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2、X10=X5*X5、X11=X10*X1、X22=X11*X11、X44=X22*X22,然后返回X44的计算值;
    当P=45时,依次计算X2=X1*X1、X3=X2*X1、X6=X3*X3、X12=X6*X6、X15=X12*X3、X30=X15*X15、X45=X30*X15,然后返回X45的计算值;
    当P=46时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2、X10=X5*X5、 X20=X10*X10、X23=X20*X3、X46=X23*X23,然后返回X46的计算值;
    当P=47时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2、X10=X5*X5、X20=X10*X10、X23=X20*X3、X46=X23*X23,X47=X46*X1然后返回X47的计算值;
    当P=48时,依次计算X2=X1*X1、X3=X2*X1、X6=X3*X3、X12=X6*X6、X24=X12*X12、X48=X24*X24,然后返回X48的计算值;
    当P=49时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X16=X8*X8、X32=X16*X16、X33=X32*X1、X49=X33*X16,然后返回X49的计算值;
    当P=50时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X9=X8*X1、X17=X9*X8、X25=X17*X8、X50=X25*X25,然后返回X50的计算值;
    当P=51时,依次计算X2=X1*X1、X3=X2*X1、X6=X3*X3、X12=X6*X6、X24=X12*X12、X48=X24*X24、X51=X48*X3,然后返回X51的计算值;
    当P=52时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X9=X8*X1、X13=X9*X4、X26=X13*X13、X52=X26*X26,然后返回X52的计算值;
    当P=53时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X16=X8*X8、X18=X16*X2、X36=X18*X18、X37=X36*X1,X53=X37*X16然后返回X53的计算值;
    当P=54时,依次计算X2=X1*X1、X3=X2*X1、X6=X3*X3、X12=X6*X6、X24=X12*X12、X27=X24*X3、X54=X27*X27,然后返回X54的计算值;
    当P=55时,依次计算X2=X1*X1、X3=X2*X1、X6=X3*X3、X12=X6*X6、X24=X12*X12、X27=X24*X3、X54=X27*X27,X55=X54*X1然后返回X55的计算值;
    当P=56时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2、X7=X5*X2、X14=X7*X7、X28=X14*X14、X56=X28*X28然后返回X56的计算值;
    当P=57时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X16=X8*X8、X32=X16*X16、X33=X32*X1、X49=X33*X16,X57=X49*X8然后返回X57的计算值;
    当P=58时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X9=X8*X1、X17=X9*X8、X25=X17*X8、X29=X25*X4,X58=X29*X29然后返回X58的计算值。

    说明书

    说明书应用于嵌入式监测设备的IAPWS-IF97物性幂次计算方法
    技术领域
    本发明涉及一种应用于嵌入式监测设备的IAPWS-IF97物性幂次计算方法,属于工业过程监控技术领域。
    背景技术
    水和水蒸汽作为典型的常规工质被广泛应用于动力工程、能源化工及相关科学领域,因此,水和水蒸汽的热力性质计算就成为工程设计、科学研究工作中必不可少的基础工作。对其物性参数能否经行快速、准确地求取,有利于热力系统的运行调试、性能检测以及优化控制系统的稳定性。
    目前,被广泛采用的水和水蒸气物性公式是IAPWS-IF97公式。IAPWS-IF97公式基本形式为多项式。每一个公式由几项至几十项相加组成。每一项因子分别由两个自变量幂的乘积组成。多项式中幂指数不是i,而是i对应的离散整数。IF97公式的基本计算对象是:二元、离散整指数幂值。IF97公式的快速算法关键就是二元、离散整指数幂值的快速计算。多年来,有大量基于IAPWS-IF97公式的计算方法被研究和开发出来:
    参见图1,为现有的直接利用IAPWS-IF97公式使用软件的计算方法,具体步骤如下:
    1、输入两个已测得的水和水蒸气物性参数(如P-压力,T-温度,v-比容,H-焓,S-熵,x-湿度);
    2、根据输入的水和水蒸气的物性参数求取该参数所在的算法分区;
    3、对非饱和区参数,使用IAPWS-IF97公式计算,其中幂计算调用程序设计语言数学库中的幂函数;
    4、对饱和区参数,使用IAPWS-IF97公式计算,其中幂计算调用程序设计语言数学库中的幂函数;
    5、对水和水蒸气其他热力性质的计算(如:粘度,比热,导热系数,绝热焓降等),其中幂计算调用程序设计语言数学库中的幂函数;
    6、输出所需的水和水蒸气的物性参数和其他热力性质参数。
    这种计算方法程序简单,但因为公式中部分幂次被重复计算,速度不高。这 样如果在服务器端运用这种方法计算水和水蒸气物性会造成服务器始终处于高荷载状态,降低服务器的可靠性;如果是在嵌入式系统中运行会受限于硬件的性能和电池的容量,计算性能和持久性得不到保证。
    参见图2,为现有的对IAPWS-IF97公式进行人工分析和重构的计算方法,具体步骤如下:
    1、对IF97公式人工进行分析,找出公式中所有可能重复计算的幂次;
    2、将这些幂次分离出来,并计算出其结果;
    3、重构IF97公式,在遇到重复的幂次时直接使用之前计算好的计算结果回代;
    4、输出所需的水和水蒸气的物性参数和其他热力性质参数。
    这种计算方法消除了一些幂次的重复计算,计算速度快。但这类方法是人工寻找重复幂次,结果正确如何和重复幂次的减少程度完全取决于分解人的细心、耐心,结果有很大不确定性,对应的软件也几乎不具备可维护性。
    IAPWS-IF97水和水蒸汽物性的计算方法主要运用于以下三种设备中:
    仪表,如流量计等。这类设备需要快速地对水和水蒸汽的物性(如比容)进行计算。
    嵌入式监测设备,如火电厂嵌入式继电保护设备。这类设备需要快速地对水和水蒸汽物性进行运算分析,及时处理故障,确保电厂电网系统安全运行。
    以上两类设备,由于对体积的要求,主要使用单片机进行计算和数据处理。由于单片机的计算能力和计算资源有限,在对水和水蒸汽的物性进行计算的时候,不可能使用完整的IAPWS-IF97公式,一般的,厂家为了快速计算获得水和水蒸汽物性,使用IAPWS-IF97公式的近似公式,对计算进行相应的简化。这样做会产生两种影响:一是使用近似公式进行计算,虽然满足了计算速度的要求,但是计算精度不够;二是不同的厂家会使用各自认为相对准确的IAPWS-IF97近似公式,这样对水和水蒸汽物性的近似计算上就没有统一的标准。
    在线监测信息管理服务器上。在服务器端,虽然计算速度和计算资源比嵌入式设备好很多,但是使用本专利提出的计算方法对水和水蒸汽的物性进行计算,可以大大降低服务器的负载,从而节省出更多的资源进行其他的复杂运算。
    发明内容
    发明目的:本发明的目的在于提供应用于嵌入式监测设备的IAPWS-IF97物性幂次快速计算方法,使计算速度得到了大幅度的提高,让嵌入式监测设备计算能力有限的单片机依然可以实现IAPWS-IF97水和水蒸气物性的实时计算。同时,本计算方法并没有破坏IAPWS-IF97公式的结构或对公式做任何的近似,能保证水和水蒸汽物性计算结果的精确度。
    技术方案:本发明所述的应用于嵌入式监测设备的IAPWS-IF97物性幂次计算方法,对于IAPWS-IF97公式中的任意常数X的xP幂次计算,调用如下方法实现:
    1)定义数组Xi(i=1~p正整数),并赋值X1=x;
    2)当P=1时,直接返回X1的计算值;
    当P=2时,计算X2=X1*X1,然后返回X2的计算值;
    当P=3时,依次计算X2=X1*X1、X3=X2*X1,然后返回X3的计算值;
    当P=4时,依次计算X2=X1*X1、X4=X2*X2,然后返回X4的计算值;
    当P=5时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2,然后返回X5的计算值;
    当P=6时,依次计算X2=X1*X1、X3=X2*X1、X6=X3*X3,然后返回X6的计算值;
    当P=7时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2、X7=X5*X2,然后返回X7的计算值;
    当P=8时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4,然后返回X8的计算值;
    当P=9时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X9=X8*X1,然后返回X9的计算值;
    当P=10时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2、X10=X5*X5,然后返回X10的计算值;
    当P=11时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2、X10=X5*X5、X11=X10*X1,然后返回X11的计算值;
    当P=12时,依次计算X2=X1*X1、X3=X2*X1、X6=X3*X3、X12=X6*X6,然后返回X12的计算值;
    当P=13时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X9=X8*X1、X13=X9*X4,然后返回X13的计算值;
    当P=14时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2、X7=X5*X2、X14=X7*X7,然后返回X14的计算值;
    当P=15时,依次计算X2=X1*X1、X3=X2*X1、X6=X3*X3、X12=X6*X6、X15=X12*X3,然后返回X15的计算值;
    当P=16时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X16=X8*X8,然后返回X16的计算值;
    当P=17时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X9=X8*X1、X17=X9*X8,然后返回X17的计算值;
    当P=18时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X16=X8*X8、X18=X16*X2,然后返回X18的计算值;
    当P=19时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X16=X8*X8、X18=X16*X2、X19=X18*X1,然后返回X19的计算值;
    当P=20时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2、X10=X5*X5、X20=X10*X10,然后返回X20的计算值;
    当P=21时,依次计算X2=X1*X1、X3=X2*X1、X6=X3*X3、X12=X6*X6、X15=X12*X3、X21=X15*X6,然后返回X21的计算值;
    当P=22时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2、X10=X5*X5、X11=X10*X1、X22=X11*X11,然后返回X22的计算值;
    当P=23时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2、X10=X5*X5、X20=X10*X10、X23=X20*X3,然后返回X23的计算值;
    当P=24时,依次计算X2=X1*X1、X3=X2*X1、X6=X3*X3、X12=X6*X6、X24=X12*X12,然后返回X24的计算值;
    当P=25时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X9=X8*X1、X17=X9*X8、X25=X17*X8,然后返回X25的计算值;
    当P=26时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X9=X8*X1、X13=X9*X4、X26=X13*X13,然后返回X26的计算值;
    当P=27时,依次计算X2=X1*X1、X3=X2*X1、X6=X3*X3、X12=X6*X6、X24=X12*X12、X27=X24*X3,然后返回X27的计算值;
    当P=28时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2、X7=X5*X2、X14=X7*X7、X28=X14*X14,然后返回X28的计算值;
    当P=29时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X9=X8*X1、X17=X9*X8、 X25=X17*X8、X29=X25*X4,然后返回X29的计算值;
    当P=30时,依次计算X2=X1*X1、X3=X2*X1、X6=X3*X3、X12=X6*X6、X15=X12*X3、X30=X15*X15,然后返回X30的计算值;
    当P=31时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2、X7=X5*X2、X14=X7*X7、X28=X14*X14、X31=X28*X3,然后返回X31的计算值;
    当P=32时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X16=X8*X8、X32=X16*X16,然后返回X32的计算值;
    当P=33时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X16=X8*X8、X32=X16*X16、X33=X32*X1,然后返回X33的计算值;
    当P=34时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X9=X8*X1、X17=X9*X8、X34=X17*X17,然后返回X34的计算值;
    当P=35时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X9=X8*X1、X13=X9*X4、X26=X13*X13、X35=X26*X9,然后返回X35的计算值;
    当P=36时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X16=X8*X8、X18=X16*X2、X36=X18*X18,然后返回X36的计算值;
    当P=37时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X16=X8*X8、X18=X16*X2、X36=X18*X18、X37=X36*X1,然后返回X37的计算值;
    当P=38时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X16=X8*X8、X18=X16*X2、X19=X18*X1、X38=X19*X19,然后返回X38的计算值;
    当P=39时,依次计算X2=X1*X1、X3=X2*X1、X6=X3*X3、X12=X6*X6、X24=X12*X12、X27=X24*X3、X39=X27*X12,然后返回X39的计算值;
    当P=40时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2、X10=X5*X5、X20=X10*X10、X40=X20*X20,然后返回X40的计算值;
    当P=41时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2、X10=X5*X5、X20=X10*X10、X40=X40*X40、X41=X40*X1,然后返回X41的计算值;
    当P=42时,依次计算X2=X1*X1、X3=X2*X1、X6=X3*X3、X12=X6*X6、X15=X12*X3、X21=X15*X6、X42=X21*X21,然后返回X42的计算值;
    当P=43时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X9=X8*X1、X17=X9*X8、X34=X17*X17、X43=X34*X9,然后返回X43的计算值;
    当P=44时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2、X10=X5*X5、X11=X10*X1、X22=X11*X11、X44=X22*X22,然后返回X44的计算值;
    当P=45时,依次计算X2=X1*X1、X3=X2*X1、X6=X3*X3、X12=X6*X6、X15=X12*X3、X30=X15*X15、X45=X30*X15,然后返回X45的计算值;
    当P=46时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2、X10=X5*X5、X20=X10*X10、X23=X20*X3、X46=X23*X23,然后返回X46的计算值;
    当P=47时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2、X10=X5*X5、X20=X10*X10、X23=X20*X3、X46=X23*X23,X47=X46*X1然后返回X47的计算值;
    当P=48时,依次计算X2=X1*X1、X3=X2*X1、X6=X3*X3、X12=X6*X6、X24=X12*X12、X48=X24*X24,然后返回X48的计算值;
    当P=49时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X16=X8*X8、X32=X16*X16、X33=X32*X1、X49=X33*X16,然后返回X49的计算值;
    当P=50时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X9=X8*X1、X17=X9*X8、X25=X17*X8、X50=X25*X25,然后返回X50的计算值;
    当P=51时,依次计算X2=X1*X1、X3=X2*X1、X6=X3*X3、X12=X6*X6、X24=X12*X12、X48=X24*X24、X51=X48*X3,然后返回X51的计算值;
    当P=52时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X9=X8*X1、X13=X9*X4、X26=X13*X13、X52=X26*X26,然后返回X52的计算值;
    当P=53时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X16=X8*X8、X18=X16*X2、X36=X18*X18、X37=X36*X1,X53=X37*X16然后返回X53的计算值;
    当P=54时,依次计算X2=X1*X1、X3=X2*X1、X6=X3*X3、X12=X6*X6、X24=X12*X12、X27=X24*X3、X54=X27*X27,然后返回X54的计算值;
    当P=55时,依次计算X2=X1*X1、X3=X2*X1、X6=X3*X3、X12=X6*X6、X24=X12*X12、X27=X24*X3、X54=X27*X27,X55=X54*X1然后返回X55的计算值;
    当P=56时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2、X7=X5*X2、X14=X7*X7、X28=X14*X14、X56=X28*X28然后返回X56的计算值;
    当P=57时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X16=X8*X8、X32=X16*X16、X33=X32*X1、X49=X33*X16,X57=X49*X8然后返回X57的计算值;
    当P=58时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X9=X8*X1、X17=X9*X8、 X25=X17*X8、X29=X25*X4,X58=X29*X29然后返回X58的计算值。
    本发明与现有技术相比,其有益效果是:本发明提出的计算方法不改变IAPWS-IF97公式形态,程序结构和使用程序语言数学库中幂函数一样,大幅度提高了计算速度,软件可维护性强,是IAPWS-IF97公式物性计算易于使用的高效方法。本发明提供的方法在服务器端运用时,计算水和水蒸气物性时可以降低服务器荷载,提高服务器的可靠性;在嵌入式监测设备中运行时不会受到硬件性能和电池容量的限制,计算性能和持久性都能得到很好的保证。
    附图说明
    图1为现有的直接利用IAPWS-IF97公式使用软件的计算方法流程;
    图2为现有的对IAPWS-IF97公式进行人工分析和重构的计算方法流程;
    图3为p≤58本发明的快速求幂方法流程图。
    具体实施方式
    下面对本发明技术方案进行详细说明,但是本发明的保护范围不局限于所述实施例。
    实施例1:
    本实施例提供了一种水和水蒸气物性IF97公式的计算方法,该方法可快速、准确计算水和水蒸气的物性。
    IF97模型均为多项式的形式,每一个模型公式都有几十项相加,每一项因子分别是两个自变量7.1-π、τ-1.222的幂的乘积。以分区1的基本公式为例:
    g(p,T)RT=γ(π,τ)=Σi=134ni(7.1-π)Ii(τ-1.222)Ji]]>
    如果完全按照模型公式的形式进行计算,程序中的每一项都含有7.1-π,τ-1.222两个变量,且乘幂计算大量的重复,计算速度很慢。
    本实施例构建幂指数计算方法,然后,使用本方法构建整幂指数的计算方法,然后,运用编程语言把该计算方法编成快速计算模块,该计算模块的调用接口和程序设计语言中内置幂计算函数一样,仅函数名不同。将该方法的程序模块运用于IF97公式中的整幂指数计算,得到快速、高可维护性的基于IF97公式的水和水蒸汽物性计算程序实现方法。
    IAPWS-IF97公式中整幂指数Ii和Ji范围确定,其中:Ii绝对值的最大值为36;Ji绝对值的最大值为58,两者最大为58,所以,IAPWS-IF97公式物性计算只需解决p≤58时的求幂问题,从而加快计算速度。
    如图3所示为即为该快速求幂方法流程。
    其具体算法为:
    对于IAPWS-IF97公式中的任意常数x的xP幂次计算,调用如下方法实现:
    1)定义数组Xi(i=1~p正整数),并赋值X1=x;
    2)当P=1时,直接返回X1的计算值;
    当P=2时,计算X2=X1*X1,然后返回X2的计算值;
    当P=3时,依次计算X2=X1*X1、X3=X2*X1,然后返回X3的计算值;
    当P=4时,依次计算X2=X1*X1、X4=X2*X2,然后返回X4的计算值;
    当P=5时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2,然后返回X5的计算值;
    当P=6时,依次计算X2=X1*X1、X3=X2*X1、X6=X3*X3,然后返回X6的计算值;
    当P=7时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2、X7=X5*X2,然后返回X7的计算值;
    当P=8时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4,然后返回X8的计算值;
    当P=9时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X9=X8*X1,然后返回X9的计算值;
    当P=10时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2、X10=X5*X5,然后返回X10的计算值;
    当P=11时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2、X10=X5*X5、X11=X10*X1,然后返回X11的计算值;
    当P=12时,依次计算X2=X1*X1、X3=X2*X1、X6=X3*X3、X12=X6*X6,然后返回X12的计算值;
    当P=13时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X9=X8*X1、X13=X9*X4,然后返回X13的计算值;
    当P=14时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2、X7=X5*X2、X14=X7*X7,然后返回X14的计算值;
    当P=15时,依次计算X2=X1*X1、X3=X2*X1、X6=X3*X3、X12=X6*X6、X15=X12*X3, 然后返回X15的计算值;
    当P=16时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X16=X8*X8,然后返回X16的计算值;
    当P=17时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X9=X8*X1、X17=X9*X8,然后返回X17的计算值;
    当P=18时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X16=X8*X8、X18=X16*X2,然后返回X18的计算值;
    当P=19时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X16=X8*X8、X18=X16*X2、X19=X18*X1,然后返回X19的计算值;
    当P=20时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2、X10=X5*X5、X20=X10*X10,然后返回X20的计算值;
    当P=21时,依次计算X2=X1*X1、X3=X2*X1、X6=X3*X3、X12=X6*X6、X15=X12*X3、X21=X15*X6,然后返回X21的计算值;
    当P=22时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2、X10=X5*X5、X11=X10*X1、X22=X11*X11,然后返回X22的计算值;
    当P=23时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2、X10=X5*X5、X20=X10*X10、X23=X20*X3,然后返回X23的计算值;
    当P=24时,依次计算X2=X1*X1、X3=X2*X1、X6=X3*X3、X12=X6*X6、X24=X12*X12,然后返回X24的计算值;
    当P=25时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X9=X8*X1、X17=X9*X8、X25=X17*X8,然后返回X25的计算值;
    当P=26时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X9=X8*X1、X13=X9*X4、X26=X13*X13,然后返回X26的计算值;
    当P=27时,依次计算X2=X1*X1、X3=X2*X1、X6=X3*X3、X12=X6*X6、X24=X12*X12、X27=X24*X3,然后返回X27的计算值;
    当P=28时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2、X7=X5*X2、X14=X7*X7、X28=X14*X14,然后返回X28的计算值;
    当P=29时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X9=X8*X1、X17=X9*X8、X25=X17*X8、X29=X25*X4,然后返回X29的计算值;
    当P=30时,依次计算X2=X1*X1、X3=X2*X1、X6=X3*X3、X12=X6*X6、X15=X12*X3、X30=X15*X15,然后返回X30的计算值;
    当P=31时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2、X7=X5*X2、X14=X7*X7、X28=X14*X14、X31=X28*X3,然后返回X31的计算值;
    当P=32时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X16=X8*X8、X32=X16*X16,然后返回X32的计算值;
    当P=33时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X16=X8*X8、X32=X16*X16、X33=X32*X1,然后返回X33的计算值;
    当P=34时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X9=X8*X1、X17=X9*X8、X34=X17*X17,然后返回X34的计算值;
    当P=35时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X9=X8*X1、X13=X9*X4、X26=X13*X13、X35=X26*X9,然后返回X35的计算值;
    当P=36时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X16=X8*X8、X18=X16*X2、X36=X18*X18,然后返回X36的计算值;
    当P=37时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X16=X8*X8、X18=X16*X2、X36=X18*X18、X37=X36*X1,然后返回X37的计算值;
    当P=38时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X16=X8*X8、X18=X16*X2、X19=X18*X1、X38=X19*X19,然后返回X38的计算值;
    当P=39时,依次计算X2=X1*X1、X3=X2*X1、X6=X3*X3、X12=X6*X6、X24=X12*X12、X27=X24*X3、X39=X27*X12,然后返回X39的计算值;
    当P=40时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2、X10=X5*X5、X20=X10*X10、X40=X20*X20,然后返回X40的计算值;
    当P=41时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2、X10=X5*X5、X20=X10*X10、X40=X40*X40、X41=X40*X1,然后返回X41的计算值;
    当P=42时,依次计算X2=X1*X1、X3=X2*X1、X6=X3*X3、X12=X6*X6、X15=X12*X3、X21=X15*X6、X42=X21*X21,然后返回X42的计算值;
    当P=43时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X9=X8*X1、X17=X9*X8、X34=X17*X17、X43=X34*X9,然后返回X43的计算值;
    当P=44时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2、X10=X5*X5、X11=X10*X1、 X22=X11*X11、X44=X22*X22,然后返回X44的计算值;
    当P=45时,依次计算X2=X1*X1、X3=X2*X1、X6=X3*X3、X12=X6*X6、X15=X12*X3、X30=X15*X15、X45=X30*X15,然后返回X45的计算值;
    当P=46时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2、X10=X5*X5、X20=X10*X10、X23=X20*X3、X46=X23*X23,然后返回X46的计算值;
    当P=47时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2、X10=X5*X5、X20=X10*X10、X23=X20*X3、X46=X23*X23,X47=X46*X1然后返回X47的计算值;
    当P=48时,依次计算X2=X1*X1、X3=X2*X1、X6=X3*X3、X12=X6*X6、X24=X12*X12、X48=X24*X24,然后返回X48的计算值;
    当P=49时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X16=X8*X8、X32=X16*X16、X33=X32*X1、X49=X33*X16,然后返回X49的计算值;
    当P=50时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X9=X8*X1、X17=X9*X8、X25=X17*X8、X50=X25*X25,然后返回X50的计算值;
    当P=51时,依次计算X2=X1*X1、X3=X2*X1、X6=X3*X3、X12=X6*X6、X24=X12*X12、X48=X24*X24、X51=X48*X3,然后返回X51的计算值;
    当P=52时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X9=X8*X1、X13=X9*X4、X26=X13*X13、X52=X26*X26,然后返回X52的计算值;
    当P=53时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X16=X8*X8、X18=X16*X2、X36=X18*X18、X37=X36*X1,X53=X37*X16然后返回X53的计算值;
    当P=54时,依次计算X2=X1*X1、X3=X2*X1、X6=X3*X3、X12=X6*X6、X24=X12*X12、X27=X24*X3、X54=X27*X27,然后返回X54的计算值;
    当P=55时,依次计算X2=X1*X1、X3=X2*X1、X6=X3*X3、X12=X6*X6、X24=X12*X12、X27=X24*X3、X54=X27*X27,X55=X54*X1然后返回X55的计算值;
    当P=56时,依次计算X2=X1*X1、X3=X2*X1、X5=X3*X2、X7=X5*X2、X14=X7*X7、X28=X14*X14、X56=X28*X28然后返回X56的计算值;
    当P=57时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X16=X8*X8、X32=X16*X16、X33=X32*X1、X49=X33*X16,X57=X49*X8然后返回X57的计算值;
    当P=58时,依次计算X2=X1*X1、X4=X2*X2、X8=X4*X4、X9=X8*X1、X17=X9*X8、X25=X17*X8、X29=X25*X4,X58=X29*X29然后返回X58的计算值。
    编写物性计算软件时,用上述快速幂算法代替软件实现语言数学库中的幂函数,计算过程如下:
    (1)调用上述算法计算多项式中各二元、整幂指数幂值。
    (2)将各幂值代回多项式中相应位置,求和得多项式值。
    为使本发明的上述目的、特征和优点能够更加明显易懂,下面
    对本发明作进一步详细的说明。
    使用本发明进行物性快速计算的实施方法如下:
    1、建立该幂次计算方法所需的数组
    2、建立基于该状态空间数数据的整数幂快速计算模块
    3、将快速幂计算模块运用在IAPWS-IF97公式中,有两种场景,具体方法如下:
    第一种场景:应用到已有的使用程序设计语言的幂函数的物性计算源码中,用第二步建立的程序模块方法名替换程序设计语言中的幂函数,方便又快捷。
    第二种场景:基于IAPWS-IF97从“零”开始的开发,仍然按照幂函数计算方法的常规方式,展开IAPWS-IF97公式,然后使用第二步中建立方法的模块名进行幂计算。
    本实施例使用本方法,用Java语言实现了水和水蒸汽物性计算软件,测试的软硬件环境为:
    操作系统:Windows 7 64位;
    处理器Intel i3-2350M 2.30GHZ;
    内存2.00GB。
    测试结果列表如下,结果表明本方法可以显著地提高计算速度。
    表1 1、2、4区数学库幂函数与计算方法比较


    表2 3、5区数学库幂函数与计算方法比较

    以上实例物性计算表明:本发明提出的水和水蒸气物性计算方法计算速度比软件实现语言数学库中幂函数快3-6倍。本发明提出的算法计算速度快、算法复杂度低、对应的软件实现可维护性高,是可以广泛使用的计算方法。
    如上所述,尽管参照特定的优选实施例已经表示和表述了本发明,但其不得解释为对本发明自身的限制。在不脱离所附权利要求定义的本发明的精神和范围前提下,可对其在形式上和细节上作出各种变化。

    关 键  词:
    应用于 嵌入式 监测 设备 IAPWSIF97 物性 计算方法
      专利查询网所有文档均是用户自行上传分享,仅供网友学习交流,未经上传用户书面授权,请勿作他用。
    0条评论

    还可以输入200字符

    暂无评论,赶快抢占沙发吧。

    关于本文
    本文标题:应用于嵌入式监测设备的IAPWSIF97物性幂次计算方法.pdf
    链接地址:https://www.zhuanlichaxun.net/p-4035056.html
    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2017-2018 zhuanlichaxun.net网站版权所有
    经营许可证编号:粤ICP备2021068784号-1