Все ответы об инженерном анализе

Перед началом работы настоятельно рекомендуем ознакомиться с правилами форума.

Программирование в WB

emelya92
Аватар пользователя emelya92

 Приветствую Вас, господа. Прошу помочь (понимаю, что и сам дурак, и лыжи не смазал). Дело вот в чем - необходимо задать именно в WB термическую задачу: цилиндр с внутренним выделением тепла за счёт химической реакции (зависимость от температуры и от степени превращения) и конвективный теплоотвод на поверхностях . Проблемы - зависимость от температуры через gui не позволяет задать (только от времени), при использовании commands не могу связать t с начальной температурой, а цикл прокручивается на первом шаге (нет перебора по времени - сразу подставляется последнее значение), при использовании external data - не накладывает условия на элементы.

Цикл

*do,I,1,10

b=0 ! степень превращения

a=1-b

T=180 ! начальная температура

q=19.6*10^16*exp(-120000/8.314/(273+T))*a ! функция тепловыделения

be,all, hgen,q

Z=6*(T-20)/0.035 ! теплоотвод

T=(q-Z)/2000+180 ! связь с температурой 2000 теплоемкость

b=b+0.1

*enddo

Zagrebelny
Аватар пользователя Zagrebelny

Добрый день.

В принципе всё получается довольно логично. После определения нужной температуры вы не задали её, собственно, применение на определённом шаге.

Daniil
Аватар пользователя Daniil

а разве не надо ещё написать?

b = 1- l/10 !( эль, или это ай заглавная вот от сюда *do,I,1,10)

a=1-b

.....

 stime = 1 !( эль, или это ай заглавная вот от сюда *do,I,1,10)
 time,stime

solve

*enddo

emelya92
Аватар пользователя emelya92

Господа, благодарю! Выручили. Так и знал, что-то упустил.

Позвольте еще 3 вопроса:

1) при задании конвекции выделение места приложения (точек) проиводится также в solve?

2) насчет теплоотвода - в цикле задал как поправку при расчете температуры - если прописывать в коде и конвекцию, и тепловыделение (дабы избавиться от большого количества веток в дереве модели), то надо ли оставлять строку

Z=6*(T-20)/0.035 ! теплоотвод

или же просто задать через gui и не морочиться

3) как задать применение темпрературы после ее определения?

Если спрашиваю очевидные вещи, прошу прощение и буду признателен заподсказку, куда конкретно посмотреть.

Еще раз благодарю Вас за помощь. В жизни бы не догадался.

Daniil
Аватар пользователя Daniil

1) что за такое "в solve"? если имеется в виду /solution то да =)

2) думаю это Ваше личное дело

3) магическая комбинация команд nsel... и *get...

Все команды описаны в Help

emelya92
Аватар пользователя emelya92

Господа, что-то точно делаю не так. Вот измененный цикл вместе с командами nsel и *get

clear
antype,4
*do,i,1,10
time,i
nsel,all,node,temp
*get,t,node,n,temp
w=3e17/exp(120000/8.314/(273+t))
bf,all,hgen,w
solve
*enddo

При этом выдает следующее:

*** WARNING ***                     
 The degree of freedom solution is not available.                       
  Line= *GET, t, nodes,n, temp,                                          
  The *GET command is ignored.                     

Что в данной ситуации делать?

emelya92
Аватар пользователя emelya92

Господа. Подскажите, если возможно, еще такой момент в коммандах.

Решил выкрутиться с командой *get через вход в постпроцессор

antype,4
*do,i,1,10
time,i
w=3e17/exp(120000/8.314/(273+t))
bf,all,hgen,w
solve

finish

/post26

set,last

*get,t,node,100,temp

finish

/solu
*enddo

Но далее расче идет по времени не в интервале (i,i+1), а в (0,i+1), т.е происходит перерасчет уже расчитанного промежутка, но с новой температурой. Как от этого избавиться?

Возможно изобретаю велосипед, наставьте на путь истинный.

Благодарю за помощь.

emelya92
Аватар пользователя emelya92

Господа. Прошу прощение. С предыдущей проблемой разобрался.

Понимаю, что надоел.

Есть ли возможность задать таблицу значений, привязанную к конкретному элементу (или точке), но так, чтобы она сама заполнялась по определенным формулам, значения параметров для которых тоже брались из таблиц, заполняемых результатами с предыдущего шага нагружения? А полученные значения были собраны в единую таблицу для распространения по все точкам согласно их номеру.

Пробовал делать через

*dim,alfa,array,k

*do,i,k

alfa(1)=b+w/q

*enddo

emelya92
Аватар пользователя emelya92

Господа, если знаете, ответьте на такой вопрос - имеется ли возможность при программировании задать изменяющийся в зависимости от выходных параметрв сиганл - при резком увеличении/уменьшении температуры, например, шаг порядка милисекунд, а при монотонном изменении (линейная зависимость) - шаг становится крупным. Дело в том, что при изменеии переменной, отвечающей за шаг, в зависимости от условия в самом цикле, шаг остается постоянным. Есть возможность на шаг повлиять из цикла, или без вариантов? Благодарю за помощь

Добавить комментарий

Войдите или зарегистрируйтесь, чтобы отправлять комментарии
Приложить файл

Максимальный размер файла: 999 МБ.
Допустимые типы файлов: txt doc docx xls xlsx pdf rar zip 7zip tar.