首页/文章/ 详情

高效稳定!在Abaqus子程序中如何使用MKL数学运算库

2月前浏览475
Abaqus是知名的非线性有限元求解器,其以强悍稳定的非线性求解性能,相对方便的前处理操作界面,强大的二次开发功能在国内和国际获得了广泛的用户,无论是学术研究,还是工程应用,Abaqus均有一席之地。
对于Abaqus来说,使用Fortran或其他语言进行二次开发极为常见,通过二次开发,我们可以一定程度上参与到Abaqus的“内核”计算中。比如,通过Umat用户材料子程序,可以实现Abaqus中没有而我们又需要的材料本构;或者是,通过编写Umat子程序实现Abaqus中已有的材料本构与Abaqus自带的材料本构进行对标,从而方便我们验证对该材料本构理论的掌握程度;通过UEL自定义单元,我们可以开发自己需要的单元类型。通过Dload,可以实现我们需要的分布压力的加载。
在编写子程序时,通常情况下会遇到一些矩阵向量运算。如果我们采用的是Fortran,对于这些运算可能有一些比较方便的操作,例如矩阵向量乘,矩阵-矩阵乘等。当然,在Abaqus自带的例子中,这部分运算通常还是用循环表达的,比如下面的应力与应变关系的运算:





DO 70 K1=1,NTENSDO 60 K2=1,NTENSSTRESS(K2)=STRESS(K2)+DDSDDE(K2,K1)*DSTRAN(K1)60     CONTINUE70   CONTINUE
如果我们使用Fortran的matmul来完成,则只需要一行,当然这里的Dstran需要定义为二维数组而非一维数组:

STRESS=STRESS+matmul(DDSDDE,DSTRAN)
除了上述这种常规的矩阵向量乘,矩阵矩阵乘这种基础操作之外,在实际中,子程序的运算还可能涉及一些更为复杂的操作,比如矩阵求逆,方程组求解,特征值求解等等。此时,如果自己手动去写这部分的代码当然可以,但是更方便的是调库。MKL库就给了我们一个不错的选项。
MKL库是Intel公司开发的数学函数库,其提供了一系列用于数值计算的Fortran和C语言接口如blas,lapack,pardiso等,用户通过调用MKL可以高效并行地完成矩阵乘法,线性方程组求解,FFT快速傅里叶变换等工作,具有优秀的计算性能。
通过在Abaqus子程序中调用MKL库,我们可以通过MKL库强悍稳定的求解性能省去了很多基础运算的编写。
在之前的文章Fortran77还有前途吗?-Intel MKL的Fortran77接口和C接口使用 和如何快过matlab?-MKL数值计算库的Fortran95接口使用及MKL文档下载 中,我们实际上已经介绍了MKL的基本使用和文档的下载链接,本文主要讲如何在Abaqus的Fortran子程序中调用MKL库,(目前仅仅成功配置了MKL库的Fortran77接口,Fortran95接口后续再进行)。
在Fortran子程序中调用MKL库主要有以下几步:
  1. 在代码中编写调用MKL库的代码。例如:

上面这句代码就是调用mkl库中的dasum这个函数对stress这个一维数组各个元素求和,并输出到.log文件中或者是打印到屏幕。在mkl中这个函数的函数原型和参数解释如下:

2.修改win86_64.env的配置文件使得子程序能够识别mkl的函数:

打开安装目录下的”win86_64.env”文件,这个文件包含了使用子程序时的编译链接选项的配置。文件的位置大致如下:
打开后,在”compile_fortran”项下增加'/Qmkl'选项:
在”link_sl”和”link_exe”项下增加对应的.lib库文件,一般需要增加以下几个:
这里的.lib库文件的位置在mkl的安装目录下,具体可自行文件搜索获得。要注意如果是安装的是OneApi,在mkl下有两个路径:
这里虽然实际上两个路径是一个路径,latest实际上是一个快捷方式到2022.1.0,但是我试了一下如果在”link_sl”和”link_exe”项中填写2022.1.0,会识别不出来2022这个数字,因此最好是填latest,正如上面图中所示。

3.保存.env文件,abaqus子程序使用mkl库已经配置成功,通过命令行直接运行或者界面提交即可。

以上,介绍了如何在Abaqus子程序中使用MKL库,感谢您的阅读。


来源:有限元先生
Abaqus非线性二次开发MATLABUM理论材料
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2024-12-18
最近编辑:2月前
外太空土豆儿
博士 我们穷极一生,究竟在追寻什么?
获赞 26粉丝 11文章 70课程 0
点赞
收藏
作者推荐

虚单元法——网格与非线性分析

个人介绍  本期帖子邀请到从事虚单元法(VirtualElementMethod,VEM)研究的优秀青年学者分享学术报告。徐兵兵,德国汉诺威大学博士后,洪堡学者,研究方向为计算力学数值算法,博士后导师为计算力学领域顶尖学者PeterWriggers院士。下面是详细的个人介绍。VEM简介  VEM是一种用于数值求解偏微分方程的新型方法,它的最大特点是可以使用多边形/多面体网格,从而针对复杂几何形状以及断裂、接触等问题时具有优势。它是有限元法(FEM)的推广,旨在克服传统有限元法在处理复杂几何形状和非标准单元网格时的某些局限性。  VEM是近年来提出的一种新的数值计算方法,主要用于解决复杂几何形状下的偏微分方程问题,尤其适用于计算力学、材料科学等领域。它可以被看作是有限元法(FEM)的扩展,但在处理复杂几何形状、断裂力学、接触力学、板壳等问题时更有优势。  以上内容来源于百度百科词条,想要了解详细内容,搜索百度百科:“虚单元法百度百科”,词条的主页为  与VEM相关的网页:https://www.vemhub.com/,里面包含VEM一些近期文献、动画示例、开源代码和有用的小工具等等。网页主页为  这里展示网页的Gallery页面的截图  这里面的图都是可以动态展示的,非常有意思,大家可以进网页里面看看。报告正文  帖子展示内容是:VirtualElementMethodfromMeshtoNonlinearProblems,内容非常丰富。  使用以下图片之前请务必联系作者本人,请尊重作者的劳动成果!作者的邮箱在文章中均可找到,找不到作者联系方式请联系我。来源:有限元先生

未登录
1条评论
GG abandon
签名征集中
2月前
能加我qq2457587783吗,有偿咨询一下关于DISP子程序的问题
回复
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