24小时热门版块排行榜    

查看: 2349  |  回复: 6

lihongyang0

金虫 (初入文坛)

[交流] FLuent 空化 UDF能量源项

我写一个能量方程的源项,但是计算结果显示,我的源项加没加计算结果都一样,证明说这里面有地方写错了。但是我实在看不出来哪里弄错了。
我加载代码的方式应该是正确的吧(先iinterpreted,然后Cell zone, source前打勾,最后把能量UDF源选进去)
#include "udf.h"
#include "sg_mphase.h"

DEFINE_SOURCE(energy_source,c,m_t,dS,eqn)
{
        Thread *l_t, *v_t;       
        real m_dot, hc, source, fv, dT,m_dot2,source2;
        real cigma_m, cigma_m2,flag;
        real D_l, D_v,p_loc;
        real p_sat,p_sat2, T_loc, p_vapor,dp, dp2, T_loc2, p_vapor2;
        real p1, p2, p3, p4,m_dot_Re,m_dot_Re2,m_dot_Rc,m_dot_Rc2;
        real F_vap, F_cond, temp1, hc2;
        p_loc=C_P(c,m_t)*1000000;
        F_vap=0.02;
        F_cond=0.01;
        l_t=THREAD_SUB_THREAD(m_t,0);
        v_t=THREAD_SUB_THREAD(m_t,1);
        fv=C_VOF(c,v_t)*C_R(c,v_t)/(C_VOF(c,v_t)*C_R(c,v_t)+C_VOF(c,l_t)*C_R(c,l_t));

        T_loc=C_T(c,m_t);
        p1=10.86;
        p2=-1980;
        p3=1.233*100000;
        p4=-2.617*1000000;
        p_sat=p1*T_loc*T_loc*T_loc+p2*T_loc*T_loc+p3*T_loc+p4;
        dT=0.01;
        T_loc2=T_loc+dT;
        p_sat2=p1*T_loc2*T_loc2*T_loc2+p2*T_loc2*T_loc2+p3*T_loc2+p4;
        p_vapor=p_sat+0.5*0.39*C_R(c,m_t)*C_K(c,m_t);
        p_vapor2=p_sat2+0.5*0.39*C_R(c,m_t)*C_K(c,m_t);
        p1=3.424e-09;
        p2=-1.867e-07;
        p3= -0.0002614;
        p4=0.02863;
        cigma_m=p1*T_loc*T_loc*T_loc+p2*T_loc*T_loc+p3*T_loc+p4;
        cigma_m2=p1*T_loc2*T_loc2*T_loc2+p2*T_loc2*T_loc2+p3*T_loc2+p4;
        p1=-0.0002051;
        p2=0.03527;
        p3=-3.064;
        p4=320.1;
        hc=p1*T_loc*T_loc*T_loc+p2*T_loc*T_loc+p3*T_loc+p4;

        hc2=p1*T_loc2*T_loc2*T_loc2+p2*T_loc2*T_loc2+p3*T_loc2+p4;

        dp=p_vapor-p_loc;
        dp2=p_vapor2-p_loc;
        temp1=sqrt(C_K(c,m_t));
        D_l=C_R(c,l_t);
        D_v=C_R(c,v_t);
        m_dot_Re=0.0;
        m_dot_Rc=0.0;
        source=0.0;
        source2=0.0;
        flag=1000.0;
        if(p_loc<=p_vapor)           
        {

                m_dot_Re=F_vap*temp1/cigma_m*D_l*D_v*sqrt(2/3*dp/D_l)*(1-fv);

        }
        if(p_loc>p_vapor)                              
        {
                m_dot_Rc=F_cond*temp1/cigma_m*D_l*D_l*sqrt(2/3*(-dp)/D_l)*fv;
       
        }

        source=(m_dot_Re-m_dot_Rc)*hc*flag;
       
        dS[eqn]=0.0;
       
        return source;
}
回复此楼

» 收录本帖的淘帖专辑推荐

软件及其学习资料 fluent软件学习

» 猜你喜欢

» 本主题相关价值贴推荐,对您同样有帮助:

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

qqww2320

铜虫 (小有名气)

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
小木虫: 金币+0.5, 给个红包,谢谢回帖
lihongyang0: 金币+10 2014-06-04 13:43:47
程序编写的没用问题,我也分别用VOF.MIXTURE和euler的方式测试过了,没用问题,温度都有明显提升,你自己在试试吧,哪操作有错误吧。我用的编译的方式,不是用的解释法。
2楼2014-06-04 11:10:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

tjushang

捐助贵宾 (正式写手)

★ ★ ★ ★ ★ ★ ★ ★ ★
小木虫: 金币+0.5, 给个红包,谢谢回帖
lihongyang0: 金币+8 2014-06-05 09:34:42
温度没变化只说明一个问题,你的源项返回值太小了,在很短的时间内体现不出温度变化。试试把源项大小提高几个数量级看看。
王城的姓氏都改写 我还在这里守着夜 等什么从灰烬里面 破茧成蝶
3楼2014-06-05 09:17:45
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

lihongyang0

金虫 (初入文坛)

引用回帖:
3楼: Originally posted by tjushang at 2014-06-05 09:17:45
温度没变化只说明一个问题,你的源项返回值太小了,在很短的时间内体现不出温度变化。试试把源项大小提高几个数量级看看。

提高了,是有效果的,但已经不是原物理问题了
4楼2014-06-05 09:34:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
5楼2014-06-06 20:32:33
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

独恋sophia

木虫 (初入文坛)


小木虫: 金币+0.5, 给个红包,谢谢回帖
请问楼主这个Udf是实现空化中什么功能呢,我刚开始学习Udf,还不是很明白,望楼主不吝赐教哈

[ 发自手机版 http://muchong.com/3g ]
好好学习,天天向上
6楼2014-11-26 11:01:34
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

bittonny

铁虫 (初入文坛)


小木虫: 金币+0.5, 给个红包,谢谢回帖
你好,楼主,最后问题解决了吗
fortran、matlab、fluent、numeca
7楼2015-11-05 10:54:20
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 lihongyang0 的主题更新
普通表情 高级回复 (可上传附件)
信息提示
请填处理意见