| 查看: 1461 | 回复: 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; } |
» 猜你喜欢
参与限项
已经有4人回复
有没有人能给点建议
已经有5人回复
假如你的研究生提出不合理要求
已经有12人回复
全日制(定向)博士
已经有5人回复
萌生出自己或许不适合搞科研的想法,现在跑or等等看?
已经有4人回复
Materials Today Chemistry审稿周期
已经有4人回复
对氯苯硼酸纯化
已经有3人回复
所感
已经有4人回复
要不要辞职读博?
已经有7人回复
北核录用
已经有3人回复
» 本主题相关价值贴推荐,对您同样有帮助:
FLUENT中编写UDF时指针变量是否要初始化
已经有4人回复
fluent14编译UDF时总是出错,求高手啊!!!难道没人遇到过吗???
已经有11人回复
求助:模型初始化时出错
已经有5人回复
fluent udf请教
已经有16人回复
一个UDF并行报错
已经有17人回复
导入UDF时出这种错误!!
已经有4人回复
UDF 改为并行计算
已经有9人回复
FLUENT UDF 编译通过,初始化出错的原因???求助
已经有4人回复
求助!!!我想要在fluent中针对一个面进行积分,那么UDF应该用什么宏函数?怎么用?
已经有5人回复
好心人帮帮忙吧,为什么这个UDF导入fluent以后,在边界条件处没有显示~~~
已经有17人回复
怎样解决FLUENT received fatal signal (ACCESS_VIOLATION)的错误?
已经有20人回复
udf编译出错!急
已经有10人回复
udf编程通过,但是在FLUENT中运行出错,麻烦udf高手帮忙看看
已经有4人回复
使用UDF后,初始化错误
已经有11人回复
【求助】fluent初始化的时候出现问题,请大家指点,在线等,多谢各位了
已经有4人回复
【求助】fluent计算中,udf编译通过,初始化出错
已经有11人回复
【求助】udf出错
已经有13人回复

6楼2013-09-06 08:34:10
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












回复此楼