CAE工程师使用python等脚本进行自动化的好处
简介
编写一个脚本或工具来加快进程可能看起来令人生畏,或者不值得花费精力。如果只需要几个小时就能完成任务,为什么还要花一天时间编写脚本呢?答案是,这往往不是你唯一一次做 “某事”。可能是一次,也可能是 10 次或 100 次。
这就是脚本能真正帮助你的地方。但它并不局限于 “加快速度”。脚本可用于多个领域,为 CAE 工程师提供帮助:
- 定制工具,完全按照您的要求进行操作。
- 根据公司指导方针进行定制检查,以确保您的模型符合要求。
- 模型操作工具。
- 为他人指定一个可遵循的流程(可减少错误)。
- 还有更多
本文将探讨脚本如何在 CAE 工程师的日常工作中发挥作用。
我们将使用 Oasys LS-DYNA Environment 软件,通过大量实例展示脚本的好处。我们还将展示,学习和编写有用的脚本实际上是非常快速和简单的。
2 脚本简介
CAE 工程师使用的大多数预处理和后处理器都具有某种形式的脚本功能,使用脚本的原因有很多:
- 工程师希望以不同方式访问模型数据,以满足他们的需求。
- 在软件本机工具的基础上增强或引入新工具。
- 添加软件本机不支持的读/写数据功能。
- 添加公司特定的工具/流程。
- 以特定方式检查模型和结果。
- 通过自动化加快任务执行速度。
- 还有很多其他功能。
在创建新脚本时,有一件事是值得推荐的,那就是始终有一个脚本示例库作为指导--这些示例通常包含在你使用的软件中,或者软件教程中。这样创建脚本就容易多了。每次添加一行,运行脚本并确保其正常运行,然后继续。不要试图在运行前编写 100 行代码,否则你可能要花很长时间来跟踪问题。
调试脚本时,通常在代码中写入打印语句有助于跟踪问题,有时也可以使用调试器来调查问题。
你会发现,几天的学习,也许几个小时的时间,就足以让你获得使用脚本做很多事情的知识。
3 预处理示例
以下是在预处理 LS- DYNA 模型时如何使用脚本的一系列示例:
- 模型组装/多个模型
- 读取/写入外部数据
- 自定义检查
- 自动化
3.1 模型组装/多个模型
建立模型,尤其是建立多个模型是脚本的一个明显用途。是的,您可以使用 PRIMER 等预处理器的内置工具来构建多个模型,但您需要做一些与众不同的事情,或者针对您所在公司的具体情况,根据您手头的信息进行定制。
让我们以电子表格中的信息为例。您可能有一系列参数值,希望在模型中使用--下面的示例显示了一张电子表格,每项分析包含一行:
您希望将电子表格中的数据应用到基础模型中,从而创建多个模型,每行数据一个模型。正如您所看到的,您可以在这里设置各种值。初始速度、安全气囊和安全带的起火时间、材料模型的失效等。这些值也可以是包含文件名的一部分。例如,包含文件名可以包含控制卡中的终止计时器。
因此,在这个例子中,对于电子表格中的每一行数据,我们都希望将这些值以某种方式应用到模型中。这可以是替换主文件中的文本(示例中的另一个包含文件,其名称中包含一个值)。或者是在卡片的特定字段中插入数值。或者是创建或修改模型中已经存在的参数:
上表中的例子
- PARAMK - 这是一个速度。可以直接使用该值修改初始速度卡。任何矢量成分和单位转换都可以考虑在内。
- PARAME - 这是对包含文件版本的引用。例如,这可能是一个 BIW,而您希望在不同的运行中使用不同的版本。这里可以使用文本替换。
- PARAMH - 这是特定材料卡的故障信息。可以改变数值以查看对总体结果的影响。
通过一个简单的脚本就可以轻松完成上述所有操作。根据基础模型的设置,您可以轻松地将模型读入软件、读取电子表格数据、将数据应用于模型(有多种方法)并写出多个模型。在最基本的层面上,您只需将一些文本替换到输入甲板上,就可以非常方便快捷地建立多个模型。
一个脚本可以完成上述工作,将以前可能需要很长时间并有可能引入错误的工作变成既稳健又快速的工作。在这种情况下,脚本的好处是能够以更复杂的方式操作数据,而不仅仅是为某个字段赋值。
3.2 读/写外部数据
从外部文件读取和向外部文件写入信息是脚本如何发挥作用的另一个例子。预处理器往往能很好地读取文件格式,但可能有些特定的文件格式它无法读取,或者你想以不同的方式解释数据。
连接信息就是一个例子。连接信息可以用多种不同的方式定义,也可以是预处理器无法读取的文件格式。如果具备一定的脚本语言技能,创建一个可以解析包含连接信息的文件的工具,然后根据建模方法在模型中创建连接,是非常简单直接的。
下面的示例是预处理器可能不支持的连接 XML 格式。
<definition type="hex spot">
<id>100</id>
<coord x="-4181.817871" y="-862.289124" z="605.012268" />
<diam>5.0</diam>
<material>10023</material>
<panel>100345</panel>
<panel>100676</panel>
<panel>100113</panel>
<haz>1 ring</haz>
<haz diam>8.0</haz diam>
</definition>
<definition type="hex spot">
<id>101</id>
<coord x="-4341.792480" y="-841.940857" z="608.532227" />
<diam>5.0</diam>
<material>10023</material>
<panel>100244</panel>
<panel>100245</panel>
<haz>1 ring</haz>
<haz diam>8.0</haz diam>
</definition>
一个相当简单的脚本就可以扫描该文件中的数据,并根据数据创建连接。其扩展功能之一是可以使用相当简单的脚本以更复杂的方式修改模型。分配连接属性就是一个例子。下面显示的是一个包含实体元素的点焊模型。
我们在面板上设置了环形元素来表示热影响区。这些热影响区元素将具有与基本金属板不同的属性。这些属性可以通过多种不同方式设置。也许您的建模方法是,您的热影响区零件 ID 有一个标签,这个标签与基板零件 ID 有一个特定的偏移。也许您的模型中有一系列 HAZ 零件,您需要根据点焊的直径、连接在一起的面板数量或连接在一起的材料等级,或者上述因素的组合来选择使用其中一个。脚本可以让您在模型中循环连接,分析热影响区,并根据您想要的任何规则设置 PID。同样,这也是一个例子,通过添加脚本,可以相当容易地使用和应用公司特定的建模方法。
参考资料
- 软件测试精品书籍文档下载持续更新 https://github.com/china-testing/python-testing-examples 请点赞,谢谢!
- 本文涉及的python测试开发库 谢谢点赞! https://github.com/china-testing/python_cn_resouce
- python精品书籍下载 https://github.com/china-testing/python_cn_resouce/blob/main/python_good_books.md
- Linux精品书籍下载 https://www.cnblogs.com/testing-/p/17438558.html
3.3 自定义校验
模型校验是模型设置的重要组成部分。当试图让模型在 LS-DYNA 中运行时,检查模型可以节省大量时间。但为什么要自定义校验,而不是仅仅依靠预处理器内置的校验呢?
- 突出显示重要错误和警告
- 引入预处理器未涵盖的新检查。
- 公司特定检查--确保员工遵守公司特定规则。
- 从不同来源提取检查信息--输出文件和输入文件。
下面是一个 “仪表盘 ”的示例,它从不同来源提取检查信息。其中一些来源是基于脚本的。
示例显示了各种检查以及模型是否通过检查。基于脚本的检查如下:
- 模型度量 - 根据公司准则检查模型质量和时间步/附加质量信息。
- 控制卡 - 检查使用的控制卡或控制卡上的值是否符合公司准则。
- ELFORM 检查 - 检查是否存在积分点小于 5 的 16 型部件。
- 环境 - 您可能有一个包含仪器信息的包含文件,必须始终包含在模型中。此检查将查看该包含文件是否存在。
- MAT 100 检查 - 检查 MAT 100 零件上是否有未绑定接触的节点。
- MAT 刚性约束检查 - 检查我们是否有任何带有刚性约束值集的 MAT 100 卡。
正如您所看到的,上述检查并不会导致LS-DYNA无法运行,因此可能不会被预处理器内置检查所发现,但它们是有用的工具,可用于确保输出的一致性。
3.4 自动化
自动化是 CAE 过程中日益重要的一部分。时间尺度的缩短和提高一致性的需要意味着自动化工具的价值不可估量。
脚本是为自己的目的创建自动化工具的有用方法。其中一个例子就是模型设置。这里有一个用于地震分析的土壤结构相互作用 LS-DYNA 模型示例:
土壤从地表向下分为一系列土层。这些土层的厚度和特性各不相同,信息来源于岩土工程勘察的电子表格。手动挤出土层并分配材料属性是一个漫长的过程,而且出现错误的可能性很高。
在这种情况下,可以编写一个简单的脚本来读取电子表格中的信息,并自动创建节点、元素、部件和材料/荷载曲线,以与岩土信息中的数据相匹配。该脚本的一个扩展功能是自动应用边界和抗震条件。
节省时间的优势显而易见,而模型构建一致性的改善也非常重要。
在这个特殊的例子中,它被应用于多个项目,在这些项目中,模型需要反复创建(例如,当您获得新的岩土信息时),因此节省的时间非常可观。
汽车方面的一个例子是组装汽车碰撞模型并应用边界条件。
4 后处理示例
下面我们将介绍在后处理环境中使用脚本的示例。这将涉及:
- 查询和组合LS-DYNA输出,生成用户定义的适用于您情况的组件。
- 结果的自动后处理
4.1 用户定义结果
一般来说,在查看LS-DYNA输出时,您会先查看LSDYNA写出的数据成分。然后,您可能会以某种方式修改数据,从而解释结果,告诉您模型中发生了什么。这可能是获取时间历史数据,对其进行过滤和合并。也可以读取测试数据,并与 LS-DYNA 结果进行比较。
您可能还想创建用户自定义组件的等高线图,这些组件是通过组合结果组件或整合外部数据创建的。
这是脚本可以帮助解决的问题。对结果值的简单修改(例如除法、加法)可以由后置处理程序轻松处理,但如果您想读取外部数据并将其与普通数据组件相结合,编写一个简单的脚本就可以节省大量时间。
在撰写本文时,还没有图片和详细的示例。
4.2 自动对结果进行后处理
脚本在自动对结果进行后处理方面可以发挥很大作用。后处理器针对特定负载情况提供的模板可以满足部分需求,但往往需要对模板进行一些修改。脚本在这方面非常有用。让我们以车辆碰撞模型为例。您可能需要检索一些标准输入,例如计算星级的乘员伤害结果。这类模板通常在 posprocessing 软件中提供。您可能希望根据模型中您感兴趣的各种内容对其进行扩展,以生成符合您需求的定制报告。例如
- 进行载荷路径分析,将不同数据库横截面的输出组合在一起,分析载荷是如何通过车身传递的。您可能还希望将其与截面属性(可能是一个单独的文本文件)进行比较。
- 生成显示点焊和粘合剂失效时间的特定图像。
- 查看乘员伤害峰值的时间,并将其与车体变形和失效联系起来。
在没有标准载荷箱模板的情况下,这种定制的后处理更有意义。在之前的地震 LS-DYNA 分析示例中,能够自动生成报告、组合数据并告诉工程师所有相关信息在很大程度上依赖于脚本。
5 总结
投入少量时间学习脚本语言、工具和技术,对 CAE 工程师和他们所在的公司都有好处。在预处理任务方面,我们可以看到,如果有能力创建定制工具,让您能够在最短的时间内执行一系列不同的任务和流程,就能大大提高制作模型的速度、质量和一致性。在后处理方面,能够自动对结果进行后处理,并以适用于载荷情况和模型自由度的方式分析和显示结果。
在后处理方面,如果能够自动对结果进行后处理,并以适用于载荷情况和模型的方式分析和显示结果,工程师就可以腾出时间来实际考虑结果和推进设计。