При работе в ANSYS Mechanical у пользователя может возникнуть потребность в использовании команд APDL между шагами нагружения, для чего необходимо перейти к постпроцессору (/POST1) для получения результатов расчёта, внести в модель какие-либо изменения (из числа изменений, поддерживаемых ANSYS для такого случая) на основе полученных результатов, вернуться к решателю (/SOLU) и продолжить расчет следующего шага нагрузки с помощью команды SOLVE. Такая процедура возможна в рамках перезапуска расчёта по одной точке перезапуска (single-frame restart).
Введение
Несмотря на то, что эта процедура теперь относится к недокументированным, выполнение такого перезапуска по-прежнему является возможным. Актуальная документация описывает перезапуск с несколькими точками (multiframe restart), который позволяет пользователю перезапустить расчёт с любого сохраненного шага или подшага нагрузки. Изменения между шагами расчёта могут быть связаны с выполнением команд погашения и активации элементов (команды EKILL и EALIVE), запускаемых по неким критериям, основанным на результатах расчёта предыдущего шага. Изменения также могут включать изменения материала (команда MPCHG) или параметров модели (команда RMODIF).
В данной статье описана реализация процедуры перезапуска расчёта по одной точке в модуле Mechanical расчётной платформы Workbench с использованием блока APDL-команд. Будет описана собственно процедура перезапуска, а конкретные изменения, которые можно вносить в модель, оставим на усмотрение пользователя.
Реализация перезапуска расчёта по одной точке в Workbench Mechanical
В рамках платформы Workbench перезапуск расчёта с несколькими точками перезапуска можно применять для решения различных сложных задач. Что же касается упрощённой разновидности этой операции – перезапуска по одной точке, – он позволяет пользователю продолжить расчёт очередного шага нагрузки даже после того, как ANSYS временно вышел из решателя (/SOLU). В процессе такого перезапуска пользователь может получить результаты расчёта в постпроцессоре (/POST1), вернуться в решатель и запустить следующий шаг на расчёт. При этом пользователь может задать команды, которые вносят изменения в модель между шагами загрузки, а процедура перезапуска делает возможным не прерывать процесс расчёта.
Примером таких изменений между шагами нагружения может служить изменение материала с помощью команды MPCHG, изменение параметров модели с помощью команды RMODIF, а также погашение и активация элементов посредством команд EALIVE и EKILL. В особых случаях с помощью команды UPCOORD пользователь также может воспользоваться возможностью изменять исходные координаты выбранных узлов в соответствии с полученными в расчёте перемещениями. Критерии, по которым в модель вносятся изменения, могут основываться на результатах расчёта, полученных в постпроцессоре (/POST1). При возвращении в решатель (/SOLU) требуется указать ему на перезапуск расчёта, чтобы продолжить расчёт с последнего шага нагружения, а не начинать его заново.
На рисунке 2 сверху показано расположение блок команд APDL. На рисунке 3 ниже показаны свойства этого блока и особо выделен параметр, отвечающий за то, когда блок команд будет запускаться на выполнение. Эта настройка появляется только в том случае, когда в настройках расчёта (Analysis Settings) задано больше одного шага нагружения.
Существует команда *GET, с помощью которой в решателе (/SOLU) можно получить номер самого последнего шага нагружения, рассчитанного на текущий момент. Следующая команда выдаст количество шагов нагрузки, рассчитанных к моменту её выполнения:
*GET,xxx,ACTIVE,,SOLU,NCMLS ! Накопленное число шагов нагружения
Следующие команды *GET описываются в справочной документации как команды постпроцессора (/POST1), но опыт показывает, что они также могут быть выполнены внутри решателя (/SOLU). Если приведенные выше или ниже команды *GET выполняются в блоке команд APDL, вставленном в модуле Mechanical на этапе определения какого-либо расчёта (Static Structural и др.), переменная «xxx» будет возвращать номер последнего шага нагружения, расчёт которого уже завершен, а не того, который должен быть отправлен на расчёт следующим:
*GET,xxx,ACTIVE,,SET,LSTP ! Номер последнего рассчитанного шага нагружения
*GET,xxx,ACTIVE,,SET,TIME ! Время, связанное с текущими результатами в базе данных
Вышеперечисленные команды *GET можно использовать, чтобы найти номер (LSTP) или время последнего рассчитанного шага нагружения. С помощью команды *IF можно на основе этой информации задать условие, выполнять ли дальше команды APDL, или какие именно команды выполнять. При этом блок команд в целом должен выполняться после каждого шага нагружения, для этого в его свойствах необходимо установить параметр “Step Selection Mode” (см. рисунок 3 выше) равным «ALL».
В каталоге, содержащем файлы проекта Workbench, есть подкаталог «user_files». Он хранится вместе со всем проектом, и при необходимости пользователь может перемещать туда файлы. В частности, там можно хранить макросы, которые должны выполняться в командных блоках APDL в дереве построения модели модуля Mechanical. С помощью команды /PSEARCH можно указать местоположение на жестком диске, где программа будет искать макросы для команд APDL. Таким образом, в начало блока команд APDL для реализации пошагового перезапуска и изменения модели следует записать следующие команды:
*GET,current_loadstep,ACTIVE,,SET,LSTP ! номер текущего шага нагружения
*IF,current_loadstep,EQ,0,then ! команды, запускаемые перед началом расчёта первого шага нагрузки
! задание расположения макросов в папке «user_files»
FINISH
/PSEARCH,_wb_userfiles_dir(1) ! даёт информацию о расположении «user_files»
/SOLU
*GET,myjobname,ACTIVE,,JOBNAM ! название проекта, <= 8 символов
/DELETE,myjobname,rdb ! если этот файл существует, его необходимо удалить для пошагового перезапуска
RESCONTROL,DEFINE,NONE ! не сохранять файлы для перезапуска с несколькими точками перезапуска
*ENDIF
Для того, чтобы пошаговый перезапуск стал возможным, необходимо удаление файла *.RDB (если он существует в папке проекта) и использование команды RESCONTROL для предотвращения записи файлов для нескольких точек перезапуска.
В документации указано, что команда /PSEARCH, использованная выше, работает только со строками длиной до 60 символов, но, по опыту, она поддерживает и более длинные строки. При работе в модуле Workbench Mechanical названием проекта (Jobname) является слово «file», так что ограничение в 8 символов команды *GET не является проблемой. Впрочем, с помощью команды /INQUIRE можно работать и с более длинными именами проекта.
Ниже представлены команды, предназначенные для выполнения после первого шага нагружения: они получают последний рассчитанный шаг нагружения, выходят из решателя, получают результаты расчёты, переносят их в массив, возвращаются к решателю, производят изменения модели на основе результатов, выполняют перезапуск и запускают на расчёт входной файл ANSYS «ds.dat».
*GET,current_loadstep,ACTIVE,,SET,LSTP ! номер текущего шага нагружения
*IF,current_loadstep,GT,0,then ! если рассчитан хоть один шаг
FINISH
/POST1
SET,LAST ! в случае, если последний набор результатов почему-то не подгрузился
*GET,num_elem,elem,,COUNT ! количество элементов
*GET,num_elem_max,elem,,NUM,MAX ! наибольший порядковый номер элемента
! пример получения результатов
ETABLE,my_epeq,NL,EPEQ ! пример: накопленная относительная пластическая деформация
*DEL,my_epeq,,NOPR ! удалить массив без предупреждения
*DIM,my_epeq,ARRAY,num_elem_max ! массив для сохранения относительной деформации
*VGET,my_epeq(1),ELEM,1,ETAB,my_epeq ! запись столбца таблицы элементов в массив
FINISH
!
/SOLU
ANTYPE,,REST ! пошаговый перезапуск
! пример: в модель вносятся изменения на основе величины относительной пластической деформации (содержимое массива my_epeq)
current_elem=0
*DO,ii,1,num_elem ! цикл по элементам
current_elem=ELNEXT(current_elem) ! обращение к следующему по порядку элементу
! здесь можно определить изменения для этого элемента на основе значения my_epeq для конкретного элемента
! ...
*ENDDO
ALLSEL
*ENDIF
! В этой точке ANSYS запускает расчёт следующего шага, используя вышеприведенные настройки...
В приведенном выше блоке команд пользователь может также перейти в постпроцессор /POST1, препроцессор /PREP7 или к другим процессорам для выполнения интересующих операций. Если используются команды, совместимые с перезапуском и последующими шагами нагружения, Workbench сможет продолжать расчёты.
Выводы
В Workbench Mechanical присутствует возможность перезапуска расчёта с несколькими опорными точками, которую можно использовать в различных целях (включая расчёты предварительных этапов нагружения, общих для различных расчётных случаев). Команды APDL позволяют осуществлять пошаговый перезапуск расчёта, при этом можно временно выйти из решателя /SOLU, перейти препроцессор /PREP7 или постпроцессор /POST1, исследовать модель, вернуться в решатель /SOLU, отредактировать модель, задать тип расчёта («Restart») и продолжить расчёт модели по следующим шагам нагружения.
Последний совет: с помощью команды /SHOW, PNG и следующих за ней команд вывода графических распределений можно создавать изображения, которые будут отображаться в дереве построения как дочерние элементы блока команд, которым они были созданы.
Источник: simutechgroup.com