膜态沸腾UDF【转载】
膜态沸腾的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【转载】的更多相关文章
- 15第十五章UDF用户自定义函数(转载)
15第十五章UDF用户自定义函数 待补上 原文链接 本文由豆约翰博客备份专家远程一键发布
- 沸腾换热UDF【转载】
#include "udf.h" //包括常规宏 #include "sg_mphase.h" // 包括体积分数宏 CVOF(C,T) #defi ...
- 绕流振动UDF【转载】
宏DEFINE_GRID_MOTION用来移动任意边界和流体区域内的网格节点.它提供了对节点和网格最大限度的操作,可以将刚体运动.变形和相对运动等结合起来.但是使用此UDF时,每一个时间步都必须执行. ...
- C#路径/文件/目录/I/O常见操作汇总<转载>
文件操作是程序中非常基础和重要的内容,而路径.文件.目录以及I/O都是在进行文件操作时的常见主题,这里想把这些常见的问题作个总结,对于每个问题,尽量提供一些解决方案,即使没有你想要的答案,也希望能提供 ...
- Hive学习笔记【转载】
本文转载自:http://blog.csdn.net/haojun186/article/details/7977565 1. HIVE结构 Hive 是建立在 Hadoop 上的数据仓库基础构架. ...
- Hive的UDF实现及注意事项
Hive自身查询语言HQL能完毕大部分的功能,但遇到特殊需求时,须要自己写UDF实现.下面是一个完整的案例. 1.eclipse中编写UDF ①项目中增加hive的lib下的全部jar包和Hadoop ...
- linux 命令总结(转载)
linux 命令总结(转载) 1. 永久更改ip ifconfig eth0 新ip 然后编辑/etc/sysconfig/network-scripts/ifcfg-eth0,修改ip 2.从Lin ...
- 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 ...
- (转载)sqlmap用户手册详解
文章转载自 http://www.vuln.cn/2035 当给sqlmap这么一个url (http://www.target.com/sqlmap/mysql/get_int.php?id=1) ...
随机推荐
- fastjson反序列化漏洞研究(下)
之前的文章显示字符太多 拒绝显示 只好分为两篇了 这样我们只需要找到可以利用的类,构造poc链就好了,这个和以前的java反序列化漏洞类似,先不说.网上最早的poc是使用com.sun.org.ap ...
- SIM7600CE http post
SIM7600CE是一款SMT封装的模块,支持 LTE-TDD/LTE-FDD/HSPA+/TD-SCDMA/EVDO和GSM/GPRS/EDGE等频段,支持LTE CAT4(下行速度为150Mbps ...
- 内存域水印值:min_free_kbytes
1.内存域水印值:需要为关键性分配保留的内存空间的最小值:该值保存在全局变量min_free_kbytes中 2.内存域水印值的计算由函数init_per_zone_pages_min完成: /* * ...
- 使用gulp构建项目
gulp.js作为一个前端构建工具,类似于webpack.Grountjs.rollupjs,不过相对于其他几种打包工具,gulp的使用更轻量,配置更简单,打包速度更快,今天不说他们几个的区别,也不说 ...
- java web编程 servlet3
- viewer 图片点击放大 用法汇总
A 不用viewer插件 1弹出框 https://www.cnblogs.com/web1/p/8989967.html 2表格中 https://www.jianshu.com/p/c17f4f6 ...
- C#中hashtable如何嵌套遍历
嵌套hashtable的遍历取值怎么做 hastable中嵌套了hashtable,想用递归的方式把所有hashtable中的key和value取出来 foreach (DictionaryEntry ...
- China International Industry Fair 2019
Today i visit the CIIF 2019, as a "professional visitor" since i have made an appointment ...
- SpringCloud学习心得—1.3—Eureka与REST API
SpringCloud学习心得—1.3—Eureka与REST API Eureka的REST API接口 API的基本访问 Eureka REST APIEureka 作为注册中心,其本质是存储 ...
- mysql存储、function、触发器等实例
一.创建数据库&表 DROP DATABASE IF EXISTS security; CREATE database security; USE security; CREATE TABLE ...