ANSYS

Изменение результатов расчёта в Ansys Mechanical APDL – команды DNSOL и *VPUT

Что ж, сегодня уже пятница, а большая сложная и подробная статья о скрытых возможностях Ansys, которую я планировал опубликовать, всё ещё не написана. Перейдём тогда к плану Б – для него у меня есть список не столь сложных и не столь скрытых возможностей, на которые, тем не менее, мы хотели бы обратить внимание на страницах нашего журнала «Focus». Первым пунктом в этом списке сейчас стоит вопрос «Как отредактировать результаты расчёта в программном продукте Ansys Mechanical APDL (MAPDL)?».

Возможно, у вас возникнет вопрос «А зачем это делать?». Например, с помощью языка APDL можно вычислить какие-то особенные результаты, и хорошо было бы иметь возможность представить их в виде распределения на модели. Кроме того, вы можете использовать внешний код для какого-нибудь расчёта на основе результатов, полученных на модели в MAPDL, и при этом по-прежнему отобразить результаты в Ansys. Наконец, MAPDL можно использовать как постпроцессор для обработки результатов, полученных во внешнем решателе.

Оказывается, отредактировать результаты расчёта довольно просто. И если вы опытный пользователь MAPDL, то наверняка уже догадались, что одним способом всё не ограничивается.

База данных («Database»)

Прежде чем мы приступим к описанию доступных способов, необходимо уяснить один нюанс касательно понятия «database» (база данных) в MAPDL. В документации на команды, которые мы будем использовать в этой статье, упоминается термин «database», но при этом речь идёт не о файле «jobname.db», как можно было бы подумать. Этот файл правильно называется «database file», а вот «database» – это описание вашей модели, включая результаты и активные нагрузки, которые находятся в оперативной памяти, когда запущен MAPDL.

При выполнении команды «RESUME», MAPDL считывает файл базы данных и загружает содержащуюся в нём информацию о модели, включая геометрию, сетку, нагрузки и параметры расчёта, в оперативную память. При выполнении команды «SET», в оперативную память дополнительно загружаются результаты и соответствующая информация.

Таким образом, при использовании команд, о которых пойдёт речь далее в этой статье, мы вносим изменения в содержимое базы данных, а не в содержимое файла базы данных (*.db), который расположен на нашем диске. Эти изменения временны и не могут быть сохранены. Кроме того, многие другие команды возвращают величинам исходные значения, хранящиеся в файле базы данных. Так что команды надо использовать очень осторожно, и не забывать, что вы легко можете потерять внесённые изменения.

Команда «DNSOL»

Самый простой способ поменять значения результатов – это команда «DNSOL»:

DNSOL, NODE, Item, Comp, V1, V2, V3, V4, V5, V6

Например, если вы введёте «dnsol,32,u,x,3.145», записанное в памяти значение перемещения для узла 32 по оси X станет равным 3,145. Если же вы введёте «dnsol,32,s,x,1.1,2.2,3.3», то напряжение в узле 32 в направлении X будет равно 1,1, в направлении Y – 2,2, и в направлении Z – 3,3.

Второй аргумент команды «DNSOL» также может быть компонентом, так что вы можете назначить единое значение результата одновременно для большого количества узлов.

Ниже приведён очень простой пример расчёта колонны, в которой мы задали перемещение верхних узлов равным 1 дюйму.

finish
/clear
/prep7
blc4,-2,-2,4,4,20             ! создание геометрии
et,1,185 ! тип элемента
mptemp,1,70                 ! свойства материалов
mpdata,ex,1,1,20e6
mpdata,nuxy,1,1,.23
mpdata,dens,1,1,.001

vmesh,all ! построение сетки
/view,1,1,1,1                 ! настройки отображения
/vup,1,z
/RGB,INDEX,100,100,100, 0
/RGB,INDEX, 80, 80, 80,13
/RGB,INDEX, 60, 60, 60,14
/RGB,INDEX, 0, 0, 0,15
/show,png
eplot                          ! отображение сетки

! задание граничных условий
nsel,s,loc,z,0
cm,nbt,node
d,all,all
nsel,s,loc,z,20
cm,ntp,node
f,all,fx,10
f,all,fy,12
allsel
save

! расчёт
/solu
solve
finish
/post1
plnsol,u,sum             ! вывод неизменённых результатов

dnsol,ntp,u,y,1          ! ручное изменение результатов
plnsol,u,sum             ! вывод изменённых результатов

/show,close

Красивая сетка

Красивая сетка

Нормальный (неизменённый) результат

Нормальный (неизменённый) результат

Результат при использовании команды «DNSOL» (заданы перемещения узлов верхней грани на 1 дюйм)

Результат при использовании команды «DNSOL» (заданы перемещения узлов верхней грани на 1 дюйм)

Всё довольно просто.

Примечание: Важно помнить, что эту команду нельзя использовать в режиме «Powergraphics». Поэтому убедитесь, что включен режим «Full Graphics», его также можно включить командой «/graph,full».

