24小时热门版块排行榜    

查看: 1530  |  回复: 15

837729744

铜虫 (小有名气)

[求助] 帮忙看下这个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;

}
回复此楼

» 猜你喜欢

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

已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
回帖支持 ( 显示支持度最高的前 50 名 )

转石千仞

金虫 (正式写手)

击破长空

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★
837729744: 金币+8, ★★★很有帮助 2013-09-06 08:43:19
引用回帖:
5楼: Originally posted by 837729744 at 2013-09-05 11:03:37
操作压力设为一个大气压,那么初始化时Gauge pressure的压力应该设为101325pa还是0pa(我想让我的模型处于一个大气压下)。我感觉是不是压力这块出问题了...

不是的。
设置参考压力后,你初始为0,即绝对压力为一个大气压。
故善战人之势,如转圆石于千仞之山者,势也
6楼2013-09-06 08:34:10
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

转石千仞

金虫 (正式写手)

击破长空

引用回帖:
11楼: Originally posted by 837729744 at 2013-09-07 08:37:34
还有就是都是在什么情况下,才用求导啊(dS=),明白为什么要对上式求导,求导的作用是什么?...

是为了加快收敛。
你应该去看相关理论些的书,你要明白,并不是所有答案,别人都可以告诉你的。你要自己去寻找。

» 本帖已获得的红花(最新10朵)

故善战人之势,如转圆石于千仞之山者,势也
12楼2013-09-07 10:16:23
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

837729744

铜虫 (小有名气)

错误代码:Error: Floating point error: invalid number

Error Object: ()
把所有质量转移速率和求导的式子改成为=0,(m_dot=0;dS[eqn]=0),可以进行计算,是不是式子的问题啊?求指导
2楼2013-09-05 10:39:39
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

转石千仞

金虫 (正式写手)

击破长空

【答案】应助回帖

★ ★ ★ ★ ★ ★ ★ ★ ★ ★ ★
感谢参与,应助指数 +1
837729744: 金币+8 2013-09-05 11:04:03
1592203609: 金币+3, 谢谢回帖 2013-09-05 16:01:15
引用回帖:
2楼: Originally posted by 837729744 at 2013-09-05 10:39:39
错误代码:Error: Floating point error: invalid number

Error Object: ()
把所有质量转移速率和求导的式子改成为=0,(m_dot=0;dS=0),可以进行计算,是不是式子的问题啊?求指导

这种情况下,建议你对计算的数据进行检查。
你可以采用程序截断的形式,用Message插入可能出问题的位置前后,看是否能输出语言与数据,这样可以检测你的程序运行到哪里出现了浮点错误。
你还可以用Error语句来控制程序的停止,你可以让程序运行到任意位置停止,以便不让程序在每一个控制容积里运行。
出现浮点错误的原因,是你计算出现极大或极小值,比0等等。
调试程序需要耐心与经验,祝你好运!
故善战人之势,如转圆石于千仞之山者,势也
3楼2013-09-05 10:51:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

转石千仞

金虫 (正式写手)

击破长空

【答案】应助回帖

★ ★
1592203609: 金币+2, 谢谢回帖 2013-09-05 16:01:29
引用回帖:
2楼: Originally posted by 837729744 at 2013-09-05 10:39:39
错误代码:Error: Floating point error: invalid number

Error Object: ()
把所有质量转移速率和求导的式子改成为=0,(m_dot=0;dS=0),可以进行计算,是不是式子的问题啊?求指导

你的求导的式子,可能产生了极大值,“变化“太大,你的方程立马发散。
故善战人之势,如转圆石于千仞之山者,势也
4楼2013-09-05 10:52:09
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

837729744

铜虫 (小有名气)

引用回帖:
4楼: Originally posted by 转石千仞 at 2013-09-05 10:52:09
你的求导的式子,可能产生了极大值,“变化“太大,你的方程立马发散。...

操作压力设为一个大气压,那么初始化时Gauge pressure的压力应该设为101325pa还是0pa(我想让我的模型处于一个大气压下)。我感觉是不是压力这块出问题了
5楼2013-09-05 11:03:37
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

837729744

铜虫 (小有名气)

引用回帖:
3楼: Originally posted by 转石千仞 at 2013-09-05 10:51:03
这种情况下,建议你对计算的数据进行检查。
你可以采用程序截断的形式,用Message插入可能出问题的位置前后,看是否能输出语言与数据,这样可以检测你的程序运行到哪里出现了浮点错误。
你还可以用Error语句来控 ...

