变量和表格在NAPA宏程序中的应用

2018-11-13 10:00祝文倩
广东造船 2018年5期
关键词:宏程序稳性命令

颜 萍,祝文倩

(1.广东中远海运重工有限公司,东莞 523146;2.广州船舶及海洋工程设计研究院,广州 510250)

1 前言

NAPA软件是由芬兰NAPA公司开发的一款船舶设计软件,在船舶的初步设计及详细设计阶段有着广泛的运用。其中,总体计算模块是NAPA软件的核心部分,主要由船舶建模、静水力、舱容、装载工况、完整稳性和破损稳性等部分组成。我们可以根据设计的需求调用相关的模块进行计算,能有效的提高计算效率。

NAPA软件为设计者提供了强大的开发能力,其中宏的运用是NAPA最有效的工作方式,宏就是将一系列命令组成在一起作为单独的命令完成一个特定任务。宏既可以是简单命令的集合,也可以是包括了输入、输出、条件、计算等功能的复杂程序。此外,还可以利用宏作为一个子程序嵌套在其他的宏中,形成一个多层的宏程序。设计者如能充分掌握NAPA的宏程序编写,可以达到对于NAPA软件的创造性的使用。

宏可以在NAPA中的TEXT文档中运行,以NAPA自带的BASCI作为二次开发语言来实现各种功能的定制。其中,主要的BASCI逻辑语言有循环语句@For...@Next、假设语句@If...@Endif等。宏的运行主要依靠变量和表格两种表现形式来实现,以下我们就这两者在宏程序中的应用做一个简要的介绍。

2 变量在宏程序中的应用

变量在NAPA中有三种基本的形式:整数型变量,如@X=5;实数型变量,比如@X=5.0;字符串变量,如@X=’LOAD3’。

变量的种类分为自定义变量及NAPA自带变量两种:(1)自定义变量,如@I=20或@I=RSIZE(A) 等;(2)NAPA自 带 变 量,如 在 装 载 工 况 中 的 LD.QNT(‘quantity’)或LD.SQNT(‘quantity’)等; 在 稳 性 衡 准 中 的CR.VALUE(‘quantity’) 或 CR.ASSIGN(‘quantity’)等;在破损稳性中的中的DA.ASSIGN(‘quantity’)或DA.CROSSTIME(‘quantity’)等;在舱容计算中的CP.GAUGE(‘quantity’)或 CP.GEMO(‘quantity’)等。NAPA自带变量的形式及种类繁多,具体的各种变量解释和运行方式可以参见NAPA MANUAL中每章的Service Function。

2.1 变量在牲口船满足AMSA衡准中的运用

澳大利亚海事安全局(AMSA)对牲口船有特殊的衡准要求,其中大部分衡准与IS CODE的基本稳性衡准要求类似,只要简单的修改NAPA中衡准语句便可以套用。但是,其中有一条面积衡准(见图1),要求A的面积不小于(0.2*(A+B)的面积+1.03m*degree),没有类似的衡准可以套用,要求我们必须自己编写宏来生成衡准。

图1 牲口船满足AMSA稳性衡准中的面积衡准

利用变量,我们可以较方便的生成衡准所需要的面积值以及衡准要求值,部分核心代码如下:

从以上代码,利用NAPA自带变量CR.VAUE(‘quantity’)可以:由cr.value('mom')得到力矩变量组;由cr.value('ephi')得到动稳性力臂变量组;由cr.value('gz')得到静稳性力臂变量组;由cr.value('ang')得到横倾角变量组。

利用自定义变量:由interp(hphi ang 0)得到动稳性力臂为0时的角度ang2;由interp (ang mom1 ang2)得到横倾角为ang2时的力矩;同样也可以得到ang3时的力矩。

通过areaAB和req两个变量的计算,可以得到A+B的面积以及要求的面积衡准值。

将以上的变量生成的宏程序命名为AMSA.AREA,我们可以利用宏程序生成稳性衡准如下:

2.2 变量在倾斜试验中的运用

目前大部分的倾斜试验是利用各单位自己编制的Excel表格来进行计算的,其中需要手动输入各种液态舱室在倾斜试验状态下的舱容、舱内液体的重心位置及自由液面数据,这些数据大多是利用手动测深表通过各种插值得到的,其消耗时间较多也容易出现计算错误。而利用变量在宏中的运用,可以准确快捷的得到各类舱室的倾斜试验数据,其部分核心代码如下:

其中,我们可以自己定义舱室名变量@TANK及测深高度值变量@SND。因此,我们仅需输入要查询的舱室名以及倾斜试验量取的测深高度值,利用循环语句可以方便得到所有需查询的舱室的倾斜试验数据。

3 表格在宏中的应用

