1 概述
Python脚本文件可以用来编写Abaqus执行有限元分析过程,而VB则可以生成Python脚本文件,结合两者即可实现Abaqus计算程序的开发。
本次以一个平面开孔模型为例,如图1所示,设计一个程序能够通过程序界面设置相关参数并执行计算。
图1 平面开孔模型
2 程序界面
参数化的参数包括矩形长度w、矩形宽度h、圆的半径r、材料的弹性模量E、泊松比以及压力载荷p,并设置三个按钮:
代码转换:将Python文件编译成可以直接嵌入在VB里面;
生成脚本:利用VB生成Abaqus可以执行的脚本文件;
开始计算:启动Abaqus,调用生成的脚本文件进行有限元分析。
同时还添加了一个PictureBox控件,用于显示图片,方便参数输入。
最终得到的程序界面如图2所示,给所有的Textbox命名,方便后台代码调用,并设置默认值。
图2 程序界面
3 功能代码
1)代码转换
双击代码转换按钮,进入代码编辑页面,该段代码需要打开已经存在的input_1.txt文件,并且逐行读取里面的内容,然后在每行字符串添加一些字符,输出到output_1.txt文件中。
Private Sub Button1_Click(sender As Object, e As EventArgs) Handles Button1.Click
Dim input As Integer
Dim output As Integer
input = 1
output = 2
FileOpen(input, 工作目录.Text & "\input_1.txt", OpenMode.Input)
FileOpen(output, 工作目录.Text & "\output_1.txt", OpenMode.Output)
Dim data As String
data = ""
Do While Not EOF(1)
data = LineInput(input)
PrintLine(output, "PrintLine (input,""" & data & """)")
'PrintLine(output, "f.write(""" & data & "\n" & """)")
Loop
FileClose(1)
FileClose(2)
End Sub
最终实现的功能如图3所示。
图3 代码转换
2)生成脚本
第一步操作中得到转换后的代码直接嵌入VB里面,并且将需要界面输入的参数进行替换,替换如下:
PrintLine(input, "ww=" & 矩形长度.Text)
PrintLine(input, "hh=" & 矩形宽度.Text)
PrintLine(input, "rr=" & 圆的半径.Text)
PrintLine(input, "EE=" & 弹性模量.Text)
PrintLine(input, "bb=" & 泊松比.Text)
PrintLine(input, "pp=" & 压力.Text)
同时,在代码里出现的任何以上参数均采用变量名代替,比如ww。
生成脚本文件同样需要打开一个py格式的文件,将嵌入进来的代码再输出到py文件中。
最终实现的功能如图4所示,生成的py文件:
图4 Py脚本文件
3)开始计算
启动Abaqus调用Python脚本文件在VB里面比较好的实现方法是利用Abaqus Command命令提示符窗口。因此,在VB里面只需要通过shell函数启动计算机里面的Abaqus Command并且在窗口输入调用语句即可。
Private Sub 开始计算_Click(sender As Object, e As EventArgs) Handles 开始计算.Click
Dim exe As String
exe = "C:\Windows\SysWOW64\cmd.exe /c abaqus cae nogui=" & 工作目录.Text & "\script.py" '文件夹不能有空格
Shell(exe, vbNormalFocus)
End Sub
定义了一个字符串变量,获取Abaqus Command的位置,并且输入语句:
abaqus cae nogui=script.py.
这里有两个地方需要注意:1)脚本文件所在的工作目录不许存在空格,否则无法调用;2)如果Abaqus Command的位置和脚本文件位置不在一起,需要指定脚本文件的具体位置。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删