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

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

Генерация тепла на Coupled Wall

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

Добрый день!
Подскажите, пожалуйста, как правильно подайти к решению задачи:
Есть граница Fluid/Solid c граничными условиями Coupled Wall. На данной границе надо модифицировать теловой поток - добавить поверхностный / объемный источник тепла. Источник тепла зависит от температур в ячейках по обеим сторонам граници.   Как правильно это сделать?
Попробовал через DEFINE_PROFILE, однако возникли сложности с определением температур в сопряженных ячейках. Проблема в получение указателя на потоки ячеек для Fluid и Solid.
У меня получился такой код для определения T смежных ячеек, но он не работает.
 DEFINE_PROFILE(heat_flux,t,i)
 {
    double Tfluid,Tsolid;
    thread *ts; //shadow face thread
    thread *t0; //thread for fluid cell
    thread *t1; //thread for solid cell
    cell_t c0;  //cell fluid
    cell_t c1; //cell solid
    begin_f_loop(f,t)
    {
        c0=F_C0(f,t);
        t0 = THREAD_T0(t);
        Tfluid=C_T(c0,t0);
        
        if (!NULLP(ts = THREAD_SHADOW(t)))
         {
            c1=F_C0(f,ts);
            t1=THREAD_T0(ts);
            Tsolid=C_T(c1,t1);
         }
         F_PROFILE(f,t,i) = 100500*(Tsolid-Tfluid);
    }
    end_f_loop(f,t)
 } 

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

Нашёл изящное решение вашего вопроса. https://www.eureka.im/971.html

Это код для однократного расчёта разности температур по обе стороны стенки
Можете переписать под DEFINE_ADJUST, загрузить разницу температур в память C_UDMI и использовать в DEFINE_PROFILE, ну или сразу под DEFINE_PROFILE переписать

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


It is sometimes necessary to reference the cells on either side of the wall/wall-shadow zone. Mostly to get the temperature difference. But F_C1 does not work here. Instead, there are a couple of macros that work here -
Thread *t_shadow=THREAD_SHADOW(t);
face_t f_shadow=F_SHADOW(f,t);
These are defined in "mem.h".
The resolution below contains a UDF that uses these macors to compute the temperature difference between a solid cell and fluid cell separated by a wall - wall shadow zone.

 

 


#include "udf.h"
#define wall_id 11 /*change this number according to your case */

DEFINE_ON_DEMAND(temp_diff_shadow)
{
Domain *d=Get_Domain(1);
Thread *wall_t=Lookup_Thread(d,wall_id); /* get the wall thread*/
Thread *wall_shadow_t=THREAD_SHADOW(wall_t); /*get the wall shadow thread */

Thread *wall_cell_t,*shadow_cell_t;
cell_t wall_c,shadow_c;
face_t f,f_shadow;
real temp_diff;

begin_f_loop(f,wall_t) /* loop over all the faces of the wall */
{
wall_cell_t=THREAD_T0(wall_t); /* get the cell zone in the wall side */
wall_c=F_C0(f,wall_t);

f_shadow=F_SHADOW(f,wall_t); /*get the corresponding face in the shadow thread */

shadow_cell_t=THREAD_T0(wall_shadow_t); /*get the cell sone in the shadow side */
shadow_c=F_C0(f_shadow,wall_shadow_t);

temp_diff=C_T(wall_c,wall_cell_t)-C_T(shadow_c,shadow_cell_t);
Message("Temp Diff = %gn",temp_diff);
}
end_f_loop(f,wall_t)

}

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

Спасибо!

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

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

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