前文我们讨论了仿真二次开发的基本概念和功能,本文我们继续讨论仿真二次开发的分类以及要进行二次开发所需的一些技术条件。
二次开发的分类
我们知道,大多数商业仿真软件一般都会提供两种操作方式:一种是图形用户界面(GUI),一种是以脚本语言为代表的命令流。
GUI:图形用户界面操作。优点是操作直观,门槛低,适合产品详细设计阶段的校核式仿真;但修改比较麻烦,对于方案阶段的频繁修改则效率较低;此外,文件流通受限于软件版本,团队协作完成任务比较困难。
脚本命令流:软件操作程序化。优点是易于修改、便于参数化和流程化分析作业,方案设计阶段有一定的优势,且易于团队协做;但程序编写耗费时间较多,要求工程师有一定的编程能力。
脚本命令流是二次开发的基础,由此可初略的将仿真二次开发分为以下四类。
1、程序取代GUI
大多数仿真软件都有一门对应的脚本语言,如Ansys对应的APDL语言,Abaqus对应的Python语言,Hypermesh对应的TCLTK语言。软件的GUI操作都会有对应的脚本程序,脚本程序一般在Log文件中查看,且实现的功能比GUI操作更多,脚本程序再加上一定的控制流程(if,for/do,while)和文件读写(read,write),到此就基本完成了脚本程序的编写。脚本程序的好处在于便于修改和重复多次运行,且不易受到软件版本的限制。
2、用户界面设计
软件会自带一些输入输出对话框、进度条以及工具栏和菜单栏等图形元素,这些图形元素更直观的展示了仿真过程。一般软件也会提供对应的程序语言为用户定制化这些图形元素,如Ansys的UIDL语言、Abaqus的Python语言和Hypermesh的TCLTK语言。
3、用户程序设计
特殊材料,当软件自带的材料库不能准确描述材料的本构关系时,需要开发材料本构方程,如一些特殊的橡胶材料;
接触问题,可开发除基于经典的赫兹接触理论之外的接触算法;
优化问题,可开发一些现代算法如粒子群、退火、遗传等优化算法程序;
一般基于Fortran语言实现Ansys和Abaqus的UPFs用户子程序。
4、联合仿真
多物理场仿真时,需要涉及到多种仿真软件构成的一个多学科联合仿真系统,重点在于各个仿真软件的信息交互接口的开发。如风力发电机的流体、固体和控制耦合问题,流体仿真为固体仿真提供载荷,固体仿真为流体仿真提供变形信息的同时也为控制系统提供速度等信息,则需要对软件的接口进行二次开发,打通软件底层的数据流通。
还可以将仿真软件和编程语言进行联合仿真,如使用外部优化算法对具体的仿真问题进行优化或者控制,如基于Adams的多刚体动力学分析中引入基于Matlab Simulink的控制程序。
二次开发需要具备的技术条件
仿真软件的二次开发对工程师的要求较高,需要具备如下技能才能做好二次开发工作,其中专业知识、软件技能和编程技能是二次开发的基础。
1、数学和专业知识
掌握基本的数学知识至关重要,如线性代数、微积分、复变函数、数值分析、概率统计等,这些数学知识是专业知识的理论基础,有助于理解物理原理。
依据仿真所属的领域,对应的专业知识也是必需的,比如机械工程、电子电路、材料科学、流体力学、生物医学等专业知识,这些专业知识是仿真的理论基础。用户程序设计(UPFs)的二次开发对数学和专业知识的要求尤其较高。
2、仿真软件技能
基本的仿真软件操作技能是实现仿真整个过程的基础,会仿真才会二次开发。如MATLAB/Simulink是常用的数学计算和控制工具;ANSYS、COMSOL?等有限元分析软件用于结构、热、流体等仿真;CarSim或Adams在汽车仿真中也是常用的。
3、编程技能
二次开发和一般的程序开发过程基本一致,都涉及到编码、调试、优化等过程,不同的是二次开发还需要具备一定的学科专业知识,但基本的程序思想是一致的。
对于程序取代GUI操作类的二次开发,应用程序控制(循环、判断、读写文件)操作将仿真过程串联起来一般就可以实现;对于用户特性设计类的二次开发,还需要了解一些面向对象的程序设计思想。
4、数据处理和分析
数据包括仿真数据和试验数据两部分,数据处理主要涉及数据的导入、清洗、转换和可视化等。数据分析主要涉及统计分析、回归、分类等,使用工具如Pandas、Scikitlearn等。
5、优化和计算效率
掌握基本的优化算法原理和适用条件十分重要,用于寻找最优解,如遗传算法、粒子群优化等;除此之外,并行和分布式计算可提升计算效率和处理模型仿真的能力。
6、软技能
除了以上五条硬技能之外,还应具备以下三个软技能:
问题解决:快速识别和解决问题的能力;
团队协作:能够与不同背景和技能的团队成员有效协作;
时间管理:有效管理和分配时间,以满足项目的时间表。
最后
本文主讨论了仿真二次开发的分类以及进行二次开发所需要具备的一些基本技术条件,下文将对仿真二次开发的流程进行讨论。
为了给读者提供一个技术交流,相互学习的平台,本站现已创建微信交流群,有兴趣的读者可扫码加入(备注:加入微信交流群)。
309