ЕСТЬ ВОПРОСЫ? СВЯЗАТЬСЯ
English Ukrainian

Блог

Средняя температура по одной или нескольким граням тел в ANSYS Mechanical (Worbench)

ANSYS Средняя температура по одной или нескольким граням тел в ANSYS Mechanical (Worbench)

В модуле ANSYS Mechanical (Workbench) есть инструмент, который позволяет получить максимальную или минимальную температуру по выбранным геометрическим элементам, однако он не показывает среднюю температуру, получение которой иногда бывает необходимым. Если бы этот результат можно было выводить в качестве параметра, его можно было бы использовать для параметрических расчётов модели.

Расчёт средней температуры на поверхности тела заключается не просто в усреднении значения температуры по узлам: необходимо также учесть площадь поверхности элемента, которому принадлежит каждый узел. К счастью, взвешенное среднее можно найти с помощью функции ARNODE, которая выдаёт площадь грани элемента по номеру узла.
В данной статье описано использование команд APDL для Workbench Mechanical, с помощью которых в тепловом расчёте модели можно получить среднюю температуру по одной или нескольким выбранным граням.

Использование команд (Commands Object) для получения среднего значения на грани

Для того, чтобы сообщить в блок команд Commands Objects в Workbench Mechanical, по каким граням модели необходимо выполнить расчёт, можно использовать выборки Named Selections, которые передаются в расчёт ANSYS в качестве APDL-элемента Component. В описанном ниже макросе для обозначения узлов на одной или нескольких гранях, которые должны быть использованы для расчёта средней температуры, использована выборка под названием “Temp_Here” (название не чувствительно к регистру). Для корректной работы макроса в тепловых расчётах Workbench Mechanical должна быть обязательно задана выборка граней на твёрдых телах с таким именем.

В блок команд Commands Object можно передавать входные параметры с помощью области Input в свойствах (Details) элемента. В рассматриваемом макросе используется три входных параметра: шаг нагружения (Load Step), подшаг (Substep) или время, для которого необходимо сформировать результат. Если входные параметры не заданы, по умолчанию расчёт производится для последнего набора результатов в базе данных (используется команда SET,LAST). Список входных параметров:

  1. ARG1 – номер шага нагружения (Load Step)
  2. ARG2 – номер подшага нагружения (Substep)
  3. ARG3 – интересующее время

В макросе заложена следующая логика для получения результата:

  • Если ARG1 и ARG3 равны нулю, используется команда SET,LAST для расчёта по последнему набору результатов.
  • Если ARG1 не равен нулю, то параметр ARG3 игнорируется.
  • Если ARG1 не равен нулю, а ARG2 равен нулю, то команда SET считывает результаты для последнего подшага в заданном с помощью ARG1 шаге нагружения.

Блок команд Commands Object имеет три выходных параметра:

  1. Рассчитанное значение средней температуры
  2. Время результата, который был загружен с помощью команды SET на основе заданных входных параметров
  3. Индикатор ошибки при проверке выборки Named Selection, значение «1» означает отсутствие ошибок.

В макросе заложен базовый набор проверок на ошибки. При работе блока команд Commands Object в интерфейсе Workbench сообщения об ошибках не появляются, поэтому чтобы убедиться в правильности расчета средней температуры, пользователь должен проверить выходные параметры. Их можно посмотреть в свойствах (Details) элемента Commands Object.

Содержимое блока команд Commands Object может быть также использовано в качестве макроса непосредственно в APDL. При этом пользователь должен создать компонент «Temp_Here» с выборкой узлов на внешних поверхностях модели, по которым необходимо выполнить осреднение. В соответствии с описанием функции ARNODE, должны быть выбраны все узлы, принадлежащие элементам, по которым будет рассчитываться площадь для получения средней температуры.

Для расчёта температуры необходимо запустить расчёт модели в решателе (SOLVE), поэтому ещё до расчёта необходимо разместить блок команд Commands Object в разделе постобработки дерева построения Workbench Mechanical. При этом необходимо также создать выборку (Named Selection) с названием “Temp_Here” и задать входные параметры в Commands Object (шаг нагрузки, подшаг или время).

В качестве учебной задачи пользователи могут попробовать изменить приведенный ниже макрос. Например, можно рассчитать средние значения температуры для всех шагов и подшагов нагрузки в файле результатов и вывести эти значения в выходном тексте решателя (Output text). Можно также найти максимальные и минимальные значения температуры и время, которое им соответствует, и вывести их в списке выходных параметров блока команд Commands Object.

Вот перечень команд, которые необходимо задать в блоке команд Commands Object (этот перечень также можно назвать «макросом»):

! Используйте на свой страх и риск – было проведено только ограниченное тестирование
!
! Расчет средней температуры на гранях в Named Selection "Temp_Here"
! Значение средней температуры выводится в параметре "my_temp_avg",
! который можно найти в свойствах блока команд (Details>Results)
!
! Функция ARNODE возвращает площадь граней твердотельных элементов, связанных с
! выбранными узлами. Необходимо, чтобы выбранные узлы принадлежали внешней

