在Abaqus CAE中执行python脚本时,错误,警告和其他消息会打印在专用的消息窗口中,并且回调函数可以进一步自定义消息行为。
在执行noGui脚本期间,所有消息都会被抑制,即使是那些真正有帮助的消息也是如此,例如“不支持关键字导入。”或“作业退出并出现错误。”
Job对象没有返回值可检查完成。 如果作业或作业导入足够早地失败,则不会生成任何文件来检查警告消息。
不支持回调功能:
仅当使用GUI交互式运行Abaqus / CAE时,消息传递命令才可用。
仅调用abaqus job=input
的“通常”方式的主要问题是,我需要在模型生成结果时对其进行迭代,并试图将所有内容保留在一个python实例中(或更确切地说,是abaqus) 'python),这样我就可以轻松地移动对象并轻松更新模型,而无需重新读取30000行的输入文件。
按原样,我的主循环如下:
import os
import sys
import abaqus
import abaqusConstants as abqc
my_db = abaqus.Mdb(pathname='models.cae')
my_model = my_db.ModelFromInputFile('Model-1','./inpfiles/import_me.inp')
# do some checks on the model to see if all the keywords were imported
# manually read them in if not.
for i in [1]: # Future iteration loop
my_job = my_db.Job(name='Job-1', model='Model-1', scratch='./work')
my_job.submit()
my_job.waitForCompletion()
#check results, update model
有什么方法可以访问通常降级到消息对话框的abaqus消息?
更新:
经过一番尝试后,只需说明sys.stdout = sys.__stdout__
就能完成一层代码,即ModelFromInputFile
函数传递的警告消息。但是,实际提交的作业的输出流仍未打印到屏幕上……部分成功?
使用this anser on redirected output也没有使果实结实,因为定义的abaqus中的sys.stdout
没有fileno
属性。