|
马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。
您需要 登录 才可以下载或查看,没有账号?注册
x
#include "udf.h"
int ID = 2;//燃烧室入口处的ID
int INTID = 9;//入口处的ID
DEFINE_ADJUST(get_pressure_and_adjust, domain)
{
Domain *d;
d = Get_Domain(1);
Thread *t = Lookup_Thread(d, ID);
Thread *th = Lookup_Thread(d, INTID);
cell_t c0;
Thread *t0;
face_t fh, fp;//fh是入口处的面、fp是ID=2的内部面
real Pw;
real xc[ND_ND], xv[ND_ND];//定义两个数组
thread_loop_c(t, domain)
{
begin_f_loop(fh, th)
{
F_CENTROID(xc, fh, th);//获取入口处网格中心
begin_f_loop(fp, t)
{
F_CENTROID(xv, fp, t);//
if ((xc[0] - xv[0]) > -0.0001 && (xc[0] - xv[0]) < 0.0001) //网格的x坐标误差在正负0.0001内,认为是匹配上了
{
c0 = F_C1(fp, t);
t0 = THREAD_T1(t);
Pw = C_P(c0, t0);
}
}
end_f_loop(fp, t)
}
end_f_loop(fh, th)
}
}
DEFINE_PROFILE(velocity_inlet, t, i)
{
face_t f;
cell_t c;
real GAMMA = 1.4;
real R = 8.314;
real P0 = 500000.0;
real T0 = 300.0;
real Pw, P;
real Pcr = P0 * pow(2.0 / (GAMMA + 1), GAMMA / (GAMMA - 1));
begin_f_loop(f, t)
{
if (Pw >= P0) {
// 基于堵塞情况下计算速度
F_PROFILE(f, t, i) = 0;
}
else if (Pw >= Pcr && Pw < P0) {
// 基于亚音速条件计算速度
P = Pw;
F_PROFILE(f, t, i) = sqrt((2 * GAMMA * R * T0) / (GAMMA - 1) * (1 - pow((P / P0), (GAMMA - 1) / GAMMA)));
}
else if (Pw < Pcr) {
// 基于超音速条件计算速度
P = Pcr;
F_PROFILE(f, t, i) = sqrt((2 * GAMMA * R * T0) / (GAMMA - 1));
}
end_f_loop(f, t)
}
}
这是关于旋转爆震发动机数值模拟入口处的边界条件,需要通过燃烧室入口第一层网格单元格内的压力变化情况,进行3种逻辑判断,得出3个不同的速度,然后将速度返回给入口处,以达到什么时候喷注气体以及气体以什么速度喷注。求各位大佬帮忙指点指点UDF的问题。非常感谢!!!!! |
|