吳一雷 封磊 喬鴻欣 王云天



摘要:借鑒應用商店模式,討論基于Web實現Abaqus二次開發程序的快速集成和發布等,介紹結合云計算技術面向仿真領域提供二次開發應用程序的管理和服務平臺.針對二次開發過程中涉及的重復性工作,分別從作業流程控制、系統環境配置、用戶界面定制和結果展示等4方面設計應用的自動化管理,從而降低二次開發技術應用的難度.通過切削仿真案例展示二次開發應用程序的快速集成發布,并通過分析得到仿真結果.
關鍵詞:仿真云; 二次開發; Web服務; 工作流; 狀態機; 可視化
中圖分類號: TP302.1
文獻標志碼: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領域,許多優秀的商業軟件提供二次開發接口,便于用戶根據自己的業務需求進行個性化定制,縮短軟件開發周期,降低成本.然而,二次開發技術需要計算機專業知識,需要技術人員使用專用語言進行開發,這為工程計算領域使用該技術提高門檻.實際上,許多二次開發的程序模塊、管理方法可以重用,因此如果能夠設計一種基于云模式的軟件服務平臺,為開發人員提供集成接口以發布和共享已經開發好的軟件和模塊,讓其他用戶通過平臺方便地使用這些成果,便能大大提升二次開發技術的普及率.這種能夠進行應用發布的云服務平臺,其核心組件應實現對二次開發應用程序的快速集成功能,盡量減少開發人員的重復工作.
本文詳細討論如何設計和實現面向Abaqus二次開發的應用程序在
Web上快速集成的方法,通過使用工作流引擎、界面定制等技術,有效實現動態的軟件資源管理,為用戶提供方便易用的CAE二次開發和使用環境.
1Abaqus二次開發
1.1簡介
在CAE領域,常用的商業軟件大部分為大型通用分析軟件,以Abaqus為例,其提供豐富的單元類型和材料模型以及強大的前后處理功能模塊,基本能解決一個復雜工程項目中的所有問題.然而,針對不同行業的特點進行有限元分析工作時,這些軟件卻顯得缺少針對性.為解決這一問題,CAE軟件大多提供二次開發接口和工具包,技術人員能夠在熟練應用軟件的基礎上,結合具體行業的實踐經驗,針對前后處理定制特定功能的專用模塊,例如自動、重復化建模,執行參數化研究,訪問結果數據庫[1-3]等.常用的CAE軟件二次開發工具[4-5]見表1.二次開發技術充分體現CAE應用軟件的專業化特點,能夠實現許多軟件未預設的功能,提高模擬和分析效率.
1.2Abaqus二次開發方法
Abaqus二次開發腳本接口是基于Python擴展的.Python是一種非常流行的面向對象的編程語言,具有高級的數據類型和簡單而強大的面向對象的程序設計方法.Abaqus有限元程序向二次開發用戶提供豐富的庫函數,用戶可通過編寫Python腳本程序實現建模、網格劃分、提交作業和后處理分析等功能.Abaqus二次開發步驟見圖1.
開發人員首先進行數值模擬,根據所要模擬的問題類型進行建模,如建立幾何模型、分配材料屬性、施加載荷和邊界條件、設定分析步以及劃分網格等,形成輸入文件和后綴名為rpy的Python代碼[6];然后執行二次開發程序,計算結束后形成結果文件;再使用Python腳本訪問結果數據庫,對結果文件進行讀寫和控制;最后對結果數據或對象數據進行相應處理,在Abaqus/View中用云圖或曲線表的形式展示結果,進行分析和查看.
1.3云模式化
雖然二次開發技術能夠提升科研機構或者企業研發效率,降低成本,具有良好的應用前景,但使用這項技術同時需要工程計算和計算機專業背景,對研發人員要求非常高,致使二次開發技術的推廣受到很大限制.此外,部分工程計算還需要高性能計算機集群資源,更提高二次開發應用的門檻.隨著云計算交互模式的興起,越來越多的企業或用戶尋求借助于云計算平臺,使二次開發應用程序面向其他用戶提供服務,進一步降低二次開發的門檻和成本.研究人員提出許多面向二次開發的云平臺設計及其實現方案,例如通過彈性資源管理、負載均衡等技術方法等提高資源使用效率等.[7-10]上述研究工作主要聚焦于基礎設施層面,如果能夠開發介于基礎設施與CAE軟件之間的二次開發應用管理中間系統[11-13],使開發人員能方便地集成并發布二次開發程序,那么整個軟、硬件系統將具備更好的擴展性.
CAE云平臺組件結構示意見圖2.平臺能夠以Python腳本為程序單元模塊,按照用戶的業務需求方便地組成不同的綜合仿真程序.一方面,第三方開發人員離線開發基于Abaqus庫函數的Python求解程序,調試完成后上傳至云平臺并與其他用戶共享;另一方面任何用戶都可以使用其他開發人員共享的二次開發腳本,再加上自己的前/后處理程序進行快速集成,方便地形成完整的CAE仿真流程.
2二次開發應用管理模塊設計
在Abaqus二次開發步驟中,除用戶業務邏輯外,許多工作可以采用自動化、流程化的方式,例如系統環境配置、輸入輸出數據定義等;用戶還可以重用已有的二次開發腳本,通過流程定制實現不同的工程計算程序.概括起來,整個二次開發涉及到的重復性工作包括作業流程控制、系統環境配置、界面定制和結果展示等方面.
2.1基于狀態機模式的作業流程管理
作業流程控制是二次開發應用管理的核心功能.根據程序執行的中間結果控制其流程,實現相應的業務邏輯,才能保證得到正確的結果并返回給用戶.CAE仿真程序大部分按照前處理—求解—后處理的流程順序執行.在比較復雜的應用中,求解過程可能會涉及較多的算法和步驟,而且當需求發生變化時,其步驟也會相應調整.針對這一情況,為能夠兼容多步驟分析流程的定制,讓用戶更多地聚焦于應用參數和算法的設計,而不是程序本身的開發,采用狀態機設計模式完成作業流程控制和工作流定制等工作.首先將作業狀態變量定義為枚舉類型,其值包括初始、等待、運行、錯誤、后處理和結束等,然后根據Abaqus程序執行的流程定義6種作業狀態之間的轉換邏輯,見圖3.
基于狀態機設計模式的流程控制方法的優點在于,當用戶的程序流程發生變更時,系統能夠通過自動修改現有狀態轉換關系實現新的流程,甚至在需要加入新的作業狀態時,開發人員也能夠簡單方便地添加相應狀態類型,而無須修改代碼架構.
2.2系統環境配置
為保證程序能夠順利執行并返回正確結果,在集成二次開發程序的過程中,系統必須根據開發人員提交的參數修改環境配置方法,這些配置包括運行環境、目錄結構、Web服務和報告模板等.
2.3界面定制
整個云平臺框架可劃分為前臺界面和后臺服務2部分.作業流程管理、系統環境配置都屬于快速集成模塊的后臺服務.在此基礎上,前臺界面要提供相應的技術手段支持程序中用戶輸入參數的定制,才能實現完整的自動化功能.以ExtJS為例,UI部分使用組件化設計思想,可以靈活地集成已有組件或者開發自定義組件(其中布局組件為應用中每個處理容器的大小和位置),并提供拖拽運行管理模塊,具有高質量拖拽應用;UI系統所有可視化元素都通過解析權限系統的JSON數據重新構建內存中的JS對象,再通過DomHelper解析器解析成HTML的Dom節點,流程見圖4.
2.4結果展示
結果展示以HTML和PDF這2種形式為主,其中PDF報告通過模板生成,由后臺數據源實現對模板所需數據進行填充處理,只需更改PDF模板或更改模板同時更改少量服務器端代碼即可實現PDF結果文件自動輸出.本項目使用的PDF模板為tex文本,根據開發者定義的格式應用管理模塊對tex進行修改,當作業執行完畢得到結果后,再將數據或圖片填充到對應的位置,并對tex文件進行編譯得到PDF報告.
2.5開發包
應用管理組件實現模塊化設計具有良好的擴展性和可定制性.在此基礎上,定義業務邏輯并根據作業流程管理標準、環境配置標準、界面定制標準和結果報告標準編寫二次開發程序,能夠方便地將程序集成到云平臺中并發布,從而面向互聯網提供服務.上述程序集成流程圖見圖5.
為進一步方便開發人員,對上述幾個模塊中的方法進行封裝,提供調用接口API,并打包成開發包,技術人員可以直接調用庫進行開發、運行并調試自己的程序.
3代碼實現
3.1類圖
二次開發應用管理模塊由門戶、服務和數據庫等3部分組成,后臺服務包含Config,CaeService,Job和Report等4個主要的功能類.Config是配置類,用以讀取服務所需的所有配置信息;CaeService是整個RPC服務的接口,規定整個應用所能提供用戶的服務和門戶所能調用的服務,是服務的入口;Job是應用服務的核心類,定義作業流程管理算法;Report是整個服務的后處理類,協同完成作業執行后的結果獲取和輸出功能.上述4個類之間的調用關系見圖6.
3.2時序圖
作業管理時序見圖7.
在平臺運行過程中,當用戶提交作業時,首先客戶端調用PojoCaeService中的listJob,listJobs,countJobs和submit方法,在初始化PojoCaeService類過程中讀取Config類后創建Job對象執行具體的方法,然后通過狀態機模式,在作業執行的不同階段實現不同的操作,并且每轉換一個狀態相應更新JobDao,持續更新執行過程信息.
4算例
目前,Abaqus二次開發應用管理和服務云平臺集成鋼絲冷軋成型、拉絲模、沖壓成型、焊接、切削、子彈破甲、壓力、跌落、熱分層、風環境和模態提取等一系列二次開發仿真應用,由于流程可以由開發人員定制,用戶只需要填入必要的仿真參數并提交任務,即可得到想要的仿真結果.以切削加工模擬為例,通過云平臺快速集成二次開發腳本并進行分析.
切削過程的建模和模擬對降低加工工時和成本至關重要.模擬作為開發工具可以用于質量管理和質量優化,并盡可能降低生產起步階段的風險和試制費用,其輸入參數包括模型參數、材料參數和工藝參數3種.將二次開發插件按照前文所述步驟集成到云平臺中,算例計算界面見圖8.
5結束語
討論面向Abaqus二次開發應用的Web快速集成技術,分別從工作流程管理、系統環境配置、界面定制和結果展示4個方面設計對二次開發應用的資源優化管理,并在此基礎上實現仿真云平臺中的二
次開發快速集成.該模塊能使開發者方便快捷地發布自己的程序,并面向互聯網提供服務,讓其他用戶更好地使用底層的基礎設施資源.提出的快速集成方法針對Python語言設計,但可以很容易地擴展到其他CAE軟件的二次開發接口,還可以與高性能計算系統、作業調度系統結合,輕松實現并行化作業管理,具有良好的擴展性.
參考文獻:
[1]鐘同圣. Python語言和Abaqus前處理二次開發[J]. 鄭州大學學報: 理學版, 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非線性有限元分析與實例[M]. 北京: 科學出版社, 2005: 5-9.
[3]黃霖. Abaqus/CAE二次開發功能與應用實例[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語言的經典ANSYS軟件用戶界面的二次開發[C]//安世亞太2006年用戶年會論文集. 北京: 2006.
[5]張波, 盛和太. ANSYS有限元數值分析原理與工程應用[M]. 北京: 清華大學出版社, 2005: 456-470
[6]張強. 基于Python的Abaqus二次開發方法與應用[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軟件產業和服務平臺建設[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]. 系統仿真學報, 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]楊晨, 李伯虎, 柴旭東, 等. 面向云制造的云仿真支撐框架及應用過程模型[J]. 計算機集成制造系統, 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]張雅彬, 李伯虎, 柴旭東, 等. 基于虛擬化技術的云仿真運行環境動態構建技術[J]. 系統工程與電子技術, 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]梁國平, 唐菊珍. 有限元分析軟件平臺FEPG[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的協同設計仿真管理平臺開發[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]高武奇, 康鳳舉, 鐘聯炯, 等. 一種基于HLA Evovled的云仿真技術研究[J]. 系統仿真學報, 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.
(編輯武曉英)