没有合适的资源?快使用搜索试试~ 我知道了~
软件X 22(2023)101331原始软件出版物在ParaView中可视化Abaqus输出数据库:Python和C++作者:YangShen,Robert H.Ankit Deo MooreARRIS Composites,745 Heinz Ave,Berkeley,CA 94710,美国ar t i cl e i nf o文章历史记录:收到2022年2023年1月29日收到修订版,2023年保留字:Abaqus输出数据库ParaViewPython和C++转换器可视化a b st ra ctAbaqus是用于数值模拟的商业软件套件,ParaView是用于3D科学数据可视化的开源软件应用程序。虽然Abaqus套件提供了Abaqus/Viewer进行后期处理,但它不是开源的,自定义可视化功能只能使用Abaqus官方API(例如,Python API)。ParaView具有强大的渲染管道,因此可以使用过滤器实现复杂的后处理操作。由于ParaView然而,在ParaView中可视化Abaqus输出数据库(.odb扩展名)是一项重要的任务。ODB文件是专有的二进制文件,只能由Abaqus读取。如果没有逆向工程,使用Abaqus的官方API(C++或Python)从ODB文件中提取数据,并将其写入与ParaView兼容的文件格式。已经有一些努力来实现这一点,但没有一个是令人满意的可扩展性和通用性方面。我们的转换器旨在通过提供一个紧凑,健壮和可扩展的解决方案来解决这个问题,用于将Abaqus ODB文件转换为ParaView可以读取的格式。我们的转换器由于以下优点而脱颖而出:(1)它可以处理各种元素类型,包括线性元素,高阶元素以及具有多个积分或截面点的元素;(2)它在积分和截面点处提取数据;(3)它包括一个单独的脚本,该脚本利用Python多处理;(4)还提供了一个C++版本,该版本提供了与Python版本相比,速度有了显著提高版权所有2023作者。由爱思唯尔公司出版这是CC BY许可下的开放获取文章(http://creativecommons.org/licenses/by/4.0/)中找到。代码元数据当前代码版本v1.0用于此代码版本的代码/存储库的永久链接https://github.com/ElsevierSoftwareX/SOFTX-D-22-00364Code Ocean compute capsule法律代码许可证MIT使用git的代码版本控制系统使用C++、Python和CMake的软件代码语言、工具和服务编译要求、操作环境和依赖性在Windows如果可用,请链接到开发人员文档/手册https://github.com/Arris-Composites/ODB2VTK/blob/main/README.md支持电子邮件,以解决问题yang@arriscomposites.com1. 动机和意义Abaqus套件以其强大的求解器而闻名,并提供了一个完整的分析环 境 ( CAE ) , 允 许 最 终 用 户 完 成 整 个 仿 真 工 作 流 程 。Abaqus/Viewer用于可视化结果,可以与Abaqus Python包一起使用*通讯作者。电子邮件地址:yang@arriscomposites.com杨申).https://doi.org/10.1016/j.softx.2023.101331其特征在于,它的年龄[1]。尽管Abaqus Python Scripting支持可视化中的自定义后处理插件,但仍存在难以克服的限制。一个限制是,性能可能会受到Python编程性质的影响。此外,Abaqus使用了过时的Python版本另一个挑战是Abaqus/Viewer中的可视化是串行执行的,因此很难并行渲染大型数据集[2]。ParaView [3,4]是一个开源的可视化软件工具,2352-7110/©2023作者。 由Elsevier B.V.出版。这是一篇开放获取的文章,使用CC BY许可证(http://creativecommons.org/licenses/by/4.0/)。可在ScienceDirect上获得目录列表SoftwareX期刊主页:www.elsevier.com/locate/softx放大图片作者:Robert H.摩尔和Ankit Deo软件X 22(2023)1013312表1术语.ODB/.odb Abaqus输出数据库,一个专有的二进制文件,扩展名为.odb,只能由Abaqus/Viewer VTK读取可视化工具包,一个为ParaView定义不同文件格式的可视化库VTU/.vtu扩展名为.vtu的文件,用于VTK中的非结构化网格数据模型PVD/.pvd ParaView使用的扩展名为.pvd的文件,用于将多个基于XML的VTK文件组合成一系列XML可扩展标记语言(XML Extensible Markup Language),VTK使用该语言表示数据模型。ODB2VTK转换器名称Fig. 1. . odb文件中的数据结构[1]。3D科学数据其渲染管道允许通过使用过滤器实现复杂的后处理操作,使其成为一个功能强大的多功能可视化工具。将Abaqus的强大求解器与ParaView的高级后处理功能相结合,将为数值分析创建一个良好的工作流程,特别是对于需要控制和定制其后处理数据的高级用户。但不幸的是,将ODB文件转换为ParaView可以读取的格式并不是一件容易的事情。ODB文件是专有的二进制文件,只能由Abaqus读取。如果没有逆向工程,唯一的选择就是使用AbaqusGithub上有一些脚本可以实现这一点。Liu我们的转换器满足了对更通用的解决方案的需求,该解决方案可以处理各种ODB文件,包括具有多个实例、步骤、框架、字段输出的文件,以及具有不同集成或分段点的各种元素类型。图 中 给出 了 ODB 文 件 中数 据 结 构 的高 级 表 示 。 1. 一 、 术 语fieldOutputs是指空间分布的数据,例如应力、应变、位移,而术语historyOutputs是指状态随时间的标量值,例如特定节点处的能量、速度或位移。 重要的是要注意,fieldOutputs和historyOutputs必须 在 Abaqus/CAE 的 “Field Output Requests” 和 “History OutputRequests”中明确请求,才能出现在ODB文件中。我们的转换器ODB2VTK旨在提取ODB文件中存在的所有字段输出。此外,该转换器提供了从ODB文件中提取历史输出并将其导出为CSV格式的选项,允许用户使用ParaView绘制 Abaqus生成的相同历史图ParaView/VTK文件格式使用XML并包括各种数据类型,每种数据 类 型 都 与 特 定 的 文 件 扩 展 名 相 关 联 [5] 。 ODB2VTK 写 入UnstructureGrid数据类型(.vtu扩展名),它是任意网格的通用表示。XML文件由节点数据(索引和坐标)、元素数据(连通性)和附加到点 和 单 元 , 分 别 称 为 点 数 据 和 单 元 数 据 。 来 自 .odb 的FieldOutputs将被写入在每个节点处可视化的点数据或在每个单元质心处可视化的单元数据。ODB2VTK 的 源 代 码 可 以 在 以 下 链 接 中 找 到 :https://github.com/Arris-Composites/ODB2VTK。为清楚起见,本文中使用的常见缩略语将在表1中提供。2. 软件描述ODB2VTK的设计将从三个关键的角度进行讨论:通用性、性能和责任。我们将深入研究如何在工具的设计中考虑和实施这些因素。2.1. 一般性通用性是ODB2VTK设计的一个重要方面,因为其主要目标是创建一个可以将任何ODB文件转换为VTU文件的通用工具。尽管分析类型(如静态线性、动态显式或热模拟)各不相同,但主要区别在于元素类型。该工具的重点是两个关键组件:元素拓扑,它定义了形成元素的节点之间的连接,以及材料点,它确定了感兴趣的元素属性(如应力和应变)的计算。通过考虑这些因素,ODB2VTK可以处理各种ODB文件。ODB2VTK使用一个函数将Abaqus中的元素映射到VTK中的虽然VTK中的单元类型数量有限Abaqus中的不同元素可以映射到VTK中的相同单元,因为它们具有相同的拓扑结构。为了解决这个问题,ODB2VTK被设计为允许用户将不同的Abaqus元素类型映射到VTK中的同一单元格。从Abaqus添加新元素类型并将其映射到VTK中的单元格类型,只需使用两行代码即可元素之间的另一个主要区别是计算数据的位置ODB2VTK必须通过集成点或分段点来区分元素。这种灵活性允许该工具处理各种各样的Abaqus元素类型。拥有包含数百个帧或多个实例的大型ODB文件并不罕见,但没有必要在ParaView中可视化所有这些文件。为了解决这个问题,ODB2VTK提供了一个选项,允许用户选择特定的实例、步骤和帧编号进行转换。此功能使用户能够有效地仅转换ODB文件,使过程更有效和可管理。2.2. 性能Python实现可能会遇到性能问题。为了优化性能,最好避免使用显式for循环来遍历节点或元素,而是使用向量化。尽管努力通过使用向量化来优化性能,但使用显式for循环逐行写入数据数组是不可避免的,并且目前是最大的性能瓶颈。ODB2VTK不建议转换一个包含不同类型元素的大型ODB文件,放大图片作者:Robert H.摩尔和Ankit Deo软件X 22(2023)1013313=在集成点数量方面差异很大,因为它会对性能产生负面影响。这是因为XML格式要求每个点数据或单元数据具有相同数量的组件。当ODB2VTK转换一个ODB文件时,该文件的元素类型A有1个集成点,而另一个元素类型B有8个集成点,写入元素类型A的数据也必须扩展其组件数量,以匹配元素类型B中的组件数量。所有这些写入元素类型A的额外条目都是冗余的,这会导致文件大小和运行时间的增加。由于ODB2VTK提供了选择特定实例的选项,因此解决此问题的方法是分别转换具有不同元素类型的实例。如果CFD/显式求解器生成的ODB文件包含大量帧,则ODB 2VTK的性能可能会下降。这是由于VTK格式的限制,它不能分离几何/拓扑(节点和单元)和点/单元数据。理想情况下,如果所有的框架都有相同的节点和元素,它们应该只写入磁盘一次,并在所有框架之间共享。然而,在当前的实现中,每个帧生成其自己的对应VTU文件,这需要节点和元素数据的存在为了缓解转换大型ODB文件时可能出现的运行速度缓慢的问题,使用Abaqus的C++公共API实现了另一个C++版本。C++版本的性能明显优于Python版本。但是,构建C++版本需要额外的设置步骤,例如通过在Visual Studio中包含头文件和链接静态库或使用CMake来配置项目。相比之下,Python版本可以开箱即用2.3. 责任ODB2VTK应该只从ODB文件中按原样提取数据并将其写入VTU文件。在Python实现中,在元素或节点级别执行的计算无法矢量化,这可能会减慢转换过程。即使我们已经实现了一个C++版本,它仍然是一个很好的实践分离转换器和ParaView的职责。转换器应该只从ODB文件中提取原始数据,任何后处理操作都应该由ParaView处理。例如,将比例因子应用于位移场以可视化变形的形状,可以使用ParaView中的“矢量扭曲”过滤器轻松实现3. 执行3.1. Abaqus标签到VTK索引映射Abaqus ODB文件使用与VTK XML文件不同的索引系统。Abaqus中的每个节点和元素都有一个用于定义其连接性的标签。VTK XML文件的节点和元素索引从0 [5]开始,而ODB文件的标签从1 [1]开始。此外,ODB文件中的每个实例都有自己的节点和元素标签集,这可能导致不同实例之间的标签重复。为了处理这个问题,可以使用散列表将ODB文件中的标签映射到VTK XML文件中的这可确保在转换过程中保持正确的连接。下面给出了两个散列表,一个用于节点,一个用于元素。自我。节点映射$=${}自我。$=${}自 我 。 nodes_map[instanceName][label]给美 国的instanceName实例中带有标签的节点的索引自我。elements_map[instanceName][label]给使用instanceName实例中带有标签的元素的索引3.2. Abaqus元素到VTK细胞映射VTK中的细胞类型可分为线性细胞[6]和等参细胞[7]。Abaquspython API 在 元 素 对 象 中 提 供 了 一 个 成 员 变 量 “type” , 例 如ele.type,它返回一个字符串,如“C3D10”。 将Abaqus中的元素类型映射到VTK中的单元类型是在名为ABAQUS_VTK_CELL_MAP的函数中完成的。此外,如果需要添加Abaqus中的新元素类型,只需添加一个新的 “ el i f ” 条件即 可为 VT K 返回适 当的枚举值 。3.3. 集成点和分段点在VTK中,数据可以按单元格或节点进行可视化。对于Abaqus的所有节点输出,为每个节点创建一个数据数组。然而,当涉及到元素输出时,事情变得更加复杂,因为一个元素可以有多个数据数组。具体来说,我们需要处理两种类型的材料点:集成点和截面点。只有一个集成点的元素不会造成问题,因为它遵循“每个元素一个数据”模式。 但是,对于具有多个集成点的高阶元素,通常有两个选项可用于VTK中的可视化(1)从元素的所有积分点获得加权平均值,并将其按元素可视化。(2)从积分点外推节点位置的值,并按节点显示它们。Abaqus中 的 默 认 等 高 线 图 我 们 可 以 使 用 getSubset(position=CENTROID)来获取元素质心处的加权平均值,或者使用getSubset(position=ELEMENT_NODAL)来获取节点处的外推值。不幸的是,APIgetSubset(position=ELEMENT_NODAL)在Abaqus中无法获取后平均值所以我们得自己求平均值此外,Abaqus实现了一个阈值来确定节点位置处的值如何在相邻元素上平均。这使得在Abaqus中生成相同等高线图的过程变得复杂。虽然这种逻辑在Python中不难实现重要的是要注意,这两种方法都不代表输出的实际状态。应谨慎解释。从积分点到节点的外推值和平均值的一个常见伪影是应力奇异性,这是由形状函数不能保证从一个元素到其相邻元素是C1由于这个原因,并遵循“只在其原样条件下提取数据”的原则这很方便,因为getSubset(position=CENTROID)方法直接提供每个元素的加权平均值ODB2VTK还将在集成点导出原始数据。自定义规则可以在ParaView中实现,以在集成点处理例如,为了创建失效图,既不使用质心处的加权平均应力/应变,也不使用节点处的外推值,而是使用积分点处的应力/应变。在VTK XML中,每个元素都有一个n分量张量数据数组,其中n积分数 x张量的独立分量的个数。例如,张量(S11,S22,S33,S12,S13,S23),产生总数24数据数组中的元素。元素具有多个数据数组的另一种情况是元素具有多个截面点。这通常发生在诸如壳元素之类的降维元素上。截面点用于获取单元厚度方向上不同位置的放大图片作者:Robert H.摩尔和Ankit Deo软件X 22(2023)1013314图二、 一个 JSON头文件的例子。图三. 转换前的文件夹结构见图4。 转换后的文件夹结构ODB2VTK类通过导出ODB文件中请求的任意多的节点来处理此问题例如,“S4R”元素默认ODB2VTK将导出所有这些。总而言之,为了处理集成点和分段点,ODB2VTK转换两种类型的数据数组用于元素输出:(1)用于可视化的元素质心处的加权平均数据,以及(2)用于元素的所有积分点的数据阵列,其可用于后处理。3.4. 历史输出除了提取和转换字段输出数据外,ODB 2 VTK还使用参数“-writeHistory 1”提取ODB文件ParaView可以读取该文件进行绘图。4. 用户指南ODB2VTK是一个使用Abaqus Python和Abaqus C++ SDK的命令行工具。因此,必须安装Abaqus才能使用此工具。Abaqus Python odb2vtk . py −−header 1个−−odb File/ my_odb_file。ODB上面的命令将打开ODB文件,提取实例、步骤和框架,并将它们保存到ODB文件的同一目录下的JSON文件中JSON文件的一个例子在图中给出。 二、abaqus python odb2vtk . py −−header0 −− 实 例 “Part−1”−−step“Step−1:0,1”\−−odb File/ my_odb_file。ODB将0传递到标头后,上面的命令行将在“Step-1 "处使用帧编号0和1写入实例”Part-1“的VTU数据abaquspythonodb2vtk.py−−header0−− 实例“Part−1”“Part−2”\−−step“Step−1 : 0 , 1”“Step− 2 : 0 , 1 , 2 , 3 , 4 ,5““Step−3:0,1,2,3”\−−odb File/ my_odb_file。ODB对于实例“Part-1”和“Part-2”,上述命令将在步骤1中将帧0转换为1,在步骤2中将帧0转换为5,在步骤3中将帧0转换为3。Python多进程py −−header0−−常数“部分-1” “第二部分”−−step“Step −1 : 1”“Step −3 : 2”−−odb Filemy_odb_file_path >/ my_odb_file . ODB图五、( a)Abaqus和(b)ParaView中的位移场可视化。放大图片作者:Robert H.摩尔和Ankit Deo软件X 22(2023)1013315图六、 Abaqus和ParaView中的应力可视化。上面的命令利用 Python 中的多处理来并行生成多个 Abaquspython调用。为此目的提供了另一个脚本“multiprocess.py”。它将为每帧生成一个VTU文件,相当于并行执行以下三个命令。abaqus python odb2vtk . py −−header0 −−实 例“Part−1”“Part−2”\−−step“Step −1:1”−−o db File my_odb_file_path >/my_odb_file . ODBabaqus python odb2vtk . py −−header0 −−实 例“Part−1”“Part−2”\−−step“Step −3:2”−−o db File my_odb_file_path >/my_odb_file . ODBabaqus python odb2vtk . py −−header0 −−实 例“Part−1”“Part−2”\−−步“步骤-1:1”“步骤-3:2”\−−odb File my_odb_file_path>/my_odb_file.odb−−写入PVD 1最后一个命令将生成一个.pvd文件。假设ODB文件目录看起来像图1所示。 3在我们运行python multiprocess.py之后,我们将得到一个如图所示的文件夹结构。 45. 结果和讨论使用了具有3个实例、接触交互和各种元素类型(包括C3D4、C3D8R和C3D10)的ODB文件。该文件大小约为1 GB,包含117972个元素和81959个节点。在具有i7- 8750 H CPU 和32 GB RAM 的Lenovo笔记本电脑上,使用Python版本的转换过程大约需要180秒,使用C++版本的转换过程大约需要12秒。比较了Abaqus和ParaView中位移场的可视化,并在图5中证实了两种软件之间的位移场相同。在图6中,可以观察到Abaqus和ParaView中应力分量S11、S22、S33、S12、S13和S23的可视化。然而,重要的是要注意,这两种可视化之间存在一些数字差异。这是因为在Abaqus中,应力值在每个节点处进行外推和平均。另一方面,在ParaView中,应力值是使用每个元素质心处的加权平均值计算的。 在这种情况下,Abaqus和ParaView之间的质心处的应力/应变进行比较。图7和图8通过探测模型底部固定装置的相同元件显示了S33值,可以验证其相同。正如在3.3节中介绍的那样,ODB2VTK默认导出两个基本输出:质心处的数据和积分点处的数据 图 8、数据与放大图片作者:Robert H.摩尔和Ankit Deo软件X 22(2023)1013316见图7。S33位于Abaqus中标签为34988的元素的质心处。图8.第八条。 S33位于ParaView 中标签为34988的元素的质心。_Centroid 后 缀 表 示 质 心 处 的 加 权 平 均 数 据 , 而 带 有_IntegrationPoints的数据表示其积分点处的原始数据。 图 8表 明 以 _Centroid 结 尾 的 数 据 有 6 个 分 量 , 以_IntegrationPoints结尾的数据有24个分量。这是因为,元素“C3D10”有四个积分点,每个积分点具有六个分量,这导致积分点输出的分量总数为24个。6. 影响ODB 2 VTK将Abaqus和Par- aView两个软件程序该工具使用户能够在ParaView中可视化Abaqus生成的数值结果,为需要拥有数据所有权以执行自定义后处理操作的高级用户提供更多的控制和灵活性。7. 结论总之,ODB2VTK转换器是一个功能强大的工具,允许从Abaqus ODB文件中提取数据,将数据转换为可以在ParaView中可视化的格式。这个工具用Python和C++实现, 被设计为通用和可扩展的,使其与Abaqus中的任何类型的元素和材料点的C++实现的执行速度明显快于Python实现。ODB2VTK转换器已经用多个ODB文件进行了测试,其中一个包含3个实例和3种不同的元素类型,有117972个元素和81959个节点。转换成功,发现Abaqus和ParaView之间的值相同。ODB 2 VTK是一个强大的工具,它弥合了Abaqus 和 ParaView 之 间 的 差 距 , 它 是 开 源 的 , 可 以 在https://github.com/Arris-Composites/ODB 2 VTK上找到。该工具将对使用Abaqus和ParaView的工程师和研究人员非常有用,为提取和可视化数据提供了一种方便有效的方法竞合利益作者声明,他们没有已知的竞争性财务利益或个人关系,可能会影响本文报告的工作数据可用性数据将根据要求提供。致谢这项工作得到了ARRIS Composites的内部支持放大图片作者:Robert H.摩尔和Ankit Deo软件X 22(2023)1013317引用[1] Abaqus 脚 本 参 考 指 南 。http://130.149.89.49:2080/v2016/books/ker/default.htm。[2] 刘庆斌,李江,刘杰。ParaView可视化Abaqus输出的复杂微观结构的机械变形。ComputGeosci2017;99:135-44.http://dx.doi.org/10.1016/j.cageo.2016.11.008网站。[3] 阿伦斯·詹姆斯,格维奇·伯克,劳·查尔斯. ParaView:一个用于大数据可视化的终端用户工具,可视化手册。Elsevier; 2005年。[4]Ayachit Utkarsh。Paraview指南:一个并行可视化应用程序。2015年。[5]VTK文件格式。https://kitware.github.io/vtk-examples/site/VTKFileFormats/.[6]VTK 线 性 细 胞 。 https : //raw. 这 是 一 个 很 好 的 例 子 。 Com/Kitware/vtk-examples/gh-pages/src/Testing/Baseline/Cxx/GeometrcObjects/TestinearCelDemo。png。[7]VTK 等 参 细 胞 。 https : //raw. 这 是 一 个 很 好 的 例 子 。 Com/Kitware/vtk-examples/gh-pages/src/Testing/Baseline/Cxx/GeometricObjcts/TestIsoparametricCellsDemo.png。
下载后可阅读完整内容,剩余1页未读,立即下载
cpongm
- 粉丝: 4
- 资源: 2万+
上传资源 快速赚钱
- 我的内容管理 收起
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
会员权益专享
最新资源
- RTL8188FU-Linux-v5.7.4.2-36687.20200602.tar(20765).gz
- c++校园超市商品信息管理系统课程设计说明书(含源代码) (2).pdf
- 建筑供配电系统相关课件.pptx
- 企业管理规章制度及管理模式.doc
- vb打开摄像头.doc
- 云计算-可信计算中认证协议改进方案.pdf
- [详细完整版]单片机编程4.ppt
- c语言常用算法.pdf
- c++经典程序代码大全.pdf
- 单片机数字时钟资料.doc
- 11项目管理前沿1.0.pptx
- 基于ssm的“魅力”繁峙宣传网站的设计与实现论文.doc
- 智慧交通综合解决方案.pptx
- 建筑防潮设计-PowerPointPresentati.pptx
- SPC统计过程控制程序.pptx
- SPC统计方法基础知识.pptx
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功