基于OpenFOAM求解器二次开发

news2024/11/23 9:01:15

OpenFOAM(Open Field Operation and Manipulation)是一个开源的计算流体动力学(CFD)软件包。它提供了各种模拟和建模工具,用于研究和解决复杂的流体流动问题。

OpenFOAM提供了一个强大的求解器库,可以用于模拟各种流体流动现象,如湍流、多相流、传热等。它采用有限体积方法,将物理域离散成小的体积单元,并解析守恒方程。OpenFOAM还提供了灵活的求解器设置和边界条件定义,使用户能够针对特定问题进行自定义模拟。

但是,在使用已有OpenFOAM求解器针对特定问题进行求解时,并不能保证求解算法一定适合该问题的解决,因此本文以投影法为例,简单介绍OpenFOAM求解器自定义编辑逻辑。

1.投影法求解原理

投影法是求解不可压缩N-S方程的常用方法之一,对于二维不可压缩N-S方程以及连续性方程如公式(1)。

图片

 (1)

投影法原理可以分为以下三步,将时间推进分成三个子步,在中间步解出压力,最后推导出速度。首先需要确定时间离散格式,这里时间离散化采用显式欧拉格式,则离散方程如(2)所示。

图片

(2)

将公式(2)拆分,引入速度中间量获得方程组(3)、(4)。

图片

(3)

图片

(4)

公式(3)通过显式欧拉格式得到速度中间量U*。公式(4)并不满足连续性方程,对两边求散度,得:

图片

(5)

其中Ut+△t满足连续性方程:

图片

(6)

化简得到Pt+△t:

图片

(7)

最终回带公式(4),获得Ut+△t:

图片

(8)

通过以上操作,可以获得下一时间步的速度、压力信息,进而不断迭代最终计算出结果。

2.创建自定义 OpenFOAM 求解器的一般步骤:

复制现有求解器:

在 OpenFOAM 中,通常会从一个现有的求解器开始。选择与想要解决的问题类型最接近的现有求解器,然后将其复制到一个新目录中,以便可以进行修改。本文将以icoFoam求解器作为模板,根据上述投影法公式对求解器相关文件进行修改。

以OpenFOAM-10为例,用户可以通过OpenFOAM-10/applications/solvers/incompressible/icoFoam路径找到OpenFOAM提供的icoFoam求解器文件。

修改求解器:

将icoFoam求解器文件夹复制到算例文件夹后,需要修改自定义求解器代码的目录。通常,可以将该目录放在 user 目录中,防止避免自定义求解器对系统自带的求解器操作的覆盖。本文对icoFoam/Make文件夹下files文件进行修改,将icoFoam求解器的名称修改为myicoFoam。

此处将第三行代码EXE = $(FOAM_USER_APPBIN)/myicoFoam末尾名称进行更换。

图片

完成上述步骤后,进行修改求解器源代码文件:

打开icoFoam文件夹下icoFoam.C文件,对理论公式进行修改。

图片

修改完成后,需打开同一文件夹下createFields.H文件,修改变量信息,以确保公式中变量规范。

图片

图片

编译自定义求解器:

确认无误后,即可使用 wmake 命令编译你的自定义求解器。在求解器目录终端中运行:wmake

图片

3.使用自定义求解器进行运算

使用自定义求解器对算例进行运算之前,需要对算例进行调试,进行一些修改,以便计算进行。

本文以elbow为例进行运算。完成网格绘制、边界条件设定、求解迭代设置等内容后,即可在终端中使用myicoFoam求解器进行求解。

图片

通过简单运算,可以获得基于投影法的速度、压力场结果。

4.小结

本文从基础理论出发,基于投影法对OpenFOAM中的icoFoam求解器进行修改,并完成elbow算例计算,得到的速度场、压力场精度较低但是符合仿真规律。文章仅作为入门指导,具体算例方法需要根据实际情况进行自定义修改,希望本文能够给您提供帮助。

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

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

相关文章

金融信贷行业如何准确——大数据精准定位获客渠道

通过大数据精准获客,不仅可以及时拦截网址浏览量,还可以访问移动贷款应用软件的高频活跃客户和新注册客户。此外,通过大数据进行准确的客户获取,还可以获得电话座机号码的实时通信记录,捕捉小程序应用程序和关键词搜索…

Kafka中遇到的错误:

1、原因:kafka是一个去中心化结果的,所以在启动Kafka的时候,每一个节点上都需要启动。 启动的命令:kafka-server-start.sh -daemon /usr/local/soft/kafka_2.11-1.0.0/config/server.properties

Windows 根据dll生成 lib文件

假设我们现在只有dll,没有lib ,因此有源码但是在Visual Studio 20XX中代码确编译不过去,因为缺少lib文件。 接下来,黄强老师来帮大家演示,如何从dll 反推 lib文件,打开这个工具 第一步,查看一下大概的函数,确认dll有你想要的函数 dumpbin /exports 你的.dll > f…

贺天下功夫酱酒闪耀亮相2023佛山秋色系列活动

11月1日至5日,2023年广东非遗周暨佛山秋色巡游系列活动在佛山举行,以“品味佛山 秋醉岭南”为主题,好戏连台。贵州贺天下酒业独家赞助佛山祖庙秋祭、乡饮酒礼,还全面参与佛山秋色巡游、佛山非遗美食展、佛山非遗音乐会等多个活动&…

vue3 - swiper插件 实现PC端的 视频滑动功能(仿抖音短视频)

swiper官网 ​​​​​​swiper属性/组件查询 vue中使用swiper 步骤&#xff1a; ① npm install swiper 安装 ② 基础模板&#xff1a; <div><swiper class"swiper-box" :direction"vertical":grabCursor"true" :mousewheel"tr…

