亚洲免费av电影一区二区三区,日韩爱爱视频,51精品视频一区二区三区,91视频爱爱,日韩欧美在线播放视频,中文字幕少妇AV,亚洲电影中文字幕,久久久久亚洲av成人网址,久久综合视频网站,国产在线不卡免费播放

        ?

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

        2011-08-11 01:47:18趙茹嫦王銀燕李余良
        船舶 2011年4期
        關(guān)鍵詞:模擬計算冷器調(diào)用

        趙茹嫦 王銀燕 李余良

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

        0 引 言

        FORTRAN語言結(jié)構(gòu)縝密,語法嚴謹,自誕生以來積累了大量高效而可靠的源程序,廣泛地應(yīng)用于并行計算和高性能計算等領(lǐng)域。但由于FORTRAN數(shù)據(jù)的輸入輸出是在DOS界面里完成的,圖形功能弱,計算結(jié)果可視化存在缺陷,給用戶的使用帶來很多不便。而VB作為一種Windows軟件開發(fā)語言,可視化圖形功能強,開發(fā)效率高,采用面向?qū)ο蟮木幊趟枷?,把?fù)雜的設(shè)計問題分解為多個能夠完成獨立功能的對象的集合。利用VB的圖形功能實現(xiàn)FORTRAN計算程序的可視化,對充分利用原有FORTRAN計算程序具有很大的實際意義。

        1 VB與FORTRAN混合編程

        1.1 基本思想

        用VB和FORTRAN兩種語言混合開發(fā)計算軟件的方法一般有兩種:

        (1)用VB設(shè)計界面及控制程序,將FORTRAN程序編譯成DLL動態(tài)鏈接庫,再由VB程序調(diào)用FORTRAN動態(tài)鏈接庫。其中,數(shù)據(jù)交換由參數(shù)傳遞來實現(xiàn);

        (2)用VB設(shè)計界面,將FORTRAN應(yīng)用程序編譯成可執(zhí)行的*.exe應(yīng)用程序,由VB應(yīng)用程序直接調(diào)用,最終結(jié)果顯示在VB界面上。在整個運行過程中,F(xiàn)ORTRAN應(yīng)用程序在后臺運行,VB和FORTRAN間的數(shù)據(jù)交換均通過磁盤文件進行,設(shè)計流程如圖1所示[1]。

        圖1 VB調(diào)用FORTRAN外殼程序

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

        1.2 調(diào)用方法及技術(shù)難點

        用VB調(diào)用FORTRAN程序編譯的.exe文件時,首先利用VB中的shell函數(shù)啟動FORTRAN應(yīng)用程序。在啟動FORTRAN的過程中,將會遇到三個常見的問題:

        (1)shell函數(shù)是以異步方式執(zhí)行的,這種執(zhí)行方式不能等待FORTRAN程序結(jié)束而將繼續(xù)執(zhí)行后續(xù)VB程序,使VB得不到最終的數(shù)據(jù)而出錯;

        (2)由于VB是直接運行于Windows平臺的,而FORTRAN是一種基于DOS平臺的應(yīng)用程序,在Windows平臺運行DOS應(yīng)用程序時,會退出Windows而進入到DOS界面,出現(xiàn)“黑屏”現(xiàn)象。此外,即使Windows平臺的DOS程序終止運行,DOS也不能自動關(guān)閉,返回到 Windows 平臺[2];

        (3)由FORTRAN編制的柴油機工作過程計算程序的輸入數(shù)據(jù)是通過*.txt文件輸入的,要使FORTRAN進入計算,需要提供符合FORTRAN程序格式要求的數(shù)據(jù)文本。

        因此,解決以上三個問題是實現(xiàn)船用柴油機工作過程數(shù)值計算可視化的關(guān)鍵。

        1.3 用API函數(shù)對外殼程序進行同步調(diào)用

        用Win32 API提供的有關(guān)進程操作函數(shù)可以解決外殼程序的異步運行問題。首先用CreatProcess函數(shù)建立FORTRAN外殼進程句柄,然后通過WaitForSingleObject函數(shù)等待外殼進程終止,Close Handle函數(shù)用于將打開的進程對象關(guān)閉[3]。這些函數(shù)需要在VB中事先聲明。其中CreateProcess函數(shù)有10個參數(shù),參數(shù)IpStartupInfo用來指向一個STARTUPINFO類型的結(jié)構(gòu),該數(shù)據(jù)結(jié)構(gòu)將指定如何顯示外殼應(yīng)用程序窗口。

        當其成員dwflags的值等于1時,表示另一個成員wShowWindow有效;當wShowWindow的值等于0時,表示隱藏外殼應(yīng)用程序的窗口。這樣的操作就隱藏了DOS平臺,即不會出現(xiàn)“黑屏”的現(xiàn)象。

        此外,在WaitForSingleObject函數(shù)中,參數(shù)dwMilliseconds表示VB應(yīng)用程序等待事件的最長時間。當其值等于-1時,表示可以進行無限長的等待下去,直到外殼應(yīng)用程序結(jié)束。因此,除了在VB中預(yù)先聲明上述函數(shù)之外,還要聲明下列常量和數(shù)據(jù)結(jié)構(gòu):

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

        1.4 Shell函數(shù)異步執(zhí)行的同步化

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

        在利用Shell函數(shù)調(diào)用外部程序的過程中,只要在shell()語句之后加入循環(huán)調(diào)用StillRun()函數(shù)的代碼,就可時刻監(jiān)視shell函數(shù)所執(zhí)行的外部程序運行狀態(tài),直到 stillrun()返回 false 時,才執(zhí)行 shell()語句的后續(xù)程序。

        對于shell函數(shù)啟動外殼DOS程序時出現(xiàn) “黑屏”的問題,解決的辦法是將shell函數(shù)的第二個可選參數(shù)設(shè)為vbHide。這樣在殼程序運行時,DOS窗口會自動隱藏。同時,在Windows環(huán)境下右擊該DOS應(yīng)用程序文件名,選擇“屬性”項,在“屬性”對話框的“程序”標簽下,選中“退出時關(guān)閉窗口”復(fù)選框,此時將生成該DOS應(yīng)用程序的PIF文件。以后在Windows環(huán)境下運行該應(yīng)用程序時,程序結(jié)束后會自動關(guān)閉DOS窗口而返回Windows狀態(tài)。

        1.5 由VB生成FORTRAN輸入文件

        FORTRAN的原始數(shù)據(jù)讀入為*.txt文件輸入方式。為了實現(xiàn)可視化輸入,在VB調(diào)用FORTRAN的*.exe應(yīng)用程序的同時,將為FORTRAN程序創(chuàng)建一個.txt數(shù)據(jù)讀入文件。具體操作為:首先,根據(jù)FORTRAN程序中的輸入數(shù)據(jù)屬性,編制VB可視化界面,對輸入?yún)?shù)合理布局,再將輸入數(shù)據(jù)存儲到一個無窮大的數(shù)組空間內(nèi);待輸入完畢,數(shù)組中的輸入數(shù)據(jù)將按FORTRAN計算程序本身要求的格式排列,存入*txt文件中,為FORTRAN程序的計算做好準備。實現(xiàn)過程可用圖2來說明。

        圖2 輸入文件創(chuàng)建過程

        2 在內(nèi)燃機工作過程數(shù)值模擬計算中的應(yīng)用

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

        圖3 基本參數(shù)設(shè)置界面

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

        進入計算前,還需對部分參數(shù)進行初始化設(shè)置。點擊計算初始化,進入圖5所示界面。對壓力和溫度設(shè)一初值,程序?qū)⒏鶕?jù)初值進行迭代計算,在計算要求的精度內(nèi)收斂,程序繼續(xù)運行。

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

        圖4 選擇中冷的提示功能

        圖5 初始值設(shè)置界面

        圖6 示功圖對比曲線

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

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

        3 結(jié) 語

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

        本文提供的方法,在不改變FORTRAN程序本身,保持其算法和強大的數(shù)值計算功能的前提下,通過和VB的混合編程,開發(fā)出一個可視化的數(shù)值模擬計算系統(tǒng),實現(xiàn)了FORTRAN程序的可視化輸入,提高了原程序的使用效率,對類似的程序改進具有重要的指導(dǎo)意義和參考價值。對FORTRAN程序的改進設(shè)計,并不影響到原程序的功能和獨立性。FORTRAN程序作為一個獨立的數(shù)值計算模塊,既可以與VB程序編制的界面集成使用,又可以單獨使用。

        [1]蒲軍平,劉鵬.VB界面設(shè)計與FORTRAN數(shù)值計算功能的組合應(yīng)用[J].計算機應(yīng)用與軟件.2010,27(12):148-150.

        [2]楊華保,田宏星,劉健,陳永新.FORTRAN程序的可視化管理設(shè)計研究[J].航空計算技術(shù),2009(4):94-97.

        [3]張學(xué)強,鄭公營.VB調(diào)用C和Fortran自定義動態(tài)庫函數(shù)聯(lián)合編程[J].工程物理地球?qū)W報.2010,7(1):55-59.

        [4]周方,戴村供,詹友基.排氣系統(tǒng)模擬計算程序的開發(fā)[J].福建工程學(xué)院學(xué)報,2005,3(1):87-90.

        猜你喜歡
        模擬計算冷器調(diào)用
        滑油空冷器壓降控制研究
        R1234ze PVTx熱物性模擬計算
        能源工程(2022年1期)2022-03-29 01:06:26
        空調(diào)表冷器的研究現(xiàn)狀與發(fā)展趨勢
        制冷(2019年2期)2019-12-09 08:10:42
        核電項目物項調(diào)用管理的應(yīng)用研究
        LabWindows/CVI下基于ActiveX技術(shù)的Excel調(diào)用
        基于系統(tǒng)調(diào)用的惡意軟件檢測技術(shù)研究
        擠出發(fā)泡片材褶皺分析及模擬計算
        中國塑料(2016年9期)2016-06-13 03:18:54
        鋁合金空-空中冷器符合翹片管材料選擇與結(jié)構(gòu)匹配
        實際發(fā)射工況下底排藥柱結(jié)構(gòu)完整性的模擬計算
        利用RFC技術(shù)實現(xiàn)SAP系統(tǒng)接口通信
        亚洲发给我的在线视频| 亚洲色大成网站www尤物| 一本大道久久东京热无码av| 日日麻批视频免费播放器| 中文字幕亚洲熟女av| 果冻传媒2021精品一区| 中日韩欧美在线观看| 国产一区二区三区蜜桃av| 国产亚洲精品品视频在线| 久久综合九色综合97欧美| 国产美女精品aⅴ在线| 黄色国产一区在线观看| 日韩精品在线免费视频| 疯狂撞击丝袜人妻| 亚洲AⅤ无码片一区二区三区| 四虎在线中文字幕一区| 中国娇小与黑人巨大交| 少妇饥渴xxhd麻豆xxhd骆驼| 欧美一级视频在线| 加勒比日韩视频在线观看| 国产高潮视频在线观看| 亚洲综合国产精品一区二区99| 精品视频一区二区在线观看| 久久天天躁夜夜躁狠狠85麻豆| 亚洲精品无播放器在线播放| 欧美1区二区三区公司| 亚州中文热码在线视频| 九色九九九老阿姨| 国产成人国产在线观看| 亚洲精品一区二区三区麻豆| 少妇愉情理伦片丰满丰满| 99久久久无码国产aaa精品| 亚洲精品中文字幕尤物综合| 亚洲综合一区中文字幕| 中文字幕日韩精品无码内射| 日韩精品永久免费播放平台| 亚洲丰满熟女一区二亚洲亚洲 | 日本久久黄色高清视频| 亚洲精品电影院| 国产又黄又大又粗视频| 精品少妇人妻久久免费|