本發(fā)明涉及計(jì)算機(jī)技術(shù)領(lǐng)域,尤其涉及一種在風(fēng)洞試驗(yàn)中實(shí)現(xiàn)自定義公式計(jì)算的方法和裝置。
背景技術(shù):
風(fēng)洞是一種產(chǎn)生可控均勻氣流的管狀試驗(yàn)裝置。通過(guò)風(fēng)洞試驗(yàn)可以測(cè)量飛行器模型或部件在特定流場(chǎng)中的空氣動(dòng)力學(xué)特性。每次風(fēng)洞試驗(yàn)結(jié)束后,數(shù)據(jù)處理系統(tǒng)對(duì)各種原始測(cè)量數(shù)據(jù)進(jìn)行轉(zhuǎn)換和計(jì)算,得到該次試驗(yàn)中試驗(yàn)氣流的流場(chǎng)數(shù)據(jù)、模型姿態(tài)數(shù)據(jù)和相應(yīng)的空氣動(dòng)力學(xué)特性系數(shù)。數(shù)據(jù)處理系統(tǒng)一般根據(jù)一套或多套數(shù)據(jù)處理公式運(yùn)行,以適應(yīng)多種試驗(yàn)類型或試驗(yàn)條件。由于風(fēng)洞試驗(yàn)對(duì)象的多樣性和試驗(yàn)需求的發(fā)展變化,不可能有絕對(duì)完備,滿足所有客戶需求的數(shù)據(jù)處理公式。因此,當(dāng)現(xiàn)有數(shù)據(jù)處理系統(tǒng)不能滿足客戶特殊計(jì)算需求時(shí)(例如,客戶的試驗(yàn)?zāi)P桶惭b有專用的角度傳感器,其計(jì)算公式由客戶提供,客戶需要在數(shù)據(jù)處理結(jié)果中包含其角度測(cè)量結(jié)果),必須手動(dòng)修改系統(tǒng),導(dǎo)致風(fēng)洞試驗(yàn)專業(yè)依賴性強(qiáng),人員培訓(xùn)難度高。經(jīng)常修改會(huì)導(dǎo)致系統(tǒng)數(shù)據(jù)處理程序衍生版本多且缺乏足夠的測(cè)試,容易引入人為錯(cuò)誤,既影響了數(shù)據(jù)處理的健壯性和維護(hù)性能,又對(duì)試驗(yàn)數(shù)據(jù)質(zhì)量帶來(lái)隱患。
技術(shù)實(shí)現(xiàn)要素:
鑒于上述的分析,本發(fā)明旨在提供一種在風(fēng)洞試驗(yàn)中實(shí)現(xiàn)自定義公式計(jì)算的方法和裝置,用以解決風(fēng)洞試驗(yàn)在面臨特殊計(jì)算需求時(shí)必須手動(dòng)調(diào)整程序代碼,操作復(fù)雜、靈活性差的問(wèn)題。
本發(fā)明的目的主要是通過(guò)以下技術(shù)方案實(shí)現(xiàn)的:
一種在風(fēng)洞試驗(yàn)中實(shí)現(xiàn)自定義公式計(jì)算的方法,其特征在于,包括以下步驟
S401.根據(jù)風(fēng)洞試驗(yàn)條件和計(jì)算需求,通過(guò)自定義公式配置模塊設(shè)置數(shù)據(jù)處理系統(tǒng)的參數(shù),將參數(shù)存儲(chǔ)到計(jì)算配置;
S402.風(fēng)洞測(cè)量系統(tǒng)采集風(fēng)洞試驗(yàn)的傳感器數(shù)據(jù),并發(fā)送給數(shù)據(jù)處理系統(tǒng);
S403.基本計(jì)算模塊利用基本計(jì)算公式計(jì)算得到各種風(fēng)洞試驗(yàn)通用的常規(guī)計(jì)算結(jié)果集合,為自定義公式的計(jì)算提供基礎(chǔ)數(shù)據(jù);
S404.自定義公式配置模塊從計(jì)算配置中讀取自定義公式參數(shù),獲取自定義公式參數(shù)的結(jié)果數(shù)據(jù)項(xiàng)的名稱和公式字符串;
S405.自定義公式管理模塊根據(jù)以自定義公式字符串為依據(jù),在公式緩存中查找是否存在關(guān)聯(lián)的實(shí)例對(duì)象;如果查找成功,轉(zhuǎn)到S409;否則進(jìn)入S406;
S406.自定義公式解析模塊解析自定義公式的字符串內(nèi)容,找出其中包含的所有引用計(jì)算結(jié)果集合的項(xiàng)及引用路徑;
S407.自定義公式計(jì)算類合成模塊生成計(jì)算類代碼;
S408.自定義公式計(jì)算類合成模塊根據(jù)所用的編程語(yǔ)言,選擇采用動(dòng)態(tài)編譯或者解釋執(zhí)行計(jì)算類代碼,創(chuàng)建計(jì)算類的實(shí)例對(duì)象,并添加到公式緩存中;
S409.自定義公式計(jì)算執(zhí)行模塊將所有引用項(xiàng)當(dāng)前階梯值的數(shù)組傳入實(shí)例對(duì)象的計(jì)算函數(shù)并執(zhí)行計(jì)算,將結(jié)果放入特殊計(jì)算結(jié)果集合;
S410.當(dāng)計(jì)算配置中還包括其他自定義參數(shù)時(shí),轉(zhuǎn)到S404重復(fù)處理,否則,自定義計(jì)算結(jié)束。
所述步驟401進(jìn)一步包括:針對(duì)計(jì)算需求,通過(guò)自定義公式配置模塊添加自定義計(jì)算公式參數(shù),設(shè)置結(jié)果數(shù)據(jù)項(xiàng)的名稱并錄入其計(jì)算公式。
步驟402中所述數(shù)據(jù)處理系統(tǒng)包括:
基本計(jì)算模塊、自定義公式配置模塊、自定義公式管理模塊、自定義公式解析模塊、自定義公式計(jì)算類合成模塊、自定義公式計(jì)算執(zhí)行模塊。
步驟406中所述計(jì)算結(jié)果集合包括兩個(gè)部分:
常規(guī)計(jì)算結(jié)果集合,是指通過(guò)數(shù)據(jù)處理系統(tǒng)中基本的計(jì)算公式計(jì)算得到所有數(shù)據(jù)項(xiàng)的集合,一般是不同類型風(fēng)洞試驗(yàn)都需要的比較通用的結(jié)果;
特殊計(jì)算結(jié)果集合,是指?jìng)€(gè)別試驗(yàn)中需要的、不能用基本計(jì)算公式得到的計(jì)算結(jié)果。
步驟406中所述引用路徑,是指用于描述數(shù)據(jù)項(xiàng)在計(jì)算結(jié)果集合中存儲(chǔ)位置的一個(gè)索引字符串,根據(jù)這個(gè)字符串,可以在數(shù)據(jù)集中唯一地確定一個(gè)數(shù)據(jù)項(xiàng)。
步驟408中所述公式緩存,是指一個(gè)存儲(chǔ)空間,其中存儲(chǔ)的每個(gè)數(shù)據(jù)項(xiàng)都包含一個(gè)鍵和值,鍵是自定義公式的字符串,值是計(jì)算類的實(shí)例對(duì)象;多次利用同一個(gè)自定義公式進(jìn)行計(jì)算時(shí),只會(huì)執(zhí)行一次創(chuàng)建計(jì)算類實(shí)例的過(guò)程,后續(xù)計(jì)算復(fù)用已有的實(shí)例。
所述步驟409進(jìn)一步包括:
計(jì)算第i階梯的值時(shí),在計(jì)算結(jié)果集合中查找各引用數(shù)據(jù)項(xiàng)第i階梯的值,存入數(shù)組中,將數(shù)組傳給實(shí)例對(duì)象的計(jì)算函數(shù),執(zhí)行計(jì)算得到計(jì)算結(jié)果,將結(jié)果放入特殊計(jì)算結(jié)果集合。
一種在風(fēng)洞試驗(yàn)中實(shí)現(xiàn)自定義公式計(jì)算的裝置,用于實(shí)現(xiàn)上述方法, 所述裝置包括:
自定義公式配置模塊,用于根據(jù)風(fēng)洞試驗(yàn)條件和計(jì)算需求,設(shè)置數(shù)據(jù)處理系統(tǒng)的參數(shù),將參數(shù)存儲(chǔ)到計(jì)算配置;
自定義公式解析模塊,提供自定義公式字符串解析功能,從公式中找出引用的計(jì)算結(jié)果數(shù)據(jù)項(xiàng)及其引用路徑;
自定義公式計(jì)算類合成模塊,根據(jù)檢測(cè)到的引用數(shù)據(jù)項(xiàng)和公式字符串合成計(jì)算類的代碼,編譯或解釋執(zhí)行代碼,并創(chuàng)建計(jì)算類的實(shí)例;
公式管理模塊,用于根據(jù)公式字符串從公式緩存中查找對(duì)應(yīng)的計(jì)算類實(shí)例,當(dāng)查找不到時(shí),將調(diào)用自定義公式計(jì)算類合成模塊創(chuàng)建新的計(jì)算類,并將其實(shí)例保存到公式緩存;
自定義公式計(jì)算執(zhí)行模塊,利用計(jì)算結(jié)果管理模塊獲取引用數(shù)據(jù)項(xiàng)的值合成數(shù)組,傳入計(jì)算類實(shí)例的計(jì)算函數(shù),并執(zhí)行計(jì)算;
計(jì)算結(jié)果管理模塊,用于從常規(guī)或特殊計(jì)算結(jié)果集合中根據(jù)索引路徑查詢數(shù)據(jù)項(xiàng)的值,或向集合中添加從自定義公式計(jì)算執(zhí)行模塊或基本計(jì)算模塊得到的新數(shù)據(jù)項(xiàng);
基本計(jì)算模塊,利用基本計(jì)算公式計(jì)算得到各種風(fēng)洞試驗(yàn)通用的常規(guī)計(jì)算結(jié)果集合,為自定義公式的計(jì)算提供基礎(chǔ)數(shù)據(jù)。
本發(fā)明有益效果如下:
本發(fā)明所公開(kāi)的在風(fēng)洞試驗(yàn)中實(shí)現(xiàn)自定義公式計(jì)算的方法和裝置,實(shí)現(xiàn)了通過(guò)增加自定義公式參數(shù)對(duì)計(jì)算結(jié)果集合進(jìn)行擴(kuò)展,無(wú)需修改軟件代碼,配置過(guò)程簡(jiǎn)單、直觀、靈活,提高了效率,減少了風(fēng)洞試驗(yàn)程序準(zhǔn)備的時(shí)間。
本發(fā)明的其他特征和優(yōu)點(diǎn)將在隨后的說(shuō)明書中闡述,并且,部分的從說(shuō)明書中變得顯而易見(jiàn),或者通過(guò)實(shí)施本發(fā)明而了解。本發(fā)明的目的 和其他優(yōu)點(diǎn)可通過(guò)在所寫的說(shuō)明書、權(quán)利要求書、以及附圖中所特別指出的結(jié)構(gòu)來(lái)實(shí)現(xiàn)和獲得。
附圖說(shuō)明
附圖僅用于示出具體實(shí)施例的目的,而并不認(rèn)為是對(duì)本發(fā)明的限制,在整個(gè)附圖中,相同的參考符號(hào)表示相同的部件。
圖1為實(shí)施例1中采用的計(jì)算結(jié)果集合文件的樣例;
圖2為實(shí)施例1的一個(gè)簡(jiǎn)單公式樣例;
圖3為實(shí)施例1的一個(gè)復(fù)雜公式樣例;
圖4為實(shí)施例1的方法流程圖。
具體實(shí)施方式
下面結(jié)合附圖來(lái)具體描述本發(fā)明的優(yōu)選實(shí)施例,其中,附圖構(gòu)成本申請(qǐng)一部分,并與本發(fā)明的實(shí)施例一起用于闡釋本發(fā)明的原理。
根據(jù)本發(fā)明具體實(shí)施例1,公開(kāi)了一種在風(fēng)洞試驗(yàn)中實(shí)現(xiàn)自定義公式計(jì)算的方法,如圖4所示。
S401.根據(jù)風(fēng)洞試驗(yàn)條件和計(jì)算需求,通過(guò)自定義公式配置模塊設(shè)置數(shù)據(jù)處理系統(tǒng)的參數(shù),將參數(shù)存儲(chǔ)到計(jì)算配置,其中,針對(duì)每一項(xiàng)特殊計(jì)算需求,例如,試驗(yàn)?zāi)P桶惭b有專用的角度傳感器,其計(jì)算公式由客戶提供,客戶需要在數(shù)據(jù)處理結(jié)果中包含其角度測(cè)量結(jié)果,通過(guò)自定義公式配置模塊添加自定義計(jì)算公式參數(shù),設(shè)置結(jié)果數(shù)據(jù)項(xiàng)的名稱并錄入其計(jì)算公式。
所述數(shù)據(jù)項(xiàng),包含兩種類型,一種是具有名稱和單個(gè)浮點(diǎn)數(shù)值的參 數(shù)對(duì)象;另一種是具有名稱和一個(gè)浮點(diǎn)數(shù)數(shù)組的結(jié)果對(duì)象,數(shù)組的長(zhǎng)度稱作階梯數(shù),數(shù)組中第i個(gè)數(shù)值稱作該數(shù)據(jù)項(xiàng)第i階梯的數(shù)據(jù)。
本實(shí)施例中所述的自定義公式,是指由用戶錄入的一個(gè)字符串形式的計(jì)算表達(dá)式,通常包括數(shù)學(xué)運(yùn)算符、常見(jiàn)的基本數(shù)學(xué)函數(shù)、數(shù)字和引用的其他計(jì)算結(jié)果數(shù)據(jù)項(xiàng)。進(jìn)一步地,表達(dá)式需要通過(guò)一定的標(biāo)識(shí)將引用的其他結(jié)果數(shù)據(jù)項(xiàng)與運(yùn)算符或函數(shù)等區(qū)分開(kāi),便于解析識(shí)別,可根據(jù)軟件開(kāi)發(fā)語(yǔ)言的特點(diǎn)選擇合適的標(biāo)識(shí)。優(yōu)選地,本實(shí)施例中采用大括號(hào)包裹的引用路徑來(lái)標(biāo)識(shí)引用數(shù)據(jù)項(xiàng),以圖2中的XML文件片段中包含的自定義公式為例,其名稱為CD1,公式字符串為“0.01+{計(jì)算結(jié)果.底阻.CXb}*Cosd({計(jì)算結(jié)果.姿態(tài)角.α})*Cosd({計(jì)算結(jié)果.姿態(tài)角.β})”,引用了計(jì)算結(jié)果集合中的底阻CXb、姿態(tài)角α和β三個(gè)數(shù)據(jù)項(xiàng),并使用了余弦函數(shù)和加、乘法運(yùn)算符,該公式的數(shù)學(xué)意義為“CD1=0.01+CXb·cosα·cosβ”。
S402.風(fēng)洞測(cè)量系統(tǒng)采集風(fēng)洞試驗(yàn)的傳感器數(shù)據(jù),并發(fā)送給數(shù)據(jù)處理系統(tǒng);所述數(shù)據(jù)處理系統(tǒng)包括:基本計(jì)算模塊、自定義公式配置模塊、自定義公式管理模塊、自定義公式解析模塊、自定義公式計(jì)算類合成模塊、自定義公式計(jì)算執(zhí)行模塊。
S403.基本計(jì)算模塊利用基本計(jì)算公式計(jì)算得到各種風(fēng)洞試驗(yàn)通用的常規(guī)計(jì)算結(jié)果集合,為自定義公式的計(jì)算提供基礎(chǔ)數(shù)據(jù)。
S404.自定義公式配置模塊從計(jì)算配置中讀取自定義公式參數(shù),獲取自定義公式參數(shù)的結(jié)果數(shù)據(jù)項(xiàng)的名稱和公式字符串。
S405.自定義公式管理模塊根據(jù)以自定義公式字符串為依據(jù),在公式緩存中查找是否存在關(guān)聯(lián)的實(shí)例對(duì)象;如果查找成功,轉(zhuǎn)到S409;否則進(jìn)入S406。
S406.自定義公式解析模塊解析自定義公式的字符串內(nèi)容,找出其中 包含的所有引用計(jì)算結(jié)果集合的項(xiàng)及引用路徑,如圖2所示,公式引用數(shù)據(jù)項(xiàng)為:{計(jì)算結(jié)果.底阻.CXb}、{計(jì)算結(jié)果.姿態(tài)角.α}和{計(jì)算結(jié)果.姿態(tài)角.β}。
所述計(jì)算結(jié)果集合包括兩個(gè)部分,一是常規(guī)計(jì)算結(jié)果集合,是指通過(guò)數(shù)據(jù)處理系統(tǒng)中基本的計(jì)算公式計(jì)算得到所有數(shù)據(jù)項(xiàng)的集合,一般是不同類型風(fēng)洞試驗(yàn)都需要的比較通用的結(jié)果;二是特殊計(jì)算結(jié)果集合,是指?jìng)€(gè)別試驗(yàn)中需要的、不能用基本計(jì)算公式得到的計(jì)算結(jié)果。
所述引用路徑,是指用于描述數(shù)據(jù)項(xiàng)在計(jì)算結(jié)果集合中存儲(chǔ)位置的一個(gè)索引字符串,根據(jù)這個(gè)字符串,可以在數(shù)據(jù)集中唯一地確定一個(gè)數(shù)據(jù)項(xiàng)。
S407.自定義公式計(jì)算類合成模塊生成計(jì)算類的定義代碼:類中包含一個(gè)計(jì)算函數(shù),其輸入?yún)?shù)為各個(gè)引用數(shù)據(jù)項(xiàng)的值組成的數(shù)組,函數(shù)體為將引用數(shù)據(jù)項(xiàng)替換為數(shù)組的對(duì)應(yīng)項(xiàng)后的公式字符串,并根據(jù)所采用的編程語(yǔ)言的語(yǔ)法規(guī)范添加必要的元素,如“return”和語(yǔ)句結(jié)尾的分號(hào)等。采用類似Java風(fēng)格的語(yǔ)言時(shí),由圖2中示例公式生成的計(jì)算類具有如下定義形式(其中類、函數(shù)和數(shù)組參數(shù)的名稱只是本實(shí)施例為了說(shuō)明代碼形式和格式而提供的示例,實(shí)際可以指定為任意合法的字符串):
進(jìn)一步地,自定義公式可以不局限于單純的數(shù)學(xué)表達(dá)式的形式,在 公式中還可以包括判斷、循環(huán)等語(yǔ)句(要求所有的分支都有返回值),實(shí)現(xiàn)復(fù)雜的邏輯運(yùn)算,如圖3中的示例公式可得如下形式的計(jì)算類代碼(其中類、函數(shù)和數(shù)組參數(shù)的名稱只是本實(shí)施例為了說(shuō)明代碼形式和格式而提供的示例,實(shí)際可以指定為任意合法的字符串):
進(jìn)一步地,為了提高系統(tǒng)安全性,還可以對(duì)自定義公式的內(nèi)容進(jìn)行審查,只允許包含基本數(shù)學(xué)函數(shù)的調(diào)用,限制對(duì)其他系統(tǒng)函數(shù)的訪問(wèn)。比如,不允許調(diào)用訪問(wèn)文件系統(tǒng)或網(wǎng)絡(luò)的系統(tǒng)函數(shù)等,以免對(duì)文件系統(tǒng)或服務(wù)器造成損壞。
S408.自定義公式計(jì)算類合成模塊根據(jù)所用的編程語(yǔ)言,選擇采用動(dòng)態(tài)編譯或者解釋執(zhí)行前面合成的計(jì)算類代碼,創(chuàng)建計(jì)算類的實(shí)例對(duì)象,并添加到公式緩存中。進(jìn)一步地,還可以在正式保存公式前,執(zhí)行一遍動(dòng)態(tài)編譯或解釋執(zhí)行過(guò)程,將編譯或執(zhí)行錯(cuò)誤提示等信息返回給用戶用以檢驗(yàn)公式格式是否合法并指導(dǎo)修正錯(cuò)誤。
所述公式緩存,是指一個(gè)存儲(chǔ)空間,其中存儲(chǔ)的每個(gè)數(shù)據(jù)項(xiàng)都包含一個(gè)鍵和值,鍵是自定義公式的字符串,值是計(jì)算類的實(shí)例對(duì)象。因此, 多次利用同一個(gè)自定義公式進(jìn)行計(jì)算時(shí),只會(huì)執(zhí)行一次創(chuàng)建計(jì)算類實(shí)例的過(guò)程,后續(xù)計(jì)算會(huì)復(fù)用已有的實(shí)例,提高了計(jì)算效率。
S409.自定義公式計(jì)算執(zhí)行模塊將所有引用項(xiàng)當(dāng)前階梯值的數(shù)組傳入實(shí)例對(duì)象的計(jì)算函數(shù)并執(zhí)行計(jì)算,將結(jié)果放入特殊計(jì)算結(jié)果集合。
計(jì)算第i階梯的值時(shí),在計(jì)算結(jié)果集合中查找各引用數(shù)據(jù)項(xiàng)第i階梯的值(如果該數(shù)據(jù)項(xiàng)是參數(shù),則直接獲取參數(shù)值),存入數(shù)組中,將數(shù)組傳給實(shí)例對(duì)象的計(jì)算函數(shù),執(zhí)行計(jì)算得到計(jì)算結(jié)果,將結(jié)果放入特殊計(jì)算結(jié)果集合。
以圖2中的XML文件片段中包含的公式為例,設(shè)階梯數(shù)為N,則CXb、α、β和自定義數(shù)據(jù)項(xiàng)CD1的數(shù)據(jù)都是長(zhǎng)度為N的浮點(diǎn)數(shù)組。在計(jì)算CD1的第i階梯的值CD1[i](0≤i<N)時(shí),首先查找CXb、α、β的第i階梯的值,依序存入數(shù)組arrayName中:
arrayName[0]=CXb[i]
arrayName[1]=α[i]
arrayName[2]=β[i]
然后將數(shù)組arrayName傳入計(jì)算實(shí)例對(duì)象的函數(shù)functionName,并執(zhí)行計(jì)算,將計(jì)算結(jié)果存入CD1[i]。
所有階梯處理完畢后,將CD1存入特殊計(jì)算結(jié)果集合。
S410.當(dāng)計(jì)算配置中還包括其他自定義參數(shù)時(shí),轉(zhuǎn)到S404重復(fù)處理,否則,自定義計(jì)算結(jié)束。
需要說(shuō)明的是,本發(fā)明的說(shuō)明書和權(quán)利要求書及附圖中的“計(jì)算配置”、“常規(guī)計(jì)算結(jié)果集合”或“特殊計(jì)算結(jié)果集合”可以是單個(gè)或多個(gè)文件,也可以是存儲(chǔ)在數(shù)據(jù)庫(kù)中的信息,優(yōu)選地,本實(shí)施例中采用的是XML格式的文件。優(yōu)選地,本發(fā)明中的配置或數(shù)據(jù)是XML文件中的層次化的分組信息,在一個(gè)分組下還可以包含其他的分組。例如名稱為“計(jì) 算結(jié)果”的組下還包含名稱為“姿態(tài)角”的組,“姿態(tài)角”組中包含名稱為“α”的數(shù)據(jù)項(xiàng)。此外,術(shù)語(yǔ)“包括”和“具有”以及其任何變形,意圖在于覆蓋不排他的包含,例如,包含了一系列步驟的過(guò)程,不必局限于清楚地列出的那些步驟,而是可以包括沒(méi)有清楚地列出的對(duì)于這些步驟所固有的其他步驟,如文件的生成步驟固然包含文件的打開(kāi)和關(guān)閉步驟等。
根據(jù)本發(fā)明具體實(shí)施例2,公開(kāi)了一種在風(fēng)洞試驗(yàn)中實(shí)現(xiàn)自定義公式計(jì)算的裝置,用于實(shí)現(xiàn)圖4所示的自定義公式計(jì)算方法。所述裝置包括:基本計(jì)算模塊、自定義公式配置模塊、自定義公式管理模塊、自定義公式解析模塊、自定義公式計(jì)算類合成模塊、自定義公式計(jì)算執(zhí)行模塊。
單元501為自定義公式配置模塊,提供數(shù)據(jù)處理參數(shù)設(shè)置和存儲(chǔ)功能,可以接受用戶錄入的自定義計(jì)算公式。用于根據(jù)風(fēng)洞試驗(yàn)條件和計(jì)算需求,設(shè)置數(shù)據(jù)處理系統(tǒng)的參數(shù),將參數(shù)存儲(chǔ)到計(jì)算配置,其中,針對(duì)每一項(xiàng)特殊計(jì)算需求,例如,試驗(yàn)?zāi)P桶惭b有專用的角度傳感器,其計(jì)算公式由客戶提供,客戶需要在數(shù)據(jù)處理結(jié)果中包含其角度測(cè)量結(jié)果,通過(guò)自定義公式配置模塊添加自定義計(jì)算公式參數(shù),設(shè)置結(jié)果數(shù)據(jù)項(xiàng)的名稱并錄入其計(jì)算公式。
單元502為自定義公式解析模塊,提供了自定義公式字符串解析功能,從公式中找出引用的計(jì)算結(jié)果數(shù)據(jù)項(xiàng)及其引用路徑。由實(shí)施例1可知,自定義公式中的引用數(shù)據(jù)項(xiàng)添加有特殊的標(biāo)識(shí),可以通過(guò)字符串特征匹配查找出來(lái)。優(yōu)選地,實(shí)施例1中采用大括號(hào)包裹的引用路徑來(lái)標(biāo)識(shí)引用數(shù)據(jù)項(xiàng),解析模塊可通過(guò)正則表達(dá)式"{[^{}]+}"進(jìn)行匹配檢測(cè)。
單元503為自定義公式計(jì)算類合成模塊,根據(jù)檢測(cè)到的引用數(shù)據(jù)項(xiàng)和公式字符串合成計(jì)算類的代碼,編譯或解釋執(zhí)行代碼,并創(chuàng)建計(jì)算類 的實(shí)例;
單元504為自定義公式管理模塊,用于根據(jù)公式字符串從公式緩存中查找對(duì)應(yīng)的計(jì)算類實(shí)例,當(dāng)查找不到時(shí),將調(diào)用單元503創(chuàng)建新的計(jì)算類,并將其實(shí)例保存到公式緩存。當(dāng)再次使用同一公式時(shí),無(wú)需調(diào)用單元503重復(fù)創(chuàng)建實(shí)例對(duì)象,提高計(jì)算效率。
單元505為自定義公式計(jì)算執(zhí)行模塊,利用單元506獲取引用數(shù)據(jù)項(xiàng)的值合成數(shù)組,傳入計(jì)算類實(shí)例的計(jì)算函數(shù),并執(zhí)行計(jì)算;
單元506為計(jì)算結(jié)果管理模塊,用于從常規(guī)或特殊計(jì)算結(jié)果集合中根據(jù)索引路徑查詢數(shù)據(jù)項(xiàng)的值,或向集合中添加從單元505或單元507得到的新數(shù)據(jù)項(xiàng)。
單元507為風(fēng)洞試驗(yàn)數(shù)據(jù)處理系統(tǒng)的基本計(jì)算模塊,利用基本計(jì)算公式計(jì)算得到各種風(fēng)洞試驗(yàn)通用的常規(guī)計(jì)算結(jié)果集合,為自定義公式的計(jì)算提供基礎(chǔ)數(shù)據(jù)。
本發(fā)明具體實(shí)施例所提供的在風(fēng)洞試驗(yàn)中實(shí)現(xiàn)自定義公式計(jì)算的方法和裝置,解決了現(xiàn)有技術(shù)中風(fēng)洞試驗(yàn)在面臨特殊計(jì)算需求時(shí)必須手動(dòng)調(diào)整程序代碼,操作復(fù)雜、靈活性差的問(wèn)題,實(shí)現(xiàn)了通過(guò)錄入自定義的計(jì)算公式完成特殊的計(jì)算,無(wú)需修改軟件代碼,減少了風(fēng)洞試驗(yàn)程序準(zhǔn)備的時(shí)間,提高了效率,降低了風(fēng)洞試驗(yàn)中準(zhǔn)備試驗(yàn)程序的技術(shù)難度,杜絕了因經(jīng)常調(diào)整代碼引入的人為錯(cuò)誤,提高了數(shù)據(jù)處理系統(tǒng)的健壯性。
本領(lǐng)域技術(shù)人員可以理解,實(shí)現(xiàn)上述實(shí)施例方法的全部或部分流程,可以通過(guò)計(jì)算機(jī)程序來(lái)指令相關(guān)的硬件來(lái)完成,所述的程序可存儲(chǔ)于計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)中。其中,所述計(jì)算機(jī)可讀存儲(chǔ)介質(zhì)為磁盤、光盤、只讀存儲(chǔ)記憶體或隨機(jī)存儲(chǔ)記憶體等。
以上所述,僅為本發(fā)明較佳的具體實(shí)施方式,但本發(fā)明的保護(hù)范圍并不局限于此,任何熟悉本技術(shù)領(lǐng)域的技術(shù)人員在本發(fā)明揭露的技術(shù)范 圍內(nèi),可輕易想到的變化或替換,都應(yīng)涵蓋在本發(fā)明的保護(hù)范圍之內(nèi)。