999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

FORTRAN與VB混合編程在船用柴油機工作過程計算中的應用

2011-08-11 01:47:18趙茹嫦王銀燕李余良
船舶 2011年4期
關鍵詞:可視化界面程序

趙茹嫦 王銀燕 李余良

(哈爾濱工程大學 動力與能源工程學院 哈爾濱150001)

0 引 言

FORTRAN語言結構縝密,語法嚴謹,自誕生以來積累了大量高效而可靠的源程序,廣泛地應用于并行計算和高性能計算等領域。但由于FORTRAN數據的輸入輸出是在DOS界面里完成的,圖形功能弱,計算結果可視化存在缺陷,給用戶的使用帶來很多不便。而VB作為一種Windows軟件開發語言,可視化圖形功能強,開發效率高,采用面向對象的編程思想,把復雜的設計問題分解為多個能夠完成獨立功能的對象的集合。利用VB的圖形功能實現FORTRAN計算程序的可視化,對充分利用原有FORTRAN計算程序具有很大的實際意義。

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 VB調用FORTRAN外殼程序

第一種方法需要解決參數傳遞的問題。由于參數較多,還需要構造動態鏈接庫,比較復雜,因此只適合于計算量小、參數少的情況;而第二種方法簡單明了,適合于計算量較大、交互操作不多的情況。因此,對于船用柴油機工作過程數值模擬計算程序的可視化編程,適合選用第二種方法。

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中預先聲明上述函數之外,還要聲明下列常量和數據結構:

啟動并等待外殼程序的實現方法,代碼如下:

1.4 Shell函數異步執行的同步化

如果用VB的Shell函數來運行FORTRAN外殼程序,可利用API函數OpenProcess和CloseHandle或OpenProcess和GetExitCodeProcess來實現等待Shell程序的執行,從而解決shell函數異步執行的問題,具體實現參見下列示例代碼。

在利用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 輸入文件創建過程

2 在內燃機工作過程數值模擬計算中的應用

根據計算機型的基本情況,輸入需要設置的參數。輸入界面如圖3所示。首先,通過多項選擇按鈕選擇計算的機型是柴油機還是汽油機、二沖程還是四沖程,并在輸入框中輸入氣缸數;其次,輸入發動機整體幾何參數,比如缸徑、行程、壓縮比等,選擇是否有中冷器以及有無增壓,若增壓則選擇增壓型式,是脈沖還是定壓;第三,設置燃燒參數,選擇燃燒模型,設置燃油含碳量和低熱值等參數;最后,點擊按鈕,對進排氣系統、增壓器、中冷器進行單獨設置,點擊計算初始化,對計算中的初始條件進行設定。

圖3 基本參數設置界面

程序還設置了輸入提示功能。比如,在中冷器復選框中未選擇有中冷選項,點擊中冷器按鈕,就會彈出“是否中冷”提示框,若選擇“是”(如圖4),鼠標則返回到中冷器設置復選框,同時進入到中冷器設置界面。

進入計算前,還需對部分參數進行初始化設置。點擊計算初始化,進入圖5所示界面。對壓力和溫度設一初值,程序將根據初值進行迭代計算,在計算要求的精度內收斂,程序繼續運行。

為了驗證本軟件 (命名為MCY軟件)的正確性,用MCY軟件對某柴油機工作過程進行了模擬計算,計算結果與實驗值進行對比,同時也與商業軟件GT-POWER進行對比計算。

圖4 選擇中冷的提示功能

圖5 初始值設置界面

圖6 示功圖對比曲線

圖7 排氣總管壓力波變化曲線

圖6為在發動機轉速為1 000 r/min時,MCY軟件計算示功圖與試驗示功圖的比較。可以看出,兩者在變化趨勢上基本一致,著火前期存在一定誤差,達到最高壓力之后,曲線基本吻合。經計算,最大爆壓的相對誤差在允許范圍內。圖7為排氣管內的壓力波動曲線。從曲線整體上可以看出,MCY軟件計算結果波動略大于GT計算結果,但兩者波動趨勢基本一致。

