| 查看: 1467 | 回复: 15 | ||
| 当前只显示满足指定条件的回帖,点击这里查看本话题的所有回帖 | ||
[求助]
帮忙看下这个udf有问题吗?初始化没问题,点计算出错
|
||
|
帮忙看下这个udf有问题吗?初始化没问题,点计算出错 #include "udf.h" /*包括常规宏*/ #include "sg_mphase.h" /*包括体积分数宏*/ #define LAT_HT 2260000 /*定义水蒸汽潜热*/ #define pi 3.1415 /*圆周率常数*/ #define R 8314 /*gas constant 8.314j/mol.K*/ #define moleweight 0.018 /*SI unit water mole weight 0.018kg/mol */ #define A 7.19621 #define B 1730.63 #define C 233.426 DEFINE_SOURCE(liq_src, cell, pri_th, dS, eqn) /*定义液相源项*/ { Thread *mix_th, *sec_th; /*混合相、第二相 定义计算区域指针*/ real m_dot_l; /*蒸发冷凝速率 定义液相质量转移*/ real P_SAT ; mix_th = THREAD_SUPER_THREAD(pri_th); /*指向混合区的主相即液相的指针*/ sec_th = THREAD_SUB_THREAD(mix_th, 1); /* 指向单相控制区的气相的指针*/ P_SAT=exp(A-B/(C_T(cell,pri_th)+C-273.15))*1e3; /*定义饱和蒸汽压与液相温度的关系式,即antoine公式*/ if(C_P(cell, sec_th)< P_SAT) {m_dot_l = -(P_SAT-C_P(cell,sec_th))*sqrt(moleweight)*(2*pi*R*C_T(cell,pri_th)); /*定义液相向气相转移的速率,如果气相的压力小于一定温度下的饱和蒸汽压,液相向气相发生质量转移*/ dS[eqn]= -2*pi*R*sqrt(moleweight)*(P_SAT-P_SAT*C_T(cell,pri_th)*B/pow((C_T(cell,pri_th)+C-273.15),2)-C_P(cell, sec_th)); /*定义源项对质量转移偏导,fabs为取绝对值*/ } else {m_dot_l = (P_SAT-C_P(cell,sec_th))*sqrt(moleweight)*(2*pi*R*C_T(cell,pri_th)); /*定义液相向气相转移的速率,如果气相压力大于一定温度下的饱和蒸汽压,气相向液相发生质量转移*/ dS[eqn] = 0; /*由于气相向液相转移,所以液相的质量源项对质量转移的偏导为零*/ } return m_dot_l; } DEFINE_SOURCE(vap_src, cell, sec_th, dS, eqn) { Thread *mix_th, *pri_th; real m_dot_v; real P_SAT ; mix_th = THREAD_SUPER_THREAD(sec_th); pri_th = THREAD_SUB_THREAD(mix_th, 0); P_SAT=exp(A-B/(C_T(cell,pri_th)+C-273.15))*1e3; if(C_P(cell, sec_th)< P_SAT) { m_dot_v = (P_SAT-C_P(cell,sec_th))*sqrt(moleweight)*(2*pi*R*C_T(cell,pri_th)); dS[eqn] =0; } else {m_dot_v = -(P_SAT-C_P(cell,sec_th))*sqrt(moleweight)*(2*pi*R*C_T(cell,pri_th)); dS[eqn]=-2*pi*R*sqrt(moleweight)*(P_SAT-P_SAT*C_T(cell,pri_th)*B/pow((C_T(cell,pri_th)+C-273.15),2)-C_P(cell, sec_th)); } return m_dot_v; } DEFINE_SOURCE(enrg_src, cell, mix_th, dS, eqn) { Thread *pri_th,*sec_th; real m_dot; real P_SAT; pri_th=THREAD_SUB_THREAD(mix_th,0); sec_th=THREAD_SUB_THREAD(mix_th,1); P_SAT=exp(A-B/(C_T(cell,pri_th)+C-273.15))*1e3; if(C_P(cell, sec_th)< P_SAT) { m_dot =- (P_SAT-C_P(cell,sec_th))*sqrt(moleweight)*(2*pi*R*C_T(cell,pri_th)); dS[eqn]=-2*pi*R*sqrt(moleweight)*(P_SAT-P_SAT*C_T(cell,pri_th)*B/pow((C_T(cell,pri_th)+C-273.15),2)-C_P(cell, sec_th)); } else { m_dot = (P_SAT-C_P(cell,sec_th))*sqrt(moleweight)*(2*pi*R*C_T(cell,pri_th)); dS[eqn]=2*pi*R*sqrt(moleweight)*(P_SAT-P_SAT*C_T(cell,pri_th)*B/pow((C_T(cell,pri_th)+C-273.15),2)-C_P(cell, sec_th)); } return LAT_HT*m_dot; } |
» 猜你喜欢
国自然申请面上模板最新2026版出了吗?
已经有6人回复
推荐一本书
已经有8人回复
溴的反应液脱色
已经有4人回复
参与限项
已经有5人回复
有没有人能给点建议
已经有5人回复
假如你的研究生提出不合理要求
已经有12人回复
全日制(定向)博士
已经有5人回复
萌生出自己或许不适合搞科研的想法,现在跑or等等看?
已经有4人回复
Materials Today Chemistry审稿周期
已经有4人回复
对氯苯硼酸纯化
已经有3人回复
wangdarui
铜虫 (正式写手)
- 应助: 0 (幼儿园)
- 金币: 152.3
- 帖子: 325
- 在线: 93.9小时
- 虫号: 1420285
- 注册: 2011-09-28
- 性别: GG
- 专业: 工程热物理相关交叉领域
16楼2013-09-10 21:49:29
2楼2013-09-05 10:39:39
【答案】应助回帖
★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
837729744: 金币+8 2013-09-05 11:04:03
1592203609: 金币+3, 谢谢回帖 2013-09-05 16:01:15
感谢参与,应助指数 +1
837729744: 金币+8 2013-09-05 11:04:03
1592203609: 金币+3, 谢谢回帖 2013-09-05 16:01:15
|
这种情况下,建议你对计算的数据进行检查。 你可以采用程序截断的形式,用Message插入可能出问题的位置前后,看是否能输出语言与数据,这样可以检测你的程序运行到哪里出现了浮点错误。 你还可以用Error语句来控制程序的停止,你可以让程序运行到任意位置停止,以便不让程序在每一个控制容积里运行。 出现浮点错误的原因,是你计算出现极大或极小值,比0等等。 调试程序需要耐心与经验,祝你好运! |

3楼2013-09-05 10:51:03

4楼2013-09-05 10:52:09












回复此楼