面向Abaqus二次开发的应用管理和服务平台
2015-05-11吴一雷封磊乔鸿欣王云天
吴一雷 封磊 乔鸿欣 王云天
摘要:借鉴应用商店模式,讨论基于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.
(编辑武晓英)