Команда «*VPUT»

Команда «DNSOL» отлично подходит для ситуации, когда мы имеем дело всего с несколькими узлами или с отображением постоянной величины. Но если вам необходимо задать различные значения для большого числа узлов, то это потребует затратного по времени выполнения цикла (команда «*DO»). Именно на этот случай разработчики Ansys предоставили нам команду *VPUT:

*VPUT, ParR, Entity, ENTNUM, Item1, IT1NUM, Item2, IT2NUM, KLOOP

Как видите, эта команда включает много параметров, поэтому советуем вам досконально ознакомиться со справочной документацией перед её использованием. В большинстве случаев значение, которое необходимо отобразить на вашей модели, хранится в массиве (ParR). Затем вам необходимо указать, какой именно результат MAPDL вы хотите перезаписать. Например, команда «*vput,nws1(1),node,1,s,1» назначит новые значения максимального главного напряжения во всех узлах, охватываемых массивом, начиная с номера 1.

Ниже приведён пример программного кода для модели колонны, рассмотренной выше, только в этот раз вместо команды «DNSOL» используется команда «*VPUT»:

finish
/post1
plnsol,u,sum                           ! вывод неизменённых результатов

*get,nmnd,node,,num,max       ! получение максимального номера узла
*dim,nwux,,nmnd                    ! объявление массива nwux соответствующей размерности
*do,i,1,nmnd
nwux(i) = i                              ! заполнение массива номерами узлов
*enddo

*vput,nwux(1),node,1,u,x        ! изменение результатов
plnsol,u,sum                         ! вывод изменённых результатов

Результат при использовании команды «*VPUT» (для всех узлов заданы перемещения, равные номеру узла)

Результат при использовании команды «*VPUT» (для всех узлов заданы перемещения, равные номеру узла)

Приведенные APDL-команды задают значения перемещений в направлении X равными номерам узлов. То есть, перемещение UX в узле 80 равно 80.

Главное – помнить, что команда «*VPUT» оказывает только временное действие. Практически любая другая команда, которая выполняет что-либо, кроме вывода графических или текстовых результатов, сбрасывает все значения, заданные командой «*VPUT». Поэтому советуем вам использовать команду «*VPUT» каждый раз непосредственно перед выводом результатов.

Мысли, вопросы и выводы

Конечно же, не стоит использовать эти команды для подгонки результатов.

С помощью описанных команд можно добиться довольно красивого представления результатов. Для этого следует поработать с настройками отображения результатов и сделать собственную легенду. Таким образом, я могу, например, отобразить рассчитанный по особому алгоритму срок службы в часах и записать его вместо температуры или SX (напряжение по оси X). При этом на легенде будет правильная подпись (например, «PECYPC»).

Следует также отметить, что если вы меняете значения результатов, используя команды «DNSOL» или «*VPUT», то при выводе результатов на деформированной форме Ansys будет учитывать введенные вами значения. Если вы работаете с перемещениями, то всё нормально, однако если вы вместо перемещений хотите отобразить срок службы или какую-нибудь ещё экзотику, то деформированная форма будет некорректной.

При работе с этими командами часто возникает вопрос, можно ли сохранить изменённые результаты в файле результатов (*.rst)? Нет, нельзя, но есть способ сохранять результаты для степеней свободы (но не для напряжений). Для этого используются команды «LCDEF» и «RAPPND».

Можно ли выполнить эти операции в Ansys Mechanical? Что ж, тут всё работает совершенно по-другому и, в некотором роде, лучше. Все эти операции можно выполнить в модуле Design Assessment, который мы рассмотрели в этой статье в журнале Focus (на английском языке).

Примечание переводчика: по состоянию на версию 2020 R2, модуль Design Assessment относится к неподдерживаемому (unsupported) функционалу. Для работы с результатами можно использовать ACT-команды на языке Python.

Чтобы научиться использовать две описанные команды, поступайте, как и с любой командой APDL: начните с небольшой тестовой модели, напишите код и старайтесь, чтобы он был как можно проще. И, конечно, читайте документацию – там можно найти всю необходимую информацию.

Источник: ansys.soften.com.ua

 

Компания Софт Инжиниринг Групп, дистрибьютор американской компании Ansys Inc. в Украине, осуществляет поставку лицензионного программного обеспечения всей линейки программных продуктов Ansys и проводит сертифицированные курсы обучения программных продуктов Ansys. Оставляйте свои вопросы, комментарии и предложения под статьей или напишите на электронную почту Адрес электронной почты защищен от спам-ботов. Для просмотра адреса в браузере должен быть включен Javascript., Facebook https://www.facebook.com/softenukraine Также информируем, что у вас есть возможность посмотреть вебинары в записи. Для этого необходимо зайти по ссылке на наш YouTube канал и выбрать плейлист (Ansys Вебинары/Обзоры).