摘 要:以管道工程领域的结构应力分析要求为研究对象,针对通用有限元分析软件的命令众多、操作复杂的特点,提出了以Visual Basic开发用户图形化操作界面的方法来打包和封装参数化过程命令,在后台调用分析软件进行计算,并输出结果至用户界面,从而建立了管道应力参数化计算机辅助分析平台,该平台大大简化了分析过程并提高了工程设计效率,方便工程人员进行及时的分析和操作。
关键词:管道;应力分析;Visual Basic;有限元软件;参数化
在工程领域,流体的输送一般通过管道来实现,相对于其他复杂容器而言,虽然管道自身的结构比较简单,但管道的长度较长,方向多变,其强度直接影响到生产过程的安全[1],因此在管道工程设计中一般要对管道进行结构分析以保证其工作应力在许用的范围内。而对于输送介质向高压、高温或者低温的压力管道而言[2],其应力分析工作十分繁琐,一般要由管道工程师利用专业的管道有限元分析软件来进行。目前的有限元分析软件按功能可分为通用软件和专业软件,通用分析软件可以对任何结构、任何复杂度的管道进行强度分析,但是需要工程人员熟悉软件前处理、计算及后处理等繁琐的菜单操作和命令。目前国内的设计机构一般采用的通用有限元软件有ANSYS、ABAQUS、ADINA等。专业分析软件只针对某种特定结构,例如在管道工程领域得到广泛使用的应力分析软件、CAESARII、AUTOPIPE等。这些软件具备了良好的输入、输出界面,工程人员掌握了软件的一般操作方法后,只需要进行管道的建模,软件会自动进行应力的分析和后处理等操作,方便专业人员进行设计。对于设计机构,通常都要配置这两种分析软件,此时软件的通用性和专业性成为一对矛盾,通用软件虽然处理的问题多样化,但需要专业水平较高,而专业软件的应用领域则受到限制,造成一定的资源浪费。
Visual Basic是基于Windows平台的开发工具,它以结构化Basic语言为基础,继承了原Basic语言简单易学的优点,同时提供了可视化的编程环境,以事件驱动作为运行机制,利用系统提供的大量可视化控件,可以非常快速地开发出适合用户要求且十分友好的图形化操作界面(GUI)[3]。针对上面提到的有限元软件的通用性和专业性问题,将通用分析软件所涉及到的前处理、计算过程和后处理等过程命令进行打包封装,命令中关键参数利用Visual Basic建立界面方便用户进行输入,在后台调用通用软件进行计算,可以大大简化分析过程,弥补通用分析软件的不足。将以上解决方案用于管道工程应用领域,可以开发出用于管道应力分析的参数化计算机辅助分析平台[4],其基本的开发流程如图1所示。
1 参数化命令设计
后台分析软件采用ANSYS,该软件具有管道单元可以模拟管道的各种属性,同时可以加载结构和温度载荷,非常适合进行管道的应力分析。此外,其APDL语言是一种十分高效的命令行操作方式,所有的命令均可以保存成文本的格式进行操作[5]。以石油化工工程领域中,同一平面内的两段直管和一段弯管构成的管道为研究对象,如图2所示。首先参数化命令的设计均用APDL建立关键的输入参数,一般包括材料属性、几何属性、荷载属性、输出属性等,详细的参数定义见表1。同时将这些参数均嵌入到APDL语言按照有限元分析的一般步骤中去,完成建模、加载分析、结果输出等功能,保存成文本文件File_APDL.txt,用于后面设计的Visual Basic程序进行该文件调用和操作。
以定义管道的材料属性为例,采用ANSYS的APDL语言可做如下定义:
MP,DENS,Density !定义密度
MP,EX,1,Elastic_Modulus!定义弹性模量
MP,NUXY,1,Poisson_Ratio!定义泊松比
MP,ALPX,1,Thermal_Expansion!定义热膨胀系数
2 Visual Basic实现
Visual Basic中实现的功能主要是建立友好的用户界面,并在后台设计与ANSYS的接口和调用。用户界面设计要方便用户输入关键的工程参数,并作出必要的判断,后台的设计则要与ANSYS的要求相符合[6],实现参数的输入和结果的反馈。下面对于实现的具体功能做详细的介绍。
2.1 用户界面设计
用户界面主要包括启动界面、输入界面和结果显示界面。启动界面如图3所示。在启动界面中,用户通过“新建”按钮,可以进入参数值为空的输入界面,进行各项参数的输入。通过“打开”按钮,用户可以选择之前已经定义过的输入文件,并将文本文件中对应的参数值读取到输入界面中对应的位置,用户可以重新进行分析,并作相应的修改。
输入参数界面如图4所示,通过此界面,用户可输入管道应力分析中所需的各项参数,在完成输入后单击“保存”按钮,将其保存为用户命名的文本文件。为了确保用户输入的材料参数、管道参数和荷载参数的合法性(必须是数值数据),使用Visual Basin提供的IsNumeric判断函数进行检测。如果用户输入了非数值型数据或输入为空,则弹出如图5所示的消息框来提示用户重新输入。为了确保后台计算的有效性,用户在保存文件之前,“计算”按钮为灰色,不可用,只有当用户单击“保存”按钮,将输入的参数保存成ANSYS可识别的命令行格式的文本文件,才可使用“计算”按钮进行后台计算。输出界面将环向应力、轴向应力、弯曲及Mises应力都输出,同时将Mises应力分布图在该界面中显示。
2.2 后台接口设计
后台接口主要是将上一步中的参数化命令设计文件进行读取,并将用户输入的参数进行替代,同时调用ANSYS进行计算并将计算结果保存,方便用户进行读取。为了将用户输入的参数保存为上节中用APDL命令建立的参数化输入文件,以方便ANSYS的识别和调用,可将用户提前建立好的APDL命令行文本文件中的内容读取出来。由于APDL文件的内容按命令行存放,每行中的数据项又以“,”为分隔符,因而在读取时,首先使用Line Input#语句将文件中的内容按行读取出来,存放在一个数组中,其次使用VB提供的字符串分割函数Split,依次将数组中存放的每行数据以“,”为分隔符,再分割为若干个数据项,并全部存放在一个新的数组中。
如将文本文件File_APDL.txt中的内容按行保存到数组a中的关键代码如下:
Open "
While Not EOF(1)
Line Input #1, a(i)
i = i + 1
Wend
其中,
使用VB提供的Replace函数将文本中出现的参数名替换为文本框中输入的具体参数值。可将APDL命令行中出现的所有参数名用具体的值来替换,实现的关键代码如下:
For i=0 To UBound(str)
str(i)=Replace(str(n), "Density", Trim(Text3.text))
str(i)=Replace(str(n), "Poisson_Ratio", Trim(Text4.text))
…
Next i
将替换后的数据项重新写入用户建立的新文本文件中,为了方便ANSYS的调用,新的文本文件必须与之前建立的APDL命令行文本文件的格式相同,因此在将数组str中的内容写入文件时,必须取得之前APDL文件的命令行数和每行数据项数,数据项首先按行写入,其次每行各个数据项之间还应写入一个“,”。实现的关键代码如下:
Open TextFile_Name For Output As #2
For i = 0 To UBound(a)
s = Split(a(i), ",")
For j = 0 To UBound(s) - 1
Print #2, str(n);
Print #2, ",";
n = n + 1
Next j
Print #2, str(n);
Print #2, Chr(13) + Chr(10);
n = n + 1
Next i
Close #2
当用户选择并打开已有的ANSYS文本文件时,将文件中对应的参数值读取到输入界面中对应的位置。为了将ANSYS文本文件中的参数值能正确显示到相应的文本框中,通过认真分析APDL文件中的命令行,找到识别每个参数值的关键字,以及其和参数值之间的关系,取得需要的参数值,并将其显示在对应的文本框中,用户可以对其中的参数重新进行分析与修改,并重新保存。实现参数读取的关键代码如下:
For i = 0 To UBound(str)
′获得参数工程名和工程描述
If str(i)="/FILENAME" Then Form2.Text1.Text=str(i+1)
If str(i)="/TITLE" Then Form2.Text2.Text=str(i+2)
……
Next i
后台计算采用简单高效并能带输入参数的Shell函数,实现Vsiual Basic对ANSYS的调用。实现后台计算的关键代码如下:
result=Shell("
ansys100 -b -i " &
其中,
3 应用实例
以开发的辅助分析平台进行某管道工程应用实例的计算,管道外径700 mm,壁厚20 mm,第一段直管长3 m,弯管曲率半径0.178 2 m,第二段直管长1.5 m,设计压力10 MPa,设计温度70 ℃,将这些参数在输入参数界面进行定义,经过计算得到的输出结果如图6所示。
本文以管道工程领域的结构应力分析要求为研究对象,针对通用有限元分析软件命令众多、操作复杂的特点,提出了以Visual Basic开发用户图形化操作界面的方法来打包和封装参数化过程命令,在后台调用分析软件进行计算,并输出结果至用户界面,从而建立了管道应力参数化计算机辅助分析平台,该平台可大大简化分析过程并提高工程设计效率,方便工程设计人员进行及时的分析和操作。
参考文献
[1] 蔡灿,钱作勤.基于VB的ANSYS管板强度校核及其优化设计[J].石油与化工设备,2010,13(7):9-13.
[2] 张庆峰,谢禹钧,李翔.基于ANSYS二次开发的管系结构应力分析系统[J].机械设计与制造,2006(3):78-79.
[3] 牟淑志,牟福元,李翔.基于ANSYS二次开发的结构拓扑优化[J].计算机应用与软件,2010,27(2):228-230.
[4] 吕大立,姚安林,王清远.基于VC++的ANSYS二次开发及其在埋地管道动力分析中的应用[J].四川建筑,2010,30(8):116-118.
[5] 于秀坤,朱虹,金基铎,等.基于ANSYS二次开发的输液曲管振动特性分析[J].沈阳航空工业学院学报,2005,22(5):21-23.
[6] 田会方,张杰峰.基于VC与ANSYS的参数化有限元分析[J].交通与计算机,2004,22(6):116-118.