24小时热门版块排行榜    

查看: 7428  |  回复: 18

kylafree

至尊木虫 (知名作家)


[交流] 【求助】求UDF高手帮忙看看我的问题


如图:
(1).初始时刻,矩形区域内上半部分(区域1+2)为质量分数为5%的甲醛+95%的空气的混合气体。下半部分(区域3+4)为0%的甲醛+100%的水。

(2). 空气中的甲醛会在气液交界面处发生溶解,即区域2中的甲醛因溶解而进入区域3中(设溶解过程瞬间即可完成),于是水区域的上部(区域3)有了甲醛,而水区域4还没有甲醛,于是由于浓度差甲醛会从水区域的上部(区域3)往下部(区域4)扩散。
同时空气区域的下部(区域2)由于甲醛溶解到水中而浓度降低,也引起空气区域中甲醛从上部(区域1)往下部(区域2)扩散。

(3). 甲醛的溶解过程由平衡分配关系决定。假设甲醛在空气和水中的平衡分配系数为0.1(即,上述溶解与扩散过程经过足够长时间后总会稳定,设稳定后 [甲醛在空气中的浓度a0):(甲醛在水中的浓度b0)=0.1] 这是一个物理定律。稳定后的浓度比是定值,与初始状态无关。

(4). 选用VOF两相流模型(主相设为甲醛(占5%)+空气(占95%)的混合气,第二相设为甲醛(占0%)和水(占100%)的混和物)
+species transport模型。

气液交界面为边界条件设为wall,其它边界也为wall
两相交互作用Phase interacion中设置一个mass transfer mechnism

(5).编程想法:
找到气液交界面,然后提取出交界面上方单元(区域2)甲醛的浓度,设其为a;
  再提取出交界面下方单元(区域3)甲醛的浓度,设为b;
再根据甲醛在气相和液相中的平衡分配系数0.1
由     a+b=a0+b0   (分配前后质量守恒)
       a0/b0=0.1     (分配稳定后满足平衡分配系数关系)
解上面方程组得a0=(0.1/(0.1+1) )* (a+b) ,b0=(1/(0.1+1)) * (a+b)
并把a更新为a0,b更新为b0。
即a=(0.1/(0.1+1)) * (a+b)
   b=(1/(0.1+1) )* (a+b)
(6).溶解平衡分配关系完成后,根据上面物理原理第(2)条,由于扩散原因会打破这个平衡。于是新的平衡分配又开始了。过通过循环完成。
If (b/a<0.1) 溶解平衡分配就会发生。

比如最开始甲醛在气相的浓度为a=5%,甲醛在水中的浓度为b=0,
显然b/a<0.1,所以按平衡分配关系把a,b更新为
a=0.1/(0.1+1) * 5%
b=1/(0.1+1) *5%
这样气液两相中便出现浓度差了,两相中各自又会发生扩散,扩散又会打破平衡分配关系......
就是这个过程。
下面为根据 HELP 中UDF写的程序,但编译有错。也不知道能不能正确描述我的问题。望各个高手帮忙看看。万分感谢。

DEFINE_MASS_TRANSFER(liq_gas_transfer, cell, mix_thread, from_index, from_species_index, to_index, to_species_index)
{
real a,b,c;
cell_t c0,c1;
Thread *tc0,*tc1;
Domain *domain=Get_Domain(1);
face_t f;
int ID=9;    /* 交界处wall边界的ID*/

Thread *zhong_thread=Lookup_Thread(domain,ID);  /* 获取交界面处wall的指针*/                                                  
begin_f_loop(f,zhong_thread)     /* 循环于交界面中的所有face*/
{
c0=F_CO(f,zhong_thread);    /*左边的cell标为c0*/
tc0=THREAD_T0(zhong_thread);    /*左边的cell的指针tc0*/
c1=F_C1(f,zhong_thread);    /*右边的cell标为c1*/
tc1=THREAD_T1(zhong_thread);    /*右边的cell的指针tc1*/

a=C_YI(c0,tc0,from_species_index);  /*获取co的质量分数*/
b=C_YI(c1,tc1,to_species_index);  /*获取c1的质量分数*/                          

if(a>(10.0/11.0)*(a+b))  
c=(10.0/11.0)*(a+b)-a;   /*按分配关系,如果a>分配后的a0,则记录应返回值c=a0-a*/
  
if(b<(1.0/11.0)*(a+b))
c=(1.0/11.0)*(a+b)-b;    /*按分配关系,如果b<分配后的b0,则记录应返回值c=b0-b*/
}
return(c);       /*返回c*/
end_f_loop(f,zhong_thread)
}