3 結 語

本文重點討論了在VB對FORTRAN可執行程序的調用,以及在調用過程中將會遇到的問題,并提出了解決方案。

本文提供的方法,在不改變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.

猜你喜歡
可視化界面程序
基于CiteSpace的足三里穴研究可視化分析
基于Power BI的油田注水運行動態分析與可視化展示
云南化工(2021年8期)2021-12-21 06:37:54
國企黨委前置研究的“四個界面”
當代陜西(2020年13期)2020-08-24 08:22:02
基于CGAL和OpenGL的海底地形三維可視化
“融評”:黨媒評論的可視化創新
傳媒評論(2019年4期)2019-07-13 05:49:14
試論我國未決羈押程序的立法完善
人大建設(2019年12期)2019-05-21 02:55:44
基于FANUC PICTURE的虛擬軸坐標顯示界面開發方法研究
“程序猿”的生活什么樣
英國與歐盟正式啟動“離婚”程序程序
環球時報(2017-03-30)2017-03-30 06:44:45
人機交互界面發展趨勢研究
主站蜘蛛池模板: 国产网站黄| 青青热久麻豆精品视频在线观看| 久久久久久久久18禁秘| 亚洲国产综合自在线另类| 免费视频在线2021入口| 亚洲国产成人精品青青草原| 免费在线国产一区二区三区精品| 亚洲欧美在线看片AI| 男女男免费视频网站国产| 亚洲人成色在线观看| 国产国产人成免费视频77777| 日韩欧美综合在线制服| 国产精品国产三级国产专业不| 制服丝袜一区| 成人日韩欧美| 亚洲色图综合在线| 一级毛片网| 亚州AV秘 一区二区三区| 国产靠逼视频| 国产女人18水真多毛片18精品| 中文字幕在线一区二区在线| 日韩在线视频网站| 精品亚洲欧美中文字幕在线看| 国产高清又黄又嫩的免费视频网站| 国产精品欧美激情| 国产一区二区影院| 久一在线视频| 欧美国产日本高清不卡| 国产一区二区人大臿蕉香蕉| 日本午夜三级| 中文字幕色在线| 欲色天天综合网| 国产精品亚欧美一区二区三区| 国产丝袜啪啪| 在线不卡免费视频| 99热这里只有精品免费国产| 亚洲青涩在线| 欧美日韩资源| 亚洲一级毛片在线播放| 996免费视频国产在线播放| 亚洲乱码视频| 亚洲91在线精品| 午夜福利视频一区| 国内黄色精品| 456亚洲人成高清在线| 成人日韩欧美| 99精品一区二区免费视频| 专干老肥熟女视频网站| 久久国产精品嫖妓| 男女性午夜福利网站| 欧美人与性动交a欧美精品| 欧美日韩v| 亚洲精品午夜天堂网页| 欧美一级黄色影院| 欧美97色| 国产在线第二页| 99激情网| 国产一级片网址| 综合久久五月天| 一边摸一边做爽的视频17国产 | 无码国产偷倩在线播放老年人| 亚洲三级a| 99无码熟妇丰满人妻啪啪| 国模极品一区二区三区| 欧美伊人色综合久久天天| 亚洲一区二区视频在线观看| 久久夜色精品| 热久久综合这里只有精品电影| 国产精品久久国产精麻豆99网站| 欧美在线精品怡红院| 国产第四页| 美女潮喷出白浆在线观看视频| a级毛片免费播放| 国产亚洲欧美日韩在线一区二区三区| 日本www在线视频| 国产97视频在线| 欧美成人aⅴ| 国产精品尤物在线| 国产精品网址你懂的| 国产亚洲男人的天堂在线观看| 精品撒尿视频一区二区三区| 精品久久久无码专区中文字幕|