下載本文檔
版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、混合語言編程在磁流體數(shù)值模擬中的應(yīng)用 摘要:針對VC+具有面向?qū)ο筇卣骱烷_發(fā)圖形界面方面的強大功能以及FORTRAN語言在數(shù)值計算方面的優(yōu)勢,采用VC+和FORTRAN兩種語言混合編程實現(xiàn)了聚變堆包層磁流體數(shù)值模擬系統(tǒng)的研發(fā)和設(shè)計,取得了較好的效果。 關(guān)鍵詞:FORTRAN;VC+;混合編程;動態(tài)鏈接庫,數(shù)值模擬 中圖分類號:TP311.52文獻標識碼:A文章編號:1009-3044(2012)11-2509-03 Application of Mixed-language Programming in MHD Numerical Simulati
2、on XIE Bao-ling, CHEN Xia (Army Officer College, Hefei 230031, China) Abstract: This paper focused on the advantage of VC+s object-oriented characteristics and powerful functions in the respect of developing graphical interfaces. Then combined the merit of Fortran Languages good numerical calculatio
3、n. The mixed programming is applied to develop the system of MHD Numerical calculations in fusion reactor blanket. Key words: FORTRAN; VC+; mixed programming; Dynamic Link Library(DLL); numerical simulation 眾所周知,Visual Fortran強于數(shù)值計算,其語法檢查嚴格,運行穩(wěn)定性好,在多維數(shù)組的處理方面Fortran語言比較直觀和易于理解。尤其是針對復(fù)數(shù)進行計算,則Fortran語言更
4、是具有無可比擬的優(yōu)勢。它是所有語言中唯一將復(fù)數(shù)定義為標準數(shù)據(jù)類型的語言。但是但其界面開發(fā)能力差,目前還沒有一家廠商推出具有RAD(Rapid Application Development)特性的編譯集成開發(fā)環(huán)境。因此,當(dāng)用Fortran語言很好的實現(xiàn)了大型的科學(xué)計算后,難以將這種計算轉(zhuǎn)變?yōu)榻Y(jié)果顯示方便、數(shù)據(jù)輸入簡易的WIND0WS可視化應(yīng)用系統(tǒng)。而這一點,采用VC+很容易實現(xiàn)良好的圖形界面和系統(tǒng)管理能力,同操作系統(tǒng)有很好的親和性。 為此,該文研發(fā)了基于Fortran與VC+語言混合編程來開發(fā)具有友好用戶界面與高計算效率的專用磁流體數(shù)值模擬系統(tǒng)。 1 VC+與FORTRAN混合編程中關(guān)鍵技術(shù)的
5、實現(xiàn)方法 1.1 VC+與FORTRAN混合語言調(diào)用約定 在VC+模塊中,可以通過定義或在函數(shù)原型中使用“_stdcall”關(guān)鍵詞來指定STFCALL的調(diào)用約定。如本系統(tǒng)中的調(diào)用Fortran中函數(shù)是通過在“DynGuiView.h”的頭文件末尾添加以下代碼來聲明其調(diào)用約定: extem”C” void_stdcall MHDFLOW(char*FileName,int FileLen); 其中, MHDFLOW(char*FileName,int FileLen); 為被調(diào)用的FORTRAN程序的入口函數(shù)。 通過上述聲明后,C+程序才能識別Fortran語言編寫的代碼,從而可以在VC+系統(tǒng)中
6、調(diào)用Fortran模塊,實現(xiàn)其混合編程。 1.2 VC+與FORTRAN混合語言編程命名約定 在缺省的情況下,VC+語言對大小寫敏感,而Fortran語言對大小寫不敏感。我們可以通過以下四種方法來解決此差異:(1)用Fortran中的ATTRIBUTES中ALIAS選項;(2)由Fortran的缺省命名把所有的名稱自動覆蓋為大寫;(3)保留混合大小寫名稱;(4)由Fortran語言的STDCALL和VC+命名約定把名稱自動約定為小寫。 如果調(diào)用了使用Fortran缺省情況下不能重新編譯的Fortran代碼。在C中,要完成調(diào)用必須使用全部為大寫的名稱,而僅在VC+代碼中使用_stdcall約定是
7、不夠的,因為_stdcall和STDCALL始終保持大小寫狀態(tài)。Fortran缺省情況下產(chǎn)生的是全部為大寫的名稱,VC+代碼必須與之匹配。 1.3 VC+與FORTRAN混合語言編程中的參數(shù)傳遞 在VC+中,除了數(shù)組是通過對其首地址的引用傳遞外,所有的參數(shù)都是通過值來傳遞。和Fortran不同,VC+沒有影響被傳遞的各個參數(shù)調(diào)用約定的指令。為了通過引用傳遞非數(shù)組的VC+數(shù)據(jù),必須給它傳遞一個指針。如下例子所示為VC+調(diào)用系統(tǒng)中Fortran子例程。 Fortran子例程: SUBROUTINE TESTMHD(VALPARM,REFPARM) ITEGER VALPARM !DEC$ ATTR
8、IBUTES VALUE:VALPARM INTEGER REFPARM !DEC$ ATTRIBUTES REFERENCE:REFPARM END VC+的調(diào)用代碼: extern void_stdcall TESTMHD(int ValParm,int *RefParm); 1.4 VC+與FORTRAN接口技術(shù)的實現(xiàn) 本系統(tǒng)采用基于動態(tài)鏈接庫DLL的混和編程技術(shù);在DLL的鏈接方式上采用顯式鏈接;在調(diào)用約定方面VC+和Fortran都采用STDCALL約定;在參數(shù)傳遞方式上,對Fortran語言模塊的單個變量采用VALUE屬性使其與VC+程序?qū)崿F(xiàn)值傳遞,對Fortran語言模塊的數(shù)組變
9、量采用REFERENCE屬性,使其與VC+程序?qū)崿F(xiàn)地址傳遞。在數(shù)據(jù)類型方面,其數(shù)據(jù)類型轉(zhuǎn)換的具體格式如表1所示。這樣,就能解決VC+和Fortran的接口問題。 表1 VC+和Fortran中變量類型的對應(yīng)關(guān)系 其具體的格式如下所示: Fortran接口: SUBROUTINE后臺模型函數(shù)名(參數(shù)類型參數(shù)列表(數(shù)組列表,變量列表) !DEC$ATTIRIBUTES DLLEXPORT,STDCALL,ALIAS:后臺模型函數(shù)名n:后臺模型函數(shù)名 !DEC$ATTIRIBUTES REFERENCE:數(shù)組列表 !DEC$ATTIRIBUTES VALUE:變量列表 VC+接口: void Cjd
10、fzView : loadfz()/VC+接口函數(shù) HINSTANCE hDLL; LPFN lpfn; hDLL=LoadLibrary(“動態(tài)庫函數(shù)名稱.dll”); if(hDLL) lpfn=(LPFN)GetProcAddress(hDLL,“后臺模型函數(shù)名n”); if(lpfn) (*lpfn)(double參數(shù)列表(數(shù)組列表,變量列表); FreeLibrary(hDLL); 通過VC+和Fortran的接口技術(shù)既能使后臺數(shù)據(jù)模型獲得前臺用戶輸入的參數(shù),進行動態(tài)數(shù)值模擬,又能使前臺獲得后臺數(shù)值模擬結(jié)果的數(shù)據(jù),為后面結(jié)果的可視化顯示做好準備。 2混合編程技術(shù)在數(shù)值模擬系統(tǒng)中的應(yīng)用
11、 該數(shù)值模擬系統(tǒng)各項功能都一一對應(yīng)于相應(yīng)的模塊,每個模塊都執(zhí)行各自的功能,模塊和模塊之間基本是調(diào)用關(guān)系,其系統(tǒng)開發(fā)工具如圖1所示。 圖1系統(tǒng)開發(fā)工具 其系統(tǒng)總體的設(shè)計過程如圖2所示: 圖2系統(tǒng)總體設(shè)計過程 系統(tǒng)界面如圖3所示??梢钥闯觯c用戶通過圖形界面直接面對的包括三部分:初始化、網(wǎng)格劃分和后處理。用戶并不直接面對系統(tǒng)的求解部分,而是隱藏在系統(tǒng)后臺,但求解部分卻為整個分析系統(tǒng)的核心,具有“發(fā)動機”的作用。 圖3系統(tǒng)主界面 進入系統(tǒng)后,點擊前處理圖標進行數(shù)值模擬的參數(shù)設(shè)置。它主要完成計算模型及各種控制參數(shù)的方便輸入,能按照設(shè)置的基本參數(shù)自動完成三維六面體網(wǎng)格的劃分。它的主要功能包括:幾何模型讀
12、取;自動網(wǎng)格剖分;物理參數(shù)讀??;節(jié)點、單元編號及存儲;模型三維環(huán)境下顯示;迭代步長及收斂條件設(shè)置;激勵源設(shè)置等。離散模型的數(shù)據(jù)文件主要包括離散模型的節(jié)點數(shù)及節(jié)點坐標、單元數(shù)及單元編號、邊界條件、載荷及相關(guān)材料信息等。其界面效果如圖4所示。 圖4初始化參數(shù)設(shè)置(下轉(zhuǎn)第2514頁) 3結(jié)束語 該數(shù)值模擬系統(tǒng)采用VC+和FORTRAN語言的混合編程技術(shù),綜合采用FORTRAN強大的數(shù)值計算能力及VC+的圖形處理功能,生成友好的圖形界面。利用兩者混合語言編程的優(yōu)勢研發(fā)系統(tǒng)進行磁流體數(shù)值模擬,提高了系統(tǒng)的開發(fā)效率,取得了良好的應(yīng)用效果。 參考文獻: 1李娟,張欽.基于動態(tài)鏈接庫的Visual C+混合編程J.計算機工程與設(shè)計,2010,31(9):2140-2143. 2周振紅,顏國紅,吳虹娟. Fortran與Visual C+混合編程研究J.武漢大學(xué)學(xué)報:工學(xué)版,2001
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 單位管理制度匯編大合集【人事管理篇】十篇
- 單位管理制度合并匯編員工管理
- 《眩暈基礎(chǔ)知識》課件
- 單位管理制度分享大全【職工管理篇】十篇
- 單位管理制度范例合集【員工管理】十篇
- 單位管理制度呈現(xiàn)匯編人力資源管理十篇
- 單位管理制度呈現(xiàn)大合集【職工管理】十篇
- 《離心泵工作點》課件
- 貴都高速某合同段施工組織設(shè)計
- 《祝世界好友周快樂》課件
- 成都市農(nóng)貿(mào)市場建設(shè)技術(shù)要求(2019年版)(完整版)
- 2024-2030年版中國IPVPN服務(wù)行業(yè)發(fā)展現(xiàn)狀及投資商業(yè)模式分析報告
- 【7歷期末】安徽省蕪湖市弋江區(qū)2023~2024學(xué)年七年級上學(xué)期期末考試歷史試卷(含解析)
- 北京市海淀區(qū)2021-2022學(xué)年第一學(xué)期四年級期末考試語文試卷(含答案)
- 2024-2030年中國企業(yè)大學(xué)行業(yè)運作模式發(fā)展規(guī)劃分析報告
- 房地產(chǎn)激勵培訓(xùn)
- 期末復(fù)習(xí)試題1(試題)-2024-2025學(xué)年二年級上冊數(shù)學(xué)北師大版
- 【MOOC】微型計算機原理與接口技術(shù)-南京郵電大學(xué) 中國大學(xué)慕課MOOC答案
- 違章建筑舉報范文
- 音樂制作基礎(chǔ)知識單選題100道及答案解析
- 2024幼師年終工作總結(jié)
評論
0/150
提交評論