abaqus命令行基础

news2024/11/26 5:35:50

1.abaqus命令行基础

使用 abaqus 时,如果需要进行参数分析,就需要生成大量的模型,这时一般会使用python文件定义函数进行批量生成并计算。

如果已经生成了计算文件(*.inp文件),那么就可以直接在命令行进行求解,abaqus支持命令行计算,计算格式一般如下:

abaqus job=job-name cpus=n int

这里的 job-name 是与要计算的 inp 文件同名的文件名(但不包含.inp后缀),这将默认创建一个名为 job-name 的任务并提交计算。cpus=n 是指定计算时使用的 cpu 的核心数。int 是指 interactive ,即abaqus在计算时会在命令行窗口打印一些信息供用户了解abaqus现在在干嘛。如下所示:

如果想指定任务名称,则可以使用 input 关键字指定输入文件,再用 job 关键字指定任务名称,如下:

abaqus input=inpFileName.inp job=job-name cpus=n int

在遇到已经存在的任务时,abaqus会询问是否覆盖先前的 job,如果不想被询问直接覆盖先前的任务,可以在上述命令结尾加上 ask=off

更多关键字及更详细的命令:

abaqus

job =job-name

[analysis | datacheck | parametercheck | continue | convert = { select | odb | state | all } | recover | syntaxcheck | information = { environment | local | memory | release | support | system | all } ]

[input = input-file]

[user = { source-file | object-file } ]

[uniquelibs]

[oldjob = oldjob-name]

[fil = { append | new }]

[globalmodel = { results file-name | ODB output database file-name | SIM database file-name }]

[cpus = number-of-cpus]

[parallel = { domain | loop }]

[domains = number-of-domains]

[dynamic_load_balancing = { on | off } ]

[mp_mode = { mpi | threads }]

[threads_per_mpi_process = number of threads per mpi process]

[standard_parallel = { all | solver } ]

[gpus = number-of-gpgpus]

[memory = memory-size]

[interactive | background | queue [= queue-name] [after time] ]

[double = { explicit | both | off |constraint } ]

[scratch = scratch-dir]

[output_precision = { single | full } ]

[resultsformat = { odb | sim | both } ]

[port = co-simulation port-number]

[host = co-simulation hostname]

[csedirector = Co-Simulation Engine director host: port-number]

[timeout = co-simulation timeout value in seconds]

[unconnected_regions = { yes | no } ]

[noFlexBody]

[license_type = { token | credit } ]

2.abaqus批量计算

