python 变量名 递增_用Python从Abaqus导出txt、dat数据

使用Python从Abaqus导出txt、dat数据
本文介绍如何使用Python从Abaqus导出数据到txt和dat文件。主要涉及write命令和numpy.savetxt函数,以及在Abaqus中处理整数的注意事项。在Abaqus的Python环境中,直接使用整数可能会导致计算错误,建议使用小数形式避免问题。

前面介绍了基于Python向Abaqus中导入txt、dat数据(基于Python向Abaqus导入txt、dat数据),这里研究如何基于Python从Abaqus导出数据到txt、dat。主要有这么几个函数:

0c01e48c9a81037072cce46c92a91ba5.png


01

write命令

使用write命令从abaqus导出数据到txt的代码及其生成的txt如下:

f = open("qiuming.txt",'a') 
f.write("hello,Qiumingshanlaoshiji")   #将字符串写入文件中
f.write("\n")                 #换行 
f.write("hello,Qiumingshanlaoshiji")   #将字符串写入文件中
f.write("\n")                 #换行 
f.close()                   #关闭

运行上述代码后,则将相关字符串导入到下面的txt文件中(见图1)。使用该命令后,若上述文件不存在,则系统自动创建。'a'表示可连续写入到文件,保留原内容,在原内容之后写入。可修改该模式为('w+','w','wb'等),而这些模式的解释可参考(基于Python向Abaqus导入txt、dat数据)。

a9260b7d861ab5daf77d45a3754db1a5.png

图1 write命令导出字符窜到txt文件里


02

numpy.savetxt命令

这个savetxt函数是基于numpy的,因此需要通过import numpy as np来调用np.save.txt,见图2最上面3行代码,如果不输入import numpy as np,则识别不了np。对于Python而言,需要安装这些numpy安装包才能发挥Python处理矩阵数组的强大优势。但其实在Abaqus里已安装好了这些Python的安装包了,所以可以直接以import numpy as np来执行numpy的相关命令。也可以说,完全可以把Abaqus当成一个Python的一个编译器来执行相关Python代码、调试Python程序,而只需要在Abaqus/CAE的命令行接口(Command Line Interface, CLI)来直接复制输入执行就行了(如插图所示),十分方便。

089dc29e393f1e909c5c49e1ac41ce75.png

插图 Abaqus/CAE的命令行接口(就是Python编译器)

import numpy as np
x = y = z = np.arange(0.0,6.0,1.0)
np.savetxt('test.txt', x, delimiter=',')   # 数组x
np.savetxt('test.txt', (x,y,z))   #x,y,z相同大小的一维数组
np.savetxt('test.txt', x, fmt='%1.4f')   # 
  • arange是numpy里的一个函数,上述代码里的x = y = z = np.arange(0.0,6.0,1.0)主要表示生成的一维数组(从0.0开始,每次递增1.0,一直递增5次到5.0,但不包括6.0,总共6个数),也可以说是6X1的矩阵(其中,表示行或行分隔符的意思,总共6行1列),如图2运行所示:

    d2928b69ceb739ae601808e72590cdda.png

    图2  采用np.savetxt来导出txt文件

  • 第三行的x是变量名,表示需要存储到txt文件的这个数组数据;delimiter=','表示用,作为分隔符。第三行代码的输出内容如图3。

2af3cf3bb3b84e332e00105d14b7b957.png

图3 第三行代码的输出内容

  • 第4行的(x,y,z)表示需要存储到txt文件的数据,输出的结果如图4。注意到,为行分隔符,则x和y和z,三个各成1行。

0848c0780a217f217cfdc9539eb74d21.png

图4 第4行代码的输出内容

  • 第五行的fmt='%1.4f'的解释如图5,简要说明就是输出数据格式,%1.4f表示定制为浮点型数据,制定小数点后的精度为4位,而整数部分为1位。图6可见第5行代码的输出内容。

    e7572e13bc1105d6c90645866a60dfc9.png

图5  numpy.savetxt中fmt的解释

37a60e0eeeac4ebcea77a0303d2f4fda.png

图6  第5行代码的输出内容


2e87d56064acd0122ee472c82f83256c.gif

03

在ABAQUS的Python编译器中赋值整数的问题

在Abaqus里编译Python的时候需要注意一个问题,变量不要直接赋值整数,而且计算过程也不要直接用整数,否则计算出来的结果超乎你的想象!!!

不相信吧,这就举一个例子说服你!Abaqus 2020/CAE的命令行接口(Command Line Interface, CLI)(基于python的Abaqus二维草图绘制),其实可以当做安装好各种包的Python编译器,在其中编译如图7命令:

053e27009a21dd1ab23bb3adaf1f0284.png

图7 在Abaqus的Python编译里直接输入整数进行计算

你会很意外地发现,为什么4/10为0,这是因为4和10两个都是整数,计算出来的结果肯定也会保留整数,原本是0.4的,就只保留0这个整数。但如果你把4写成小数形式4.0,或把10写成小数形式10.0,或者两个都写成带0的小数形式,则计算结果也将是小数。因此,在Python编程过程中,最好将整数写成带0的小数形式,避免出现计算错误。特别是在大型模型或者编程里,一定要特别注意这个问题,否则你都不知道中间到底是怎么出错的!?

32698ccb42cab041f449c8f3990ab726.gif

但还需要注意的是,ABAQUS 6.13/6.14没有安装sympy和scipy等Python包,因此通过File/Run script无法运行需要导入这些包的Python文件如图8所示。但这里我安装的是ABAQUS 2020,运行这些是没有问题的。

83145d7f11482ad128c7409a7e01e161.png

14236537470eab9f735aab1676a7a9da.png

图8 通过File/Run script无法运行Python包(在ABAQUS 6.13/6.14)


写在这次结尾的话,学代码最方便的方法、也是最高效的方法就是一句一句代码都仔细打出来运行看看每一句是什么结果,这也是为什么笔者要一句一句运行显示内容来给大家学习的原因。我相信,通过显示每一句的运行内容,透过对内容的分析理解,再结合相应的知识点或者从实操项目中的经验知识点,可以加速大家对于这块内容的掌握和理解。

还是那句话,“纸上得来终觉浅,绝知此事要躬行!!!”

其实代码还是很好玩的,正如打一门游戏,玩的就是心态。一望无际的草原、郁郁葱葱的树林、蔚蓝灵动的大海.......

aa2c574aa5a455e427abe1ba9381c06a.png

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值