界面追踪方法Level Set与VOF在气泡流动模拟的效果比较

news2024/10/6 10:35:13

对于两相流模拟,模型主要分为两大类:高相分数模型和界面捕捉类模型。当我们关注水中的含气量(气泡界面及气泡形状可忽略),则采用高相分数模型,此模型适用于气泡特别多的流动问题。对于有明确边界的流体-流体问题,基本需要考虑如何捕捉边界面。常用的界面捕捉模型包括LS(Level Set)方法和VOF(Volume of Fluid)方法。

多相流模拟软件,首先就是针对此类有边界面的问题。目前主流的商业CFD软件大多采用VOF方法,而定位于多相流仿真的国产通用流体仿真软件Virtualflow采用Level Set方法进行界面流仿真。

1、Level Set 方法

Level Set方法是基于空间曲面的隐函数表达。

在LS方法中,每一个时间步都要重新初始化LS方程,在时刻tn 求得的LS函数与控制方程一起求解得到下一时刻的LS函数,这些初始化的过程中总伴随着界面位置的移动,会造成质量损失,导致质量不守恒。而改善初始化步骤来矫正质量守恒又会增加计算时间,提升计算成本。同时,因为LS方法采用的是光滑的距离函数来捕捉相界面,各个物理量可以在界面上光滑连续地过渡,且相界面的捕捉效果好。

2、VOF方法

在VOF方法中,用来划分两相界面的函数是体积分数α,表示的是单个网格内的液体体积与这个网格总体积的比值。

若求出整个网格相分数,如图1(a)来构造界面,会发现体积分数α在空间上是一个阶梯函数,在空间上是不连续的,从而重构出来的相界面,如图1(b)是间断的,两个相邻网格的界面是不连续的,且物理量在通过界面时也是不连续的,这个现象称为寄生流动,目前VOF方法的主要工作就是缓解数值方法造成的寄生流动现象。


图1 相分数空间分布(a)及其界面重构(b)

与LS方法类似,根据相分数可以得到界面上的单位法向量和曲率以及计算域中的密度和粘度。

为了解决物理量在界面两端不连续的问题,引入连续表面力模型,通过以下公式将界面内的压力表示为压力的连续函数。

式中c是界面处的位置函数(图2),其表示为:

图2 CSF模型下c位置函数(左)及连续压力函数(右)

由以上公式可以推出曲面微元上的表面张力。

此外,在OpenFOAM中,为了求解动量守恒方程中的压力项和体积力项,定义prgh,如下:

式中

为网格位置矢量,对该公式求其梯度得到

该公式可以直接带入动量守恒方程中进行计算。

在OpenFOAM中,使用VOF方法后在控制方程中添加了一个求解α的相方程:

为了界面的尖锐,OpenFOAM采用Waller提出的方法,在相方程中添加人工对流项,从而保证界面的清晰。

其中:

c为压缩因子,值为0时表示不存在人工压缩,给c赋值后有利于提高界面清晰度,但同时也会提高计算成本和产生收敛问题。

3. 界面捕捉效果:LS vs VOF

本文主要讨论通用流体仿真软件Virtualflow中用到的LS方法和开源软件OpenFOAM中用到的VOF方法。为了验证LS方法和VOF方法对界面捕捉的效果,下面展示Albadawi文献中采用这两种方法计算模拟的气泡变化过程,并与实验进行了对比分析。在计算域底部中心一个小孔以恒定体积流率喷射气泡,由于压力、浮力和表面张力的共同作用,气泡会经历产生,变形和分离的过程。计算域及其物性参数如下:

图3 计算域及其边界条件

表2 两相流物性参数

取tDet 为气泡分离时间,t/tDet =0 为初始时间,此时气泡已经是轴对称的球形,实验中各个时刻气泡形状如图4所示。

图4  不同时刻气泡形状

图5  LS方法(TransAT软件)模拟结果与实验数据对比

图6   VOF方法(OpenFOAM)模拟结果与实验数据对比

由图5与图6可以看出:与实验结果对比,LS方法对界面捕捉的效果更好,VOF方法只能模拟出气泡变形的大致趋势,各个时刻气泡的高度都要比实验值的低。

