Abaqus⼆次开发实例——基于Abaqus的⾃动化仿真系统分享⽬录
1、引⾔
之前跟⼤家分享了,关于如何基于Abaqus利⽤python脚本进⾏⼀些基本的⼆次开发⼯作,讲述了如何利⽤Abaqus的录宏功能,在操作的过程中录制⼀些关键的脚本,来获取执⾏相关的操作对应的代码,包括前处理、仿真作业提交、以及后处理的实现。对这部分内容还不太了解的同学,可以到我之前的博客看看,下⾯是包含这些内容的博客的链接。
今天要跟⼤家分享的不只是如何在Abaqus中如何进⾏功能开发,更是从⼀个基于Abaqus的辅助分析软件系统的⾓度,给⼤家分享⼀下,基于Abaqus的仿真软件⼀般包含哪些功能模块,以及这些功能模块的数据传递流程。
2、综述
2.1 基于Abaqus的仿真系统的基本定义
所谓基于Abaqus的仿真系统,⼤概如下⾯的Abaqus仿真系统框架图。其实就是把原来⼿动的操作,包含研究⼈员⼯作积累的标准的仿真流程及仿真专家经验(包含模型处理、边界条件处理等)通 过编程(推荐使⽤python脚本)将数据控制系统、仿真终端及数据库软件,集成到软件系统中,⼀般要求软件
系统的数据控制系统,UI界⾯便捷易⽤。通过软件系统更加快速地进⾏ 仿真⼯作,提升⼯件的设计效率。并通过数据库管理软件,将仿真数据以⼀定的格式保存起来,便于后期进⾏快速追溯,提升数据管理、分析效率。
Abaqus仿真系统框架图
2.2 Abaqus仿真系统基本功能
Abaqus仿真系统⼀般包含这些基本的功能:1、仿真⼯程的管理;2、具备优良⼈机交互设计的软件界⾯供⽤户输⼊仿真相关的数据;3、研究仿真终端的外部调⽤启动机制,编写外部调⽤算法启动仿真终
端,即Abaqus。4、仿真完成后,能够获取仿真结果,并通过良好的界⾯展⽰给⽤户。5、⼀般仿真结束,获取到的仿真结果,包含图⽚(⼀般为应⼒、应变等云图)和⼀些数据(例如最⼤变形或最⼤应⼒),基于这些数据可以在word中⽣成仿真报告,供⽤户直观查看当前仿真的效果,以及存档备⽤。6、仿真报告是对单次仿真结果的⼀种记录⼿段,更多时候,我们⽐较关注的是多次仿真的结果,可以基于这些数据研究某些参数对关注性能⽬标的影响,需要将单次仿真的结果存储到数据库中(建议使⽤开源的MySql数据库)。
以上就是⼀个Abaqus仿真系统需要具备的基本功能,事实上这些基本功能适⽤于基于各种仿真终端进⾏开发的仿真系统,只不过对于不同的仿真终端⽽⾔,仿真终端外部驱动的接⼝或技术有所区别。
3、仿真系统功能模块详解
上⾯说明了⼀个Abaqus仿真系统包含的基本功能,本节将对这些基本功能进⾏详细说明,主要说明的是,如何使⽤编程语⾔进⾏这些功能的开发。
3.1 仿真⼯程管理
仿真⼯程管理包括创建、打开、删除、查和修改仿真⼯程,这些仿真⼯程是基于仿真系统的语义定义的,⼀般创建⼀个仿真⼯程需要提前准备好,这次仿真⼯程的⼀些物料、材料、相关的载荷和边界
条件,这些数据⼀般通过xml或数据库提前维护好,在创建仿真⼯程的时候将其导⼊显⽰在系统界⾯上。下图为通过XML格式维护的材料数据和部分仿真设置信息。
writeline使用方法python
创建、打开仿真⼯程功能的界⾯相对简单,可以在利⽤在VS利⽤C#的WinForm⼯程直接拖拽搭建,下⾯为创建的创建⼯程的界⾯,这些界⾯包含⼀些必要的交互数据,这个⼀般都是根据⽤户需求来的,就不细说了。还有后⾯展⽰的所有界⾯都是通过C#的Winform搭建,不再赘述,重点说明这些模块的数据流。
仿真⼯程创建界⾯
3.2 仿真数据输⼊
仿真数据输⼊提供了让⽤户输⼊仿真必须要的数据,这些数据是根据仿真实际需要来的,⼀般需要以前维护⼀些默认值,如维护材料库(可能需要专门的材料库维护系统)、仿真设置属性(载荷、⽹格数量、⽹格尺⼨、迭代步长等),仿真数据输⼊⼀般涉及⽐较多的数据交互,因此界⾯的UI设计要重点关注,这部分UI设计的好坏直接决定了,⽤户使⽤体验的好坏。
下图为仿真数据输⼊的⼀个⽰例,对需要数据的数据进⾏明确的分类,将需要多次操作的仿真核⼼的位置,最好提供⼀张分析部件的结构图,让⽤户在输⼊相关数据的时候能够进⾏参考。
仿真数据输⼊UI界⾯
3.3 仿真终端驱动
这部分是纯底层的⾏为,需要从外部⼀般为我们⾃⼰开发的仿真系统,去调⽤仿真终端即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 = "";
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;
}
3.4 仿真结果查看
仿真结果查看主要是给⽤户⼀个直观边界的途径来查看当前仿真的结果,主要涉及UI界⾯的设计,这个难点主要在于设计的界⾯要美观,结果查看要便捷。项⽬规模⼤⼀点的建议专业的GUI团队画出原型,然后根据原型进⾏UI设计。
下图为给出的,查看仿真结果的实例,主要包含⼀些关注结果、性能评价参数和云图的展⽰。
3.5 仿真报告⽣成
仿真报告⽣成需要基于Word进⾏⼆次开发,需要先指定制式的仿真报告模板,然后在报告模板的对应位置添加标签,在⽣成报告的过程中将指定的标签替换成对象的数据或者图⽚。
3.6 仿真数据管理
仿真数据管理需要结合数据库进⾏开发,对数据库进⾏开发需要具备基本的数据库设计的能⼒,建议进⾏这部分开发,咨询下有数据库开发经验的开发⼈员。涉及的基本数据库操作包含,基本的增加、修改和删除操作,建议使⽤MySql等开源的关系型数据库进⾏开发,不涉及版权问题。
4、技术咨询&&项⽬委托
我们有着强⼤的⼆次开发团队,常年从事CAD/CAE软件⼆次开发⼯作。已经开发过UG/CATIA等CAD软件,近年来⼜攻坚克难攻克了CAE软件ansy /workbench/abaqus的⼆次开发⼯作。
希望⼴⼤有兴趣的朋友交流咨询⼆次开发技术,欢迎有需求的客户咨询⼆次开发业务。
邮箱:zwp_154979@163
⼀⽀致⼒于让专业化软件更加⼈性化的倔强团队

版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。