吳一雷 封磊 喬鴻欣 王云天
摘要:借鑒應(yīng)用商店模式,討論基于Web實(shí)現(xiàn)Abaqus二次開發(fā)程序的快速集成和發(fā)布等,介紹結(jié)合云計(jì)算技術(shù)面向仿真領(lǐng)域提供二次開發(fā)應(yīng)用程序的管理和服務(wù)平臺(tái).針對(duì)二次開發(fā)過程中涉及的重復(fù)性工作,分別從作業(yè)流程控制、系統(tǒng)環(huán)境配置、用戶界面定制和結(jié)果展示等4方面設(shè)計(jì)應(yīng)用的自動(dòng)化管理,從而降低二次開發(fā)技術(shù)應(yīng)用的難度.通過切削仿真案例展示二次開發(fā)應(yīng)用程序的快速集成發(fā)布,并通過分析得到仿真結(jié)果.
關(guān)鍵詞:仿真云; 二次開發(fā); Web服務(wù); 工作流; 狀態(tài)機(jī); 可視化
中圖分類號(hào): TP302.1
文獻(xiàn)標(biāo)志碼:B
Abstract:Following the model of App store, the rapid integration and distribution of secondary development applications of Abaqus based on Web is discussed, and the management and service platforms of secondary development application program combined with cloud computing technology is introduced, which is for simulation field. As to the repetitive work during the secondary development, the automatic management of applications is designed considering job flow control, system environment configuration, user interface customization and report generation, and the difficulty of the application of secondary development technology is decreased. A rapid integration and deployment of secondary development application program is shown by a cutting simulation case, and the simulation results are obtained by analysis.
Key words:simulation cloud; secondary development; Web service; work flow; state machine; visualization
0引言
在CAE領(lǐng)域,許多優(yōu)秀的商業(yè)軟件提供二次開發(fā)接口,便于用戶根據(jù)自己的業(yè)務(wù)需求進(jìn)行個(gè)性化定制,縮短軟件開發(fā)周期,降低成本.然而,二次開發(fā)技術(shù)需要計(jì)算機(jī)專業(yè)知識(shí),需要技術(shù)人員使用專用語言進(jìn)行開發(fā),這為工程計(jì)算領(lǐng)域使用該技術(shù)提高門檻.實(shí)際上,許多二次開發(fā)的程序模塊、管理方法可以重用,因此如果能夠設(shè)計(jì)一種基于云模式的軟件服務(wù)平臺(tái),為開發(fā)人員提供集成接口以發(fā)布和共享已經(jīng)開發(fā)好的軟件和模塊,讓其他用戶通過平臺(tái)方便地使用這些成果,便能大大提升二次開發(fā)技術(shù)的普及率.這種能夠進(jìn)行應(yīng)用發(fā)布的云服務(wù)平臺(tái),其核心組件應(yīng)實(shí)現(xiàn)對(duì)二次開發(fā)應(yīng)用程序的快速集成功能,盡量減少開發(fā)人員的重復(fù)工作.
本文詳細(xì)討論如何設(shè)計(jì)和實(shí)現(xiàn)面向Abaqus二次開發(fā)的應(yīng)用程序在
Web上快速集成的方法,通過使用工作流引擎、界面定制等技術(shù),有效實(shí)現(xiàn)動(dòng)態(tài)的軟件資源管理,為用戶提供方便易用的CAE二次開發(fā)和使用環(huán)境.
1Abaqus二次開發(fā)
1.1簡(jiǎn)介
在CAE領(lǐng)域,常用的商業(yè)軟件大部分為大型通用分析軟件,以Abaqus為例,其提供豐富的單元類型和材料模型以及強(qiáng)大的前后處理功能模塊,基本能解決一個(gè)復(fù)雜工程項(xiàng)目中的所有問題.然而,針對(duì)不同行業(yè)的特點(diǎn)進(jìn)行有限元分析工作時(shí),這些軟件卻顯得缺少針對(duì)性.為解決這一問題,CAE軟件大多提供二次開發(fā)接口和工具包,技術(shù)人員能夠在熟練應(yīng)用軟件的基礎(chǔ)上,結(jié)合具體行業(yè)的實(shí)踐經(jīng)驗(yàn),針對(duì)前后處理定制特定功能的專用模塊,例如自動(dòng)、重復(fù)化建模,執(zhí)行參數(shù)化研究,訪問結(jié)果數(shù)據(jù)庫(kù)[1-3]等.常用的CAE軟件二次開發(fā)工具[4-5]見表1.二次開發(fā)技術(shù)充分體現(xiàn)CAE應(yīng)用軟件的專業(yè)化特點(diǎn),能夠?qū)崿F(xiàn)許多軟件未預(yù)設(shè)的功能,提高模擬和分析效率.
1.2Abaqus二次開發(fā)方法
Abaqus二次開發(fā)腳本接口是基于Python擴(kuò)展的.Python是一種非常流行的面向?qū)ο蟮木幊陶Z言,具有高級(jí)的數(shù)據(jù)類型和簡(jiǎn)單而強(qiáng)大的面向?qū)ο蟮某绦蛟O(shè)計(jì)方法.Abaqus有限元程序向二次開發(fā)用戶提供豐富的庫(kù)函數(shù),用戶可通過編寫Python腳本程序?qū)崿F(xiàn)建模、網(wǎng)格劃分、提交作業(yè)和后處理分析等功能.Abaqus二次開發(fā)步驟見圖1.
開發(fā)人員首先進(jìn)行數(shù)值模擬,根據(jù)所要模擬的問題類型進(jìn)行建模,如建立幾何模型、分配材料屬性、施加載荷和邊界條件、設(shè)定分析步以及劃分網(wǎng)格等,形成輸入文件和后綴名為rpy的Python代碼[6];然后執(zhí)行二次開發(fā)程序,計(jì)算結(jié)束后形成結(jié)果文件;再使用Python腳本訪問結(jié)果數(shù)據(jù)庫(kù),對(duì)結(jié)果文件進(jìn)行讀寫和控制;最后對(duì)結(jié)果數(shù)據(jù)或?qū)ο髷?shù)據(jù)進(jìn)行相應(yīng)處理,在Abaqus/View中用云圖或曲線表的形式展示結(jié)果,進(jìn)行分析和查看.
1.3云模式化
雖然二次開發(fā)技術(shù)能夠提升科研機(jī)構(gòu)或者企業(yè)研發(fā)效率,降低成本,具有良好的應(yīng)用前景,但使用這項(xiàng)技術(shù)同時(shí)需要工程計(jì)算和計(jì)算機(jī)專業(yè)背景,對(duì)研發(fā)人員要求非常高,致使二次開發(fā)技術(shù)的推廣受到很大限制.此外,部分工程計(jì)算還需要高性能計(jì)算機(jī)集群資源,更提高二次開發(fā)應(yīng)用的門檻.隨著云計(jì)算交互模式的興起,越來越多的企業(yè)或用戶尋求借助于云計(jì)算平臺(tái),使二次開發(fā)應(yīng)用程序面向其他用戶提供服務(wù),進(jìn)一步降低二次開發(fā)的門檻和成本.研究人員提出許多面向二次開發(fā)的云平臺(tái)設(shè)計(jì)及其實(shí)現(xiàn)方案,例如通過彈性資源管理、負(fù)載均衡等技術(shù)方法等提高資源使用效率等.[7-10]上述研究工作主要聚焦于基礎(chǔ)設(shè)施層面,如果能夠開發(fā)介于基礎(chǔ)設(shè)施與CAE軟件之間的二次開發(fā)應(yīng)用管理中間系統(tǒng)[11-13],使開發(fā)人員能方便地集成并發(fā)布二次開發(fā)程序,那么整個(gè)軟、硬件系統(tǒng)將具備更好的擴(kuò)展性.
CAE云平臺(tái)組件結(jié)構(gòu)示意見圖2.平臺(tái)能夠以Python腳本為程序單元模塊,按照用戶的業(yè)務(wù)需求方便地組成不同的綜合仿真程序.一方面,第三方開發(fā)人員離線開發(fā)基于Abaqus庫(kù)函數(shù)的Python求解程序,調(diào)試完成后上傳至云平臺(tái)并與其他用戶共享;另一方面任何用戶都可以使用其他開發(fā)人員共享的二次開發(fā)腳本,再加上自己的前/后處理程序進(jìn)行快速集成,方便地形成完整的CAE仿真流程.
2二次開發(fā)應(yīng)用管理模塊設(shè)計(jì)
在Abaqus二次開發(fā)步驟中,除用戶業(yè)務(wù)邏輯外,許多工作可以采用自動(dòng)化、流程化的方式,例如系統(tǒng)環(huán)境配置、輸入輸出數(shù)據(jù)定義等;用戶還可以重用已有的二次開發(fā)腳本,通過流程定制實(shí)現(xiàn)不同的工程計(jì)算程序.概括起來,整個(gè)二次開發(fā)涉及到的重復(fù)性工作包括作業(yè)流程控制、系統(tǒng)環(huán)境配置、界面定制和結(jié)果展示等方面.
2.1基于狀態(tài)機(jī)模式的作業(yè)流程管理
作業(yè)流程控制是二次開發(fā)應(yīng)用管理的核心功能.根據(jù)程序執(zhí)行的中間結(jié)果控制其流程,實(shí)現(xiàn)相應(yīng)的業(yè)務(wù)邏輯,才能保證得到正確的結(jié)果并返回給用戶.CAE仿真程序大部分按照前處理—求解—后處理的流程順序執(zhí)行.在比較復(fù)雜的應(yīng)用中,求解過程可能會(huì)涉及較多的算法和步驟,而且當(dāng)需求發(fā)生變化時(shí),其步驟也會(huì)相應(yīng)調(diào)整.針對(duì)這一情況,為能夠兼容多步驟分析流程的定制,讓用戶更多地聚焦于應(yīng)用參數(shù)和算法的設(shè)計(jì),而不是程序本身的開發(fā),采用狀態(tài)機(jī)設(shè)計(jì)模式完成作業(yè)流程控制和工作流定制等工作.首先將作業(yè)狀態(tài)變量定義為枚舉類型,其值包括初始、等待、運(yùn)行、錯(cuò)誤、后處理和結(jié)束等,然后根據(jù)Abaqus程序執(zhí)行的流程定義6種作業(yè)狀態(tài)之間的轉(zhuǎn)換邏輯,見圖3.
基于狀態(tài)機(jī)設(shè)計(jì)模式的流程控制方法的優(yōu)點(diǎn)在于,當(dāng)用戶的程序流程發(fā)生變更時(shí),系統(tǒng)能夠通過自動(dòng)修改現(xiàn)有狀態(tài)轉(zhuǎn)換關(guān)系實(shí)現(xiàn)新的流程,甚至在需要加入新的作業(yè)狀態(tài)時(shí),開發(fā)人員也能夠簡(jiǎn)單方便地添加相應(yīng)狀態(tài)類型,而無須修改代碼架構(gòu).
2.2系統(tǒng)環(huán)境配置
為保證程序能夠順利執(zhí)行并返回正確結(jié)果,在集成二次開發(fā)程序的過程中,系統(tǒng)必須根據(jù)開發(fā)人員提交的參數(shù)修改環(huán)境配置方法,這些配置包括運(yùn)行環(huán)境、目錄結(jié)構(gòu)、Web服務(wù)和報(bào)告模板等.
2.3界面定制
整個(gè)云平臺(tái)框架可劃分為前臺(tái)界面和后臺(tái)服務(wù)2部分.作業(yè)流程管理、系統(tǒng)環(huán)境配置都屬于快速集成模塊的后臺(tái)服務(wù).在此基礎(chǔ)上,前臺(tái)界面要提供相應(yīng)的技術(shù)手段支持程序中用戶輸入?yún)?shù)的定制,才能實(shí)現(xiàn)完整的自動(dòng)化功能.以ExtJS為例,UI部分使用組件化設(shè)計(jì)思想,可以靈活地集成已有組件或者開發(fā)自定義組件(其中布局組件為應(yīng)用中每個(gè)處理容器的大小和位置),并提供拖拽運(yùn)行管理模塊,具有高質(zhì)量拖拽應(yīng)用;UI系統(tǒng)所有可視化元素都通過解析權(quán)限系統(tǒng)的JSON數(shù)據(jù)重新構(gòu)建內(nèi)存中的JS對(duì)象,再通過DomHelper解析器解析成HTML的Dom節(jié)點(diǎn),流程見圖4.
2.4結(jié)果展示
結(jié)果展示以HTML和PDF這2種形式為主,其中PDF報(bào)告通過模板生成,由后臺(tái)數(shù)據(jù)源實(shí)現(xiàn)對(duì)模板所需數(shù)據(jù)進(jìn)行填充處理,只需更改PDF模板或更改模板同時(shí)更改少量服務(wù)器端代碼即可實(shí)現(xiàn)PDF結(jié)果文件自動(dòng)輸出.本項(xiàng)目使用的PDF模板為tex文本,根據(jù)開發(fā)者定義的格式應(yīng)用管理模塊對(duì)tex進(jìn)行修改,當(dāng)作業(yè)執(zhí)行完畢得到結(jié)果后,再將數(shù)據(jù)或圖片填充到對(duì)應(yīng)的位置,并對(duì)tex文件進(jìn)行編譯得到PDF報(bào)告.
2.5開發(fā)包
應(yīng)用管理組件實(shí)現(xiàn)模塊化設(shè)計(jì)具有良好的擴(kuò)展性和可定制性.在此基礎(chǔ)上,定義業(yè)務(wù)邏輯并根據(jù)作業(yè)流程管理標(biāo)準(zhǔn)、環(huán)境配置標(biāo)準(zhǔn)、界面定制標(biāo)準(zhǔn)和結(jié)果報(bào)告標(biāo)準(zhǔn)編寫二次開發(fā)程序,能夠方便地將程序集成到云平臺(tái)中并發(fā)布,從而面向互聯(lián)網(wǎng)提供服務(wù).上述程序集成流程圖見圖5.
為進(jìn)一步方便開發(fā)人員,對(duì)上述幾個(gè)模塊中的方法進(jìn)行封裝,提供調(diào)用接口API,并打包成開發(fā)包,技術(shù)人員可以直接調(diào)用庫(kù)進(jìn)行開發(fā)、運(yùn)行并調(diào)試自己的程序.
3代碼實(shí)現(xiàn)
3.1類圖
二次開發(fā)應(yīng)用管理模塊由門戶、服務(wù)和數(shù)據(jù)庫(kù)等3部分組成,后臺(tái)服務(wù)包含Config,CaeService,Job和Report等4個(gè)主要的功能類.Config是配置類,用以讀取服務(wù)所需的所有配置信息;CaeService是整個(gè)RPC服務(wù)的接口,規(guī)定整個(gè)應(yīng)用所能提供用戶的服務(wù)和門戶所能調(diào)用的服務(wù),是服務(wù)的入口;Job是應(yīng)用服務(wù)的核心類,定義作業(yè)流程管理算法;Report是整個(gè)服務(wù)的后處理類,協(xié)同完成作業(yè)執(zhí)行后的結(jié)果獲取和輸出功能.上述4個(gè)類之間的調(diào)用關(guān)系見圖6.
3.2時(shí)序圖
作業(yè)管理時(shí)序見圖7.
在平臺(tái)運(yùn)行過程中,當(dāng)用戶提交作業(yè)時(shí),首先客戶端調(diào)用PojoCaeService中的listJob,listJobs,countJobs和submit方法,在初始化PojoCaeService類過程中讀取Config類后創(chuàng)建Job對(duì)象執(zhí)行具體的方法,然后通過狀態(tài)機(jī)模式,在作業(yè)執(zhí)行的不同階段實(shí)現(xiàn)不同的操作,并且每轉(zhuǎn)換一個(gè)狀態(tài)相應(yīng)更新JobDao,持續(xù)更新執(zhí)行過程信息.
4算例
目前,Abaqus二次開發(fā)應(yīng)用管理和服務(wù)云平臺(tái)集成鋼絲冷軋成型、拉絲模、沖壓成型、焊接、切削、子彈破甲、壓力、跌落、熱分層、風(fēng)環(huán)境和模態(tài)提取等一系列二次開發(fā)仿真應(yīng)用,由于流程可以由開發(fā)人員定制,用戶只需要填入必要的仿真參數(shù)并提交任務(wù),即可得到想要的仿真結(jié)果.以切削加工模擬為例,通過云平臺(tái)快速集成二次開發(fā)腳本并進(jìn)行分析.
切削過程的建模和模擬對(duì)降低加工工時(shí)和成本至關(guān)重要.模擬作為開發(fā)工具可以用于質(zhì)量管理和質(zhì)量?jī)?yōu)化,并盡可能降低生產(chǎn)起步階段的風(fēng)險(xiǎn)和試制費(fèi)用,其輸入?yún)?shù)包括模型參數(shù)、材料參數(shù)和工藝參數(shù)3種.將二次開發(fā)插件按照前文所述步驟集成到云平臺(tái)中,算例計(jì)算界面見圖8.
5結(jié)束語
討論面向Abaqus二次開發(fā)應(yīng)用的Web快速集成技術(shù),分別從工作流程管理、系統(tǒng)環(huán)境配置、界面定制和結(jié)果展示4個(gè)方面設(shè)計(jì)對(duì)二次開發(fā)應(yīng)用的資源優(yōu)化管理,并在此基礎(chǔ)上實(shí)現(xiàn)仿真云平臺(tái)中的二
次開發(fā)快速集成.該模塊能使開發(fā)者方便快捷地發(fā)布自己的程序,并面向互聯(lián)網(wǎng)提供服務(wù),讓其他用戶更好地使用底層的基礎(chǔ)設(shè)施資源.提出的快速集成方法針對(duì)Python語言設(shè)計(jì),但可以很容易地?cái)U(kuò)展到其他CAE軟件的二次開發(fā)接口,還可以與高性能計(jì)算系統(tǒng)、作業(yè)調(diào)度系統(tǒng)結(jié)合,輕松實(shí)現(xiàn)并行化作業(yè)管理,具有良好的擴(kuò)展性.
參考文獻(xiàn):
[1]鐘同圣. Python語言和Abaqus前處理二次開發(fā)[J]. 鄭州大學(xué)學(xué)報(bào): 理學(xué)版, 2006, 38(1): 61-64.
ZHONG Tongsheng. Second development for fore treatment of Abaqus using Python language[J]. J Zhengzhou Univ: Nat Sc, 2006, 38(1): 61-64.
[2]莊茁. Abaqus非線性有限元分析與實(shí)例[M]. 北京: 科學(xué)出版社, 2005: 5-9.
[3]黃霖. Abaqus/CAE二次開發(fā)功能與應(yīng)用實(shí)例[J]. 計(jì)算機(jī)輔助工程, 2011, 20(4): 96-100.
HUANG Lin. Secondary development functions and applications of Abaqus/CAE[J]. Comput Aided Eng, 2011, 20(4): 96-100.
[4]徐中民, 王納秀. 基于TCL/TK語言的經(jīng)典ANSYS軟件用戶界面的二次開發(fā)[C]//安世亞太2006年用戶年會(huì)論文集. 北京: 2006.
[5]張波, 盛和太. ANSYS有限元數(shù)值分析原理與工程應(yīng)用[M]. 北京: 清華大學(xué)出版社, 2005: 456-470
[6]張強(qiáng). 基于Python的Abaqus二次開發(fā)方法與應(yīng)用[J]. 艦船電子工程, 2011, 31(2): 131-134.
ZHANG Qiang. Method and application of second-developed Abaqus based on Python[J]. Ship Electron Eng, 2011, 31(2): 131-134.
[7]于杰, 王錢榮, 吳慧玲, 等. 自主CAE軟件產(chǎn)業(yè)和服務(wù)平臺(tái)建設(shè)[J]. 計(jì)算機(jī)輔助工程, 2011, 20(1): 144-147.
YU Jie, WANG Qianrong, WU Huiling, et al. Construction of independent CAE software industry and service platform[J]. Comput Aided Eng, 2011, 20(1): 144-147.
[8]李伯虎. 一種基于云計(jì)算理念的網(wǎng)絡(luò)化建模與仿真平臺(tái)——“云仿真平臺(tái)”[J]. 系統(tǒng)仿真學(xué)報(bào), 2009, 21(17): 5292-5299.
LI Bohu. Networked modeling & simulation platform based on concept of cloud computing: cloud simulation platform[J]. J Syst Simulation, 2009, 21(17): 5292-5299.
[9]楊晨, 李伯虎, 柴旭東, 等. 面向云制造的云仿真支撐框架及應(yīng)用過程模型[J]. 計(jì)算機(jī)集成制造系統(tǒng), 2012, 18(7): 1444-1452.
YANG Chen, LI Bohu, CHAI Xudong, et al. Cloud manufacturing oriented cloud simulation supporting framework and its application process model[J]. Comput Integrated Manufacturing Sys, 2012, 18(7): 1444-1452.
[10]張雅彬, 李伯虎, 柴旭東, 等. 基于虛擬化技術(shù)的云仿真運(yùn)行環(huán)境動(dòng)態(tài)構(gòu)建技術(shù)[J]. 系統(tǒng)工程與電子技術(shù), 2012, 34(3): 619-624.
ZHANG Yabin, LI Bohu, CHAI Xudong, et al. Research on virtualization-based cloud simulation running environment dynamic building technology[J]. Systems Eng & Electron, 2012, 34(3): 619-624.
[11]梁國(guó)平, 唐菊珍. 有限元分析軟件平臺(tái)FEPG[J]. 計(jì)算機(jī)輔助工程, 2011, 20(3): 92-96.
LIANG Guoping, TANG Juzhen. Finite element analysis software platform FEPG[J]. Comput Aided Eng, 2011, 20(3): 92-96.
[12]劉廣, 楊積東, 司馬珂, 等. 基于SIMULIA SLM的協(xié)同設(shè)計(jì)仿真管理平臺(tái)開發(fā)[J]. 計(jì)算機(jī)輔助工程, 2013, 22(S2): 6-10.
LIU Guang, YANG Jidong, SI Make, et al. Development of collaborative design simulation management platform based on SIMULIA SLM[J]. Comput Aided Eng, 2013, 22(S2): 6-10.
[13]高武奇, 康鳳舉, 鐘聯(lián)炯, 等. 一種基于HLA Evovled的云仿真技術(shù)研究[J]. 系統(tǒng)仿真學(xué)報(bào), 2011, 23(8): 1643-1647.
GAO Wuqi, KANG Fengju, ZHONG Lianjiong, et al. Cloud simulation technology based on HLA Evolved[J]. J Syst Simulation, 2011, 23(8): 1643-1647.
(編輯武曉英)