24小时热门版块排行榜    

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

malu430

金虫 (小有名气)

[求助] 求程序查错,关于多组分多相流指针问题,解决的话送上所有金币

程序目的:计算licl溶液的表面张力系数
Licl溶液的表面张力系数是温度和浓度的函数

有高手能帮忙看下下面的程序,为什么液相指针找的不对呢?
C_UDMI(cell, mixture_thread, 0)的值按理应该是在液相等于sigma_water*(1+a1*MF+a2*MF*T/647.3+a3*MF*pow(T/647.3,2)+a4*pow(MF,2)+a5*pow(MF,3))。在气相应该等于初始值0,因为我对udm赋值只在液相中循环的。

但是情况却不是这样:C_UDMI(cell, mixture_thread, 0)的值在液相没问题,但
在气相C_UDMI(cell, mixture_thread, 0)= sigma_water
感觉这个程序的结果是并没有在液相循环,而是在整个区域都循环了,由于调用的浓度MF=0,所以在气相算出的结果就变成了sigma_water。
这个是什么原因呢?

/*计算表面张力系数,公式来源为参考文献的第页*/


DEFINE_PROPERTY(sigma_licl,cell,mixture_thread)
{
        return C_UDMI(cell, mixture_thread, 0);
}

DEFINE_ADJUST(my_adjust,domain)
{
        int zone_ID=13;//fluid的zone ID是,从界面获得
        int phase_ID=1;//液相的ID是
        int comp_ID=0;//组分licl的ID是
        cell_t cell;
        Thread *mixture_thread = Lookup_Thread(Get_Domain(1), zone_ID);//因为adjust不传输mixture_thread这个指针变量,所以先通过domain找到mixture_thread
        Thread *thread_l = THREAD_SUB_THREAD(mixture_thread, phase_ID);//通过mixture_thread找到液相指针

        real sigma_water;//水的表面张力
        real T;//温度,K
        real MF;//licl的浓度
   
        real a1=2.757115;
        real a2=-12.011299;
        real a3=14.751818;

        real a4=2.443204;
        real a5=-3.147739;

        real a6=235.8;
        real a7=0.625;
        real a8=1.256;

     begin_c_loop(cell, thread_l) //Licl溶液的表面张力系数是温度和浓度的函数,所以只在液相循环

        {
          T=C_T(cell,thread_l);//得到温度
          sigma_water=a6*(1-a7*(1-T/647.3))*pow((1-T/647.3),a8)*0.001;//得到水的表面张力系数
          MF= C_YI(cell, thread_l, comp_ID);//得到licl溶液的浓度
          C_UDMI(cell, mixture_thread, 0) = sigma_water*(1+a1*MF+a2*MF*T/647.3+a3*MF*pow(T/647.3,2)+a4*pow(MF,2)+a5*pow(MF,3));//得到licl溶液的表面张力系数
        }
    end_c_loop(cell, thread_l)
}
回复此楼

» 猜你喜欢

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

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

xiegangmai: 金币-1, 专业版块交流贴,请勿灌水 2012-10-27 20:13:59
2楼2012-10-26 18:43:30
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 malu430 的主题更新
信息提示
请填处理意见