Как запустить abaqus задание сразу после окончания другого? - PullRequest
0 голосов
/ 27 октября 2018

Я написал скрипт для создания нескольких моделей в abaqus, а затем запустил задания, созданные с помощью простого цикла python, но при запуске скрипта программа запускает все задания одновременно, и памяти компьютера недостаточно, поэтомупрерывает работуЯ хочу знать, как создать srcipt, в который будет отправлено следующее задание сразу после окончания первого.

Ответы [ 2 ]

0 голосов
/ 16 ноября 2018

Я разработал графический пользовательский интерфейс для улучшения процесса очередей анализов Abaqus. Он доступен на GitHub здесь .

Установка:
1. Загрузите или клонируйте пакет с GitHub.
2. Найдите файл core.py и отредактируйте строки 31, 36, 37 и 38 в соответствии с вашей машиной и вашей конфигурацией.
3. Запустите его.

Если у вас возникли проблемы с его использованием, отправьте их в репозиторий GitHub.

0 голосов
/ 27 октября 2018

Это зависит от того, как вы вызываете Абакуса.Если вы создаете процессы Abaqus напрямую, вы можете добавить аргумент -interactive в свою команду, чтобы он не запускал решатель в фоновом процессе и немедленно возвращался.Например:

abq2018 -j my_job_name -interactive

С другой стороны, если вы используете Abaqus API и объект Job для создания и выполнения заданий, вы можете использовать метод waitForCompletion, чтобы дождаться, пока Jobзавершается.Вот выдержка из документации Abaqus:

waitForCompletion ()

Этот метод прерывает выполнение скрипта до конца анализа.Если вы вызываете метод waitForCompletion и элемент состояния не передан и не запущен, Abaqus предполагает, что анализ либо завершен, либо прерван, и немедленно возвращает результат.

Вот краткий пример того, как создать Job объектыи используйте метод waitForCompletion:

from abaqus import *

# Create a Job from a Model definition
j1 = mdb.Job(name='my_job_name', model=mdb.models['my_model_name'])

# or create a Job from an existing input file
j2 = mdb.JobFromInputFile(name='my_job_name', inputFileName='my_job_name.inp')

# Submit the first job - this returns immediately
j1.submit()

# Now wait for the first job - this will block until the job completes
j1.waitForCompletion()

# Same process for the second Job
j2.submit()
j2.waitForCompletion()
...