找回密码
 注册
查看: 168|回复: 1

UDF求助

[复制链接]
发表于 2024-4-6 10:35:18 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?注册

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的问题。非常感谢!!!!!
 楼主| 发表于 2024-4-6 10:36:43 | 显示全部楼层
顶顶顶,各位大佬帮帮忙

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表