分享一下在Windows以及Linux上的ABAQUS UMAT开发及调试的一点点心得。
(资料图片仅供参考)
1 平台及版本:
Win 10 + Vs 2022 + Intel Fortran 2022 + ABAQUS 2019
Ubuntu 18 + GCC 7.5 + ABAQUS 2019
2 UMAT语法及平台特性:
Fortran:
subroutine umat(stress,statev,ddsdde,sse,spd,scd,
rpl,ddsddt,drplde,drpldt, stran,dstran,time,
dtime,temp,dtemp,predef,dpred,cmname,
ndi,nshr,ntens,nstatv,props,nprops,coords,drot,pnewdt,
celent,dfgrd0,dfgrd1,noel,npt,layer,kspt,kstep,kinc)
C++:
extern "C"
void umat_(double *stress, double *statev, double *ddsdde, double *sse, double *spd,
double *scd, double *rpl, double *ddsddt, double *drplde, double *drpldt,
double *stran, double *dstran, double *time, double *dtime, double *temp,
double *dtemp, double *predef, double *dpred, char *cmname, int *ndi,
int *nshr, int *ntens, int *nstatv, double *props, int *nprops,
double *coords, double *drot, double *pnewdt, double *celent, double *dfgrd0,
double *dfgrd1, int *noel, int *npt, int *layer, int *kspt,
int *kstep, int *kinc)
无论在Fotran还是C++,umat各个参数以指针形式读写。
需要注意的是,考虑到c++的mangling技术的使用,在某些系统中,UMAT的大小写以及symbol可能不同。
以Ubuntu18为例,UMAT实际的名字为umat_。
若要甄别umat在编译后的symbol名字,建议使用如下操作:
对一个简单的fortran umat文件进行编译:
gfortran -c test.o umat_example.for
导出symbol :
nm test.o > symbol.log
从而准确获取umat的symbol。
注:C++版本umat也可应用于Windows系统。
3 UMAT编译及其链接:
对于给定的umat.f, umat.for或者umat.cpp,abaqus分两步对其操作。
第一步编译:将源码编译为obj或者o文件。
第二部链接:将obj或者o文件与ABAQUS内置动态链接库链接,形成stadardU.dll
在abaqus实际运算阶段,standard.exe将链接到新生成的standardU.dll,以此来完成最终操作。
如上编译+链接的逻辑,允许我们可以写多种语言版本的umat。
若选择c++版本,则可手动利用msvc-cl/clang/GCC完成对cpp文件的编译,仅在链接阶段提供给ABAQUS。
若选择fortran版本,则可直接提供.for源代码,将编译和链接都交给ABAQUS来完成。
4 UMAT Debug:
虽然PRINT大法直观且易于实现,但某些时候可能需要更为细致的debug。
Windows上可以利用VS + Intel Fortran完成调试,
Linux上可利用gdb调试,不过此部分内容尚未测试,可能会在稍后开展。
本此测试选取较新的vs 2022 以及oneapi 2022对abaqus 2019进行debug。
关于版本的选取,尚无更多建议,但是提醒大家较老的vs可能存在debug symbol未加载的情况。
Release vs Debug
Release与Debug相对,为代码编译及链接的状态描述。
若代码为Release模式,则代码内部无调试信息,且代码的执行经过编译器优化。
若代码为Debug模式,在代码编译及链接过程中,编译器会额外加入调试信息,允许用户以多种形式对代码进行测试,包括但不限于,查看变量取值,查看段错误等。
在编译阶段:intel fortran编译器 ifort允许用户输入 /Zi 和 /debug来启用debug调试。
/Zi: 允许调试信息与代码单独存在,调试信息文件可能为vc xx.pdb形式,xx为数字编号,屈居于vs版本。
/debug: 允许编译器额外增加调试信息。
在链接阶段:microsfot 链接器 link 允许用户输入 /debug 来启用debug调试。
ABAQUS的编译及链接:
ABAQUS的编译与链接配置,路径为:
C:\Program Files\Dassault Systemes\SimulationServices\V6R2019x\win_b64\SMA\site
文件名为win86_64.env (windows) 或者 lnx86_64.env (linux)。
用户可将该配置拷贝至当前工作目录下的 abaqus_v6.env用于覆盖原设置。
5 UMAT VS Debug:
假设用户有如下inp文件以及umat:
若要开始DEBUG,可能需要在umat.for适当位置加入, read(*,*)variables
通过IO读写,来阻塞umat以及standard.exe,便于vs attach到对应进程。
在开始菜单打开intel oneapi内置的 intel oneapi prompt x64 (这是一个配置好的命令行)
切换到当前工作路径,并执行如下操作
abaqus job=model user=umat.for verbose=3 int
verbose=3 为了最大化显示abaqus操作记录,便于正确分析是否umat已被编译。
int为了使得命令行可与abaqus进行io通信,利用阻塞来开始abaqus debug。
图6中那个 block 字样是我自己写的,你们可以替换为任意字样。
若standard.exe发生阻塞
此时利用vs打开umat.for,准备attach到进程
当attach成功后,在umat.for合理位置打入断点。
在intel prompt中随意输入一个数字,取消阻塞。
在 step into/step over按钮中,开始你的debug历程吧。
例子中,使用了Elastic umat材料。
模量为10000,可见 locals已经成功捕捉到了该变量。
6 小结:
umat 在c++版本中,可能名字为 umat_
umat在win中的编译器默认为 ifort,链接器为 msvc-link
umat在linux中编译器为 gcc/g++/gfortran,链接器为 ld
用户可编写cpp或者for文件,可任意选择在编译或者链接期,将umat传输给ABAQUS
DEBUG过程中,合理的IO阻塞允许VS方便的调试umat。
最后,vs ifort以及abaqus版本之间的适配:
对于 abaqus 2017及以后的版本,不推荐使用 vs 2013 及以前的版本。
谢绝任何方式的转载,谢谢!
能力所限,可能文中会存在错误和不当之处,敬请包涵!
请多多提出指正、疑问或者建议,非常感谢!
分享一下在Windows以及Linux上的ABAQUSUMAT开发及调试的一点点心得。1
央视网消息:随着减税降费、优化营商环境等一系列政策红利的持续释放,
1、死,的近义词亡死的解释:1 丧失生命,与“生”、“活”相对:~...
1、去旅行社报名时,他们会给你详细的表格,上面列出了需要准备的材料
既干净又用之不竭的太阳能,是人类青睐的清洁能源。但受大气层、天气、
1、《环境监测分析方法与检测技术丛书:水和废水污染物分析测试方法》可
中超联赛第12轮,上海海港凭借奥斯卡罚进的两个点球,主场2-1南通支云
人民网北京6月9日电(记者车柯蒙)今年一季度以来,随着提振消费各项政
【环球网报道】综合俄罗斯卫星通讯社及“今日俄罗斯”(RT)刚刚消...
6月8号下午,西双版纳州召开“七大重点产业”高质量发展新闻发布会...
1、原地,指处于原来的位置或地位。2、如,同学们都起跑了,小强还站在
6月9日,周五亚市初盘,澳元 日元货币对周四达到93 45的日高点,反映出
中国(2023年6月)PVH集团[纽交所代码:PVH]旗下全资子公司TOMMYHILFIGER
北京国安足球俱乐部行政总监张四化:忘不了那一夜藏族少年们的眼泪---
每经AI快讯,有投资者在投资者互动平台提问:苹果发布会的头显好像用到
一、福建省福州市天气预报1、连江县气象台2023年06月07日00时15分发布
1、增大乳房2、木瓜中富含的木瓜蛋白酶对乳房发育非常有益。富含植物激
6月8日,软通动力(301236)融资买入3834 07万元,融资偿还4164 7万元
近日,淮安市涟水县发放淮安市第一批标注“土地承包经营权”字样不...
1、钩深致远_成语解释【拼音】:gōushēnzhìyuǎn【释义】:致:招致
6月8日下午5时许,高考“钉子户”梁实从成都市第八中学考点走出,这...
敬人者人恒敬之,敬人者人恒敬之这个问题很多朋友还不知道,来为大家解
今天小编岚岚来为大家解答以上的问题。处女座女生喜欢什么样的男生性格
一、江西省赣州市天气预报1、兴国县气象台2023年06月06日21时38分变更
6月8日,南方希元转债最新单位净值为1 5091元,累计净值为1 5091元,较
一、福建省宁德市天气预报1、宁德市气象台2023年06月06日21时19分继续
你知道吗?工行、中行、建行等银行都宣布了,与老百姓息息相关!,工行,
1、雪燕泡发倍数为30-50倍。按每人每次3克,置于水中泡发6小时后,清水
想必现在有很多小伙伴对于九阴真经去哪买食物方面的知识都比较想要了解
屏幕技术与电视购买:HDR、HDMI等常见术语解释屏幕技术1、HDR代表高动