[ Last edited by kylafree on 2011-1-5 at 16:37 ]
回复此楼

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

多相流UDF fluent气液两相udf

» 猜你喜欢

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

» 抢金币啦!回帖就可以得到:

查看全部散金贴

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

47425804

木虫 (正式写手)


★ ★ ★
kylafree(金币+30): 2011-01-04 16:07:18
robert2020(金币+3):辛苦了! 2011-01-11 10:48:25
问题是有一些:
1. domain指针没有赋值,要加上这么一句:dimain = Get_Domain(1);
2. DEFINE_MASS_TRANSFER宏是用于每个cell的,好像不是对face赋值的,更不能用begin_f_loop了。
3. 我对这个UDF的理解还不深,或许用begin_f_loop是没有问题的,但是在循环里面用return (c);就有问题了,你的第一次循环就会返回值并结束函数。
4. begin_f_loop(f,interior_thread) 对应的应该是end_f_loop(f,interior_thread) 。
5. 你确认一下单位的问题,返回值单位要求是kg/m3-s,我对你的公式不熟,不知道对不对。
2楼2011-01-04 10:00:54
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

47425804

木虫 (正式写手)


★ ★
xiegangmai(金币+2):谢谢参与 2011-01-15 08:42:43
关于楼主的这个问题,我说说我想的编程思路吧:
用DEFINE_MASS_TRANSFER宏,在函数里,先判断当前的cell是不是靠近相界面的cell;如果不是,返回0;如果是,判断是液相还是气相;如果是气相,那么要找到与之相对应的液相cell,分别获取二者中需要的参数,求取质量传递速率,并返回值;如果是液相,同样找到对应的气相cell,求取传递速率并返回值。
3楼2011-01-04 10:06:00
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

kylafree

至尊木虫 (知名作家)


引用回帖:
Originally posted by 47425804 at 2011-01-04 10:00:54:
问题是有一些:
1. domain指针没有赋值,要加上这么一句:dimain = Get_Domain(1);
2. DEFINE_MASS_TRANSFER宏是用于每个cell的,好像不是对face赋值的,更不能用begin_f_loop了。
3. 我对这个UDF的理解还不深 ...

我写begin_f_loop的原意是想找到气液交界面这个Thread,然后循环于这个Thread的所有face, 再通过F_CO,F_C1找到每一个face两边的cell , 然后提取两边cell的浓度信息
8楼2011-01-04 17:01:07
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

kylafree

至尊木虫 (知名作家)


引用回帖:
Originally posted by zzt_1234 at 2011-01-04 16:59:36:

我想说的是分母不能为零吧。b=0是不是有问题。分母为零就会提示“float .....”

[ Last edited by zzt_1234 on 2011-1-4 at 17:03 ]

可以反过来判断,用if(b/a<0.1),过程就发生来判断
10楼2011-01-04 17:11:01
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zzt_1234

木虫 (著名写手)



xiegangmai(金币+1):鼓励讨论 2011-01-14 16:45:38
kylafree(金币+10): 2011-02-26 14:30:38
引用回帖:
Originally posted by kylafree at 2011-01-03 16:58:39:

