abaqus批命令使用心得

这段时间因为一个项目工作,对abaqus的批命令使用较多,也有了一点点的心得,借此平台记录,以备将来借鉴。
首先应该明确的是,利用abaqus自带的对python的兼容性,可以十分方便快捷的完成大批量的不同工况计算,比如这次我所计算的工况有480种,之前和师兄花了近一个月时间才手动计算完毕。而这次我利用python,加上学习python程序以及编写程序,总共花费近5天解决。极大的提高了效率。
我所用到的批量处理计算包括两部分,一个是批量的提交inp文件计算一个是批量对计算结果odb文件提取数据

批量提交inp文件计算

首先,我批量提交inp文件的前提是,对之前已经生成的480种工况下的inp文件批量修改,比如这次的初速度发生了改变,利用python程序对inp文件中的载荷这部分内容修改完,得到新的inp文件,我们需要利用abaqus的批处理来帮助我们提交计算。
我所知有两种批处理方式:

  1. 利用bat文件
  2. 编写.py程序,利用abaqus的command窗口运行
    这次我们使用的是第一种方法:新建一个bat文件,并写入对应的批处理命令:
import os
workpath=[]
for root,dirs,files in os.walk('E:/ABAQUS_work/First-impact'):if len(root)>50:workpath.append(root)
with open('finalcompute.bat','w+') as sqlfile:sqlfile.write('@echo off\n')for i in range(0,len(workpath)):sqlfile.write('pushd '+workpath[i]+'\n')sqlfile.write('call abaqus job=PA01add'+' cpus=10 int'+'\n')sqlfile.write('pause')

因为我们不同工况的inp文件放在不同文件夹里,首先需要遍历所有inp文件所在的工作路径,这也是第一个片段的作用:建立包含所有inp文件路径的列表。第二个片段是将批命令代码写入到bat文件中。其中,最开始写入的“@echo off\n”是标准开头;写入的“’pushd ‘+workpath[i]+’\n‘”作用是设定工作路径,保证生成的结果文件都是在对应inp文件所在文件夹中;写入的“‘call abaqus job=PA01add’+’ cpus=10 int’+’\n’”是调用abaqus软件计算文件名为“PA01add.inp”的文件,分配10核cpu进行计算,'int’是表示一个文件计算完之后再进行下一个的计算;最后写入的“pause”作用是让计算完成之后的cmd窗口不会自动关闭,而是保持在最后完成的状态,方便我们查看在批量计算过程中是否出现问题。

批量提取数据

上一步我们已经对480种工况的inp文件进行了计算,生成了相应的odb结果文件,现在从odb文件中提取某一个点的载荷-时间曲线,所使用的方法为此前提到过的第二种方法,运行.py文件,文件内代码如下:


import os
resultpath=[]
for root,dirs,files in os.walk('E:/ABAQUS_work/First-impact'):if len(root)>50:print(root)resultpath.append(root)
from abaqus import *
from abaqusConstants import *
from viewerModules import *
from driverUtils import executeOnCaeStartup
executeOnCaeStartup()
resultname=['PA01add.odb','PA02add.odb','PA03add.odb']
houzhui=['PA01.txt','PA02.txt','PA03.txt']
for m in range(0,80):for i in range(0,3):o2 = session.openOdb(name=resultname[i],path=resultpath[m]+'/'+resultname[i])session.viewports['Viewport: 1'].setValues(displayedObject=o2)odb = session.odbs[resultpath[m]+'/'+resultname[i]]xyList = xyPlot.xyDataListFromField(odb=odb, outputPosition=NODAL, variable=(('RF', NODAL, ((COMPONENT, 'RF2'), )), ), nodePick=(('ASSEMBLY', 1, ('[#1 ]', )), ), )name=resultpath[m].split('\\')name2=name[2].split('-')writefile=name2[0]+'-'+name2[1]+'-'+houzhui[i]session.writeXYReport(writefile,xyList)

其功能是在生成的odb结果文件中,读取节点RF的支反力RF2,并写入到文件中。值得注意的是,该代码的.py文件必须要在abaqus的command窗口读取,因为最开始调用的库都是abaqus内的库,如果直接用sublime之类的编辑器无法调用。
在abaqus的command窗口中,输入的内容为:

abaqus cae nogui=getdata1.py

getdata1.py为之前代码的文件。
要注意,上述代码,仅仅是将所有数据写入到了我们定义的txt文件中,且存放的位置无法调整,只能存放在getdata1.py所在的文件夹里面同时还有一些格式需要调整,还要在其中提取我们所需要的有效数据,于是我们用以下代码来实现:

import os
import openpyxl
writefilepath=[]
for root,dirs,files in os.walk('E:/C919_fuselage_stress/一次触地F-T曲线(new)/'):if len(root)>60:writefilepath.append(root)
resultpath=[]
for root,dirs,files in os.walk('E:/ABAQUS_work/First-impact'):if len(root)>50:#print(root)resultpath.append(root)
houzhui=['PA01.txt','PA02.txt','PA03.txt']for m in range(0,80):for i in range(0,3):name=resultpath[m].split('\\')name2=name[2].split('-')writefile=name2[0]+'-'+name2[1]+'-'+houzhui[i]excelfile=name2[0]+'-'+name2[1]+'-PA0'+str(i+1)+'.xlsx'with open(writefile,'r')as readfile:book=openpyxl.Workbook()sheet=book.create_sheet('sheet1',0)block=readfile.readlines()n=1label=[]for x in range(0,len(block)):if '             0.         \n' in block[x]:label.append(x)if len(label)>1:for y in range(label[0],label[1]+1):a=list(block[y])num1=[]num2=[]for z in range(0,23):if a[z]!=' ':num1.append(a[z])for z in range(23,46):if a[z]!=' ':num2.append(a[z])finalnum1=''.join(num1)finalnum2=''.join(num2)sheet.cell(n,1,float(finalnum1))sheet.cell(n,2,float(finalnum2))n=n+1if len(label)==1:for y in range(label[0],len(block)-4):a=list(block[y])num1=[]num2=[]for z in range(0,24):
#                       print(z)if a[z]!=' ':num1.append(a[z])for z in range(24,46):if a[z]!=' ':num2.append(a[z])finalnum1=''.join(num1)finalnum2=''.join(num2)sheet.cell(n,1,float(finalnum1))sheet.cell(n,2,float(finalnum2))n=n+1
#           print(writefilepath[m]+'/'+excelfile)book.save(writefilepath[m]+'/'+excelfile)

