英语原文共 25 页,剩余内容已隐藏,支付完成后下载完整资料
- 函数和过程
ee函数是接受一个或多个输入并返回与函数名关联的单个结果的代码段。一个EES过程类似于一个函数,但是它可以返回一个或多个结果,并且可以被Call语句访问。在函数和过程中使用的代码与EES程序的主要部分使用的代码有很大的不同;函数和过程使用赋值语句,而不是等式。功能和过程提供了几个重要的优点。首先,它们允许将代码分解成许多更容易理解和调试的小部件,从而使编写大型模型变得更容易。其次,EES函数和过程允许使用编程逻辑语句,例如If-Then-Else、Repeat-Until和GoTo语句,这些语句不能在EES的主体中使用。第三,功能和过程经过调试和验证后可以保存到文件中,这样就可以在其他EES程序或库文件中重用它们,如第11章所述。本章介绍了函数和过程的基本功能。子程序和模块共享函数和过程的一些优点,但使用的是方程而不是第10章讨论的赋值。
方程和赋值语句
进入EES程序主体的指令提供了一组方程式,而不是赋值语句。大多数高级编程语言都使用赋值语句。等式和赋值语句之间的区别可以用下面这个简单的语句来理解:
X = X 1
这个表述不可能是一个有效的方程,因为变量X永远不可能等于X 1。如果您将此语句输入EES方程窗口,它将尝试使用5.1节中描述的方法用数值方法求解。使用默认的停止条件,EES将找到一个X = 5x10的解决方案。17在这个X值下,残差(与方程左右两边的差值有关)小于默认公差;因此,它似乎是一个有效的解决方案。然而,这可能不是我们想要的解决方案。
方程X = X 1是一个赋值语句。赋值语句显式地指定变量的值在左边的等号(在这种情况下,X)表达式的值的等号右边(在这种情况下,X 1)。所有的变量出现的等号右边一个赋值语句必须有以前定义的值。例如,如果X的当前值是8,那么这个赋值语句的执行会将其更改为9。
赋值运算符
所有出现在EES函数和程序中的方程必须是赋值语句,而不是方程。早期版本的EES要求赋值语句使用赋值运算符(:=)来代替等号。因此,上面的赋值语句如下:
X: = X 1
通过实现如图3-1所示的Preferences对话框的Options选项卡中可以选择的option Allow = in Function/Procedure equation,这一要求在EES的当前版本中得到了放宽。这个选项是默认选择的,它使EES在函数和过程中同时接受等号和赋值操作符。
图3-1:Preferences对话框,显示了允许=符号赋值语句的选项。
赋值语句比等式更有结构。必须对函数或过程中输入的每个语句进行安排,使赋值的变量本身出现在语句的左侧。语句的执行顺序与它们被输入的顺序完全相同。赋值语句的一个主要优点是,它们允许使用逻辑结构,如3.4节中描述的If-Then-Else语句。
功能
内部EES函数可以直接写在方程式窗口。外部函数可以用任何编译语言编写,如第19章所述。
函数的格式
内部函数的格式必须如下所示:
函数Function_Name(输入1,输入2,hellip;、输入N)
转让声明(s) -注意其中一个必须有形式:
Function_Name =hellip;
结束
函数声明必须出现在方程式窗口的顶部,在EES程序主体的任何方程式之前。函数声明必须以关键字Function开头。函数名(Function_Name)和参数(输入1等)位于同一行。参数用圆括号括起来,用列表分隔符分隔(列表分隔符是美国系统的逗号和欧洲系统的分号)。函数声明以关键字End结束。出现在函数(和过程)中的语句必须是赋值语句(如3.1节所述)或逻辑语句(如3.4节所述)。除非逻辑语句另有指示,否则EES将按照语句出现的顺序处理这些语句。
函数通过在方程中使用它们的名字来调用:
X = Function_Name(输入1,输入2,hellip;、输入N)
一个函数必须至少有一个参数,并且必须用出现在函数声明中的相同数量的参数来调用它。调用语句中的参数名称不必与函数声明中的参数名称匹配;只有他们的顺序才重要。函数中的语句只能引用作为输入参数传递给函数的变量,或以前在函数本身中定义的变量。函数主体中使用的所有变量都是函数的局部变量,除了EES程序主体中使用$Common指令定义的全局变量之外
14.3。函数返回在Function_Name =hellip;语句中分配的值。在函数体中。
函数可以引用任何其他内置函数、过程或其他程序实体,这些实体都是使用库文件加载的(参见第11章)。但是函数不能调用它们自己,即,它们不能被递归地使用。函数可能不调用模块,但它们可以调用子程序(在第10章中描述)。函数(和过程)必须使用主程序中设置的单元系统设置。不能为每个功能或过程指定不同的单元系统。
第一个函数的例子
函数的格式和效用将通过几个例子来演示。第一个例子给出了给定雷诺数(Re)和相对粗糙度(RR)的内流的达西摩擦系数(f)。我们将使用的相关性是由Churchill(1977)提出的,它显示在Eq.(3-1)中。
16
1.5 1/12
8
12
1
37530 年 16
8 f
ln 2.457
0.9
(3 - 1)
Re
7
再保险
0.27 RR
Re
返回摩擦系数f的函数称为f_Darcy。下面是该函数的清单。
函数f_Darcy(再保险、RR) f = 8 * ((8 / Re) ^ 12 ((2.457 * ln (1 / ((7 / Re) ^ 0.9 0.27 * (RR)))) ^ 16 16 (37530 / Re) ^) ^ (-1.5)) ^ (1/12)
f_Darcy = f结束
函数应该出现在方程式窗口的顶部,在EES程序的主要部分的任何方程式之前。该函数通过其名称访问,并提供雷诺数和相对粗糙度的值。下面的代码,在函数声明后输入:
“雷诺数”“相对粗糙度”“达西摩擦系数”
Re=5000 [-] RR = 0.001 [-]
RR f = f_Darcy(重新)
将产生如图3-2(a)所示的解决方案窗口。请注意,除了在方程式窗口中显示变量的主选项卡之外,现在还有第二个选项卡,它的标签与函数工作区相对应。选择f_Darcy选项卡将打开如图3-2(b)所示的解决方案窗口,其中包含最后一次调用函数时函数工作区中变量的值。
-
-
- (b)
-
图3-2:显示(a) Main和(b) f_Darcy选项卡的解决方案窗口。
函数的第二个例子
作为第二个例子,我们将开发一个函数来实现等式(3-2)中所示的Peng-Robinson状态方程,从而在给定流体体积的情况下估计流体的压力(P)
(v)和温度(T)。参见Klein和Nellis(2012)关于这个和其他状态方程的更多信息。
一个
RT
Pv —— b
v v b b v —— b
(3 - 2)
对于感兴趣流体,Peng-Robinson状态方程的参数为R = 188.9 J/kg- k, a = 70.89 N-m/kg, b = 0.0006059 m/kg。423函数命名为PR,置于方程窗口顶部:
函数公关(v, T)
R = 188.9 [J/kg-K]
a = 70.89 [N-m^4/kg^2] b = 0.0006059 [m^3/kg]
PR = R*T/(v-b)-a/(v*(v b) b*(v-b)
注意,常量的单位是在方括号中指定的,如本节所述
-
- 为了估算v = 0.1 m/kg, T = 325 K时的压力,调用函数PR,代码如下:3
“特定卷”“温度”
压力,由Peng-Robinson状态方程估计
v=0.1 [m^3/kg] T=325 [K] P=PR(v,T)
为函数变量设置和检查单元
同样,解窗口将有两个选项卡:一个用于主方程式窗口,另一个用于PR函数工作区。附加的功能或过程将导致附加的选项卡。主程序中每个变量的单位可以通过右键单击Solutions窗口主选项卡中的变量名来设置,如图3-3(a)所示。
-
-
- (b)
-
图3-3:(a)显示单元警告的解决方案窗口的主标签;(b)显示为每个变量设置单元的PR函数标签。
注意,即使正确地设置了方程式窗口中所有变量的单位,EES仍然报告了几个可能的单位问题。选择Check Units以查看图3-4所示的Check Units对话框。单位警告是由于在PR函数工作空间中使用的变量的单位没有被设置,因此彼此不一致,也与函数和方程式窗口之间来回传递的参数的单位不一致。ee检查函数和过程(以及第10章中讨论的模块和子程序)中的变量以及方程式窗口中的变量的单位一致性。在Solutions窗口中选择PR选项卡,并在PR工作空间中指定每个变量的单位,如图3-3(b)所示。请注意,必须设置PR工作空间(a、b和R)内部的每个变量的单位,以及输入参数(v和T)和输出(PR),以避免单元一致性警告。
图3-4:检查单元对话框。
函数的变量信息页
变量信息对话框中还有一个页面对应于每个定义的函数和过程。打开变量信息窗口(从选项菜单中选择变量信息),然后从下拉菜单中选择函数PR,以访问如图3-5所示的对话框。PR工作空间中每个变量的单位也可以使用变量信息窗口来设置,显示格式也是如此。猜测值和限制不适用于函数或过程,因为它们使用赋值语句而不是等式。
图3-5:变量信息对话框的PR函数页面。
程序
EES过程非常类似于EES函数,除了它们允许多个输出,并且必须使用Call命令来访问。
程序的格式
程序的格式如下:
过程过程名(输入1,输入2,hellip;,输入N:输出1,输出2,hellip;注意,其中一些必须具有以下形式:
输出1 =hellip;输出2 =hellip;
hellip;
输出M =hellip;
结束
过程声明必须与任何函数声明一起出现在“方程式”窗口的顶部,并且必须以关键字Procedure开头。过程名(procedure dure_name)和参数列表位于同一行。参数列表用括号括起来。第一组参数是输入(输入1、输入2等);这些值通常在调用过程时已知并指定。输入列表以冒号结束,冒号后面是输出列表(输出1、输出2等)。输出必须在过程体中计算。过程被关键字End终止。与第3.2节中讨论的函数一样,用于编写过程的代码必须是赋值语句或逻辑语句。ee按照这些语句出现的顺序处理它们。
使用Call命令访问过程:
调用procedure dure_name(输入1,输入2,hellip;,输入N:输出1,输出2,hellip;、输出)
在调用命令之后,输出变量(输出1、输出2等)的值将由过程分配。必须使用出现在过程语句中的相同数量的参数来调用过程。调用语句中的参数名称不必与过程语句中的参数名称匹配;只有他们的顺序才重要。参数可以是常量、字符串变量、数值变量或代数表达式。与函数一样,过程有自己的本地工作区。过程中的语句不能引用没有传递给过程的变量,这些变量以前是在过程本身中定义的,或者使用$Common指令定义为全局变量。
函数可以引用任何其他内置函数、过程或其他程序实体,这些实体是使用库文件加载的(第11章)。然而过程,像函数一样,不能调用它们自己。过程可能不调用模块,但它们可能调用子程序(在第10章中描述)。
过程的例子
我们将通过一个简单的例子来说明一个过程的使用,这个例子可以找到两个值(X和Y)的乘
剩余内容已隐藏,支付完成后下载完整资料
资料编号:[237310],资料为PDF文档或Word文档,PDF文档可免费转换为Word
以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。