CFD中文网

    CFD中文网

    • 登录
    • 搜索
    • 最新

    求助~Fluent PBM UDF-Luo聚并模型

    Fluent
    3
    6
    939
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • M
      Maud 最后由 编辑

      大家好~接触UDF不多久,请各位老师多给建议和帮助~先谢过~:huahua:
      我根据论文里对Luo聚并模型进行了一丢丢的修改,下面是代码:

      /************************************************************************
      UDF that computes the modified Luo coalescence kernel for surface tension change in PBE
      *************************************************************************/
      #include "udf.h"
      #include "sg_pb.h"
      #include "sg_mphase.h"
      #include "math.h"
      #define sigma 0.053
      
      
      DEFINE_PB_COALESCENCE_RATE(aggregation_kernel, cell, thread, d_1, thread_2, d_2)
      {
      	real agg_kernel;
      	real collision_rate;
      	real coalescence_efficiency;
      	real epsi;
      	real alpha_large;
      	real Ce;
      	real xi;
      	real We;
      	real rho_l,rho_g;
      	real u_mean, u1_mean,u2_mean;
      	real f;
      	Thread *tm;
      	Thread **pt;
      	Thread *tp;
      	  	  
      
      	/*find super thread*/
      	tm = THREAD_SUPER_THREAD(thread); /*obtain mixture thread */
      	pt = THREAD_SUB_THREADS(tm); /* pointer to sub_threads */
      	tp = pt[0]; /* primary phase thread */
      	epsi = C_D(cell, tm);  /*应该是这句有问题*/
      	alpha_large = 0.82 * pow(sigma / 0.072, 0.2);
      	Ce = 0.92 * (1.0 - pow(alpha_large, 1.2));
      	xi = d_1 / d_2;
      	rho_l = C_R(cell, tp);
      	rho_g = C_R(cell, thread);
      	u1_mean = 1.43 * pow(epsi * d_1, 1. / 3.);
      	u2_mean = 1.43 * pow(epsi * d_2, 1. / 3.);
      	u_mean = pow((pow(u1_mean, 2.) + pow(u2_mean, 2.)), 1. / 2.);
      	We = rho_l * d_1 * pow(u_mean, 2.) / sigma;
      	
      	/*collision_rate*/
      	collision_rate = M_PI / 4. * pow(d_1 + d_2, 2.) * u_mean;
      		
      	/*coalescence_efficiency*/
      	f = pow(0.75 * (1. + pow(xi, 2.)) * (1. + pow(xi, 3.)), 1. / 2.) / (pow((rho_g / rho_l + 0.5), 1. / 2.) * pow(1. + xi, 3.));
      	coalescence_efficiency = exp(-Ce * f * pow(We, 1. / 2.));
      
      	/*agg_kernel*/
      	agg_kernel = collision_rate * coalescence_efficiency;
      	return agg_kernel;
      }
      

      代码是根据UDF手册里改的。我做的是用dispersed SST kw的bubble column,CM求的PBE。
      UDF compiled和load都没有问题,但是一运行就提示下面的错误
      81dc1f91-a8d8-43ef-b317-6c81986079dd-image.png
      82b16917-ddb8-48e9-90a3-9986b8e0a1bb-image.png

      俺自己的想法是这样的:不知道问题是不是出在提取epsilon那里,因为把epsilon换成constant就没毛病~然后也试了其他几种方法,但都没能解决问题。 在原本可行的曳力模型UDF里面也试了下加入C_D的语句,会提示同样的错误。

      请大家帮忙看一下是啥的问题~再次蟹蟹大家~:xiexie:

      1 条回复 最后回复 回复 引用
      • 袁宝强
        袁宝强 最后由 编辑

        我没做过这个方向,不过看这里这么多thread,是不是你的C_D里面的thread用错了?要不检查一下tm、tp和thread这三个指针?

        M 1 条回复 最后回复 回复 引用
        • M
          Maud @袁宝强 最后由 编辑

          @袁宝强 蟹蟹老师指点~
          您说的这里我也有点疑惑,我用的是dispersed sst kw,但这里提取mixture和各相的指针用的是这个方法

          /*find super thread*/
          	tm = THREAD_SUPER_THREAD(thread); /*obtain mixture thread */
          	pt = THREAD_SUB_THREADS(tm); /* pointer to sub_threads */
          	tp = pt[0]; /* primary phase thread */
          

          不晓得是不是要用别的方法。但是除了epsilon提取mixture和liquid phase的都不行,后面的提取各相密度倒是没啥问题

          袁宝强 1 条回复 最后回复 回复 引用
          • 袁宝强
            袁宝强 @Maud 最后由 编辑

            @maud 你用的k-omega模型啊,那是不能直接得到C_D的,你可以用C_O去算C_D

            M 1 条回复 最后回复 回复 引用
            • M
              Maud @袁宝强 最后由 编辑

              @袁宝强 好滴~蟹蟹老师,我试一下~:huahua: 我之前特意看了手册,还以为是可以直接提取到的~:xinlei:

              S 1 条回复 最后回复 回复 引用
              • S
                sychen @Maud 最后由 编辑

                @maud 我上个月也遇见了和你相同的问题,确实提取不到epsilon,但是可以提起到omega,转换一下就好了

                1 条回复 最后回复 回复 引用
                • First post
                  Last post