24小时热门版块排行榜    

查看: 951  |  回复: 1
当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖

嘟嘟张

新虫 (初入文坛)

[求助] 两相流UDF编写求助已有1人参与

二维圆柱水滴撞击问题,编写UDF读取壁面第二层网格的水滴速度、密度和体积分数等,现在已经找到第二层网格了,但是读取值的时候还是有问题,求各位大神指导!


#include "udf.h"



DEFINE_ON_DEMAND(test)
{
        Domain *d;
        d = Get_Domain(3);/*water droplet phase*/
       
        face_t f;
        cell_t c;
        cell_t  c0, c1= -1;  /* 定义相邻面index,是个整数,内部面矢量从c0指向c1 */
        Thread *t0, *t1 = NULL; /*pointer to gouping of cell*/

        real NV_VEC(A);
        real NV_VEC(A0);
        real NV_VEC(A1);
        real NV_VEC(A2);
        real NV_VEC(A3);
        real NV_VEC(A4);
       

        int ID = 18;
        Thread *t = Lookup_Thread(d, ID);
       

        Thread *tm = THREAD_SUPER_THREAD(t);
        /* Thread tm will be a superthread, i.e., mixture */
        Thread **pt = THREAD_SUB_THREADS(tm);

        begin_f_loop(f, t)
        {
                F_AREA(A, f, t);
                c0 = F_C0(f, t);
                t0 = F_C0_THREAD(f, t);
                c1 = F_C1(f, t);       /* Get cell on other side of face */
                t1 = F_C1_THREAD(f, t);

        //循环C里面的每一个face 先确定 boundary face, fabf ;读取法向量nbf;对每一个face,读法向量;找到对面的face;确定对面的C,c2 计算通量,UC2,//
               
                int i = 3;
                int *n = 0;

                        c_face_loop(c0, t0, i)   /* loops over all faces of a cell */
                {
                        face_t f0, f1, f2, f3;
                        Thread *tf0, *tf1, *tf2, *tf3;
                        f0 = C_FACE(c0, t0, 0);
                        tf0 = C_FACE_THREAD(c0, t0, 0);
                        f1 = C_FACE(c0, t0, 1);
                        tf1 = C_FACE_THREAD(c0, t0, 1);
                        f2 = C_FACE(c0, t0, 2);
                        tf2 = C_FACE_THREAD(c0, t0, 2);
                        f3 = C_FACE(c0, t0, 3);
                        tf3 = C_FACE_THREAD(c0, t0, 3);

                        F_AREA(A0, f0, tf0); /*get vector A value*/
                        F_AREA(A1, f1, tf1); /*get vector A value*/
                        F_AREA(A2, f2, tf2); /*get vector A value*/
                        F_AREA(A3, f3, tf3); /*get vector A value*/
                        /*确定f1是第一层网格上平行于壁面的face*/


                        if (BOUNDARY_FACE_THREAD_P(tf1)==0) /*Get interior face values*/
                        {
                                cell_t  c2, c3 ;  
                                Thread *t2, *t3;

                                c2 = F_C0(f1, tf1);
                                t2 = F_C0_THREAD(f1, tf1);
                                c3 = F_C1(f1, tf1);       /* Get cell on other side of face */
                                t3 = F_C1_THREAD(f1, tf1);

                                F_AREA(A4, f1, tf1); /*get vector A value*/

                                /*确定c3是壁面第2层网格*/

                                C_UDMI(c0, t0, 0) = C_VOF(c0, t0);
                                C_UDMI(c0, t0, 1) = C_U(c0, t0);
                                C_UDMI(c0, t0, 2) = C_R(c0, t0);
                                /*能正常读取c0的值,但是c3的读不出来*/

                                C_UDMI(c0, t0, 3) = C_U(c3, t3);
                                C_UDMI(c0, t0, 4) = C_R(c3, t3);
                                C_UDMI(c0, t0, 5) = C_VOF(c3, t3);

                               
                        }
                        else
                        {
                               
                        }
                                       
                }
                                                       

        }
        end_f_loop(f, t)

               
}
回复此楼
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 嘟嘟张 的主题更新
信息提示
请填处理意见