CFD中文网

    CFD中文网

    • 登录
    • 搜索
    • 最新

    请问如何在FLUENT中如何使用UDF修正tansiton SST模型

    Fluent
    udf transition sst
    1
    2
    1390
    正在加载更多帖子
    • 从旧到新
    • 从新到旧
    • 最多赞同
    回复
    • 在新帖中回复
    登录后回复
    此主题已被删除。只有拥有主题管理权限的用户可以查看。
    • Q
      QuietCheng 最后由 李东岳 编辑

      在FLUENT中使用tansiton SST转捩模型时,可以对Re_theta, Flength 和 Re_theta_c三个参数使用UDF进行修改,1.FLUENT在这个转捩模型的UDF接口中只提供了这三个参数对应的接口,如下图
      adfa9fbc-1de4-4c15-a83f-d058e6b69c2a-image.png
      UDF manual中也对这一部分设置了对应的例子,如下:

      #include "udf.h"
      
      DEFINE_TRANS_FLENGTH(user_Flength, c, t)
      {
        real Flength = 31.468;
      
        return Flength;
      }
      
      DEFINE_TRANS_RETHETA_C(user_Re_thetac, c, t)
      {
        real Re_thetac = 176.396;
      
        return Re_thetac;
      }
      
      DEFINE_TRANS_RETHETA_T(user_Re_thetat, c, t)
      {
        real Re_thetat = 210;
      
        return Re_thetat;
      }
      

      但是在实际文献中,这三个参数是和另一个参数Re_thetat_ba相关。比如:
      57349002-97e0-4dfb-b2a0-93531e1cba06-image.png
      而这个参数是通过一个输运方程求解(转捩模型内嵌)。
      所以需要在上述UDF代码中求解参数应该是要调用Re_thetat_ba,这个参数具体信息我又不知道,因此不知道怎么写这个UDF。
      求教一下有做过的或者类似经历的大神,不甚感激:xinxin:

      1 条回复 最后回复 回复 引用
      • Q
        QuietCheng 最后由 李东岳 编辑

        自己顶一下这个帖子
        这段时间又重复看了文献,发现暂时能够写其中一个DEFINE_TRANS_RETHETA的UDF,源代码如下:

        #include "udf.h"
        #include "mem.h"
        
        DEFINE_TRANS_RETHETA_T(user_Re_thetat, c, t)
        {
        	/*变量定义(通过变量宏文件获取具体流场参数)*/
        	
        	real Re_thetat;          //当地转捩雷诺数(迭代求解)Rethetat = F(Tu)*F(lamda_theta)
        	//当地湍流度定义
        	real FTu;                 //F(Tu)
        	real Tu;                 //当地湍流度
        	real TKE = C_K(c,t);       //湍动能  C_K(c,t)
        	real U = C_VMAG2(c,t);   //当地速率   
        //  real U = sqrt(C_U(c,t)*C_U(c,t)+C_V(c,t)*C_V(c,t)+C_W(c,t)*C_W(c,t));
        	 
        
        	//当地压力因子定义
        	real Flamda_theta;        //F(lamda_theta)
        	real lamda_theta0;        //压力梯度因子
        	real lamda_theta1;        //压力梯度因子
        	real K;                 //加速因子
        //  real theta;              //当地动量厚度(迭代求解)
        	real miu;               //运动学粘性系数 v = u/rou
        	
        	
        	real dUdx;              //速率沿不同方向导数(dUds,dUdx,dUdy,dUdz)
        	real dUdy;
        	real dUdz;
        	real dUds;	
        	
        	//变量求解
        	
        	//首先获取基本流体参数比如速度、湍动能、倒数等,再计算相关参数
        
        	dUdx = 0.5*pow(U*U,-0.5)*(2.0*C_U(c,t)*C_DUDX(c,t)+2.0*C_V(c,t)*C_DUDX(c,t)+2.0*C_W(c,t)*C_DUDX(c,t));
        	dUdy = 0.5*pow(U*U,-0.5)*(2.0*C_U(c,t)*C_DUDY(c,t)+2.0*C_V(c,t)*C_DUDY(c,t)+2.0*C_W(c,t)*C_DUDY(c,t));
        	dUdz = 0.5*pow(U*U,-0.5)*(2.0*C_U(c,t)*C_DUDZ(c,t)+2.0*C_V(c,t)*C_DUDZ(c,t)+2.0*C_W(c,t)*C_DUDZ(c,t));
        	dUds = (C_U(c,t)/U)*dUdx+(C_V(c,t)/U)*dUdy+(C_W(c,t)/U)*dUdz;
        	
        	miu = pow(C_T(c,t)/288.15,1.5)*(288.15+110.4)/(C_T(c,t)+110.4)*1.4607*pow(10.0,-5.0)/C_R(c,t);   //计算运动学粘性系数
        	K = miu/(U*U)*dUds;	                                                                             //计算加速因子
        	Tu = 100.0*sqrt(2.0*TKE/3.0)/U;                                                                  //计算湍流度
        	
        	
        	//迭代求解theta
        	lamda_theta0 = 0;
        	lamda_theta1 = 0;
        	do
        	{
        		lamda_theta0 = lamda_theta1; 
        		/***********************求Re_thetat********/
        		if(Tu > 1.3) 
        		{
        			FTu = 331.5*pow((Tu-0.5658),-0.671);
        		}
                   else 
        		{
        			FTu = 1173.51-589.428*Tu+0.2196/(Tu*Tu);
        		}
        		if(lamda_theta0 > 0) 
        		{
        			Flamda_theta = (1.0+0.275*(1.0-exp(-35.0*lamda_theta0))*exp(-2.0*Tu));
        		}
        		else 
        		{
        			Flamda_theta = (1.0+(12.986*lamda_theta0+123.66*(lamda_theta0*lamda_theta0)+405.689*pow(lamda_theta0,3.0))*exp(-pow((Tu/1.5),1.5)));
        		}
        		Re_thetat = FTu*Flamda_theta;
        		/******************************************/
        		
        	    lamda_theta1 = (Re_thetat*Re_thetat)*K; 
        		
        	} while(fabs(lamda_theta1-lamda_theta0) < 0.01)
        		
            return Re_thetat;	
        }
        

        但是在FLUENT里面interpreted的时候报错
        a4c326d7-09fe-4d62-b316-79f687a754c0-image.png
        这里75、76就是最后两行,返回值和右括号。
        请教一下大家:chouchou:

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