第18章AMESim 导出模块.docx
《第18章AMESim 导出模块.docx》由会员分享,可在线阅读,更多相关《第18章AMESim 导出模块.docx(23页珍藏版)》请在冰豆网上搜索。
第18章AMESim导出模块
第18章:
AMESim导出模块
18.1导言
AMESim导出模块提供给用户一种简便的、在AMESim软件外运行AMESim模型的方法。
AMESim导出模块使得设置模型参数以及获得仿真处理后结果简便易行。
用户可以使用AMESim导出模块从命令行启动仿真进程,或者从其他软件的内置或商业模块中启动仿真进程。
换句话说,AMESim导出模块提供了AMESim与其他许多软件的简便的接口。
如果用户同时也是优化工具iSIGHT或Optimus的用户,AMESim导出模块同时也提供了针对此二者的直接接口。
本章针对以下三个方面提供参考指导:
AMESim导出模块中使用到的概念
导出参数和变量的方法
在AMESim软件外运行AMESim仿真的方法
如果用户对以上三个方面还不熟悉,请先行参阅第9章:
AMEPilot入门和AMESim导出,并做相应的指导练习。
18.2相关术语
在AMESim中我们讨论的是子模型参数,全局参数和子模型变量。
而对于AMESim导出模块我们讨论的是输入和输出参数。
输入参数是指运行仿真进程所需的直接或间接的数值,这些输入参数均有一名称。
在参数状态中每个可见的子模型参数,以及一个模型的每个全局参数都可以作为一个导出输入参数。
输出参数是指运行仿真进程所得出的数值,或者是由其它输出参数计算出的数值;这些输出参数均有一名称。
每一个子模型变量均可作为输出参数。
而这样的输出称为简单输出参数。
复合输出参数是指经过处理后输出:
这些输出由用户定义的表达式计算后得出,这些表达式包含了导出模块的输入参数、简单输出参数或者其他复合输出参数。
在得出复合输出参数的过程中,也会使用到某些特定的函数。
18.3AMESim导出的主要原则
AMESim导出模块的使用包含以下两个步骤:
1.AMESim中的参数化;
2.AMESim外的模型运行。
参数化步骤主要包括在AMESim中定义需要导出的输入和输出。
换句话说,在这个步骤中,用户需要选择在AMESim外可见的的参数和变量。
同时,为了得到再处理结果,用户也需要定义需运行的再处理过程。
参数化步骤完全使用AMESim中的专用图形用户接口完成。
执行步骤可以在其他任意软件中运行。
在此步骤中,用户(或者是用户使用的软件)需要创建一个ASCⅡ文件来设定参数、启动可执行的AMEPilot程序,以及从另一个ASCⅡ文件中读取结果。
以下详细介绍这两个主要步骤。
18.4导出参数设置(ExportParametersSetup)对话框
导出参数设置(ExportParametersSetup)对话框需在参数(Parameter)和运行(Run)模式下启动,相应的菜单路径为Parameters〉ExportSetup。
图18.1为此对话框。
如Figue18.1所示,输入参数(InputParameters),简单输出参数(SimpleOutputParameters)和复合输出参数(CompoundOutputParameters)的设置均有相应的分页。
导出至外部工具(Exporttoanexternaltool)检查对话框和导出格式(Exportformat)下拉式列表仅用于AMESim与iSIGHT或Optimus(稍后祥述)的接口中。
在任意步骤中,用户都可以使用保存(Save)按钮保存设置。
保存操作不会关闭对话框。
如果需要关闭对话框,使用关闭(Close)按钮。
如果关闭时有未保存的已改变选项,AMESim将会提示用户是否保存这些改变的选项。
18.5导出的输入参数
以下讨论如何设置导出的输入参数。
如Figure18.2所示,为输入参数的所有属性的列表。
18.5.1为导出设置增加输入
在导出设置中增加输入参数意即:
在运行时,用户可以使用一个ASCⅡ文件指定输入参数的具体数值。
输入参数可能源自于以下参数:
子模型参数
全局参数
用户自定义参数(意即该参数与AMESim模型无关)
增加一个输入参数的具体方法取决于参数的来源。
但不论何种来源,以下步骤必须预先进行:
1.确保处于参数(Parameter)状态。
2.使用菜单路径Parameters〉ExportSetup调出ExportParametersSetup对话框并选中InputParameter页。
子模型参数作为输入
如使用子模型参数作为输入,按如下步骤进行:
1.点击包含所需参数的部件,这时出现改变参数(ChangeParameter)对话框;
2.选择所感兴趣的参数,将其拖拽至导出参数设置(ExportParameterSetup)对话框:
此时在输入列表中将出现一新行;
3.参考18.5.3输入参数特性一节修改参数名和参数特性。
全局参数作为输入
如使用子模型参数作为输入,按如下步骤进行:
1.打开全局参数设置(GlobalParametersSetup)对话框,菜单路径为Parameters〉Globalparameters.
2.选择所需的全局参数,拖拽至导出参数设置(ExportParametersSetup)对话框,此时输入列表栏将显示一新行。
3.参考18.5.3输入参数特性一节修改参数名和参数特性。
用户自定义输入
如添加用户自定义参数作为输入,按如下步骤进行:
1.点击添加(Add)按钮,此时输入列表栏将显示一新行。
2.参考18.5.3输入参数特性一节修改参数名和参数特性。
用户自定义输入主要用于格式化字符串。
关于格式化字符串的概念请参见18.5.5格式化字符串输入参数一节。
18.5.2从导出设置中删除输入
若要在输入参数页(InputParameters)中删除一个参数,先在列表中选中该参数,而后单击Remove按钮,或按下键盘的Del键。
18.5.3输入参数特性
若已添加了输入参数(InputParameters),则需要设置输入参数的特性。
以下几节详细说明了如何定义输入参数(InputParameters)的特性。
导出名
导出名是参数的标识符。
因此,导出设置中的每一个导出名必须是唯一的(一个输入参数的导出名不能再用于另一输入或输出)。
在整个导出模块中,该导出名用于指定输入参数(InputParameter)。
在本章的余下部分中,输入名为输入的导出名的缩略语。
输入名起始字符须为字母,其余字符只能为字母和下划线。
为简便起见,AMESim会为输入参数自动设置一个缺省名。
但强烈建议用户为输入参数设置一个有意义的名称。
参数种类
输入参数有六种类别。
对于用户自定义输入,当其创建时,它将被自动设置为实数(Real)类别,但它也可被设置为其它五种类别。
对于其他类型的输入变量,则只能设置为某一种特定类别。
对于子模型实型参数或全局实型参数,创建时自动设置为实数(Real)类型,但其也可设置为离散型实数(Realdiscrete)。
对于子模型整型参数或全局整型参数,创建时自动设置为整数(Interger)类型,但其也可设置为离散型整数(Intergerdiscrete)。
对于子模型字符型参数或全局字符型参数,则其必须设置为格式化字符串(FormattedString)或者字符串列表(Stringlist)类型。
对于所有类型参数的导出名(ExportName)和缺省值(Defaultvalue)域均须预先设置。
参数的其它域参照下表设置:
Possiblevalues
Upperbound
Lowerbound
Real
No
Yes
Yes
Realdiscrete
Yes
No
No
Integer
No
Yes
Yes
Integerdiscrete
Yes
No
No
Formattedstring
No
No
No
Stringlist
Yes
No
No
许可值(Possiblevalues)是列表中的一个或几个元素,数值之间使用分号(;)隔开。
列表中最后一个数值之后可不用分号。
以下为一实数列表:
12;24.5;1.23e-1
以下为一以文件名作为字符串列(Stringlist)参数的许可值域的例子:
FluidProps1.data;FluidProps2.data;FluidProps7.data
实型(Real)和整型(Integer)参数
参数值可在上界(Upperbound)和下界(Lowerbound)任取。
实数离散型(Realdiscrete)和整数离散型(Integerdiscrete)参数
参数值可取许可值(Possiblevalues)域中任一值。
而缺省值(Defaultvalue)必须为许可值中一值.
字符串列参数
字符串列参数的值只能在许可值(Possiblevalues)中选择。
在执行阶段,不允许直接设定字符串列参数的值,而只能将许可值域中的值赋予字符串列参数。
格式化字符串参数
在运行过程中,AMEPilot将会使格式化字符串中的某些格式化字段用其它参数的当前值取代。
因此,在运行阶段,用户不能直接设置格式化字符串的值,AMEPilot将会使用其它参数值设置格式化字符串。
由于格式化字符串比其它类型的参数更为复杂一些,因此在节18.5.5:
格式化字符串输入参数中,将会专门讨论格式化字符串。
当你要保存参数设置时,AMESim将会自动执行检查。
如果检测到参数设置错误,AMESim将会显示相关信息。
如Figure18.3所示。
注意:
在用户欲使用AMESim和AMESim内嵌的设计开发特性提供的直接接口的情况下,用户才可能使用到离散型参数;在其它情况下,导出模块并不使用离散型参数,但用户也可使用一些提示信息将离散型参数列表的填满(但是模块不处理该“参数”列表)。
只读域(Read-onlyfields)
当输入参数(InputParameter)是一个子模型参数或者是一个全局参数时,输入参数(InputParameter)将会从子模型参数或全局参数中继承特定的信息,作为输入参数(InputParameter)的只读域的值。
当输入参数(InputParameter)来源是子模型参数时,输入参数(InputParameter)的子模型(Submodel)域的值将由子模型名和实例数构造。
输入参数标题将用AMESimTitle域。
如果输入参数为一实数参数,则实数参数的单位将会复制到单位(Units)域。
如Figure18.4所示。
对于全局参数而言,处理情况类似。
如Figure18.5所示。
对于用户自定义型输入参数,子模型(Submodel),AMESim标题(AMESimTitle)和单位(Units)三个域均为空白。
如图Figure18.6所示。
18.5.4
向量作为输入参数
一些子模型参数是向量。
在这种情况下,输入参数的的具体设置依赖于向量是否以各个分量的形式定义(参见“向量变量”,英文手册Page414)。
在输入参数页(InputParameterstab)下,如果拖拽一个向量至其中:
如果向量是以各个分量的分别定义来确定的(即Options菜单中的Expandvectors项选中,参见英文手册Page414),则向量的各个分量均将在输入参数页显示出来;如右图所示:
如果向量不是以各个分量的分别定义来确定的(即Options菜单中的Expandvectors项不选中,参见英文手册Page414),则向量将以单个变量的形式在输入参数页显示;如右图所示:
有一点需要特别强调,输入参数不可能只有向量的某个分量,也就是说,向量作为输入参数时,所有的分量均作为向量的一部分作为输入参数。
而向量作为输入参数时,以下两种操作与向量是否以各个分量分别定义无关,具体情况如下:
以通常方式改变向量的导出名(ExportName),而不在导出名后添加任何一种小括号时(添加小括号将在用户确认的情况下,由系统自动添加),向量的所有分量的导出名将自动更新。
以通常方式删除向量时(按下Remove按钮或按下键盘的Del键进行删除),向量的所有分量均将删除。
对于向量作为输入参数时的其它域,操作情况与ChangeParameter对话框相同。
若向量是在输入参数页中以分量展开形式显示时,那么用户可以单独改变分量的其它域。
当向量在输入参数页中不是以展开方式显示时,此时若向量的分量某域的值不全相同,则此域将显示为三个问号“?
?
?
”。
若向量在输入参数页中不是以展开方式显示,此时若更改向量的某域值,则该值将会被系统自动赋予向量的每个分量。
18.5.5
格式化字符串作为输入参数
当格式化字符串作为输入参数,其设置较其它类型的参数要复杂,因此需要本节对其进行专门叙述。
在此首先给出一个简单的例子,其后再进行通常叙述。
格式化字符串用于定义子模型的文本参数。
在这种情况下,格式化字符串实际上是一个数据文件名。
如图18.7所示,当格式化字符串为${FluidIndex}时,AMEPilot将以输入参数中的名为FluidIndex的参数值作为文件名的一部分插入文件名中。
如果FluidIndex值为8,那么文件命名为fluid8.data。
由于FluidIndex的值可以有0~12这13个值,因此AMEPilot可以定义13个不同的文件名。
在9.2.1节中,介绍了另一个关于配置导出的简单例子。
现在对格式化字符串进行一下简要介绍。
格式化字符串是系统根据其它参数的值来合成一个文本参数的方法。
它用于在运行时更换预先格式化的元素。
这些预先格式化的元素是由一个整形或实型输入参数结合“${}”共同构成的,形如“${参数名}”。
运行时,凡是形如${参数名}的部分均将由参数名对应的参数值替代。
18.6导出简单输出
以下我们介绍简单输出参数。
如图Figure18.8,简单输出参数(SimpleOutputParameter)页中列出所有简单输出参数及各个参数的特性。
18.6.1
在导出设置中添加简单输出
简单输出参数(SimpleOutputParameter)是由子模型变量对应的参数。
在导出设置中添加一个简单输出参数,意即用户将得到一个对应于特定变量的最终值。
用户可能对于某个变量对应的简单输出参数值不感兴趣,但是有时为了创建复合输出参数(CompoundOutputParameter),用户须添加有关的简单输出参数。
用户参照下列步骤添加简单输出参数:
1.首先确保处于运行(Run)模式;
2.如有必要,按照菜单路径Parameter〉ExportSetup…调出导出参数设置对话框;
3.点击包含相应变量的部件,出现VariableList对话框;
4.选择相应变量,并拖拽至导出参数设置对话框,这时在简单输出列表中将出现一新行;
18.6.2在导出设置中删除简单输出
若要在简单输出参数设置中删除一参数,则选中该参数,点击Remove按钮或按下键盘上的Del键。
18.6.3简单输出参数属性
一旦添加了简单输出参数,就需要对参数的某些属性进行设置。
导出名
导出名的设置与输入参数设置导出名的方法相同,参见英文版的Page559。
只读域
在导出参数设置对话框,在简单输出参数显示列表中,子模型,AMESim和单位等三个域均为只读域。
它们只和简单输出参数的来源有关。
18.7
复合输出参数
当选中复合输出参数页时,复合输出参数页会显示带两个域的列表,如图18.9所示。
18.8.1在导出设置中添加复合输出
复合输出参数是由AMEPilot根据用户定义的表达式自动计算的。
表达式可以是下列几种元素的组合:
简单输出参数
输入参数
其它复合输出参数
简单的数学函数
特定导出函数
简单的数学函数是指诸如sin,exp,abs等数学函数。
在“ExpressionEditor”(Page366)中已经介绍过。
某些特定导出函数(例如globMin,globMax,和resrtict等)在第十章(AMESim设计开发初步)中,已经举例介绍过。
在附录C中给出了AMESim的所有特定导出函数,并给出了各个函数的详细介绍。
用户可以参照下列步骤添加复合输出参数:
1.按照菜单路径Parameter〉ExportSetup…调出导出参数设置对话框;
2.确定选中复合输出函数页;
3.点击Add按钮
这时在复合输出函数页中的列表中会出现一新行。
18.8.2在导出设置中删除复合输出参数
若要在复合输出参数列表设置中删除一参数,须先选中该参数,点击Remove按钮或按下键盘上的Del键。
18.8.3复合输出参数属性
在添加了复合输出参数后,需要对参数的某些属性进行设置。
以下几节给出了如何设置这些属性:
Exportname导出名
导出名的设置与输入参数设置导出名的方法相同,参见“导出名”一节或英文版手册Page559。
Expression表达式
AMEPilot需要此属性用于计算复合输出值。
若要改变表达式,双击相应单元格,此时该单元格处于编辑状态,而后输入新表达式。
编辑新表达式有以下两种方式:
如果表达式较为简单,用户可以直接输入新表达式,回车后该新表达式被激活;
单击待编辑单元格右端的
按钮,在弹出的表达式编辑器中编辑表达式。
在“ExpressionEditor…”一节中(英文手册第366页),介绍了如何创建表达式。
表达式编辑器针对导出设置有相应的增强功能,如图18.10所示:
18.8.4表达式求值规则
在程序运行时,表达式求值有以下法则:
对于输入参数(InputParameters),其数值用于进行仿真(例如:
自行设置的值或程序设置的缺省值);
对于简单输入参数(SimpleOutputParameter):
除非用户特别指定简单输入参数的值(例如使用valueAt函数指定输入参数值),否则运行过程中将使用仿真进程结束后的相应变量的最终值;
对于复合输出变量(CompoundOutputParameters),运行过程将使用相应表达式的运行结果;
在仿真过程中,某些特定函数将函数中使用的所有变量值统一设为某一变量值。
如果一个复合输出参数(CompoundOutputParameter)使用了该类函数,那么该复合输出参数(CompoundOutputParameter)在每个仿真通讯时进行计算。
在某些情况下,要求出一个复合输出参数(CompoundOutputParameter)往往是不可能的。
在这些情况下,该复合输出参数(CompoundOutputParameter)的结果将被视为未定义,而使用到该复合输出参数(CompoundOutputParameter)值的其它复合输出参数(CompoundOutputParameter)的结果同样视为未定义。
最后还有一点需加以注意:
表达式中的整形输入参数在运行过程中将被视为一个实型参数进行计算。
18.8在AMESim外执行仿真
若用户以将输入和输出导出至其它外部软件中,那么就可以在AMESim外执行仿真了。
在本节中,总是假设用户已经手动运行了AMEPilot。
如果用户正在运行AMESIm设计开发工具,或者使用了AMEPilot的接口,那么在AMESim外执行仿真的过程都是类似的,但这两种情况中,AMEPilot都会自动运行。
如果用户需要手动进行仿真,或者当用户设计一个接口时需要了解AMEPilot的具体运行过程,那么需要阅读本章。
若不然,可以越过本节,直接阅读18.9节(直接接口)。
在AMESim外执行仿真,参照以下三个步骤进行:
1.使用ASCⅡ文件设定输入参数;
2.使用AMEPilot进行仿真;
3.输出仿真结果至另一ASCⅡ文件。
18.8.1设置输入参数
用户可以使用ASCⅡ文件来设定输入参数(参数将被用于仿真)。
文件名和格式必须遵守ASCⅡ文件一节的相关规则。
文件命名规则
设置输入参数值的ASCⅡ文件的文件名时基于目标模型的名称。
如果用户模型名为“myModel”,则输入参数的ASCⅡ文件名须为myModel_.in。
用户可以完全手工设定文件名,但也有另外一种更为简易的方法。
例如一个文件名为myModel_.in.tpl的文件已经创建,该文件包含了输入参数的缺省值。
用户可以复制该文件,将备份文件命名为myModel_.in,而后编辑之。
常见格式规格
ASCⅡ文件并没有包含所有的输入参数,换句话说,用户可能遗漏了某些参数。
此时,遗漏的输入参数将被设为缺省值。
对于输入参数在文件中的次序没有限制。
实数型输入参数
在输入文件中,对于每一个实数型输入参数,均有设置其值的一行。
该行须以输入参数的导出名作为行的起始,以该参数的设置值作为该行的终止,其间需加入一个或多个空格符。
因此,如果用户要设置将一个名为“mainDampingRating”的输入参数的值设置为12000,则输入文件中,该参数的设置行可为如下格式:
mainDampingRating12000
或
mainDampingRating12000.00
或
mainDampingRating1.2e4
对于向量参数在ASCⅡ文件中的设置,则需对该向量的各个分量均有一单独的设置行。
若一个向量名为“internalNodePressure”,那么该向量的分量的值的设置均需以“inernalNodePressure[i]”作为行起始,其中“i”向量分量的编号。
举例来说:
若用户需设置一个名为“internalNodePressure”的、具有三个分量的向量,则须在输入文件中添加如下三行:
internalNodePressure[1]1.0
internalNodePressure[2]1.2
internalNodePressure[3]1.4
整数型参数设置
与实数型参数比较在ASCⅡ输入文件(.in文件)的设置样,对于整数型参数在在ASCⅡ输入文件的设置与之大致相同,对于每一个整数型输入参数,均有设置其值的一行。
该行须以输入参数的导出名作为行的起始,以该参数的设置值作为该行的终止,其间需加入一个或多个空格符。
因此,如果用户要设置将一个名为“indexOfFluid”的输入参数的值设置为2,则输入文件中,该参数的设置行可为如下格式:
indexOfFluid2
或
indexOfFluid0.2e1
字符串参数
对于字符串参数在ASCⅡ文件中的设置,与前述几种参数的设置不同。
用户不能在文件中直接设置参数值。
用户须在字符串参数中的可变字符的列表中,分配所需的字符。
举例来说:
用户已定义一个导出的输入参数为字符串参数;该参数名为“fluidPropsFile”;该参数对应与一个子模型参数,该子模型参数显示了一个包含了使用中流体性质的文件;用户已设置下列可能值的列表(显然,这些值实际上是仿真中使用到的文件的列表):
waterProps.data;dieseProps.data;15W40.data