如图:
(1).初始时刻,矩形区域内上半部分(区域1+2)为质量分数为5%的甲醛+95%的空气的混合气体。下半部分(区域3+4)为0%的甲醛+100%的水。

(2). 空气中的 ...

你的程序考察了wall附近单层网格的传递,但是这层网格之外的传递是否也是这个规律呢?
13楼2011-01-14 16:35:14
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

yanlinlele

新虫 (初入文坛)



小木虫(金币+0.5):给个红包,谢谢回帖
您好 我现在也在做一些用fluent模拟气液吸收的问题 能和您讨教一些问题吗 能告诉我您的QQ号吗?
我想知道甲醛和空气的混合气体是怎么设置得到的,还有怎么同时应用两相流模型和传输模型,加载了UDF后怎么使用
我是学FLUENT的新手 很多不懂的问题 希望能得到您的指导 不甚感激!!
14楼2012-02-19 22:32:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

kylafree

至尊木虫 (知名作家)


臭水沟(金币+1): 谢谢交流~~ 2012-02-21 18:03:37
引用回帖:
: Originally posted by yanlinlele at 2012-02-19 22:32:28:
您好 我现在也在做一些用fluent模拟气液吸收的问题 能和您讨教一些问题吗 能告诉我您的QQ号吗?
我想知道甲醛和空气的混合气体是怎么设置得到的,还有怎么同时应用两相流模型和传输模型,加载了UDF后怎么使用
我 ...

帮助文档Chapter 16: Modeling Species Transport and Finite-Rate Chemistry和UDF HELP 的Chapter 8: Examples你看看
15楼2012-02-21 11:33:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
普通回帖

47425804

木虫 (正式写手)



xiegangmai(金币+1):辛苦了 2011-01-14 16:44:50
关于判断气相还是液相及查找对应的另一相cell,方法就很多了。
可以通过组分含量判断,也可以通过cell坐标判断,楼主自己根据编程方便选择就行。
4楼2011-01-04 10:07:28
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

kylafree

至尊木虫 (知名作家)


引用回帖:
Originally posted by 47425804 at 2011-01-04 10:00:54:
问题是有一些:
1. domain指针没有赋值,要加上这么一句:dimain = Get_Domain(1);
2. DEFINE_MASS_TRANSFER宏是用于每个cell的,好像不是对face赋值的,更不能用begin_f_loop了。
3. 我对这个UDF的理解还不深 ...

非常非常感谢您的回复,您写的意见对我的启发很大。虽然我现在还是没有把这个UDF做对。望再向您请教。。。
5楼2011-01-04 16:06:50
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

kylafree

至尊木虫 (知名作家)


robert2020(金币+2):多谢应助! 2011-01-11 10:48:58
robert2020(金币-2):不好意思,评帖失误,欢迎常来仿真模拟版交流! 2011-01-11 10:50:43
引用回帖:
Originally posted by 47425804 at 2011-01-04 10:00:54:
问题是有一些:
1. domain指针没有赋值,要加上这么一句:dimain = Get_Domain(1);
2. DEFINE_MASS_TRANSFER宏是用于每个cell的,好像不是对face赋值的,更不能用begin_f_loop了。
3. 我对这个UDF的理解还不深 ...

这个UDF,就是先找到气液两相的交界面,
然后提取出交界面上方单元甲醛的浓度,即甲醛在气相中的浓度,设为a;
  再提取出交界面下方单元甲醛的浓度,即甲醛在液相中的浓度,设为b;
再根据甲醛在气相和液相中的平衡分配系数0.1(即若扩散稳定后,甲醛在气相中的浓度:甲醛在液相中的浓度=0.1)
根据 a+b=a0+b0
       a0/b0=0.1
