基于OpenFOAM求解器二次开发

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算例计算,得到的速度场、压力场精度较低但是符合仿真规律。文章仅作为入门指导,具体算例方法需要根据实际情况进行自定义修改,希望本文能够给您提供帮助。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

边缘计算多角色智能计量插座:用电监测和资产管理的未来智能化引擎

目前主流的智能插座涵盖了红外遥控(控制空调和电视等带有红外标准的电器),配备着测温、测湿等仓库应用场景,配备了人体红外或者毫米波雷达作为联动控制,但是大家有没有思考一个问题,就是随着对接的深入&…

汽车标定技术(三)--XCP协议如何支持测量功能

目录 1. 概述 2. 测量方式 -- Poll 3. 测量方式 -- DAQ 3.1 ODT概念模型 3.2 DAQ List概念 3.3 ODT 绝对编号和相对编号 3.4 静态DAQ和动态DAQ模式 (1)静态DAQ (2)动态DAQ 4.小结 1. 概述 在该系列的首篇文章汽车标定技…

轻量封装WebGPU渲染系统示例<19>- 使用GPU Compute材质多pass实现元胞自动机之生命游戏(源码)

当前示例源码github地址: https://github.com/vilyLei/voxwebgpu/blob/feature/rendering/src/voxgpu/sample/GameOfLifeMultiMaterialPass.ts 系统特性: 1. 用户态与系统态隔离。 细节请见:引擎系统设计思路 - 用户态与系统态隔离-CSDN博客 2. 高频调用与低频调…

苍穹外卖-day06

苍穹外卖-day06 课程内容 HttpClient微信小程序开发微信登录导入商品浏览功能代码 功能实现:微信登录、商品浏览 微信登录效果图: 商品浏览效果图: 1. HttpClient 1.1 介绍 HttpClient 是Apache Jakarta Common 下的子项目,…

Busco-真核生物为主基因组质量评估

文章目录 简介Install必须参数谱系数据集输出结果自动谱系选择结果解读完整片段化缺失 自动选择:多domain和污染匹配注意BUSCO报告常用脚本真核Ref 简介 Busco评估基因组质量的核心原理在于通过计算基因组的通用单拷贝标记基因的比例来估计基因组的完整性。其中两个…

SOLIDWORKS 2024新产品发布会暨SOLIDWORKS 创新日活动-硕迪科技

“达索系统SOLIDWORKS 2024新产品发布会暨SOLIDWORKS创新日” 线下发布会即将登场!硕迪科技与达索系统携手为您奉上一场“云享未来,智协未来”的创新年度盛会,欢迎莅临! SOLIDWORKS 2024 以更加强大的姿态亮相,帮助您…

下载git步骤

文章目录 导文1.软件下载2.git安装3.测试git 导文 下载git的详细步骤 1.软件下载 可以自己去网上下载,根据自己电脑的系统类型是多少位的,去下载对应的安装包。 下载地址:Git - Downloads 根据自己的 操作系统进行选择,按需选择…

学习Nginx配置

1.下载地址 官网地址:NGINX - 免费试用、软件下载、产品定价 (nginx-cn.net) 我这边选择NGINX 开源版 nginx: download 2.nginx的基本配置 配置文件语法 配置文件组成:注释行,指令块配置项和一系列指令配置项组成。 单个指令组成&#x…

计算机丢失mfc100.dll如何恢复,详细解析mfc100.dll文件丢失解决方法

在计算机使用过程中,我们可能会遇到一些错误提示,比如“mfc100.dll丢失”。这是因为动态链接库(DLL)文件是Windows操作系统的重要组成部分,它们包含了许多程序运行所需的函数和数据。当这些DLL文件丢失或损坏时&#x…

可持久化01Trie

例题: 解释: 首先这里要求连续异或,所以存储前缀异或和数组。首先的话,我们只考虑前r个版本的Trie,所以以root[r]为根节点的Trie就是1到r位置数。但是,还有一个l左端点,所以我们对于每一个节点…

竞赛选题 深度学习机器视觉车道线识别与检测 -自动驾驶