(2.1节和2.2节批量计算的内容参考了http://www.feaworks.org的部分网页)

在命令行求解有一个好处就是可以实现不同job的连续计算,不用人守着每次等上一个任务计算完成再手动提交下一个任务。

2.1 dos批处理

情况1:不同inp文件位于同一文件夹下

假设该文件夹里inp文件分别为:job-1.inp, job-2.inp, job-3.inp…

在该文件夹下新建记事本(.txt)文档,将其后缀修改为 .bat 文件,在 bat 文件中输入以下内容,运行该文件实现批处理:

call abaqus job=job-1 cpus=10 int
 
call abaqus job=job-2 cpus=10 int
 
call abaqus job=job-3 cpus=10 int
 
....
pause

pause

以上命令加上 int 后,会让abaqus在当前计算完成后,才会转入下一个模型的计算。如果要实现不同job同时计算,去掉 int 即可

call abaqus job=job-1.inp cpus=10
 
call abaqus job=job-2.inp cpus=10
 
call abaqus job=job-3.inp cpus=10
 
....
pause

最后的pause 命令会让 cmd 窗口等待用户输入,否则在执行完最后一条指令后 cmd 窗口将直接关闭,如果计算中出了问题,显示在 cmd 窗口的信息我们也看不到了,所以建议使用此命令。

情况2:不同inp文件位于不同文件夹下

假设在以下路径有以下文件:

D:\temp\A\job-1.inp

D:\temp\B\job-2.inp

D:\temp\C\job-3.inp

则可以每次进入一个文件夹,再调用abaqus进行计算,命令如下:

cd D:\temp\A
 
call abaqus job=job-1.inp cpus=10 int
 
cd D:\temp\B
 
call abaqus job=job-2.inp cpus=10 int
 
cd D:\temp\C
 
call abaqus job=job-3.inp cpus=10 int
 
pause

将上述命令保存为.bat 文件,双击运行即可

情况3:计算完成后自动关机

有时候我们会希望计算机在计算完成后自动关机,可以通过在上述命令的最后面添加关机命令:

shutdown -s -f -t 30

-s 关闭本地计算机

-f 强制关闭计算机

-t xx 将用于系统关闭的定时器设置为 xx ,例如上面的设置是 30秒。

2.2 Python实现

Python语言可以实现ABAQUS前后处理模块的二次开发,同时也可以采用Python实现ABAQUS所用功能,这里采用Python实现不同job的连续计算。

实现job批处理的Python基本代码:

# 导入所需的模块和常量
from abaqusConstants import*
import job
 
# 使用job-1.inp文件提交job-1的计算任务,numCpus=2设置cpus数,numDomains=2设置线程数
mdb.JobFromInputFile(name='job-1',inputFileName='job-1.inp',numCpus=2,numDomains=2)
 
# 提交计算任务
mdb.jobs['job-1'].submit()
 
# 中断python文件的执行,等待计算任务的完成。
# 在这里waitForCompletion相当于dos批处理下的参数interactive
mdb.jobs['job-1'].waitForCompletion()
 
mdb.JobFromInputFile(name='job-2',inputFileName='job-2.inp',numCpus=2,numDomains=2)
 
mdb.jobs['job-2'].submit()
 
mdb.jobs['job-2'].waitForCompletion()
 
# 导入其他模块
import os,time,sys
 
# 实现自动关机
o="c:\windows\system32\shutdown -s -f -t 60"
 
os.system(o)

将上面的python文件保存为 run.py ,进入run.py所在目录,打开cmd窗口输入以下命令即可运行批处理文件:

abaqus cae noGUI=run.py
其他问题

(以下内容参考自https://zhuanlan.zhihu.com/p/149086691)

之前在网上查到的ABAQUS inp文件任务批量提交方法,如用批处理命令或利用ABAQUS内置Python环境提交,有一定局限性,比如如果批量提交的任务中,某个任务由于计算不收敛而终止,会造成整个提交队列终止,而不能继续进行。

本程序利用Python subprocess模块并行提交任务,任务间不会互相干扰,即使某个任务报错或不收敛,不会影响整个队列。

import subprocess
import time
import os
task_list=[]
for volfrac in [0.1,0.2,0.3,0.4,0.5,0.6]: #循环生成包含不同参数的文件名列表
    for R in [4,5,6]:
        for num in range(1,11):
            #["Tension_x","Tension_y","Shear"]
            for bc in ["Tension_x","Tension_y","Shear"]:
                task_list.append([volfrac,R,num,bc])
i=0
for volfrac,R,num,bc in task_list:
    file_name="{}_{}_{}_{}.inp".format(volfrac,R,num,bc)#inp文件名
    job_name="Job-{}_{}_{}_{}".format(int(volfrac*100),R,num,bc)#任务名
    #通过命令行提交任务
    subprocess.Popen('abaqus job={} input={} cpus=2 int ask_delete=OFF'.format(job_name,file_name),shell=True)
    print("{} submitted.".format(job_name))
    i=i+1
    if i==10:
        i=0
        print("Waiting...")
        time.sleep(180)#防止一次提交过多电脑崩溃或license用尽,所以通过sleep等待任务结束
print("Finished")

在inp文件所在目录下,运行此Python程序,即可批量提交任务。

3.abaqus命令行显示计算求解进程

虽然命令中有 int 参数,但是abaqus只能显示简单的信息,如第一张图中所示。

在进行多步求解时,例如隐式多步或者显式计算时,我们有时想看到目前计算到哪一步了,但是abaqus自身无法在命令行打印出这些信息。

可以使用一种曲线救国的方法,即在任务文件夹中读取与任务同名的 .sta 文件,并实时显示。注意,以下命令只在 Windows PowerShell 中有效:

Get-Content .\job-name.sta -Tail 10 -Wait

这将会自动读取 job-name.sta 的最后10行内容。随着abaqus的计算, .sta 文件也会不断写入内容,而这条命令(因为有**-Wait**参数)也会不断读取最新的内容并刷新显示,如下图所示(这里是一个隐式计算求解):

最后计算完成的视图如下:

如果要在 cmd 窗口实现以上内容,则需要以下命令:

powershell -nologo "& "Get-Content -Wait job-name.sta -Tail 10"

实际上还是调用 Windows PowerShell 执行 Get-Content 程序。因此,前提是你的电脑有 Windows PowerShell 较新版。如果没有 Windows PowerShell 或者其版本太低可能会提示找不到 Get-Content 程序。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1042782.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

自动化测试框架pytest命令参数

【软件测试面试突击班】如何逼自己一周刷完软件测试八股文教程,刷完面试就稳了,你也可以当高薪软件测试工程师(自动化测试) 失败后停止 使用下面的参数可以让测试在第1(N)次测试失败后停止: pytest ‐x # 第一次测试…

【大数据存储与处理】1. hadoop单机伪分布安装和集群安装

0. 写在前面 0.1 软件版本 hadoop2.10.2 ubuntu20.04 openjdk-8-jdk 0.2 hadoop介绍 Hadoop是一个由Apache基金会所开发的分布式系统基础架构。用户可以在不了解分布式底层细节的情况下,开发分布式程序。充分利用集群的威力进行高速运算和存储。Hadoop实现了一个…

数据结构_红黑树

1、二叉树 每一个分支不能超过两个 2、 排序数/查找树 在二叉树的基础上,元素是有大小顺序的左 子树 小,右 子树 大 3、平衡树 左孩子数 和 右孩子数 相等 4、不平衡树 5、 红黑树 特点:趋近于平衡树,查询的速度非常的快&#xf…

【论文笔记】A Review of Motion Planning for Highway Autonomous Driving

文章目录 I. INTRODUCTIONII. CONSIDERATIONS FOR HIGHWAY MOTION PLANNINGA. TerminologyB. Motion Planning SchemeC. Specificities of Highway DrivingD. Constraints on Highway DrivingE. What Is at Stake in this Paper III. STATE OF THE ARTA. Taxonomy DescriptionB…

全新iphone15 pro max拆解,内部元件供应链曝光 | 百能云芯

苹果顶级版iPhone 15 Pro Max热销,国外维修网站ifixit拆解内部零组件后评估,苹果在电源、无线通讯、音频等关键元件比重增加。台企华邦电子供应编码型快闪存储器(NOR Flash)。 苹果(Apple)iPhone 15 Pro Ma…

Powershell 实现禁用密码复杂性,空密码

前提条件 开启wmi,配置网卡,参考 实现一键关闭密码策略和远程空密码登录 最近客户需要的一个无法理解的需求,需要远程登录不输入密码,安全性没有了还要实现,没办法客户是上帝,客户怎么开心怎么来都行,安全性问题告知不重视,实际环境不建议一下操作,只要联网你被黑的哦…

《重磅发布 | 80+大屏组件模板,即刻下载、快速构建应用!遥遥领先~》

smardaten没有酱香拿铁、没有李佳琦79元的眉笔套餐…… 但给大家准备了50可视化应用模板、30页面组件模板,免费用!这不比酱香拿铁香? 其实,自今年2月份商超上线以来,已上架10个软件系统、3个大屏模板(还不…

JAVA自动化之Junit单元测试框架详解

一、JUnit概述&配置 1、Junit是什么&#xff1f; Junit是一个Java 编程语言的开源测试框架&#xff0c;用于编写和运行测试。官网 地址&#xff1a;https://junit.org/junit4/ 2、Maven配置 ?xml version"1.0" encoding"UTF-8"?> <project…

一文搞懂模板(template)

背景引入&#xff1a; 想象一下&#xff0c;我们要实现一个整数相加&#xff0c;浮点数相加的函数&#xff0c;如果按C语言的思路&#xff0c;我们需要写两个函数名不同的函数&#xff0c;来完成相加&#xff1b;如果C语言&#xff0c;则可以通过函数重载的特性&#xff0c;写两…

LC1305. 两棵二叉搜索树中的所有元素(JAVA)

两棵二叉搜索树中的所有元素 题目描述中序遍历 归并排序 题目描述 难度 - 中等 LC1305. 两棵二叉搜索树中的所有元素 给你 root1 和 root2 这两棵二叉搜索树。请你返回一个列表&#xff0c;其中包含 两棵树 中的所有整数并按 升序 排序。. 示例1&#xff1a; 输入&#xff1a;…

燃气安全如何保障?万宾燃气管网监测系统时刻感知管网运行态势

近年来随着我国城镇化建设的加快&#xff0c;燃气已经成为每个家庭的必需品。然而&#xff0c;每年夏季频繁发生的燃气爆炸事故&#xff0c;已经严重危害人民生命财产安全危害社会公共安全和公共利益。为了保障燃气安全运行&#xff0c;近日&#xff0c;许多城市都在大力推进燃…

Redis代码实践总结(二)

使用 CLI 探索 Redis 外部程序使用 TCP 套接字和 Redis 特定协议与 Redis 进行通信。该协议在不同编程语言的 Redis 客户端库中实现。然而&#xff0c;为了使使用 Redis 进行黑客攻击变得更简单&#xff0c;Redis 提供了一个命令行实用程序&#xff0c;可用于向 Redis 发送命令…

Docker配置镜像加速器

1.登录阿里云 阿里云-计算&#xff0c;为了无法计算的价值 (aliyun.com) 2.容器 说明&#xff1a;找到产品下的容器 3.容器镜像服务ACR 4.点击控制台 5. 点击镜像加速器 6.操作文档

项目开发过程中,成员提离职,怎么办?

之前写过一篇《如何应对核心员工提离职》反响特别好&#xff0c;今天做个延展篇&#xff0c;在项目过程中&#xff0c;员工突然提离职&#xff0c;我们有什么办法让项目按时按质的上线。 项目做多了&#xff0c;总会碰到这种情况。这里给大家介绍一个解决项目问题的分析方法&a…

【0223】源码剖析smgr底层设计机制(3)

1. smgr设计机制 PG内核中smgr完整磁盘存储介质的管理是通过下面三部分实现的。 1.1 函数指针结构体 f_smgr 函数指针结构体 f_smgr。 通过该函数指针类型,可完成类似于UNIX系统中的VFD功能,上层只需要调用open()、read()、write()等系统函数,用户不必去关系底层的文件系统…

Git那些事系列:从业务场景到高级技巧的完整指南(三)

文件修改的记录居然没有了&#xff01;&#xff01;&#xff01; 如何隐蔽的把一次修改记录搞丢&#xff01; 大家好&#xff0c;有到了Git那些事系列了&#xff0c;近期笔者遇到了一个十分奇怪的事情&#xff0c;一个Git仓库的文件被莫名其妙的修改了&#xff0c;问题是&…

1、SpringBoot_快速入门

一、SpringBoot 概述 文档下载地址&#xff1a;https://docs.spring.io/spring-boot/docs/current/reference/ 1.SpringBoot介绍 概述&#xff1a;SpringBoot 开发团队认为Spring操作太繁琐了&#xff0c;目的在于简化开发配置&#xff0c;能够快速搭建开发环境&#xff0c;…

25422-2010 草地潜松犁 阅读笔记

声明 本文是学习GB-T 25422-2010 草地潜松犁. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 1 范围 本标准规定了草地潜松犁(以下简称潜松犁)的技术要求、试验方法、检验规则、标志、包装与贮存。 本标准适用于在草地上进行不翻垡松土、切根等项作…

RK3588 VDD_CPU_BIG0/1 电源PCB设计注意事项

RK3588 VDD_CPU_BIG0/1 电源PCB设计 1、如图1所示的滤波电容&#xff0c;原理图上靠近 RK3588的VDD_CPU_BIG电源管脚绿线以内的去耦电容务必放在对应的电源管脚背面&#xff0c;电容GND PAD尽量靠近芯片中心的GND管脚放置&#xff0c;如图2所示。其余的去耦电容尽量摆放在3588…

python学习--特殊方法和属性

名称描述特殊属性dict获得类对象或实例对象所绑定的所有属性和方法的字典特殊方法len()通过重写_len_()方法&#xff0c;让内置函数len()的参数可以是自定义的类型特殊方法add()通过重写_add_()方式&#xff0c;&#xff0c;可使自定义对象有‘’的功能特殊方法new()用于创建对…