当前位置: 首页 > 范文大全 > 公文范文 >

基于VC++6.0与Fortran混合编程的斜井螺杆泵优化设计

时间:2022-03-22 11:02:40  浏览次数:

摘 要:针对某斜井螺杆泵优化设计软件进行大型数值计算时效率很低的问题,应用VC++ 6.0与Fortran语言混合编程的方法编制斜井螺杆泵优化设计软件. 该方法用VC++ 6.0制作界面,用Fortran语言编写主运算程序,用VC++ 6.0调用Fortran生成的动态链接库. 对于斜井螺杆泵的优化设计,采用Fortran编写优化设计程序,用ANSYS对整个抽油杆系统进行非线性大变形有限元分析﹑静力分析和疲劳分析. 工程实例表明,该软件计算效率较高,可以提高人机交互性和可操作性,同时验证混合编程在大型数值运算软件设计中的可行性、实用性以及有效性.

关键词:斜井螺杆泵;混合编程;优化设计;ANSYS;Fortran;VC++ 6.0

中图分类号:TH327;TB115;TP311.52

文献标志码:A

Optimization design on declining-well screw pump based on mixed programming with VC++ 6.0 and Fortran

ZHANG Wenzhang,LONG Lianchun

(College of Mechanical Eng. & Applied Electronics Tech.,Beijing Univ. of Tech.,Beijing 100124,China)

Abstract:As to the low efficiency of large scale numerical calculation of a declining-well screw pump optimization software,the mixed programming method with VC++ 6.0 and Fortran are used to develop the optimization design software. The interface is designed by VC++ 6.0,the main calculation program is developed by Fortran and VC++ 6.0 is used to call the dynamic link library built by Fortran. In the optimization design of declining well screw-pump,the optimization design program is developed by Fortran,and the nonlinear large-deformation finite element,static stress and fatigue are analyzed by ANSYS. The examples show that the software has higher calculation efficiency,enhance the human-computer interaction and the operability. At the same time,the feasibility,practicability and validity of the mixed programming method are validated.

Key words:declining-well screw pump;mixed programming;optimization design;ANSYS;Fortran;VC++ 6.0

0 引 言

斜井螺杆泵优化设计软件是由北京工业大学工程数值模拟中心开发的1套用于斜井采油螺杆泵优化选配的专业设计软件,主要功能是应用系统几何非线性分析方法、有限元静力及疲劳分析方法,对整体及局部进行较精确的分析,解决螺杆泵泵型及抽油杆尺寸的选配问题.因数据计算量很大,单纯用VC++ 6.0程序计算耗时过多,容易造成计算中断,所以在使用VC++ 6.0作为主设计平台的情况下,采用Fortran语言作为数值计算程序主体,即混合编程[1-3].通过混合编程实现2种程序设计语言的组合、相互调用、参数传递、数据结构与信息共享,从而形成统一的优化设计程序实体.

采用VC++ 6.0和Fortran语言混合编程可使得VC++ 6.0良好的界面技术与Fortran优异的数值计算功能优势互补.在面向对象的[4]斜井螺杆泵优化设计软件开发中,用VC++ 6.0制作界面以及调用Fortran程序改造后(因为动态链接库中不存在主程序,所以必须将主程序改造为子程序)生成的动态数据库文件(.dll)并集成为1个系统.

1 混合编程实现方法

目前,比较成熟实用的Fortran和VC++ 6.0混合编程实现方法主要有2种:(1)VC++ 6.0直接调用Fortran生成的可执行文件;(2)VC++ 6.0调用Fortran生成的动态链接库(.dll).这里采用第2种方式,用Fortran语言编写主运算程序并生成动态链接库,VC++ 6.0调用此动态数据库.为执行此程序运算,必须解决如下2个主要问题:

(1)编辑Fortran源代码,生成VC++ 6.0可调用的动态链接文件(.dll).动态链接(Dynamic Link Library,DLL)文件能被多个进程共享使用.[5-6]做法是在Fortran中新建1个项目,选择DLL,然后在项目中加入FORDLL.F90程序文件,再执行“ReBuild all”命令,便可得到“*.lib”和“*.dll”2个文件.

(2)VC++ 6.0调用动态链接文件(.dll).在生成动态链接库后,接着调用所生成的动态链接库.VC++ 6.0调用DLL文件有2种方式[7]:①静态装载调用,即将Fortran的LIB文件直接加入到工程文件中,然后直接编译执行,该方法简单且需要添加的代码少,但运算慢、占用系统资源过多;②动态装载调用,即通过Windows API 函数LoadLibrary()置入DLL中,然后用寻址函数(GetProcAddress())取得DLL中被调用的Fortran函数的地址,再调用该Fortran函数,最后用FreeLibrary()函数释放DLL.这种方法可以完全控制动态链接的载入与释放,最大限度地利用现有系统资源,在不需要配置较高性能计算机的情况下实现快速计算功能,因此采用第2种方法.

2 斜井螺杆泵优化设计软件编程实例