此外,还可以根据气泡的重心位置和纵横比来比较LS方法和VOF方法的模拟效果。

图7 气泡重心位置随时间的变化

图8 气泡纵横比随时间的变化

由图7可以看出,在气泡产生到发生一段变形时,LS方法和VOF方法都可以很好地预测气泡的重心位置,但随着气泡的继续演化,VOF模拟得到的气泡重心会不断的偏离实验值,而LS方法模拟得到的重心轨迹与实验吻合较好。

气泡的纵横比是指气泡的最大高度与最大宽度的比值,由图7可以看出,在VOF方法中模拟得到的纵横比会沿着实验值震荡,表现为模拟得到的气泡会在轴向上产生周期性的膨胀和收缩,而这一现象是实验观察中不存在的,而LS方法可以很有效地捕捉气泡演化时的形状以及气泡分离的时间。

更多VirtualFlow仿真案例

以下为更多VirtualFlow软件Level Set 界面跟追方法模拟案例:

图9 液体碰撞壁面反弹过程(LS方法)

图10 膜态沸腾(3D)


通用计算流体力学软件VirtualFlow,具备行业领先的网格建模与求解技术,和丰富的多相流物理模型及先进的相变模型,可模拟单相和多相/多组分物质流动、传热、界面追踪、粒子追踪、相变、水合物反应等复杂问题,可为工业各行业用户提供专业级流体仿真解决方案。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1835911.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

AI安全水深流急,黄铁军首谈AGI能力与风险分级,2024智源大会圆满落幕

2024年6月15日,为期 2 天的北京智源大会圆满落下帷幕。本次大会围绕大语言模型、多模态模型、Agent、具身智能、数据新基建、AI系统、AI开源、AI for Science、AI安全等人工智能热门技术方向和焦点议题,召开了20平行论坛,共计百场报告。 过去…

Linux top 命令使用教程

转载请标明出处:https://blog.csdn.net/donkor_/article/details/139775547 文章目录 一、top 是什么二、top的基础语法三、top输出信息解读 一、top 是什么 Linux top 是一个在Linux和其他类 Unix 系统上常用的实时系统监控工具。它提供了一个动态的、交互式的实时…

基于JSP的房屋租赁系统

开头语: 你好,我是专注于计算机科学与技术研究的学长。如果你对房屋租赁系统感兴趣或有相关开发需求,欢迎联系我。 开发语言:Java 数据库:MySQL 技术:JSPJavaBeansServlet 工具:MyEclipse、…

gRPC(Google Remote Procedure Call Protocol)谷歌远程过程调用协议

文章目录 1、gRPC简介2、gRPC核心的设计思路3、gPRC与protobuf关系 1、gRPC简介 gPRC是由google开源的一个高性能的RPC框架。Stubby Google内部的RPC,演化而来的,2015年正式开源。云原生时代是一个RPC标准。 2、gRPC核心的设计思路 网络通信 ---> gPR…

VM4.3 二次开发04 方案输出结果设置

方案输出结果设置,这个设置是为了在二次开发的上位机软件中显示我们想要的数据,和在二开中如何获取这些结果。 打开方案点下如中的图标。 打开如下图。 再点点红色圈出来的图标,打开参数设置界面。 输出设置可以要输出的数据和参数名称。点上…

【Linux】程序地址空间之动态库的加载

我们先进行一个整体轮廓的了解,随后在深入理解细节。 在动态库加载之前还要说一下程序的加载,因为理解了程序的加载对动态库会有更深的理解。 轮廓: 首先,不管是程序还是动态库刚开始都是在磁盘中的,想要执行对应的可…

隧道代理是什么?怎么运作的?

隧道代理作为网络代理的一种形式,已经在现代互联网世界中扮演着重要的角色。无论是保护隐私、访问受限网站还是实现网络流量的安全传输,隧道代理都发挥着重要作用。在本文中,我们将深入探讨隧道代理的概念、运作方式以及在不同场景中的应用。…

ClickHouse 高性能的列式数据库管理系统

ClickHouse是一个高性能的列式数据库管理系统(DBMS),主要用于在线分析处理查询(OLAP)。以下是对ClickHouse的详细介绍: 基本信息: 来源:由俄罗斯的Yandex公司于2016年开源。全称&…

