OpenFOAM编程:VOF法与多孔介质模型相结合
目的
VOF法可以捕获两流体相的界面,可以将其中的一相区域设置为阻力很大的多孔介质,以模拟固体(流体不可侵入)。这样可以使VOF法捕获气-固界面。动量方程的源项为
S i = − D U i , 在 多 孔 介 质 区 域 内 S_{i}=-D U_{i},在多孔介质区域内 Si=−DUi,在多孔介质区域内
OpenFOAM编程
找到interFoam求解器的源代码/opt/openfoam9/applications/solvers/multiphase/interFoam
,将代码和Make文件夹一同复制到自己的工作目录。然后找到案例库中的溃坝模型/opt/openfoam9/tutorials/multiphase/interFoam/laminar/damBreak
,也放入工作目录
.
├── damBreak #测试案例
├── Make #编译规则
├── alphaSuSp.H #以下是interFoam的源代码
├── correctPhi.H
├── createFieldRefs.H
├── createFields.H
├── initCorrectPhi.H
├── interFoam.C
├── pEqn.H
├── rhofs.H
└── UEqn.H
添加key无量纲标量场
在createFields.H中补充以下代码
//定义单位
const dimensionSet mydimension(1, -3, -1, 0, 0, 0, 0);//kg*m^-3*s^-1
//定义key场
volScalarField key(IOobject("key",runTime.timeName(),mesh,IOobject::NO_READ, //不从文件中读,而是直接在代码中生成IOobject::AUTO_WRITE),alpha1);
自定义单位并初始化key场,其中key场与alpha1场完全相同
自定义动量方程
为了添加源项,UEqn.H中最上方的若干行需要修改
MRF.correctBoundaryVelocity(U); //根据alpha1场更新key场for (label cellI=0; cellI<mesh.C().size(); cellI++){if(alpha1[cellI]>0.001){key[cellI]=alpha1[cellI];}else{key[cellI]=0;}}fvVectorMatrix UEqn(fvm::ddt(rho, U) + fvm::div(rhoPhi, U)+ MRF.DDt(rho, U)+ turbulence->divDevTau(rho, U)==phaseChange.SU(rho, rhoPhi, U)+ fvModels.source(rho, U)- fvm::Sp(dimensionedScalar("tmp", mydimension, 1e10)*key,U)//根据key场定义源项);
代码首先根据alpha1场更新key场,然后根据根据key场定义源项。需要注意的是使用fvm::Sp()
函数定义隐式的源项,可以大大提升收敛性
修改输运性质
修改测试案例中constant/transportProperties文件。由于原本的“water”已经成为多孔介质,可以将其属性修改为外界的空气,同时不考虑张力
/*--------------------------------*- C++ -*----------------------------------*\========= |\\ / F ield | OpenFOAM: The Open Source CFD Toolbox\\ / O peration | Website: https://openfoam.org\\ / A nd | Version: 9\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{format ascii;class dictionary;location "constant";object transportProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //phases (water air);water
{transportModel Newtonian;nu 1.48e-05;rho 1;
}air
{transportModel Newtonian;nu 1.48e-05;rho 1;
}sigma 0;// ************************************************************************* //
设置多孔介质区域(第一相的区域)
修改测试案例中constant/setFieldsDict文件
/*--------------------------------*- C++ -*----------------------------------*\========= |\\ / F ield | OpenFOAM: The Open Source CFD Toolbox\\ / O peration | Website: https://openfoam.org\\ / A nd | Version: 9\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{format ascii;class dictionary;location "system";object setFieldsDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //defaultFieldValues
(volScalarFieldValue alpha.water 0
);regions
(boxToCell{box (0.292 0.536 -1) (0.315999 0.584 1);fieldValues(volScalarFieldValue alpha.water 1);}
);// ************************************************************************* //
除此之外还应修改边界条件,使气体从左侧边界进入,右侧边界离开
最后,编译源程序,使用得到的可执行文件计算测试案例,这里不再赘述
计算结果
从速度场动图可以看出,上方多孔介质区域成功模拟了固体凸台的效果
对比使用边界条件模拟固体(下方)和使用多孔介质模拟固体(上方),得到的流场几乎完全相同
以下是压力场
OpenFOAM编程:VOF法与多孔介质模型相结合相关推荐
- 为多孔介质的当量直径_CFX多孔介质模型介绍
本文主要介绍 ANSYS CFX 11.0 中多孔介质模型的使用方法.首先详细讲述了 Porosity Settings 对话框的填写方法,之后以附录形式给出了多孔介质模型中的定 义.术语.方程等供参 ...
- 二十、多孔介质模型案例
1 概念介绍 多孔介质就是固体物质内部和表面有许多孔隙,如海绵等,由固体物质组成的骨架和由骨架分隔成大量密集成群的微小空隙所构成的物质.多孔介质内的流体以渗流方式运动. Fluent自带多孔介质模型 ...
- 二十六、多孔介质模型(二)-催化器
1.概念介绍 许多工业应用,如过滤器.催化剂床和填料,都涉及到模拟通过多孔介质的流动.本案例为气体通过催化转换器的流动.催化转换器通常用于净化汽油和柴油发动机的所产生的废气,将有害环境的废气转化为可接 ...
- OpenFOAM多孔介质模型_DarcyForchheimer
OpenFOAM中添加多孔介质区域及进行相关计算可通过DarcyForchheimer模型来实现.具体步骤如下: (一)设置多孔介质区域 在"system"文件夹下添加" ...
- 在ABAQUS中使用多孔介质模型
ABAQUS软件可以进行渗流/应力耦合分析,上一篇博文也提到过,ABAQUS里很多的本构模型可以与多孔介质一起结合使用,这意味着可以对那些本构模型描述的材料或对象进行渗流/应力耦合分析.ABAQUS使 ...
- OpenFOAM-多孔介质模型(porous media)
文章目录 一.多孔介质(porous media) 二.使用步骤 1.达西定律 2.Darcy-Forchheimer 3.OpenFOAM fvOptions 4.paraview动画每帧显示时间( ...
- Fluent多孔介质模拟固体区域(观点)
简介 Fluent多孔介质仿真的具体步骤可以参考[简单学微课堂]Fluent多孔介质应用 需要注意多孔介质区与流体介质区都属于"流体"材料.二者的交界面一定要设成interior ...
- FLUENT多孔介质数值模拟设置【转载】
转载自:http://zhengjun0228.blog.163.com/blog/static/71377014200971895419613/ 多孔介质条件 多孔介质模型可以应用于很多问题,如通过 ...
- 毕业了——课题代码开源(三)使用Palabos的自由表面流模型仿复杂多孔介质中的液滴渗透
简介 对于多相流模拟,Palabos中也是实现了很多,比如shanchen模型做的瑞丽-泰勒不平衡和两相混合器,还有helee模型做的双液滴碰撞,怎么说呢,我都跑过,但是,由于我的体系是气体和水,密度 ...
最新文章
- “编程能力差,90%的人会输在这点上!”谷歌开发:其实都是在瞎努力
- 解决Coursera视频无法观看的问题
- 资深架构专家聊小团队中微服务困境及分布式事务解决方案
- mysql drop 权限_MySQL procedure drop权限问题
- Eclipse启动SpringCloud微服务集群的方法
- linux运维有前途,想去做linux运维,不知道有前途么?
- java graphics旋转_Java图像之自定义角度旋转(实例)
- 7. 开启 mysql remote access
- python输出结果换行_如果Python中有很多换行,可以选择使用...表示多行内容...
- php7 fastdfs,关于centos7 fastdfs部署
- 《卸甲笔记》-PostgreSQL和Oracle的SQL差异分析之五:函数的差异(四)
- ITIL、COBIT、CMMi和ISO 17799管理新一代数据中心的最佳实践介绍
- 集成融云 即时通讯总结
- 汽车控制器CAN通信DBC文件工具:EXCEL生成DBC和生成代码
- 论文:YOLOX: Exceeding YOLO Series in 2021
- OpenSSL sm2 签名源码讲解
- windows10网速监控(netspeedmonitor)
- unity 导入mixamo动画材质设置
- 获取今日时间范围区间
- 图解Windows10+优麒麟双系统安装