膜态沸腾的UDF,添加注释。其中获取VOF梯度的方法详见前面的日志,其中很多宏无法通过UDF手册查阅,

蒸汽相中的质量源项的一般形式为:

式中:

通过一阶近似,热流之差可表达为:

式中:

通过此近似,源项变为:

因为没有内部质量源项,所以也想的质量源项变为:

能源方程的潜热变为:

截面的物性包括,表面张力为0.1N/m,潜热为105J/kg,饱和温度为500K。该问题的长度为Taylor-Raleigh不稳定性的波长。

该问题的速度为:

因此时间尺度为:

计算域水平宽度为,垂直高度为。网格尺度为64(水平方向)×192(垂直方向),蒸汽液体截面的初始形状受到气泡增长的影响。因此,需要另外一个初始化UDF

式中,x(y)为水平(垂直)轴,单位为m。

努塞尔数为表征沸腾换热的无量纲数,其定义为:

因为该问题的时间为0.01s,时间步长为2×10-4,50个时间步。该问题需要进行6000步时间步迭代来捕捉气泡释放的过程

源代码如下:

#include
"udf.h"

#include
"sg.h"

#include
"sg_mphase.h"

#include
"flow.h"

#include
"mem.h"

DEFINE_ADJUST(area_density,
domain)

{

Thread
*t;    //定义一个线程指针

Thread
**pt;    //定义一个指向线程指针的指针

cell_t
c;    //定义单元

Domain
*pDomain =
DOMAIN_SUB_DOMAIN(domain,P_PHASE);

real voidx,
voidy, voidz=0;

{

Alloc_Storage_Vars(pDomain,SV_VOF_RG,SV_VOF_G,SV_NULL);

Scalar_Reconstruction(pDomain,
SV_VOF,-1,SV_VOF_RG,NULL);

Scalar_Derivatives(pDomain,SV_VOF,-1,SV_VOF_G,SV_VOF_RG,

Vof_Deriv_Accumulate);

}

{

Alloc_Storage_Vars(domain,
SV_T_RG, SV_T_G, SV_NULL);

T_derivatives(domain);

Free_Storage_Vars(domain,
SV_T_RG, SV_NULL);

}

mp_thread_loop_c
(t,domain,pt)

if
(FLUID_THREAD_P(t))

{

Thread *tp = pt[P_PHASE];

begin_c_loop (c,t)

{

#if
RP_3D

C_UDMI(c,t,0)
= (C_VOF_G(c,tp)[0]*C_T_G(c,t)[0]+

C_VOF_G(c,tp)[1]*C_T_G(c,t)[1]+C_VOF_G(c,tp)[2]*C_T_G(c,t)[2]);

#endif

#if
RP_2D

C_UDMI(c,t,0)
= (C_VOF_G(c,tp)[0]*C_T_G(c,t)[0]+

C_VOF_G(c,tp)[1]*C_T_G(c,t)[1]);

#endif

}

end_c_loop
(c,t)

}

Free_Storage_Vars(pDomain,SV_VOF_RG,SV_VOF_G,SV_NULL);

Free_Storage_Vars(domain,
SV_T_G, SV_NULL);

}

DEFINE_SOURCE(gas, cell,
thread, dS, eqn)

{

real
x[ND_ND];    //定义一个变量用来存储网格的位置信息

real
source;

Thread *tm =
THREAD_SUPER_THREAD(thread);    //获取混合相的指针

Thread **pt =
THREAD_SUB_THREADS(tm);

real Kl =
C_K_L(cell, pt[1])*C_VOF(cell, pt[1]),

Kg =
C_K_L(cell, pt[0])*C_VOF(cell, pt[0]);

real L =
1e5;    //水的气化潜热

source =
(Kl+Kg)*C_UDMI(cell,tm,0) / L;

C_UDMI(cell,
tm, 1) = source;

C_UDMI(cell,
tm, 2) = -source*L;

dS[eqn]
=0;

return
source;

}

DEFINE_SOURCE(liquid, cell,
thread, dS, eqn)

{

real
x[ND_ND];

real
source;

Thread *tm =
THREAD_SUPER_THREAD(thread);

Thread **pt =
THREAD_SUB_THREADS(tm);

source =
-C_UDMI(cell, tm, 1);

dS[eqn] =
0;

return
source;

}

DEFINE_SOURCE(energy, cell,
thread, dS, eqn)

{

real
x[ND_ND];

real
source;

Thread *tm =
thread;

source =
C_UDMI(cell, tm, 2);

dS[eqn] =
0;

return
source;

}

DEFINE_INIT(my_init_function,
domain)

{

Thread
*t;

Thread
**pt;

Thread
**st;

cell_t
c;

Domain *pDomain =
DOMAIN_SUB_DOMAIN(domain,P_PHASE);    //获取主相的指针

Domain *sDomain =
DOMAIN_SUB_DOMAIN(domain,S_PHASE);    //获取次相的指针

real
xc[ND_ND], y, x;

mp_thread_loop_c
(t,domain,pt)

if
(FLUID_THREAD_P(t))

{

Thread *tp =
pt[P_PHASE];    //获取主相的指针

begin_c_loop (c,t)

{

C_CENTROID(xc,c,t);

x=xc[0];

y=xc[1];

if ( y < 0.00292 + 0.0006*cos(6.283*x/0.0778)
)

C_VOF(c,tp) = 1;

else

C_VOF(c,tp) = 0;

}

end_c_loop
(c,t)

}

mp_thread_loop_c
(t,domain,st)

if
(FLUID_THREAD_P(t))

{

Thread *sp =
st[S_PHASE];    //获取次相的指针

begin_c_loop (c,t)

{

C_CENTROID(xc,c,t);

x=xc[0];

y=xc[1];

if ( y < 0.00292 + 0.0006*cos(6.283*x/0.0778)
)

C_VOF(c,sp) = 0;

else

C_VOF(c,sp) = 1;

}

end_c_loop
(c,t)

}

}