强化学习中广义策略迭代

一、广义策略迭代 策略迭代包括两个同时进行的交互过程&#xff0c;一个使价值函数与当前策略保持一致&#xff08;策略评估&#xff09;&#xff0c;另一个使策略在当前价值函数下变得贪婪&#xff08;策略改进&#xff09;。在策略迭代中&#xff0c;这两个过程交替进行&…

在Word中优雅的给公式编号,且自动更新

本文适用情景&#xff1a; 使用Word插入公式&#xff1b;需要给公式增加编号&#xff1b;且在正文中引用&#xff0c;支持自动更新序号。 Word自带公式编号 1 Word自带公式编辑器1.1 问题1.2 原因完美解决 2 MathType公式编辑器end: 后记&#xff1a; 1 Word自带公式编辑器 或…

投资自己,成就未来——人大女王金融硕士助力您成为金融领域的佼佼者

在这个日新月异的时代&#xff0c;金融行业的发展日益繁荣&#xff0c;对于金融人才的需求也越来越大。为了应对这一挑战&#xff0c;越来越多的人选择投身金融领域&#xff0c;提升自己的专业素养。而中国人民大学女王金融硕士项目&#xff0c;正是为了满足这一需求而设立的&a…

接口测试系列之——接口安全测试

“开源 Web 应用安全项目”(OWASP)在 2019 年发布了 API 十大安全风险 《OWASP API 安全 Top10》&#xff1a;失效的对象级别授权、失效的用户身份验证、过 度的数据暴露、资源缺乏和速率限制、失效的功能级授权、批量分配、安全配置 错误、注入、资产管理不当、日志和监视不足…

进程管理(一)

程序执行分析及前趋图 前驱图是有向图。 P2的执行是以P1的执行完成为条件的,或者P2是依赖P1的。 P1的有向边指向P2。 程序顺序执行 程序并发执行 I输入,C计算,P输出 第二道程序的输入和第一道程序的计算是同时进行。斜着是一个程序。 进程的定义及特征 <

WMS仓储管理系统中常见的波次划分策略

在如今高度竞争的物流行业中&#xff0c;提高订单处理效率和资源利用率是企业追求的关键目标。为了实现这些目标&#xff0c;一种被广泛应用的方法是采用拣货波次计划。本文将详细解析拣货波次计划的概念、意义以及在WMS仓储管理系统中的实现过程。 拣货波次计划是一个将不同订…

基于swing的人事管理系统

概述 个人项目人事管理系统&#xff0c;针对部门和人员之间的管理。 详细 一、项目UI 二、项目结构 三、项目使用方法 Eclipse导入现有现有项目到工作空间即可&#xff0c;会自动加载包内相关jar包&#xff0c;使用的java源文件 四、部分代码 MainFrm.java package view…

IP-guard WebServer 远程命令执行漏洞

IP-guard WebServer 远程命令执行漏洞 免责声明漏洞描述漏洞影响漏洞危害网络测绘Fofa: app="ip-guard"漏洞复现1. 构造poc2. 访问文件3. 执行命令免责声明 仅用于技术交流,目的是向相关安全人员展示漏洞利用方式,以便更好地提高网络安全意识和技术水平。 任何人不得…

playwright与cypress各有什么优势与劣势

Playwright和Cypress都是用于自动化测试的工具&#xff0c;但它们在一些方面有所不同。 Playwright的优势&#xff1a; 跨浏览器支持&#xff1a;Playwright支持多种浏览器&#xff0c;包括Chrome、Firefox和Safari等&#xff0c;可以在不同浏览器上运行测试&#xff0c;提高…

对象反序列化

使用到的流是对象字节输入流&#xff1a;ObjectInputStream 作用&#xff1a;以内存为基准&#xff0c;把存储到磁盘文件中去的对象数据恢复成内存中的对象&#xff0c;称为对象反序列化。 ObjectInputStream反序列化方法 /**目标&#xff1a;学会进行对象反序列化&#xff1…

c语言刷题第10周(16~20)

规律&#xff1a; 若多个次数最多按ASCII码顺序输出。 用for循环i取&#xff08;0~26&#xff09; 则输出满足条件的字符串中位置最靠前的那个。 用while循环遍历&#xff08;while&#xff08;a[i]!\0&#xff09;&#xff09; 从键盘输入任意只含有大小写字母的串s&…

Python全栈安全:构建安全的全栈应用

&#x1f482; 个人网站:【工具大全】【游戏大全】【神级源码资源网】&#x1f91f; 前端学习课程&#xff1a;&#x1f449;【28个案例趣学前端】【400个JS面试题】&#x1f485; 寻找学习交流、摸鱼划水的小伙伴&#xff0c;请点击【摸鱼学习交流群】 第一部分&#xff1a;全…

2022ICPC济南站

K Stack Sort 题意&#xff1a;给你一个长度为n的排列&#xff0c;设有m个栈&#xff0c;你需要将这n个数按出现顺序入栈&#xff0c;每次入栈操作从m个栈中选择一个栈从栈顶入栈。当所有元素入栈完成后&#xff0c;需要不断选择栈&#xff0c;将栈中元素弹空。需满足出栈顺序…

行人检测综述 之 精华提取——图表与挑战

From Handcrafted to Deep Features for Pedestrian Detection:A Survey 从手工制作到深度特征的行人检测&#xff1a;一项调查 调查内容&#xff1a; 关于行人检测的传统算法和深度学习算法&#xff1b;关于行人检测的单光谱检测和多光谱检测&#xff1b;关于行人检测的多种数…