Message插入和用Error语句来控制程序的停止,我不会啊,难吗?怎么弄啊?
7楼2013-09-06 08:56:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

转石千仞

金虫 (正式写手)

击破长空

引用回帖:
7楼: Originally posted by 837729744 at 2013-09-06 08:56:51
Message插入和用Error语句来控制程序的停止,我不会啊,难吗?怎么弄啊?...

建议你去看帮助文件。里面有,两条语句而已,不难的。
故善战人之势,如转圆石于千仞之山者,势也
8楼2013-09-06 18:32:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

837729744

铜虫 (小有名气)

现在可以计算了,如果转移质量速率公式是这个:m_dot = -(P_SAT-C_P(cell,pri_th))*sqrt(moleweight/(2*pi*R*C_T(cell,sec_th)))。不知道对这个公式的质量项求导是什么(dS[eqn]=。。。)。原先dS[eqn]公式估计也不对。
9楼2013-09-06 19:10:55
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

转石千仞

金虫 (正式写手)

击破长空

【答案】应助回帖


1592203609: 金币+1, 谢谢回帖 2013-09-07 21:16:40
引用回帖:
9楼: Originally posted by 837729744 at 2013-09-06 19:10:55
现在可以计算了,如果转移质量速率公式是这个:m_dot = -(P_SAT-C_P(cell,pri_th))*sqrt(moleweight/(2*pi*R*C_T(cell,sec_th)))。不知道对这个公式的质量项求导是什么(dS=。。。)。原先dS公式估计也不对。...

对变量求导,你求解的是什么方程,方程中将哪个量作为变量,你就对该求量求导。
故善战人之势,如转圆石于千仞之山者,势也
10楼2013-09-06 20:10:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 837729744 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考研] 0856化工专硕求调剂 +8 董boxing 2026-03-01 8/400 2026-03-01 16:49 by caszguilin
[考研] 材料学硕318求调剂 +8 February_Feb 2026-03-01 10/500 2026-03-01 16:48 by sunny81
[考研] 0805总分292,求调剂 +4 幻想之殇 2026-03-01 4/200 2026-03-01 16:47 by ms629
[基金申请] 刚录用,没有期刊号,但是在线可看的论文可以放为代表作吗 10+3 arang1 2026-03-01 3/150 2026-03-01 16:43 by babero
[考研] 313求调剂 +3 水流年lc 2026-02-28 3/150 2026-03-01 16:01 by 新能源达人
[考研] 311求调剂 +6 亭亭亭01 2026-03-01 6/300 2026-03-01 15:41 by 324616
[考研] 0856调剂 +4 刘梦微 2026-02-28 4/200 2026-03-01 15:35 by 吸一口猫气
[考研] 307求调剂 +5 wyyyqx 2026-03-01 5/250 2026-03-01 15:21 by Fff-1
[考研] 304求调剂 +6 曼殊2266 2026-02-28 7/350 2026-03-01 15:14 by wjLi2017
[考研] 298求调剂 +9 人间唯你是清欢 2026-02-28 12/600 2026-03-01 14:23 by Ducount.Y
[考研] 材料学调剂 +8 提神豆沙包 2026-02-28 10/500 2026-03-01 14:14 by peike
[考研] 0856材料求调剂 +3 麻辣鱿鱼 2026-02-28 3/150 2026-03-01 14:06 by yc258
[考研] 302材料工程求调剂 +4 Doleres 2026-03-01 5/250 2026-03-01 11:52 by liqiongjy
[考研] 调剂 +3 简木ChuFront 2026-02-28 3/150 2026-03-01 11:46 by 王伟要上岸啊
[考研] 材料类求调剂 +8 wana_kiko 2026-02-28 8/400 2026-03-01 11:44 by 王伟要上岸啊
[考研] 寻找调剂 +4 LYidhsjabdj 2026-02-28 4/200 2026-03-01 10:56 by sunny81
[硕博家园] 2025届双非化工硕士毕业,申博 +3 更多的是 2026-02-27 4/200 2026-03-01 10:04 by ztg729
[考研] 材料调剂 +4 爱擦汗的可乐冰 2026-02-28 4/200 2026-03-01 00:38 by 猫猫球alter
[考研] 304求调剂 +3 52hz~~ 2026-02-28 5/250 2026-03-01 00:00 by 52hz~~
[硕博家园] 【博士招生】太原理工大学2026化工博士 +4 N1ce_try 2026-02-24 8/400 2026-02-26 08:40 by N1ce_try
信息提示
请填处理意见