首页/文章/ 详情

如何将 Python 3 与 Abaqus 等结合使用

1年前浏览5492

        

        这篇文章展示如何将 Python 3 与 Abaqus 结合使用,而且更进一步,让您意识到可以使用任何库、程序或外部应用程序与 Abaqus 交互。

读到这里,我们想到的第一个问题是: 为什么?


为什么需要 Python 3 或其他外部应用程序才能与 Abaqus 配合使用?

Abaqus 是一款出色的数值模拟软件,但它并不是万能的。它不是最好的 CAD 软件,也不是制作高质量绘图或可视化数据的最佳软件,我们可以找到更多类似的示例。

尽管 Abaqus 提供了非常健壮、强大且文档齐全的 Python API,我们可以通过它来增强 Abaqus 功能,但它也有局限性。

1. 真实场景

“如何 在 Abaqus 的 Python 脚本中使用 Pandas ?”

Pandas 是一个用于数据操作的 Python 库)

“我需要 从 Abaqus 中的 Python 脚本读取一些 Excel 文件 ,我该怎么做?”

(我们可以使用 Python 库 openpyxl读取 Excel 文件)

 “我正在使用 scikit-learn开发 机器学习模型 ,并且希望在训练过程中运行 Abaqus 模拟。”

如果我们可以将 Python 模块安装到 Abaqus 内置的 Python API 中,这些场景就不会有问题。不幸的是,这是不可能的,我们无法定制Python API环境。出于安全和稳定性原因,它是固定的。因此,我们无法安装 pandas、  openpyxl、  scikit或任何其他库。

另一方面,API 的 Python 版本是2.7,因此,许多功能不会完全兼容,或者某些库可能根本不可用。

这还不是全部!

如果我们想与其他编程语言或应用程序交互怎么办:

“我曾研究过 FEM 的拓扑优化算法,但它是在 Matlab中! 

我如何在 Abaqus 中运行它? 

我需要将它“翻译”成Python 2.7吗???

这甚至更棘手:我们如何 将 Matlab 代码运行到 Python 脚本中???

这些只是一些 实际情况 ,其中内置的 Python API 本身是不够的。

2.那我们能做什么呢?

所有这些场景有什么共同点?

它们需要 Abaqus 的 Python API 不提供的附加功能。

那我们能做什么呢?

我们可以 使用外部应用程序来“补充”这些缺失的功能

然而,为了达到这个目的,我们需要在双方: 外部应用程序 (下图中的灰色块)和 Abaqus  (下图中的紫色块)之间建立有效的通信。

Abaqus 是世界上最好的 FEA 软件包之一,但它并不能解决所有问题。这就是为什么我们可以通过外部应用程序扩展其功能。让我们看看如何做!

3.关键是命令行!

 解决所有这些问题的最通用的解决方案是使用 Python 脚本从命令行 (cmd)调用和控制 Abaqus  。该脚本将告诉 Abaqus 做什么,例如创建有限元模型、求解并后处理结果。该工作流程如下图所示:

  • 外部应用程序由用户(或另一个进程)执行。

  • 该外部应用程序访问 cmd。

  • Abaqus 是从 cmd 调用的。

  • Python 脚本控制 Abaqus 中执行的操作。

借助 Python API,可以通过命令行 (cmd) 从外部应用程序控制 Abaqus。红框代表Abaqus基础设施,用户无法自定义它(例如安装外部库......)

您可能已经知道,可以使用以下命令从命令行调用 Abaqus:

  • 指令

  
>> abaqus cae  

 如果您在同一台 PC 上安装了多个版本(例如 abq2022、  abq2021se …),abaqus命令 可能会有所不同。在 cmd 中执行此命令将照常打开 Abaqus/CAE。
但是,我们也可以运行以下命令:
  • 指令

  
>> abaqus cae script=abq.py  

这将打开 Abaqus/CAE 并立即 运行脚本 abq.py
所以,只要 我们的外部应用程序能够执行 cmd 中的命令,就能够控制 Abaqus!

3.1 实际案例:使用 Abaqus 的 Python 3 应用程序

让我们看看如果我们的外部应用程序是 Python 3 程序,这是如何实现的。
在下图中,我们展示了使用 Python 3 环境通过内置 Python API 与 Abaqus 进行通信的“架构”。此通信的主要关键是通过命令行从外部应用程序调用“abq.py”脚本(在本例中为 Python 3 脚本:app.py)。

