之前跟大家分享了,关于如何基于Abaqus利用python脚本进行一些基本的二次开发工作,讲述了如何利用Abaqus的录宏功能,在操作的过程中录制一些关键的脚本,来获取执行相关的操作对应的代码,包括前处理、仿真作业提交、以及后处理的实现。对这部分内容还不太了解的同学,可以找到我之前的博客看看,下面是包含这些内容的博客的链接。
今天要跟大家分享的不只是如何在Abaqus中如何进行功能开发,更是从一个基于Abaqus的辅助分析软件系统的角度,给大家分享一下,基于Abaqus的仿真软件一般包含哪些功能模块,以及这些功能模块的数据传递流程。
所谓基于Abaqus的仿真系统,大概如下面的Abaqus仿真系统框架图。其实就是把原来手动的操作,包含研究人员工作积累的标准的仿真流程及仿真专家经验(包含模型处理、边界条件处理等)通 过编程(推荐使用python脚本)将数据控制系统、仿真终端及数据库软件,集成到软件系统中,一般要求软件系统的数据控制系统,UI界面便捷易用。通过软件系统更加快速地进行 仿真工作,提升工件的设计效率。并通过数据库管理软件,将仿真数据以一定的格式保存起来,便于后期进行快速追溯,提升数据管理、分析效率。
Abaqus仿真系统框架图
Abaqus仿真系统一般包含这些基本的功能:1、仿真工程的管理;2、具备优良人机交互设计的软件界面供用户输入仿真相关的数据;3、研究仿真终端的外部调用启动机制,编写外部调用算法启动仿真终端,即Abaqus。4、仿真完成后,能够获取仿真结果,并通过良好的界面展示给用户。5、一般仿真结束,获取到的仿真结果,包含图片(一般为应力、应变等云图)和一些数据(例如最大变形或最大应力),基于这些数据可以在word中生成仿真报告,供用户直观查看当前仿真的效果,以及存档备用。6、仿真报告是对单次仿真结果的一种记录手段,更多时候,我们比较关注的是多次仿真的结果,可以基于这些数据研究某些参数对关注性能目标的影响,需要将单次仿真的结果存储到数据库中(建议使用开源的MySql数据库)。
以上就是一个Abaqus仿真系统需要具备的基本功能,事实上这些基本功能适用于基于各种仿真终端进行开发的仿真系统,只不过对于不同的仿真终端而言,仿真终端外部驱动的接口或技术有所区别。
上面说明了一个Abaqus仿真系统包含的基本功能,本节将对这些基本功能进行详细说明,主要说明的是,如何使用编程语言进行这些功能的开发。
仿真工程管理包括创建、打开、删除、查找和修改仿真工程,这些仿真工程是基于仿真系统的语义定义的,一般创建一个仿真工程需要提前准备好,这次仿真工程的一些物料、材料、相关的载荷和边界条件,这些数据一般通过xml或数据库提前维护好,在创建仿真工程的时候将其导入显示在系统界面上。下图为通过XML格式维护的材料数据和部分仿真设置信息。
创建、打开仿真工程功能的界面相对简单,可以在利用在VS利用C#的WinForm工程直接拖拽搭建,下面为创建的创建工程的界面,这些界面包含一些必要的交互数据,这个一般都是根据用户需求来的,就不细说了。还有后面展示的所有界面都是通过C#的Winform搭建,不再赘述,重点说明这些模块的数据流。
仿真工程创建界面
仿真数据输入提供了让用户输入仿真必须要的数据,这些数据是根据仿真实际需要来的,一般需要以前维护一些默认值,如维护材料库(可能需要专门的材料库维护系统)、仿真设置属性(载荷、网格数量、网格尺寸、迭代步长等),仿真数据输入一般涉及比较多的数据交互,因此界面的UI设计要重点关注,这部分UI设计的好坏直接决定了,用户使用体验的好坏。
下图为仿真数据输入的一个示例,对需要数据的数据进行明确的分类,将需要多次操作的仿真核心的位置,最好提供一张分析部件的结构图,让用户在输入相关数据的时候能够进行参考。
仿真数据输入UI界面
这部分是纯底层的行为,需要从外部一般为我们自己开发的仿真系统,去调用仿真终端即Abaqus,外部调用Abaqus是通过命令行参数的方式实现,调用Abqus 的.exe格式的程序并传入相关的参数驱动Abaqus启动,根据输入设置模型材料、载荷、边界,然后进行仿真,最终输出仿真结果(这部分技术不明白的,可以参考文章开头提到的那篇文章,或者联系我们进行技术咨询)。
下面为基于C#写的外部调用Abaqus的接口,入参可以是需要执行的python脚本路径。
public bool create_abaqus(string py_script_command)//批处理调用abaqus { bool creat_process_flag = false; try { Process p = new System.Diagnostics.Process(); p.StartInfo.FileName = "cmd.exe"; p.StartInfo.UseShellExecute = false; //是否使用操作系统shell启动 p.StartInfo.RedirectStandardInput = true;//接受来自调用程序的输入信息 p.StartInfo.RedirectStandardOutput = true;//由调用程序获取输出信息 p.StartInfo.RedirectStandardError = true;//重定向标准错误输出 p.StartInfo.CreateNoWindow = true;//不显示程序窗口 p.StartInfo.WindowStyle = System.Diagnostics.ProcessWindowStyle.Minimized;//关键代码 p.Start();//启动程序 //向cmd窗口发送输入信息 p.StandardInput.WriteLine(SIMULIA_Temp_path); p.StandardInput.WriteLine(py_script_command); p.StandardInput.WriteLine("exit"); p.StandardInput.AutoFlush = true; //获取cmd窗口的输出信息 //string output = p.StandardOutput.ReadToEnd(); //p.WaitForExit();//等待程序执行完退出进程 //p.Close(); //Console.WriteLine(output); creat_process_flag = true; } catch (Exception) { throw; } return creat_process_flag; }
仿真结果查看主要是给用户一个直观边界的途径来查看当前仿真的结果,主要涉及UI界面的设计,这个难点主要在于设计的界面要美观,结果查看要便捷。项目规模大一点的建议找专业的GUI团队画出原型,然后根据原型进行UI设计。
下图为给出的,查看仿真结果的实例,主要包含一些关注结果、性能评价参数和云图的展示。
仿真报告生成需要基于Word进行二次开发,需要先指定制式的仿真报告模板,然后在报告模板的对应位置添加标签,在生成报告的过程中将指定的标签替换成对象的数据或者图片。
仿真数据管理需要结合数据库进行开发,对数据库进行开发需要具备基本的数据库设计的能力,建议进行这部分开发,咨询下有数据库开发经验的开发人员。涉及的基本数据库操作包含,基本的增加、修改和删除操作,建议使用MySql等开源的关系型数据库进行开发,不涉及版权问题。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删