以上代码是利用第三方库openpyxl,创建一个excel,并把之前生成的数据文件中的有效数据内容,按对应的时间、载荷依次放入到Excel中。提取有效数据的方式是判断0出现的行数,仅仅提取两次出现中间的数据,然后将一行中的数据,先变成列表,然后将不为空格的部分组装成字符串,最后再将字符串转变为浮点数。(此部分的判断依据,是根据我自己的结果文件进行的判断,不同的结果判断标准各不一样)

以上内容,能够实现abaqus的批量提交计算与批量提取数据,代码很简陋很臃肿,仅作为工作经验留存,如有不足还请见谅。

参考内容:https://wenku.baidu.com/view/ee78ab75f242336c1eb95e52.html

abaqus批命令使用心得相关推荐

  1. windows Bat 批命令 教程

    转载 第一章 批处理基础 第一节 常用批处理内部命令简介 批处理定义:顾名思义,批处理文件是将一系列命令按一定的顺序集合为一个可执行的文本文件,其扩展名为BAT或者CMD.这些命令统称批处理命令. 小 ...

  2. Abaqus常用命令

    提交任务: abaqus job=jobname1 int 或 abaqus job=jobname1 int 双精度提交: abaqus job=jobname1 double int 任务暂停: ...

  3. linux提交abaqus作业,命令行提交 Abaqus 任务

    Abaqus 早期好像是只有通过命令行提交任务的.即使到了现在,很多人还是喜欢直接通过命令行操作.而且有时候需要用命令行提交 inp 文件进行计算还可能是因为少数 keywords 不为 Abaqus ...

  4. 批命令 set /a与set /p有哪些区别

    最佳答案 在 SET 命令中添加了两个新命令行开关: SET /A expression SET /P variable=[promptString] /A 命令行开关指定等号右边的字符串为被评估的数 ...

  5. Linux的awk命令使用心得

    awk 'BEGIN{RS="<!--|-->"}NR%2' (linux用awk来读取xml文件时,会将注释也读取进来.所以将这个注释标记为行分割符) BEGIN和E ...

  6. abaqus linux命令,linux下安装abaqus

    1 sudo apt-get install g++ 2 sudo apt-get install csh 3 sudo mount -o loop /home/zhangfei/DVD1.iso / ...

  7. 用DOS批命令写的各种病毒专杀集成---推荐收藏

    @echo off title 各种病毒清理专杀 echo ********************************************************************** ...

  8. linux命令行控制fluent,linux 提交任务的命令(ansys lsdyna abaqus fluent)

    记录ansys lsdyna abaqus fluent 的命令提交方式 abaqus  提交命令 abaqus job=input inter ansys (mmp 版本17.2) ansys172 ...

  9. 菜鸟成长日记(一)之WMIC简单命令应用

    一.什么是WMIC? WMIC扩展WMI,提供了从命令行接口和批命令脚本执行系统管理的支持.在WMIC出现之前,如果要管理WMI系统,必须使用一些专门的WMI应用,例如SMS,或者使用WMI的脚本编程 ...

最新文章

  1. 快速指南:使用OpenCV预处理神经网络中的面部图像
  2. ubuntu 终端批量复制文件_《卡死你3000》批量文件复制命令详解
  3. Java7编程 高级进阶学习笔记--嵌套类
  4. 终于有人把 Nginx 说清楚了,图文详解!
  5. Java 设计模式——外观模式
  6. NYOJ 662 汽水瓶
  7. 外中断02 - 零基础入门学习汇编语言70
  8. mysql安装设置数据目录下,linux下安装mysql数据+配置
  9. Date对象 IOS踩坑
  10. 95-230-022-源码-WordCount走读-OperatorChain
  11. 基于Visual C++2010与windows SDK fo windows7开发windows7平台的tabletpc应用(1)-汉字手写轨迹输入
  12. 中小企业怎么创作一个具备品牌故事的软文营销方案
  13. Pearson correlation coefficient与Cosine Similarity的区别
  14. 人工智能导论——概念篇
  15. git获取所有branch_获取Git仓库的所有分支名字
  16. 积分权限 mysql_MySQL中创建用户分配权限
  17. 多传感器融合感知 --传感器外参标定及在线标定学习
  18. 2022最新软件测试面试题
  19. 高考是人生旅途的一处驿站
  20. 好用的录音机软件有哪些?这些软件值得收藏

热门文章

  1. 美记者揭密少林寺方丈:坐喷气式客机的CEO(图)
  2. 基于Python的微博大数据舆情分析,舆论情感分析可视化系统
  3. 弘辽科技:淘宝更新评价体系对标大众点评
  4. 基于python实现辅助教师课表配置设计
  5. 路飞学城-爬虫集训营-第二章
  6. Paint 全面解析
  7. 基于SpringBoot的哔哩哔哩动态爬取网站
  8. 恶意程序威胁程度“五芒星”评估法
  9. 推荐一些手机游戏开发会用到的网站
  10. 如何保证服务器数据的安全