文章目录 1 前言2 先上成果3 车道线4 问题抽象(建立模型)5 帧掩码(Frame Mask)6 车道检测的图像预处理7 图像阈值化8 霍夫线变换9 实现车道检测9.1 帧掩码创建9.2 图像预处理9.2.1 图像阈值化9.2.2 霍夫线变换 最后 1 前言 🔥 优质竞赛项目系列,今天要分…

OpenCV 输出文本

PutText() 输出文本 OpenCV5 将支持中文字符的输出, 当前版本OpenCV4原生不支持, 可以使用Contrib包FreeType方式实现, 不过比较麻烦.为了省事, 也可以通过将Mat转成bitmap,然后使用GDI方式输出中文字符. 示例代码 /// <summary>/// OpenCV暂时不能支持中文字符输出,显示…

Python爬虫入门教程之快速理解HTTP协议

文章目录 前言一、HTTP协议是什么&#xff1f;二、HTTP 请求三、请求行四、请求首部五、请求体六、HTTP 响应七、响应行八、响应首部九、响应体总结关于Python技术储备一、Python所有方向的学习路线二、Python基础学习视频三、精品Python学习书籍四、Python工具包项目源码合集①…

计算机基础知识49

三板斧的使用(views.py) 三个方法&#xff1a;HttpResponse: 返回的是字符串render : 返回html文件redirect : 返回加载HTML页面的 def html(request):print(from html)# return HttpResponse(request) # 它返回的是字符串return render(request,html.html) # 返回html# ret…

跟着森老师学React Hooks(1)——使用Vite构建React项目

Vite是一款构建工具&#xff0c;对ts有很好的支持&#xff0c;最近也是在前端越来越流行。 以往的React项目的初始化方式大多是通过脚手架create-react-app(本质是webpack)&#xff0c;其实比起Vite来构建&#xff0c;启动会慢一些。 所以这次跟着B站的一个教程&#xff0c;使用…

对称二叉树(C++解法)

题目 给你一个二叉树的根节点 root &#xff0c; 检查它是否轴对称。 示例 1&#xff1a; 输入&#xff1a;root [1,2,2,3,4,4,3] 输出&#xff1a;true示例 2&#xff1a; 输入&#xff1a;root [1,2,2,null,3,null,3] 输出&#xff1a;false C代码 #include <iostrea…

Blender做一个小凳子学习笔记

文章目录 创建椅座椅子腿靠背渲染 本文是这个B站视频的学习笔记&#xff1a;【Blender】爆肝两个月&#xff01;拜托三连了&#xff01;这绝对是全B站最用心的&#xff08;没有之一&#xff09;Blender 3D建模零基础入门 创建椅座 首先&#xff0c;需要了解其左上角和右上角的…

【教3妹学编程-算法题】 在树上执行操作以后得到的最大分数

3妹&#xff1a;2哥&#xff0c;今日都立冬了&#xff0c; 可是天气一点都不冷。 2哥 : 立冬了&#xff0c;晚上要不要一起出去吃饺子&#xff1f;&#x1f95f; 3妹&#xff1a;好呀好呀&#xff0c;2哥请吃饺子喽 2哥 : 歪歪&#xff0c;我说的是一起出去吃&#xff0c;没说我…

【Linux】了解文件的inode元信息,以及日志分析

目录 一、inode表结构&#xff0c;以及元信息 1、了解inode信息有哪些 2、关于inode表的说明 Linux中访问文件的过程&#xff1a; 3、硬连接与软连接的区别&#xff0c;&#xff08;请看前面&#xff0c;写过的&#xff09; 二、文件系统的备份与恢复 三、几种常见的日志…

node插件MongoDB(三)—— 库mongoose 的使用

前言 提示&#xff1a;使用mongoose 的前提是你安装了node和 MongoDB。 mongoose 官网文档&#xff1a;http://mongoosejs.net/docs/index.html 文章目录 前言一、安装二、基本使用1. 打开bin目录的mongod.exe文件2. 基本使用的代码&#xff08;连接mongodb 服务&#xff09;3.…