首页 FORTRAN与VB混合编程在船用柴油机工作过程计算中的应用

FORTRAN与VB混合编程在船用柴油机工作过程计算中的应用

举报
开通vip

FORTRAN与VB混合编程在船用柴油机工作过程计算中的应用 船 舶 SHIP & BOAT Vol.22 No.4 August,2011 第 22 卷 第 4 期(总第 130 期) 2011 年 8 月 [计算机应用/CAD] FORTRAN与 VB混合编程在船用柴油机工作过程 计算中的应用 赵茹嫦 王银燕 李余良 (哈尔滨工程大学 动力与能源工程学院 哈尔滨 150001) [关键词] 混合编程;Fortran 语言;VB 语言;船用柴油机;工作过程计算 [摘 要] 对 Fortran 语言编写的船用柴油机工作过程数值模拟计算程序进行可视化编程,讨论了 ...

FORTRAN与VB混合编程在船用柴油机工作过程计算中的应用
船 舶 SHIP & BOAT Vol.22 No.4 August,2011 第 22 卷 第 4 期(总第 130 期) 2011 年 8 月 [计算机应用/CAD] FORTRAN与 VB混合编程在船用柴油机工作过程 计算中的应用 赵茹嫦 王银燕 李余良 (哈尔滨工程大学 动力与能源工程学院 哈尔滨 150001) [关键词] 混合编程;Fortran 语言;VB 语言;船用柴油机;工作过程计算 [摘 要] 对 Fortran 语言编写的船用柴油机工作过程数值模拟计算程序进行可视化编程,讨论了 VB 语言和 Fortran 语言混合编程的方法。 利用 VB 的 shell 函数进行混合编程,实现计算程序的可视化输入输出,同时阐述了编 程中遇到的问题和解决方法。根据 Fortran 计算程序各参数的意义,对 VB 界面进行合理布局,使操作简单方便。采用 可视化程序对某型船用柴油机进行工作过程的数值模拟计算,并对部分计算结果进行实验验证。 [中图分类号] U662.9 [文献标志码] A [文章编号] 1001-9855(2011)04-0070-04 Mixture programming of FORTRAN and VB on working process calculation for diesel engine ZHAO Ru-chang WANG Yin-yan LI Yu-liang (College of Power and Energy,Harbin Engineering University,Harbin 150001,China) Keywords: mixing programming;FORTRAN language;VB language;diesel engine;calculation of working process Abstract: Numerical programming of working process for diesel engine in FORTRAN language was compiled visually,and the method of mixing programming of the VB and Fortran language was discussed. The shell function of VB was used to realize the input and output of visualized calculation program with mixture programming,the problems and solutions were stated. According to the parameters significance of calculation procedure by FORTRAN,the VB interface was layout reasonably,so that the operation can be simple and convenient. The visualized program was adopted to calculate the working process of one type diesel engine,the calculated results were verified by some experiments. [收稿日期] 2011-01-19; [修回日期] 2011-06-10 [作者简介] 赵茹嫦(1985-),女,汉族,硕士,研究方向:船用相继增压柴油机性能分析。 王银燕(1961-),女,汉族,教授、博士生导师,研究方向:船舶内燃机性能、增压技术及增压系统控制。 李余良(1984-),男,汉族,硕士,研究方向:船用相继增压柴油机性能分析。 0 引 言 FORTRAN语言结构缜密,语法严谨,自诞生以 来积累了大量高效而可靠的源程序,广泛地应用于 并行计算和高性能计算等领域。 但由于 FORTRAN 数据的输入输出是在 DOS 界面里完成的,图形功能 弱,计算结果可视化存在缺陷,给用户的使用带来很 多不便。而 VB作为一种 Windows软件开发语言,可 视化图形功能强,开发效率高,采用面向对象的编程 思想,把复杂的设计问题分解为多个能够完成独立 功能的对象的集合 。 利用 VB 的图形功能实现 FORTRAN计算程序的可视化 , 对充分利用原有 FORTRAN 计算程序具有很大的实际意义。 70 1 VB与 FORTRAN混合编程 1.1 基本思想 用 VB 和 FORTRAN 两种语言混合开发计算软 件的方法一般有两种: (1) 用VB设计界面及控制程序,将FORTRAN 程序编译成DLL动态链接库 , 再由VB程序调用 FORTRAN动态链接库。 其中,数据交换由参数传递 来实现; (2) 用 VB 设计界面,将 FORTRAN 应用程序 编译成可执行的 *.exe 应用程序,由 VB 应用程序直 接调用,最终结果显示在 VB界面上。 在整个运行过 程中 ,FORTRAN 应用程序在后台运行 ,VB 和 FORTRAN间的数据交换均通过磁盘文件进行,设计 流程如图1所示[1]。 第一种方法需要解决参数传递的问题。 由于参 数较多,还需要构造动态链接库,比较复杂,因此只 适合于计算量小、参数少的情况;而第二种方法简单 明了,适合于计算量较大、交互操作不多的情况。 因 此,对于船用柴油机工作过程数值模拟计算程序的 可视化编程,适合选用第二种方法。 1.2 调用方法及技术难点 用 VB调用 FORTRAN程序编译的.exe文件时, 首先利用 VB中的 shell函数启动 FORTRAN应用程 序。 在启动 FORTRAN的过程中,将会遇到三个常见 的问题: (1) shell 函数是以异步方式执行的,这种执行 方式不能等待 FORTRAN程序结束而将继续执行后 续 VB程序,使 VB得不到最终的数据而出错; (2) 由于 VB是直接运行于 Windows平台的,而 FORTRAN是一种基于 DOS 平台的应用程序 ,在 Windows平台运行 DOS应用程序时,会退出 Windows 而进入到 DOS 界面,出现“黑屏”现象。 此外,即使 Windows 平台的 DOS 程序终止运行,DOS 也不能自 动关闭,返回到 Windows平台[2]; (3) 由 FORTRAN 编制的柴油机工作过程计算 程序的输入数据是通过 *.txt 文件输入的 , 要使 FORTRAN 进入计算, 需要提供符合 FORTRAN 程 序格式 要求 对教师党员的评价套管和固井爆破片与爆破装置仓库管理基本要求三甲医院都需要复审吗 的数据文本。 因此,解决以上三个问题是实现船用柴油机工 作过程数值计算可视化的关键。 1.3 用 API函数对外壳程序进行同步调用 用 Win32 API 提供的有关进程操作函数可以 解决外壳程序的异步运行问题。首先用 CreatProcess 函数建立 FORTRAN 外壳进程句柄 , 然后通过 WaitForSingleObject函数等待外壳进程终止 ,Close Handle函数用于将打开的进程对象关闭[3]。 这些函 数需要在 VB 中事先声明。 其中 CreateProcess 函数 有 10 个参数 , 参数 IpStartupInfo 用来指向一个 STARTUPINFO类型的结构,该数据结构将指定如何 显示外壳应用程序窗口。 当其成员 dwflags的值等于 1时,表示另一个成 员 wShowWindow有效;当 wShowWindow 的值等于 0 时,表示隐藏外壳应用程序的窗口。 这样的操作就 隐藏了 DOS平台,即不会出现“黑屏”的现象。 此外 ,在WaitForSingleObject函数中 ,参数 dwMilliseconds表示 VB 应用程序等待事件的最长 时间。 当其值等于-1 时,表示可以进行无限长的等 待下去,直到外壳应用程序结束。 因此,除了在 VB 中预先声明上述函数之外,还要声明下列常量和数 据结构: Private type STARTUPINFO Dim cb As Long,IpReserved As String …… End Type Private Type PROCESS_INFORMATION Dim hProcess As Long,hThread As Long, dwProcessId As Long,dwThreadId As Long End Type Const NORMAL_PRIORITY_CLASS =&H20&: Const INFINITE=-1& 图 1 VB 调用 FORTRAN外壳程序 开始 VB主程序 运行FORTRAN外壳程序 FORTRAN程序 运行结束? VB程序显示 结果图形界面 等待FORTRAN程序运行结束 结束 是 否 FORTRAN与 VB 混合编程在船用柴油机工作过程计算中的应用 71 船 舶 SHIP & BOAT Vol.22 No.4 August,2011 第 22 卷 第 4 期(总第 130 期) 2011 年 8 月 图 3 基本参数设置界面 启动并等待外壳程序的实现方法,代码如下: Dim Proc As PROCESS_INFORMATION Dim Start As STARTUPINFO Start.cb=Len(Start):Start.dwFlags=1 Start.wShowWindow=0 CreateProcess 0&, “VB/diesel.exe”,0&,0&,1&, NORMAL_PRIORITY_CLASS,0&,0&,Start,Proc WaitForSingleObject proc.hProcess,INFINITE CloseHandle proc.hProcess 1.4 Shell 函数异步执行的同步化 如果用 VB的 Shell函数来运行 FORTRAN 外壳 程序, 可利用 API 函数 OpenProcess 和 CloseHandle 或 OpenProcess 和 GetExitCodeProcess 来实现等待 Shell 程序的执行, 从而解决 shell 函数异步执行的 问题,具体实现参见下列示例代码。 Public Function StillRun (ByVal ProgramlD)As Boolean Dim HProcess As Long hProgram=OpenProcess(0,False,ProgramID) If Not hProgram=0 Then Still Run=True Else stillRun=Fslse End if CloseHandle hProgram End Function 在利用 Shell函数调用外部程序的过程中,只要 在 shell()语句之后加入循环调用 StillRun()函数的 代码,就可时刻监视 shell 函数所执行的外部程序运 行状态,直到 stillrun()返回 false 时,才执行 shell() 语句的后续程序。 对于 shell 函数启动外壳 DOS 程序时出现 “黑 屏”的问题,解决的办法是将 shell 函数的第二个可 选参数设为 vbHide。 这样在壳程序运行时,DOS 窗 口会自动隐藏。 同时, 在 Windows 环境下右击该 DOS 应用程序文件名,选择“属性”项,在“属性”对 话框的“程序”标签下,选中“退出时关闭窗口”复选 框,此时将生成该 DOS 应用程序的 PIF 文件。 以后 在 Windows 环境下运行该应用程序时,程序结束后 会自动关闭 DOS窗口而返回 Windows 状态。 1.5 由 VB生成 FORTRAN输入文件 FORTRAN 的原始数据读入为 *.txt 文件输入方 式。 为了实现可视化输入,在 VB调用 FORTRAN 的 *.exe 应用程序的同时,将为 FORTRAN 程序创建一 个 .txt 数据读入文件。 具体操作为: 首先, 根据 FORTRAN 程序中的输入数据属性,编制 VB 可视化 界面,对输入参数合理布局,再将输入数据存储到一 个无穷大的数组空间内;待输入完毕,数组中的输入 数据将按 FORTRAN 计算程序本身要求的格式排 列,存入 *txt文件中,为 FORTRAN 程序的计算做好 准备。 实现过程可用图 2来说明。 2 在内燃机工作过程数值模拟计算中 的应用 根据计算机型的基本情况,输入需要设置的参 数。输入界面如图 3所示。首先,通过多项选择按钮 选择计算的机型是柴油机还是汽油机、二冲程还是 四冲程,并在输入框中输入气缸数;其次,输入发动 机整体几何参数,比如缸径、行程、压缩比等,选择是 否有中冷器以及有无增压,若增压则选择增压型式, 是脉冲还是定压;第三,设置燃烧参数,选择燃烧模 型,设置燃油含碳量和低热值等参数;最后,点击按 钮,对进排气系统、增压器、中冷器进行单独设置,点 击计算初始化,对计算中的初始条件进行设定。 图 2 输入文件创建过程 由 VB 界面输入计算数据 以数组形式存储数据 排列数据 生成 *.txt输入文件 72 图 7 排气总管压力波变化曲线 曲轴转角(°CA) 2.19 2.18 2.17 2.16 2.15 2.14 2.13 0 100 200 300 400 500 排 气 管 内 气 体 压 力 ( b ar ) 程序计算结果 GT计算结果 图 5 初始值设置界面 图 4 选择中冷的提示功能 程序还设置了输入提示功能。 比如,在中冷器 复选框中未选择有中冷选项, 点击中冷器按钮,就 会弹出“是否中冷”提示框,若选择“是”(如图 4),鼠 标则返回到中冷器设置复选框,同时进入到中冷器 设置界面。 进入计算前, 还需对部分参数进行初始化设 置。点击计算初始化,进入图 5所示界面。对压力和 温度设一初值, 程序将根据初值进行迭代计算,在 计算要求的精度内收敛,程序继续运行。 为了验证本软件 (命名为 MCY 软件) 的正确 性, 用 MCY 软件对某柴油机工作过程进行了模拟 计算,计算结果与实验值进行对比,同时也与商业 软件 GT-POWER 进行对比计算。 图6为在发动机转速为1 000 r/min时,MCY软件 计算示功图与试验示功图的比较。可以看出,两者在 变化趋势上基本一致,着火前期存在一定误差,达到 最高压力之后,曲线基本吻合。 经计算,最大爆压的 相对误差在允许范围内。图7为排气管内的压力波动 曲线。从曲线整体上可以看出,MCY软件计算结果波 动略大于GT计算结果,但两者波动趋势基本一致。 3 结 语 本文重点讨论了在 VB 对 FORTRAN 可执行程 序的调用,以及在调用过程中将会遇到的问题,并提 出了解决 方案 气瓶 现场处置方案 .pdf气瓶 现场处置方案 .doc见习基地管理方案.doc关于群访事件的化解方案建筑工地扬尘治理专项方案下载 。 本文提供的方法, 在不改变 FORTRAN 程序本 身,保持其算法和强大的数值计算功能的前提下,通 过和 VB 的混合编程, 开发出一个可视化的数值模 拟计算系统,实现了 FORTRAN程序的可视化输入, 提高了原程序的使用效率, 对类似的程序改进具有 重要的指导意义和参考价值。 对 FORTRAN 程序的 改进设计, 并不影响到原程序的功能和独立性 。 FORTRAN 程序作为一个独立的数值计算模块,既 可以与 VB 程序编制的界面集成使用, 又可以单独 使用。 [参考文献] [1] 蒲军平,刘鹏 .VB 界面设计与 FORTRAN 数值计算功 能的组合应用 [J].计算机应用与软件 .2010,27(12): 148-150. [2] 杨华保,田宏星,刘健,陈永新 .FORTRAN 程序的可视 化管理设计研究[J].航空计算技术,2009(4):94-97. [3] 张学强,郑公营.VB 调用 C 和 Fortran 自定义动态库函 数联合编程[J].工程物理地球学报.2010,7(1):55-59. [4] 周方,戴村供,詹友基 .排气系统模拟计算程序的开发 [J].福建工程学院学报,2005,3(1):87-90. 140 120 100 80 60 40 20 0 试验结果 MCY软件计算结果 压 力 ( b ar ) -100 -50 0 50 100 曲轴转角(°CA) 图 6 示功图对比曲线 FORTRAN与 VB 混合编程在船用柴油机工作过程计算中的应用 73
本文档为【FORTRAN与VB混合编程在船用柴油机工作过程计算中的应用】,请使用软件OFFICE或WPS软件打开。作品中的文字与图均可以修改和编辑, 图片更改请在作品中右键图片并更换,文字修改请直接点击文字进行修改,也可以新增和删除文档中的内容。
该文档来自用户分享,如有侵权行为请发邮件ishare@vip.sina.com联系网站客服,我们会及时删除。
[版权声明] 本站所有资料为用户分享产生,若发现您的权利被侵害,请联系客服邮件isharekefu@iask.cn,我们尽快处理。
本作品所展示的图片、画像、字体、音乐的版权可能需版权方额外授权,请谨慎使用。
网站提供的党政主题相关内容(国旗、国徽、党徽..)目的在于配合国家政策宣传,仅限个人学习分享使用,禁止用于任何广告和商用目的。
下载需要: 免费 已有0 人下载
最新资料
资料动态
专题动态
is_419512
暂无简介~
格式:pdf
大小:468KB
软件:PDF阅读器
页数:4
分类:
上传时间:2013-04-25
浏览量:20