! поверхности (граням) тела: если мы выберем только эти, то и в расчёте площади будут
! учтены только те грани элементов, которые принадлежат граням тела
!
! ARG1=интересующий шаг нагружения (loadstep)
! ARG2=интересующий подшаг (substep). Если параметр не указан, будет использован последний подшаг в шаге, заданном параметром ARG1
! ARG3=интересующее время. Этот параметр используется только при ARG1=0
!
fini
/post1
!
*if,ARG1,eq,0,then
   *if,ARG3,eq,0,then
      set,LAST       ! Если не указано иное значение, использовать последний набор результатов
      *MSG,WARN
      No Load Step or Time was provided to temperature average macro. %/&
      SET,LAST will be used for final Load Step. See my_time Output in Details.
   *else
      set,,,,,ARG3           ! если ARG1=0 и ARG3<>0, то использовать время, заданное в ARG3
   *endif
*else
   set,ARG1,ARG2
*endif
*get,my_time,ACTIVE,,SET,TIME        ! время считанного из базы данных результата
!
*get,comptype,COMP,Temp_Here,TYPE    ! проверка на тип компонента
*if,comptype,ne,1,then               ! является ли компонент выборкой узлов
   my_comp_test=0
   allsel
   set,last
   *MSG,ERROR
   Named Selection "Temp_Here" must be created on face(s) of interest.
   /EOF
   *return,-1
*endif
!
cmsel,s,Temp_Here                    ! выбор узлов на интересующих гранях
my_comp_test=1
!
*stat
*get,n_nodes,node,,count             ! сколько узлов в компоненте
*dim,node_arnode,array,n_nodes       ! площади граней элементов, связанных с каждым узлом
*dim,node_t_a,array,n_nodes          ! произведения температуры на площадь для каждого узла
node_next=0
*do,ii,1,n_nodes
   node_next=NDNEXT(node_next)       ! проход в цикле по всем узлам
   node_arnode(ii)=ARNODE(node_next) ! получение площади граней элементов
   node_t_a(ii)=ARNODE(node_next)*TEMP(node_next)   ! произведение
*enddo
*vscfun,sum_node_t_a,SUM,node_t_a(1) ! сумма произведений температур на площадь
*vscfun,sum_area,SUM,node_arnode(1)  ! сумма площадей
!
my_temp_avg=sum_node_t_a/sum_area    ! средняя температура на поверхности
                                ! значение сохраняется в выходной параметр my_temp_avg
allsel
set,last
!

Средняя температура будет получена в единицах измерения, используемых в решателе в соответствии с настройками Workbench. Значение средней температуры будет отображаться в виде выходного параметра “my_temp_avg” в свойствах (Details>Results) блока команд Commands Object.

Вывод

С помощью ADPL команд в дереве построения Workbench Mechanical возможен расчет средней температуры на интересующих гранях тела, для этого необходимо задать выборку по граням (Named Selection). Расчет взвешенного среднего значения (с учётом площадей граней конечных элементов) по температурам узлов на этих гранях тела обеспечивает получение величины, которая не зависит от формы или размеров граней элементов.

Для указания нужного набора результатов для расчёта пользователь может использовать входные параметры в свойствах (Details) блока команд Commands Object, в тех же свойствах в области Results будет выводиться значение средней температуры. Это значение может быть использовано в качестве параметра в среде Workbench, что позволяет производить параметрические расчёты.

ANSYS Блок команд Commands Object для расчёта средней температуры и его свойства (Details)

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

В описанном блоке команд Commands Object среднее значение рассчитывалось по узлам, расположенным на грани или гранях (т.е. на поверхности) твёрдого тела. Осредненные значения по выборке элементов, как правило, лучше получать с использованием двух команд ETABLE – одной для получения среднего значения по выбранному элементу, и второй для получения объема элемента. Далее с помощью команды SMULT можно получить поэлементные произведения (значение·объём), затем с помощью команд SSUM вычислить суммы и получить их значения двумя командами *GET. Наконец, осталось последнее действие для расчёта взвешенного среднего. Компонент, который будет использован в командах ETABLE, следует определить с помощью выборки (Named Selection) по твёрдым телам. Проверки и общий алгоритм макроса будут сходными с макросом, описанным выше.

Источник: https://www.simutechgroup.com/FEA/fea-tips-tricks-ansys-average-temperature.html

Facebook - ANSYS Soft Engineering Group

© 2010-2021 ANSYS | Софт Инжиниринг Групп. All rights reserved
Украина, 03127 Киев, Пр-т Академика Глушкова, 1
Тел. +38 044 494 4460 | карта сайта | Комплаенс

ansys certified channel partner

Search