摘 要:海鷹仿真系統(tǒng)是基于Alpha計(jì)算機(jī)研制的實(shí)時(shí)仿真工作站,曾被廣泛應(yīng)用于航天仿真,但如今海鷹仿真系統(tǒng)正在被銀河仿真系統(tǒng)等新型設(shè)備取代。本文旨在介紹一種將海鷹仿真模型自動(dòng)轉(zhuǎn)化為銀河仿真模型的實(shí)現(xiàn)方法,以實(shí)現(xiàn)將海鷹仿真系統(tǒng)中的經(jīng)典模型快速移植到銀河仿真系統(tǒng)中。
關(guān)鍵詞:海鷹仿真模型;銀河仿真模型
中圖分類號(hào):TP391.9
由于銀河仿真系統(tǒng)和海鷹仿真系統(tǒng)使用的語(yǔ)言結(jié)構(gòu)、語(yǔ)言語(yǔ)法基本一致,而且銀河仿真系統(tǒng)的硬件配置也完全包容海鷹仿真系統(tǒng)的硬件接口,所以銀河仿真系統(tǒng)正在逐漸完全取代海鷹仿真系統(tǒng)。然而海鷹仿真系統(tǒng)的仿真模型依然不能在銀河仿真系統(tǒng)中直接使用,而是需要進(jìn)行大量的手工修改后才能在銀河仿真系統(tǒng)中編譯及運(yùn)行仿真模型。
因此本文先介紹海鷹仿真模型與銀河仿真模型的特點(diǎn),然后介紹海鷹仿真模型及銀河仿真模型的特性,最后再給出海鷹仿真模型轉(zhuǎn)化為銀河仿真模型的編程實(shí)現(xiàn)方法。
1 海鷹仿真系統(tǒng)與銀河仿真系統(tǒng)分析
海鷹仿真系統(tǒng)與銀河仿真系統(tǒng)的特性如表1所示,精簡(jiǎn)的模型運(yùn)行順序一致如圖1所示,可見兩種系統(tǒng)的語(yǔ)言結(jié)構(gòu)具有橫多共同點(diǎn)。
2 海鷹仿真模型和銀河仿真模型分析
海鷹仿真模型包含yfs后綴的海鷹仿真語(yǔ)言主程序、dat后綴的插值函數(shù)、for后綴的fortran語(yǔ)言用戶代碼;銀河仿真模型包含yfs后綴的海鷹仿真語(yǔ)言主程序、dat后綴的插值函數(shù)、cpp后綴的C++語(yǔ)言用戶函數(shù)、h后綴的C++語(yǔ)言用戶頭文件。
海鷹仿真模型的插值函數(shù)可以直接使用到銀河仿真模型中,海鷹仿真模型的主程序除了語(yǔ)法結(jié)構(gòu)外也可以直接使用到銀河仿真模型中,將海鷹仿真模型轉(zhuǎn)化為銀河仿真模型的關(guān)鍵一步是將fortran代碼轉(zhuǎn)化為銀河仿真模型支持的C、C++代碼或銀河仿真模型支持yfs代碼,本文只講述轉(zhuǎn)化為yfs代碼的方法。
海鷹仿真模型中fortran語(yǔ)言的用戶代碼包含以double precision function標(biāo)識(shí)的函數(shù)和以subroutine標(biāo)識(shí)的子程序,其中subroutine子程序供fortran代碼中function標(biāo)識(shí)的函數(shù)調(diào)用,而function標(biāo)識(shí)的函數(shù)供yfs主程序調(diào)用。
3 海鷹仿真模型轉(zhuǎn)化為銀河仿真模型的編程實(shí)現(xiàn)步驟
通過編程方式實(shí)現(xiàn)將一個(gè)海鷹仿真模型轉(zhuǎn)化為銀河仿真模型需要進(jìn)行以下三步:海鷹仿真模型的dat插值函數(shù)文件轉(zhuǎn)化、海鷹仿真模型的fortran代碼轉(zhuǎn)化為yfs函數(shù)、海鷹仿真模型的yfs代碼轉(zhuǎn)化。
3.1 海鷹仿真模型的dat插值函數(shù)文件轉(zhuǎn)化。海鷹仿真模型的dat插值函數(shù)文件可以一成不變地直接拷貝到銀河仿真模型中去使用,因此這里只需要直接拷貝文件即可。
3.2 海鷹仿真模型的fortran代碼分析及轉(zhuǎn)化。fortran代碼轉(zhuǎn)化為的yfs格式函數(shù)的過程可以用圖3來描述,但由于海鷹仿真模型的fortran代碼的子程序或函數(shù)的參數(shù)從代碼形式上看,沒有輸入?yún)?shù)和輸出參數(shù)之分,因此將其轉(zhuǎn)化為yfs子函數(shù)(特指fortran子程序?qū)?yīng)的yfs格式的函數(shù))或yfs函數(shù)(特指fortran函數(shù)對(duì)應(yīng)的yfs格式的函數(shù))之前,首先要將fortran代碼的子程序或函數(shù)的參數(shù)從代碼中提取成輸入?yún)?shù)或輸出參數(shù)。
圖3 編程實(shí)現(xiàn)過程
fortran子程序或函數(shù)處理為yfs子函數(shù)或yfs函數(shù)的分塊過程完全一致,具體如下:
首選將fortran子程序或函數(shù)的實(shí)參進(jìn)行左右值分析,將其分成左值參數(shù)、右值參數(shù)、混合參數(shù),然后將參數(shù)按下述原則進(jìn)行分類:(1)凡是左值參數(shù)(只在賦值號(hào)左邊出現(xiàn)的參數(shù))的參數(shù)為輸出;(2)凡是右值參數(shù)(只在賦值號(hào)右邊出現(xiàn)的參數(shù))的為輸入;(3)凡是混合參數(shù)(在賦值號(hào)兩邊均出現(xiàn)過得參數(shù))在第一次左值之后將參數(shù)名加一new后綴,并將該混合參數(shù)作為一輸入?yún)?shù),同時(shí)將加了new后綴的參數(shù)名作為一輸出參數(shù)。
然后按新輸出參數(shù)和輸入?yún)?shù)按如下格式書寫為yfs格式的函數(shù):
Function 函數(shù)名(輸出參數(shù)列表=輸入?yún)?shù)列表)
函數(shù)體
End function函數(shù)名
3.3 海鷹仿真模型的yfs代碼分析及轉(zhuǎn)化
海鷹仿真模型的yfs代碼和銀河仿真模型的yfs代碼結(jié)構(gòu)一致,這里主要需要做的是將海鷹仿真模型中yfs代碼對(duì)fortran函數(shù)的調(diào)用行用按fortran函數(shù)轉(zhuǎn)化后的yfs函數(shù)的形式去作實(shí)參匹配替換即可。
4 結(jié)束語(yǔ)
銀河仿真模型是域工程的形式存在和使用的,因此在完成了上述轉(zhuǎn)化后還需要編輯銀河仿真程序的工程文件盒配置文件。
其中工程文件為以prj為后綴的文本文件,只有兩行內(nèi)容,格式如下:
工程名.yfs
插值函數(shù)文件名.dat
參考文獻(xiàn):
[1]陳衛(wèi)民,張紅宇.海鷹仿真集成開發(fā)環(huán)境HYSide[J].系統(tǒng)仿真學(xué)報(bào),1998(03).
[2]航天海鷹仿真中心.海鷹仿真語(yǔ)言HYSL[Z].1997.
[3]國(guó)防科學(xué)技術(shù)大學(xué)計(jì)算機(jī)學(xué)院.YHSIM用戶手冊(cè)[Z].2011.
[4]Fotran77程序設(shè)計(jì)語(yǔ)言[M].北京:高等教育出版社,1984.
作者單位:三○二設(shè)計(jì)研究所,貴州 550009