把a更新为0.1/(0.1+1) * (a+b)
把b更新为1/(0.1+1) * (a+b)
这实际上是空气中的甲醛溶解于水中的过程,设它在一瞬间即完成。
只要a/b!=0.1(事实上它是>=0.1的,如初始时刻a=5%,b=0)这个过程就会发生。
比如最开始甲醛在气相的浓度为a=5%,甲醛在水中的浓度为b=0,
显然a/b>0.1,所以按平衡分配关系把a,b更新为
a=0.1/(0.1+1) * 5%
b=1/(0.1+1) *5%
这样气液两相中便出现浓度差了,两相中各自又会发生扩散,扩散又会打破平衡分配关系......
就是这个过程。

[ Last edited by kylafree on 2011-1-4 at 17:12 ]
6楼2011-01-04 16:49:27
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zzt_1234

木虫 (著名写手)



xiegangmai(金币+1):谢谢应助 2011-01-15 08:43:14
引用回帖:
Originally posted by kylafree at 2011-01-04 16:49:27:


这个UDF,就是先找到气液两相的交界面,
然后提取出交界面上方单元甲醛的浓度,即甲醛在气相中的浓度,设为a;
  再提取出交界面下方单元甲醛的浓度,即甲醛在液相中的浓度,设为b;
再根据甲醛在气相和液 ...

我想说的是分母不能为零吧。b=0是不是有问题。分母为零就会提示“float .....”

[ Last edited by zzt_1234 on 2011-1-4 at 17:03 ]
7楼2011-01-04 16:59:36
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

kylafree

至尊木虫 (知名作家)


引用回帖:
Originally posted by 47425804 at 2011-01-04 10:06:00:
关于楼主的这个问题,我说说我想的编程思路吧:
用DEFINE_MASS_TRANSFER宏,在函数里,先判断当前的cell是不是靠近相界面的cell;如果不是,返回0;如果是,判断是液相还是气相;如果是气相,那么要找到与之相对 ...

您的思想是对的,因为我之后还要模拟有流动的情况,而流动会使相界面发生改变,我那样编程把相界面当作是固定的就不对了。我得重新按照您的编程思想来写一下这个程序。另外那个return(c)语句看来应该放在循环之外。

[ Last edited by kylafree on 2011-1-4 at 17:15 ]
9楼2011-01-04 17:08:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

kylafree

至尊木虫 (知名作家)


引用回帖:
Originally posted by 47425804 at 2011-01-04 10:06:00:
关于楼主的这个问题,我说说我想的编程思路吧:
用DEFINE_MASS_TRANSFER宏,在函数里,先判断当前的cell是不是靠近相界面的cell;如果不是,返回0;如果是,判断是液相还是气相;如果是气相,那么要找到与之相对 ...

如何判断一个cell是不是在相的边界附近啊?
我只看到判断一个cell是不是在模型的边界附近,用语句
if (BOUNDARY_FACE_THREAD_P(t))
求指教
11楼2011-01-04 19:37:51
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

zzt_1234

木虫 (著名写手)



xiegangmai(金币+1):鼓励讨论 2011-01-14 16:45:22
引用回帖:
Originally posted by kylafree at 2011-01-03 16:58:39:

如图:
(1).初始时刻,矩形区域内上半部分(区域1+2)为质量分数为5%的甲醛+95%的空气的混合气体。下半部分(区域3+4)为0%的甲醛+100%的水。

(2). 空气中的 ...

你的return(c)感觉不怎么对,这个函数要求的返回值单位为kg/m3,我看你的单位好像不对吧。

[ Last edited by zzt_1234 on 2011-1-14 at 16:18 ]
12楼2011-01-14 16:00:11
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

jdzlplq

铁虫 (小有名气)



小木虫: 金币+0.5, 给个红包,谢谢回帖
请问LZ,在设置的mass transfer mechanism时采用的是什么mechanism?
fluent14的user Guide,26.2.8中有关Mass Transfer Effects有这么一句:Unidirectional constant rate mass transfer (not available for VOF calculations),不知道LZ当时采取的是哪一种mechanism呢?cavitation, evaporation-condensation,or boiling?还是自定义的?能够贴出自定义的项目。
16楼2013-05-14 15:49:31
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