设计软件采用VC++ 6.0作为前处理与后处理的界面设计平台,作为主计算语言的Fortran语言,用Microsoft Office Access 2003建立数据库文件[8],VC++ 6.0调用Fortran(改造后)生成的动态链接库(.dll)以及由Access 2003建立的数据库文件(STANDARD.MDB).

数据处理主界面见图1,下窗口为原始数据输入窗口,上窗口为优化设计计算结果输出窗口.

2.1 斜井螺杆泵优化设计软件4大主模块设计

斜井螺杆泵优化设计软件集有限元分析和优化设计于一体,包括系统几何非线性分析模块、有限元静力分析模块、疲劳分析模块及泵型与抽油杆尺寸选配优化设计模块,其中前3个分析模拟基于ANSYS有限元分析,须安装ANSYS才可执行.采用ANSYS的二次开发接口语言APDL编制相应参数化命令流,使软件可以无须干涉就能完成ANSYS部分的分析计算.为简化ANSYS中不规则多边形平面图元创建工作,利用APDL编写新的宏命令.[9]

2.1.1 非线性分析模块

螺杆会因承受载荷过大而发生大变形,采用ANSYS对整个抽油杆系统进行非线性大变形有限元分析,整体分析在泵和抽油杆优化后进行,分析采用三维管单元,用牛顿—纳弗逊方法迭代求解非线性问题,计算抽油杆变形情况、节点位移以及作用力.

2.1.2 静力分析模块

对螺杆系统中部分承受过大载荷的关键螺杆,采用ANSYS对其进行精确静应力应变分析.在系统非线性分析基础上对系统中的任一单元进行三维有限元静力分析,模型外载由系统非线性有限元分析自动生成,采用20节点三维等参单元划分抽油杆,求出抽油杆的应力分布情况.

2.1.3 疲劳分析模块

螺杆所处工况是在受较大压力与扭矩联合作用下反复使用,容易造成螺杆中危险部位的高周疲劳损伤.这些螺杆只运用静力学分析显然无法满足实际工况需要,在此采用ANSYS对螺杆中的危险点进行疲劳分析.在静力分析基础上,采用载荷事件组合载荷的方法,对1根杆中的危险点进行疲劳分析.

2.1.4 优化设计模块

采用Fortran计算语言计算处理输入的前处理数据(见图2),计算分析一定条件下斜井应该采用的螺杆(包括螺杆型号、杆径与杆长等)、泵(包括泵型号、每转排量、泵级数、转速以及产量等)、下泵深度、采油指数、系统效率、投入产出比以及电机输出功率,并对泵型与抽油杆尺寸选配进行优化设计.

2.2 斜井螺杆泵优化设计软件数据库

(1)材料库包括材料名称、密度、弹性模量和泊松比,见表1.(2)泵库(P)包括泵型号、每转排量、泵级数、转速以及产量等,见表2.(3)杆库(B)包括螺杆型号、杆径和杆长等,见表3.

3 结束语

通过采用Fortran和VC++ 6.0混合编程技术,可较好地实现Fortran的强大数值计算功能与VC++ 6.0优异的界面编程功能的完美结合.本软件可在较短时间内完成一般数据的计算,解决数值技术中的“速度问题”,提高人机交互性和可操作性,用户使用该软件更为方便简单,对优化设计具有实用性,对设计界面编程具有借鉴意义.

参考文献:

[1] 肖晓玲,卢正鼎,张翔. VC与Fortran语言混合编程[J]. 江汉石油学院学报,2000,22(2):71-74.

[2] 周振红,颜国红,吴虹娟. Fortran与Visual C++混合编程研究[J]. 武汉大学学报,2001,34(2):84-87.

[3] 张志华,王林江,吕庆风. 混合编程与Fortran计算程序可视化[J]. 计算机应用,1999,19(6):33-35.

[4] 罗金炎,陈庆强. 船舶面向对象有限元的应用研究[J]. 计算机辅助工程,2004,13(1):18-22.

[5] 谭德强,何险峰,周家驹. Visual C++和Fortran的混合编程——CASAC软件Windows版的研制[J]. 计算机与应用化学,2001,18(4):324-328.

[6] 边炳传,龙连春,隋允康,等. 基于C++和Fortran混合编程的优化系统设计[J]. 计算机工程与设计,2006,27(11):2046-2048.

[7] 夏舒杰,谭建荣,陈洪亮. 基于文件操作的VC++和Fortran模块交互通信方法[J]. 计算机工程,2003,29(9):63-65.

[8] 李伟. 基于Access数据库的反舰导弹智能导引知识库设计[J]. 控制与制导,2007(3):59-62.

[9] 田晓青. 对ANSYS创建面命令A的改进[J]. 计算机辅助工程,2007,16(4):47-50.

(编辑 廖粤新)

“本文中所涉及到的图表、注解、公式等内容请以PDF格式阅读原文”

推荐访问: 斜井 优化设计 混合 螺杆泵 编程