本發(fā)明涉及計(jì)算機(jī),特別涉及一種基于netty的cfd軟件處理方法、裝置、設(shè)備及介質(zhì)。
背景技術(shù):
1、cfd(computational?fluid?dynamics,計(jì)算流體動(dòng)力學(xué))軟件大多是以孤立求解器的方式在工業(yè)部門超算上部署,由用戶在本地生成仿真所需的參數(shù)文件然后再手動(dòng)提交仿真作業(yè),這種方式不僅增加了仿真作業(yè)的執(zhí)行時(shí)間,還無法實(shí)時(shí)獲取仿真作業(yè)結(jié)果,面對(duì)批量仿真計(jì)算的工程需求時(shí),更是需要耗費(fèi)大量時(shí)間進(jìn)行仿真作業(yè)的執(zhí)行與查看?,F(xiàn)有方案面向超算應(yīng)用時(shí),有兩種部署運(yùn)行方式:1、超算具備可視化硬件條件支撐時(shí),將cfd軟件交互界面和求解器耦合在一起整體部署在超算可視化節(jié)點(diǎn)上,用戶登錄超算可視化節(jié)點(diǎn),啟動(dòng)軟件利用軟件交互界面進(jìn)行仿真計(jì)算;2、超算不具備可視化硬件條件支撐時(shí),在超算上單獨(dú)部署求解器,用戶需要在本地pc(personal?computer,個(gè)人計(jì)算機(jī))端使用windows版cfd軟件生成輸入?yún)?shù)文件手動(dòng)上傳至超算,通過超算調(diào)度系統(tǒng)提交作業(yè)進(jìn)行仿真計(jì)算。缺點(diǎn)如下:1、缺乏可移植性,超算缺乏可視化硬件支撐時(shí)無法整體部署;2、在超算上部署求解器,用戶通過手動(dòng)上傳工程文件并執(zhí)行仿真作業(yè)的方式效率低下,面對(duì)工程上的批量仿真需求時(shí),存在大量重復(fù)性手動(dòng)操作;3、在超算上部署求解器,仿真作業(yè)在超算孤立運(yùn)行,界面與求解器無法數(shù)據(jù)互通,用戶不能通過交互界面實(shí)時(shí)查看氣動(dòng)力曲線、云圖等仿真結(jié)果,使用體驗(yàn)較差。
2、由上可見,如何提高cfd軟件的兼容性和可移植性,提高仿真作業(yè)的執(zhí)行效率,解決求解器在超算上孤立作業(yè),交互界面無法實(shí)時(shí)獲取超算上仿真結(jié)果數(shù)據(jù)的情況,降低軟件的集成部署門檻是本領(lǐng)域有待解決的問題。
技術(shù)實(shí)現(xiàn)思路
1、有鑒于此,本發(fā)明的目的在于提供一種基于netty的cfd軟件處理方法、裝置、設(shè)備及介質(zhì),能夠提高cfd軟件的兼容性和可移植性,提高仿真作業(yè)的執(zhí)行效率,解決求解器在超算上孤立作業(yè),交互界面無法實(shí)時(shí)獲取超算上仿真結(jié)果數(shù)據(jù)的情況,降低軟件的集成部署門檻。其具體方案如下:
2、第一方面,本技術(shù)公開了一種基于netty的cfd軟件處理方法,包括:
3、建立本地與客戶端之間的連接關(guān)系,并基于netty框架構(gòu)建各類型處理器,利用所述連接關(guān)系獲取所述客戶端發(fā)送的仿真處理指令,并確定所述仿真處理指令的指令類型;
4、若所述指令類型為解碼,則從與所述仿真處理指令對(duì)應(yīng)的所述客戶端中獲取待處理信息,并對(duì)所述待處理信息進(jìn)行解碼以及反序列化,以得到字符串,對(duì)所述字符串進(jìn)行解析,以得到屬性值,根據(jù)所述屬性值從各類型的所述處理器中篩選目標(biāo)處理器,利用所述目標(biāo)處理器對(duì)所述字符串進(jìn)行處理;
5、若所述指令類型為編碼,則對(duì)待編碼對(duì)象進(jìn)行字符串轉(zhuǎn)換以及序列化,以得到字節(jié)流,計(jì)算所述字節(jié)流的長度,根據(jù)所述長度和所述字節(jié)流生成待發(fā)送信息,將所述待發(fā)送信息發(fā)送至與所述仿真處理指令對(duì)應(yīng)的所述客戶端。
6、可選的,所述建立本地與客戶端之間的連接關(guān)系,并基于netty框架構(gòu)建各類型處理器,包括:
7、定義bossgroup線程組,利用所述bossgroup線程組建立本地與客戶端之間的連接關(guān)系;
8、初始化本地與所述客戶端之間的數(shù)據(jù)通道,并基于netty框架構(gòu)建各類型處理器;所述處理器包括支持超文本傳輸協(xié)議和傳輸控制協(xié)議的處理器。
9、可選的,所述利用所述連接關(guān)系獲取所述客戶端發(fā)送的仿真處理指令,并確定所述仿真處理指令的指令類型,包括:
10、基于workergroupp中nioeventloop并利用本地與所述客戶端之間的連接關(guān)系獲取所述客戶端發(fā)送的仿真處理指令,并確定所述仿真處理指令的指令類型。
11、可選的,所述對(duì)所述待處理信息進(jìn)行解碼以及反序列化,以得到字符串,包括:
12、確定所述待處理信息的長度,讀取所述待處理信息的字節(jié)流;
13、根據(jù)所述長度從所述字節(jié)流中篩選待解碼字節(jié)流,對(duì)所述待解碼字節(jié)流進(jìn)行解碼以及反序列化,以得到j(luò)son格式的字符串。
14、可選的,所述對(duì)所述字符串進(jìn)行解析,以得到屬性值,根據(jù)所述屬性值從各類型的所述處理器中篩選目標(biāo)處理器,包括:
15、對(duì)json格式的所述字符串進(jìn)行解析,以得到屬性值;
16、獲取與所述屬性值相關(guān)聯(lián)的類對(duì)象,并將json格式的所述字符串實(shí)例化為javabean對(duì)象,根據(jù)所述類對(duì)象和所述javabean對(duì)象從各類型的所述處理器中篩選目標(biāo)處理器。
17、可選的,所述利用所述目標(biāo)處理器對(duì)所述字符串進(jìn)行處理,包括:
18、若所述目標(biāo)處理器的類型為用于進(jìn)行數(shù)值計(jì)算的處理器,則利用所述目標(biāo)處理器對(duì)所述字符串進(jìn)行數(shù)值計(jì)算處理;
19、若所述目標(biāo)處理器的類型為用于進(jìn)行作業(yè)狀態(tài)監(jiān)控的處理器,則利用所述目標(biāo)處理器對(duì)所述字符串進(jìn)行作業(yè)狀態(tài)監(jiān)控處理;
20、若所述目標(biāo)處理器的類型為用于進(jìn)行曲線監(jiān)控的處理器,則利用所述目標(biāo)處理器對(duì)所述字符串進(jìn)行曲線監(jiān)控處理;
21、若所述目標(biāo)處理器的類型為用于進(jìn)行文件管理的處理器,則利用所述目標(biāo)處理器對(duì)所述字符串進(jìn)行文件管理處理;
22、若所述目標(biāo)處理器的類型為用于進(jìn)行作業(yè)管理的處理器,則利用所述目標(biāo)處理器對(duì)所述字符串進(jìn)行作業(yè)管理處理;
23、若所述目標(biāo)處理器的類型為用于進(jìn)行配置的處理器,則利用所述目標(biāo)處理器對(duì)所述字符串進(jìn)行配置處理。
24、可選的,所述對(duì)待編碼對(duì)象進(jìn)行字符串轉(zhuǎn)換以及序列化,以得到字節(jié)流,計(jì)算所述字節(jié)流的長度,根據(jù)所述長度和所述字節(jié)流生成待發(fā)送信息,包括:
25、對(duì)待編碼對(duì)象進(jìn)行字符串轉(zhuǎn)換,以得到j(luò)son格式的字符串;所述待編碼對(duì)象為javabean對(duì)象;
26、將json格式的所述字符串序列化為字節(jié)流,計(jì)算所述字節(jié)流的長度;
27、將所述長度存儲(chǔ)至消息頭部,并將所述字節(jié)流作為消息體,以生成待發(fā)送信息。
28、第二方面,本技術(shù)公開了一種基于netty的cfd軟件處理裝置,包括:
29、處理器構(gòu)建模塊,用于建立本地與客戶端之間的連接關(guān)系,并基于netty框架構(gòu)建各類型處理器,利用所述連接關(guān)系獲取所述客戶端發(fā)送的仿真處理指令,并確定所述仿真處理指令的指令類型;
30、解碼模塊,用于若所述指令類型為解碼,則從與所述仿真處理指令對(duì)應(yīng)的所述客戶端中獲取待處理信息,并對(duì)所述待處理信息進(jìn)行解碼以及反序列化,以得到字符串,對(duì)所述字符串進(jìn)行解析,以得到屬性值,根據(jù)所述屬性值從各類型的所述處理器中篩選目標(biāo)處理器,利用所述目標(biāo)處理器對(duì)所述字符串進(jìn)行處理;
31、編碼模塊,用于若所述指令類型為編碼,則對(duì)待編碼對(duì)象進(jìn)行字符串轉(zhuǎn)換以及序列化,以得到字節(jié)流,計(jì)算所述字節(jié)流的長度,根據(jù)所述長度和所述字節(jié)流生成待發(fā)送信息,將所述待發(fā)送信息發(fā)送至與所述仿真處理指令對(duì)應(yīng)的所述客戶端。
32、第三方面,本技術(shù)公開了一種電子設(shè)備,包括:
33、存儲(chǔ)器,用于保存計(jì)算機(jī)程序;
34、處理器,用于執(zhí)行所述計(jì)算機(jī)程序,以實(shí)現(xiàn)前述的基于netty的cfd軟件處理方法。
35、第四方面,本技術(shù)公開了一種計(jì)算機(jī)存儲(chǔ)介質(zhì),用于保存計(jì)算機(jī)程序;其中,所述計(jì)算機(jī)程序被處理器執(zhí)行時(shí)實(shí)現(xiàn)前述公開的基于netty的cfd軟件處理方法的步驟。
36、可見,本技術(shù)提供了一種基于netty的cfd軟件處理方法,包括建立本地與客戶端之間的連接關(guān)系,并基于netty框架構(gòu)建各類型處理器,利用所述連接關(guān)系獲取所述客戶端發(fā)送的仿真處理指令,并確定所述仿真處理指令的指令類型;若所述指令類型為解碼,則從與所述仿真處理指令對(duì)應(yīng)的所述客戶端中獲取待處理信息,并對(duì)所述待處理信息進(jìn)行解碼以及反序列化,以得到字符串,對(duì)所述字符串進(jìn)行解析,以得到屬性值,根據(jù)所述屬性值從各類型的所述處理器中篩選目標(biāo)處理器,利用所述目標(biāo)處理器對(duì)所述字符串進(jìn)行處理;若所述指令類型為編碼,則對(duì)待編碼對(duì)象進(jìn)行字符串轉(zhuǎn)換以及序列化,以得到字節(jié)流,計(jì)算所述字節(jié)流的長度,根據(jù)所述長度和所述字節(jié)流生成待發(fā)送信息,將所述待發(fā)送信息發(fā)送至與所述仿真處理指令對(duì)應(yīng)的所述客戶端。本技術(shù)建立本地與客戶端之間的連接關(guān)系,并基于netty框架構(gòu)建各類型處理器,能夠同時(shí)兼容windows/linux操作系統(tǒng),提高了軟件的兼容性和可移植性,當(dāng)客戶端發(fā)送的仿真處理指令為解碼時(shí),對(duì)待處理信息進(jìn)行解碼以及反序列化,得到字符串,對(duì)字符串進(jìn)行解析,利用解析后得到的屬性值篩選目標(biāo)處理器,從而利用目標(biāo)處理器對(duì)字符串進(jìn)行處理,解決了求解器在超算上孤立作業(yè),交互界面無法實(shí)時(shí)獲取超算上仿真結(jié)果數(shù)據(jù)的問題,提升了軟件一體化仿真服務(wù)能力,并且無需用戶在超算上手動(dòng)提交仿真作業(yè),提高了仿真作業(yè)的執(zhí)行效率,當(dāng)客戶端發(fā)送的仿真處理指令為編碼時(shí),對(duì)待編碼對(duì)象進(jìn)行字符串轉(zhuǎn)換以及序列化,得到字節(jié)流,根據(jù)字節(jié)流的長度和字節(jié)流生成待發(fā)送信息,將待發(fā)送信息發(fā)送至對(duì)應(yīng)的客戶端,解決了超算缺少可視化節(jié)點(diǎn)無法整體部署的情況,并且本技術(shù)能夠支持多個(gè)超算與一個(gè)客戶端進(jìn)行仿真作業(yè),所以當(dāng)客戶端退出后,仿真作業(yè)仍然能夠后臺(tái)運(yùn)行,有效整合了計(jì)算資源,降低軟件的集成部署門檻。