表格在宏中的应用居于非常核心的地位。通过Tab的导出、存储、导入、运算等功能,可以方便的实现各种数据的运算。除了NAPA默认的Tab*table格式外,我们还有多种NAPA特殊的表格形式,如表示布置的表格形式ARR*、重量分布单元的表格形式ELE*等。

通过Tab中的各种命令,可以使用NEW& COL命令产生新的表格,并定义表格的数据形式,例如整数、实数还是字符串形式等;利用TP.VALUE()及TP.COLUMN()等命令,可以将原有表格的数据导出;利用ASG、CAL等命令,可以将导出的数据按照一定的数学关系选择性的分配给新的表格;最后可以利用DIAG命令,将新生成的表格中数据用图形形象的表现出来。

3.1 利用Tab生成数据总结表

在稳性计算中,我们需要列出各种总结表、各个工况的信息(如弯矩和剪力总结表)、浮态及稳性衡准的总结表等。利用Tab的特点,可以方便的得到各种数据总结表。

下面将以某PSV船为例,演示生成新的表格、导出旧表格数据、将旧表格数据选择性赋予新的表格、最终生成该船的Stability Margin的总结表。部分核心代码如下所示:

第一步,生成新的总结表格:

通过生成的新的总结表格,可以任意选择总结表需要输出的表列数据,同时在生成新表格的同时也将每列表格的数据形式定义好。其中C表示此列表格为字符串形式,R表示此列表格为实数形式。

第二步,导出各工况下以及各种衡准下的最小GM值的表格数据作为变量组以便后面使用:

利用TP.VALUE()将工况的最小GM值、衡准的要求值、以及GM值与要求值的余量值等表格数据导出。

第三步,利用ASG或CAL命令将导出的表格数据选择性的分配到新的表格中去:

最终,生成了Stability Margin的总结表如表1所示。

表1 Stability Margin总结表

3.2 利用Tab生成表格数据图

利用Tab中的DIAG命令,可以将数据用数据图的形式表现出来,使数据更加直观。以下以一艘牲口船的极限GM总结表(表2)为例,生成总结表的数据图。此处的极限GM值总结表,按不同的吃水分成满足IMO 衡准的极限GM数值满足AMSA衡准的极限GM值以及满足破损稳性的极限GM值。以下列出宏程序的部分语句作为例子,说明如何将表格数据转换为图表。

表2 极限GM总结表

从以上宏程序可知,首先需要进入到图表的源数据表格GMLIM@TR(M)中得到此表格中的数据;利用表格的画图命令DIAG,可以将源数据表格中的MAXGM和T的数据以平滑的曲线形式画出来,得到以上源数据表格MAXGM列对应于吃水T的曲线;按照同样的方式,也可以得到IMOLIM和AMSALIM以及DLIM对应于吃水T列曲线,并用不同的颜色标示出来;最终,我们可以得到多列极限GM数据对于吃水T的数据图。

4 运用变量与表格需要注意的地方

虽然变量与表格的运用能够较好的提高工作效率,但同时也是宏程序中的一个难点。在宏程序的运用中,需要注意以下几点以保证宏程序运行的准确性:

(1)首先要保证逻辑语言的闭环,保证多种变量和表格能够在一个嵌套的逻辑语言中运行,否则容易造成程序出现错误循环而不能进行计算;

(2)在NAPA的宏程序中出现的字符串变量尽量使用大写字母来表示,在部分宏程序中存在小写字母的字符串变量报错的情况;

(3)因为系统自带的变量可以避免间接求解变量,因此灵活运用系统自带的变量往往能起到事半功倍的效果;

(4)表格分配数据的时候,需要注意数据导入是否在正确行与列,保证数据的准确性;

(5)NAPA默认的表格名字为table,如果没有给数据输出表格重新命名,那么NAPA输出的数据一般存储在默认的table表格中。

5 结语

变量和表格是NAPA宏程序中的主要运用形式,本文通过实例分别说明了其在宏程序中的运行方式,并介绍了运用变量和表格容易出错或容易忽略的地方。固然,在一个较为复杂的宏程序中,变量和表格是综合运用在一起,而不是简单的运用单个某种形式。通过本文的研究,我们对变量和表格在NAPA宏程序中的运用有了一定的了解,对复杂宏程序的编写将起到一定的指导作用。同时,本文内容对宏程序在NAPA中二次开发和优化设计流程也具有一定的参考借鉴作用。

猜你喜欢
宏程序稳性命令
主编序
船舶稳性控制系统研究
只听主人的命令
椭球槽宏程序编制及其Vericut仿真
水面舰船初稳性高指标要求研究
安装和启动Docker
数控车编程教学中宏程序嵌套的应用
移防命令下达后
通用类宏程序在数控铣床加工中的实践运用
解析Windows10的内部命令