在向量数据库中存储多模态数据,通过文字搜索图片

在向量数据中存储多模态数据,通过文字搜索图片,Chroma 支持文字和图片,通过 OpenClip 模型对文字以及图片做 Embedding。本文通过 Chroma 实现一个文字搜索图片的功能。 OpenClip CLIP(Contrastive Language-Image Pretraining&…

Eigen中 Row-Major 和 Column-Major 存储顺序的区别

Eigen中 Row-Major 和 Column-Major 存储顺序的区别 flyfish Eigen::RowMajor 是 Eigen 库中用于指定矩阵存储顺序的一种选项 理解 Row-Major 和 Column-Major 存储顺序的区别,绘制一个单一的图来显示内存中的元素访问顺序,在图中用箭头表示访问顺序. import nu…

【无重复字符的最长子串】

无重复字符的最长字串 一、题目二、解决方法1.暴力解法2.滑动窗口哈希 三、总结1.es6 new set()的用法添加元素add()删除元素delete()判断元素是否存在has 2.滑动窗口和双指针的联系和特点 一、题目 二、解决方法 1.暴力解法 解题思路:使用两层循环逐个生成子字符串…

Ardupilot开源代码之ExpressLRS性能实测方法

Ardupilot开源代码之ExpressLRS性能实测方法 1. 源由2. 测试效果3. 测试配置4. 总结5. 参考资料6. 补充 1. 源由 之前一直在讨论ExpressLRS性能的问题,有理论、模拟、实测。 始终缺乏完整的同一次测试的测试数据集,本章节将介绍如何在Ardupilot上进行获…

聆思CSK6大模型+AI交互多模态开源SDK介绍

视觉语音大模型 AI 开发套件( CSK6-MIX )是围绕 CSK6011A 芯片设计的具备丰富语音图像功能与硬件外设的开发板,采用具备丰富组件生态的 Zephyr RTOS作为操作系统,官方提供了十几种开源SDK,包含大模型语音交互、大模型拍照识图、文生图、人脸识…

spark常见问题

写文章只是为了学习总结或者工作内容备忘,不保证及时性和准确性,看到的权当个参考哈! 1. 执行Broadcast大表时,等待超时异常(awaitResult) 现象:org.apache.spark.SparkException: Exception…

设置角色运动的动画

(1) 打开Assets-UnityTechnologies-Animation-Animators,Create-Animation-Controller,命名为JohnLemon (2) 打开JohnLemon,出现下图 (3) 依次将Assets-UnityTechnologies-Animation-Animation中的JohnIdle和JohnWalk拖放到Base Layer窗口中 (4) 右击Idl…

整合JavaSSM框架【超详细】

在整合SSM之前我们首先要知道SSM框架指的是哪些框架? Java的SSM指的是Spring、Spring MVC、MyBatis这三个框架 Spring框架 什么是Spring? Spring是一个支持快速开发Java EE应用程序的框架。它提供了一系列底层容器和基础设施,并可以和大量常…

win11右键小工具

开头要说的 在日常使用场景中,大家如果用的是新的笔记本电脑,应该都是安装的win11系统, 当然win11系统是最被诟病的, 因为有很多人觉得很难操作, 就比如一个小小的解压操作, 在win7和win10上&#xff…

基于DDD的编码实践

分层设计 领域驱动设计(Domain-driven design, DDD) 作为一种复杂软件系统的应对方案,在设计和编码提供了一种新的解决方式,即领域驱动,要求程序员在设计和编码时从领域专家的角度出发来实现架构/代码,做到…

随机产生一些江河上的坐标数据

不久前收到一个需求,说要随机创建约一百个某段江河上的坐标点,用于做一些数据呈现。 我首先是想到用AI直接给我一点数据,没想到给出来的坐标,有许多都落在陆地上,根本不符合我的要求。后来结合AI给出的建议&#xff0…

爬抖音直播间观众数据

打开抖音,稍微看了下买房直播间,突然很好奇是那些用户在观看,想拿下这些用户数据,再通过用户等级、在线观看时长排序,筛选出优质客户。 普及一下抖音用户等级: 抖音用户的提升与用户在直播间消费的金额直接…