膜态沸腾UDF【转载】的更多相关文章

  1. 15第十五章UDF用户自定义函数(转载)

    15第十五章UDF用户自定义函数 待补上 原文链接 本文由豆约翰博客备份专家远程一键发布

  2. 沸腾换热UDF【转载】

    #include "udf.h"    //包括常规宏 #include "sg_mphase.h"    // 包括体积分数宏 CVOF(C,T) #defi ...

  3. 绕流振动UDF【转载】

    宏DEFINE_GRID_MOTION用来移动任意边界和流体区域内的网格节点.它提供了对节点和网格最大限度的操作,可以将刚体运动.变形和相对运动等结合起来.但是使用此UDF时,每一个时间步都必须执行. ...

  4. C#路径/文件/目录/I/O常见操作汇总<转载>

    文件操作是程序中非常基础和重要的内容,而路径.文件.目录以及I/O都是在进行文件操作时的常见主题,这里想把这些常见的问题作个总结,对于每个问题,尽量提供一些解决方案,即使没有你想要的答案,也希望能提供 ...

  5. Hive学习笔记【转载】

    本文转载自:http://blog.csdn.net/haojun186/article/details/7977565 1.  HIVE结构 Hive 是建立在 Hadoop 上的数据仓库基础构架. ...

  6. Hive的UDF实现及注意事项

    Hive自身查询语言HQL能完毕大部分的功能,但遇到特殊需求时,须要自己写UDF实现.下面是一个完整的案例. 1.eclipse中编写UDF ①项目中增加hive的lib下的全部jar包和Hadoop ...

  7. linux 命令总结(转载)

    linux 命令总结(转载) 1. 永久更改ip ifconfig eth0 新ip 然后编辑/etc/sysconfig/network-scripts/ifcfg-eth0,修改ip 2.从Lin ...

  8. hive的udf制剂

    1.配置环境 1.介绍jar包裹:hive-exec-0.8.0.jar 和 hadoop-core-0.20.2.jar 2.书写udf性能 1.extends UDF 2.又一次定义UDF的eva ...

  9. (转载)sqlmap用户手册详解

    文章转载自 http://www.vuln.cn/2035 当给sqlmap这么一个url (http://www.target.com/sqlmap/mysql/get_int.php?id=1) ...

随机推荐

  1. 【转载】使用Winrar对压缩文件进行加密,并且给定解压密码

    有时候我们从网上下载的压缩包文件,如.rar文件.zip文件等,解压的时候需要输入解压密码才可顺利解压,否则解压失败.其实像这种情况,是压缩包制作者在压缩文件的时候对压缩文件进行了加密,输入了压缩包解 ...

  2. php后台实现页面跳转的方法-转载

    地址:http://blog.csdn.net/abandonship/article/details/6459104 其中方法三的js代码在tp框架使用存在故障,一个是需要把代码写在一起(可能也不需 ...

  3. img中alt和title属性的区别

    在图像标签img中,除了常用的宽度width和高度height属性之外,还有两个比较重要并且也会用到的属性,就是alt和title,这都是用来显示图片内容的具体信息的,但是这两个属性也有不同的地方.a ...

  4. Android gradle用exclude排除引用包中的dependency引用

    项目突然编译不通过,报如下错误 FAILURE: Build failed with an exception.         * What went wrong:    Execution fai ...

  5. Redis除了做缓存--Redis做消息队列/Redis做分布式锁/Redis做接口限流

    1.用Redis实现消息队列 用命令lpush入队,rpop出队 Long size = jedis.lpush("QueueName", message);//返回存放的数据条数 ...

  6. Linux命令——e2fsck

    简介 e2fsck字面意义上理解时,Ext2 FileSystem Check,但他实际上不仅仅对Ext2有用,对Ext家族都有用,即Ext2/3/4d都也可以使用. 5 UNIX / Linux e ...

  7. SSH安全协议

    SSHD服务 介绍:SSH 协议:安全外壳协议.为 Secure Shell 的缩写.SSH 为建立在应用层和传输层基础上的安全协议. 默认端口22 作用 sshd服务使用SSH协议可以用来进行远程控 ...

  8. SpringCloud2.0 Zuul 网关路由 基础教程(十)

    1.启动基础工程 1.1.启动[服务注册中心],工程名称:springcloud-eureka-server 参考 SpringCloud2.0 Eureka Server 服务中心 基础教程(二) ...

  9. cmd xcopy进行远程复制

    首先  win+R 打开cmd 1  目标远程服务器 查看共享的文件夹 net share 2 与远程建立连接 net use \\192.168.3.200\ipc$ Yhxwl123456 /us ...

  10. Kotlin构造方法详解与初始化过程分析

    在上一次https://www.cnblogs.com/webor2006/p/11192025.html已经初识了Kolin的面向对象,先来回顾一下: 介绍了primary 构造方法,其特点回忆一下 ...