Попробуйте использовать подпроцесс, но без параметра 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 (или графического интерфейса) до тех пор, пока Abaqus не завершит работу, что займет много времени.
Один из методов, который я использую, — это чтение файла *.sta из Abaqus, в котором есть время решения и прогресс. Таким образом, вы можете написать последовательность для чтения файла, например, каждые 5 секунд, и отслеживать, когда задание завершается, прежде чем выполнять файл извлечения результатов.
Еще один трюк для извлечения данных заключается в том, что пока вы не используете (импортируете) классы из модуля CAE, вы можете запустить свой скрипт Python с помощью этой команды:
#get results and write them to myresults.txt
os.system('abaqus python python_name.py')
person
Nader
schedule
14.06.2012