Как отображать abaqus Job сообщения при выполнении сценария Python из командной строки (noGui) - PullRequest
1 голос
/ 30 апреля 2019

При выполнении скрипта Python в Abaqus CAE ошибки, предупреждения и другие сообщения печатаются в специальном окне сообщений, а функции обратного вызова могут дополнительно настраивать поведение сообщений.

Во время выполнения скрипта noGui все сообщенияисключены, даже те, которые было бы полезно увидеть, например «Импорт ключевого слова не поддерживается» или «Задание завершено с ошибкой (ями)».

У объекта Job нет возвращаемых значений для проверки на завершение.,Если задание или импорт задания не удается достаточно рано, не создаются файлы для проверки предупреждающих сообщений.

Функции обратного вызова не поддерживаются:

Команды обмена сообщениями доступны, только если Abaqus /CAE запускается в интерактивном режиме с использованием графического интерфейса.

Моя главная проблема с «обычным» способом простого вызова abaqus job=input заключается в том, что мне нужно выполнять итерации по модели, поскольку она генерирует результаты, и я пытаюсь сохранить все в одном экземпляре python (или, точнее, python abaqus), чтобы я мог перемещать объекты и легко обновлять модель без повторного чтения входных файлов на 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.Однако поток вывода из фактической отправки задания все еще не выводится на экран ... Частичный успех?

Использование этого ансера на перенаправленном выводе также не принесло плодов, поскольку sys.stdout, как определеноabaqus не имеет атрибута fileno.

...