ya634984094

铜虫 (小有名气)



小木虫: 金币+0.5, 给个红包,谢谢回帖
请问下楼主解决了没?
17楼2014-01-20 19:45:04
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

wesily

新虫 (初入文坛)



小木虫: 金币+0.5, 给个红包,谢谢回帖
不知楼主还在本论坛吗?你的问题解决了么,在的话请回复一声,非常感谢。
18楼2014-08-08 10:37:12
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖

完全是火

铜虫 (小有名气)


学习学习
19楼2015-11-07 23:15:03
已阅   回复此楼   关注TA 给TA发消息 送TA红花 TA的回帖
相关版块跳转 我要订阅楼主 kylafree 的主题更新
最具人气热帖推荐 [查看全部] 作者 回/看 最后发表
[考博] 导师不让硕转博,让我去国外读博,能理解吗? +11 萧山幽谷 2024-05-29 18/900 2024-05-31 15:31 by 又幂青松顶
[考研] 研0二导师分到新来的博士后靠谱吗 +4 sone9 2024-05-31 4/200 2024-05-31 15:25 by 1158057902
[考博] 申请2024或2025年博士研究生 +5 嘟噜嘟1 2024-05-29 9/450 2024-05-31 15:13 by 534720018
[论文投稿] 纠结选哪一个期刊,电化学领域 50+8 Freya163 2024-05-28 10/500 2024-05-31 15:09 by wzykobe
[高分子] MMA预聚体光固化发雾问题求助 +3 惠亚金总 2024-05-29 10/500 2024-05-31 14:59 by 惠亚金总
[基金申请] 基金上会 +16 mrKiller 2024-05-25 25/1250 2024-05-31 12:33 by SensorHa
[教师之家] 研究生在毕业答辩时挂了,遗憾 +9 spacr2022 2024-05-27 12/600 2024-05-31 10:17 by zzq770204
[硕博家园] 要不要读博 +16 王乔木 2024-05-24 18/900 2024-05-31 10:09 by caocao4735
[基金申请] 九部门发文:不得将专利授权数量作为人才评价、项目评审、职称评定、高校评价等的条件 +15 sjtu2012 2024-05-28 18/900 2024-05-31 07:17 by biology-jlu
[硕博家园] 每到中夜,情难自抑 +29 sioc-sunj 2024-05-28 53/2650 2024-05-30 22:09 by meier8
[硕博家园] 好奇博士每天学习的有效时间 +10 hahamyid 2024-05-25 11/550 2024-05-30 18:46 by lyfbangong
[文学芳草园] 物是人非 +4 myrtle 2024-05-30 4/200 2024-05-30 15:05 by mapenggao
[电化学] 有锂金属软包电池代工公司代做软包嘛 +5 yyywj995 2024-05-26 6/300 2024-05-30 08:33 by 那年的旧城
[硕博家园] 论大家对6070后普通教授导师的看法 +5 SNaiL1995 2024-05-28 9/450 2024-05-29 21:54 by SNaiL1995
[考博] 申博求助?本硕双非一篇三区和四区去985工科非天坑专业有没有希望? +3 LYS1200 2024-05-29 5/250 2024-05-29 14:45 by 未来富婆蛙
[基金申请] 信息学部函评结束了吗? +6 ducan21 2024-05-28 7/350 2024-05-29 12:10 by WORLD0256
[基金申请] E05青基有几个评审 +4 KYXY123 2024-05-28 4/200 2024-05-28 19:25 by popt2t
[有机交流] 机理求助 120+4 15147165026 2024-05-26 10/500 2024-05-28 14:42 by 江东闲人
[有机交流] 奇怪的物质 100+4 桃桃PXS 2024-05-27 7/350 2024-05-28 10:22 by 091602
[硕博家园] 研0 +6 控制调剂yl 2024-05-25 11/550 2024-05-26 23:37 by sakuraai
信息提示
请填处理意见