将 Python 3 与 Abaqus 结合使用的示意图。请注意,Python 3 环境可以由用户使用任何外部库自由定制(例如 pandas、scikit-learn、最新版本的 numpy、scipy...)
当然,  Python 3 应用程序 ( app.py ) 可以访问命令行。一般来说,Python 2 或 3 中,命令行是使用 os 模块 ( os.module ) 中的 系统方法调用的,如下所示:
  • Python

  
# Script: app.py

# Import any libraries that we wish
# Notice these modules are not available within Abaqus
import pandas, openpyxl, sklearn, bokeh, torch

# To execute statements in the command line we need to import os
import os

# The function to execute in the command line is os.system(command)
os.system('abaqus cae script=abq.py')

# This line will open Abaqus/CAE and execute the script 'abq.py'
 

app.py  脚本从外部解释器 (Python 3) 执行,并且能够 通过“桥接”脚本 abq.py运行 Abaqus,该脚本利用 Abaqus 库,如 abaqus、  abaqusConstants 和 caeModules
  • Python

  
# Script: abq.py
from abaqus import *
from abaqusConstants import *
from caeModules import *

# Parameters
length = 15.
height = 20.
width = 10.
name = 'Box'

myview = session.Viewport(name='Viewport: 1', origin=(0.0, 0.0), width=50., height=50.)
myview.makeCurrent()
myview.maximize()

# Create new model
Mdb()
mymodel = mdb.models['Model-1']

# Create sketch
s = mymodel.ConstrainedSketch(name='__profile__', sheetSize=200.0)
s.rectangle(point1=(0.0, 0.0), point2=(length, height))

# Create part
p = mymodel.Part(name=name, dimensionality=THREE_D, type=DEFORMABLE_BODY)
p.BaseSolidExtrude(sketch=s, depth=width)

# Save cae model
mdb.saveAs(pathName=name + '.cae')

# Display part on the viewport
myview.setValues(displayedObject=p)
 

正如我们所看到的,通过abq.py脚本执行的操作  是:
  • [第 2 至 4 行] 导入 Abaqus 库。请记住,它已经在 Abaqus 中运行!
  • [第 12 至 14 行] 创建一个将显示零件的新视口。
  • [第 17 行和第 18 行] 使用空模型(“Model-1”)创建新模型数据库。
  • [第 21 至 26 行] 在草图上绘制一个矩形并将其拉伸以获得一个盒状零件。
  • [第 29 至 32 行] 最后,保存 cae 文件并将零件显示在视口上。
总之,通过可以导入和执行世界上任何其他可用库/模块的外部 Python 脚本,我们可以运行 Abaqus!
如果您遇到问题或者不太确定 如何设置 Python 环境。我 在此视频中逐步解释了如何操作
为什么不从 Jupyter 笔记本运行 Abaqus?
您可以在外部 Python 环境中使用任何您想要的库:pandas、tensorflow、jupyter notebooks、Qt、numpy、scipy、matplotlib...
这适用于任何其他外部应用程序。

4.这只是开始

我们在这篇文章中介绍的只是巨大的冰山一角!
通过将 Abaqus 的仿真功能与任何其他程序相结合,我们可以提出许多想法 。这个概念可用于 机器学习模型的开发、专门应用程序的用户界面 (GUI) 设计  等等。
就我而言,我在攻读博士学位期间利用(并发现)了这种能力。我开发了一些算法来生成 二维微观结构来模拟碳纤维增强复合材料。这些算法是用Python编写的,但它们使用了一些Abaqus中不可用的库,因此,我无法直接在Abaqus的Python API中运行它们。
这就是Viper 的诞生,我创建了一个 独立的 GUI,它与 Abaqus 通信以创建 具有复杂几何形状的有限元模型(demo1 和 demo2)。
Viper(左侧)是一个用户界面,用于生成具有任意尺寸和形状纤维的高纤维体积分数的 2D 微结构。Viper 还能够在 Abaqus 中构建相应的微观结构有限元模型(右侧)。

5. 总结

正如我们所看到的, 我们可以从 Python 3 应用程序与 Abaqus 进行通信, 从而 利用任何 Python 库的所有功能!我们不需要拘泥于 Abaqus Python API 的有限功能。
但这还不是全部,最引人注目的是我们可以 从任何外部应用程序与 Abaqus 交互以附加任何类型的功能。
通过这种方式,我们将能够将Abaqus 纳入任何需要 FE 分析的自动化工作流程中。


来源:ABAQUS仿真世界
Abaqus复合材料拓扑优化通用通信材料控制
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2023-09-28
最近编辑:1年前
yunduan082
硕士 | 仿真主任工程... Abaqus仿真世界
获赞 153粉丝 220文章 313课程 0
点赞
收藏
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