Попробуйте использовать подпроцесс , но без опции os.call.
Вы можете использовать этот метод для запуска Abaqus в фоновом режиме:
import subprocess
path = location of file in any directory
abaqusCall = 'abaqus job=file_name cpus=2'
runCommand = 'cmd.exe /c ' + abaqusCall
process = subprocess.Popen(runCommand, cwd=path)
Проблема с Abaqus заключается в том, что анализ занимает много времени, поэтому если вы попытаетесь запустить файл «python_name.py» для получения результатов, программа может получить ошибки, потому что файл * .odb либо еще не был создан или не содержит данных, которые необходимо извлечь.
Вы можете использовать команду:
process.wait()
, чтобы сказать Python, чтобы он ожидал, пока Abaqus завершит анализ, прежде чем выполнить ваш "python_name.py", но это повредит вашу команду python (или GUI), пока Abaqus не будет выполнен, что займет много времени.
Один метод, который я использую, - это чтение файла * .sta из Abaqus, в котором есть время решения и прогресс. Таким образом, вы можете написать последовательность для чтения файла, например, каждые 5 секунд и отслеживать, когда задание заканчивается, перед выполнением файла извлечения результатов.
Еще одна хитрость для извлечения данных заключается в том, что, пока вы не используете (импортируете) классы из модуля CAE, вы можете запустить свой скрипт Python с помощью этой команды:
#get results and write them to myresults.txt
os.system('abaqus python python_name.py')