openFoam中cellZone的使用及编程

news2024/10/3 4:42:21

简介

通常在流体计算中需要对某个特定区域进行处理(比如添加源项,可参考这篇文章OpenFOAM编程:VOF法与多孔介质模型相结合),这是就需要用到cellZone.

通常有两种产生cellZone的方式:
(1)从其他划分网格的工具中导入时,自然会对不同实体用cellZone区分。可参考这篇文章将fluentMeshing网格转换为openFoam网格
(2)在已有的网格上使用topoSet命令生成cellZone

本文只关心第二种方式

设置cellZone

本文使用icoFoam的cavity案例

为了告诉openFoam哪个区域要设置成cellZone,需要在system目录下编写topoSetDict文件

/*--------------------------------*- C++ -*----------------------------------*\
  =========                 |
  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
   \\    /   O peration     | Website:  https://openfoam.org
    \\  /    A nd           | Version:  8
     \\/     M anipulation  |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version     2.0;
    format      ascii;
    class       dictionary;
    object      topoSetDict;
}

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

actions
(
    {
        name    g;          // 单元集合命名为g
        type    cellSet;
        action  new;
        source  cylinderToCell; // 圆柱区域
        sourceInfo
        {
          p1       (0.0 0.0 0); // 圆柱体上表面的中心点
          p2       (0.05 0 0);   	// 圆柱体下表面的中心点
          radius   0.03;         	// 圆柱半径
        }
    }

   {
        name    grain;         // 区域命名grain
        type    cellZoneSet;    
        action  new;
        source  setToCellZone;
        sourceInfo
        {
            set g;          // 给定source信息,来自单元集合g
        }
    }
);

// ************************************************************************* //

首先生成一个单元集合g,g由一个圆柱体确定。然后根据g再生成名称为grain的cellZone

接下来运行topoSet命令即可获得名称为grain的cellZone

使用paraFoam命令检查一下网格

下图是划分前的网格

请添加图片描述
下图是划分后的网格
请添加图片描述蓝色区域就是名称为grain的cellZone

使用cellZone

cellZone本质上是一个列表,每个元素记录了cell的序号。所以可以通过访问cellZone来设置给定区域的物理量。比如为了将grain处的压力p设置为30,可以将如下代码插入到icoFoam求解器当中

labelUList cellListOfGrain=mesh.cellZones()["grain"];

forAll(cellListOfGrain,i)
{
    p[cellListOfGrain[i]]=30;
}
p.write();

运行编译后的icoFoam,可以得到如下结果
请添加图片描述

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

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

相关文章

一文带你看透通用文字识别 OCR

什么是 OCR? OCR技术指的是 Optical Character Recognition 或光学文字识别技术,即从图像中识别文字,并将其转换为电子文本或机器可读格式。它可以被广泛应用于图像处理,文字处理,自然语言处理,计算机视觉…

Kubernetes学习(五)持久化存储

Volume 卷 容器中的文件在磁盘上是临时存放的,这给容器中运行的特殊应用带来了一些问题。首先,当容器崩溃时,kubectl将重新启动容器,容器中的文件将会丢失--应为容器会以干净的状态重建。其次,当在一个Pod中运行多个容…

【算法题目】【Python】彻底刷遍DFS/BFS的算法题目

文章目录参考资料树的前序、中序、后序遍历树的层次遍历回溯与剪枝组合组合总和 III电话号码的字母组合组合总和组合总和 II参考资料 参考这里面的一些讲解: https://github.com/youngyangyang04/leetcode-master。 树的前序、中序、后序遍历 看完 树的种类 之后…

网络 | UDP与TCP协议讲解 | TCP可靠性是怎样实现的?

文章目录前置知识查看网络状态的工具查看进程idUDP协议协议格式UDP只有接收缓冲区基于UDP的应用层协议TCP协议流的理解协议格式确认应答机制缓冲区序号的作用流量控制超时重传机制6位标志位紧急数据的处理三次握手listen的第二个参数全连接和半连接队列都维护了什么信息&#x…

史上最全若依管理系统修改页面标题和logo

整理若依框架去除 若依标题、logo及其他内容。一:网页上的logo进入ruoyi-ui --> public --> favicon.ico,把这个图片换成你自己的logo二:页面中的logo进入ruoyi-ui --> src --> assets --> logo --> logo.png,把…

Git版本控制工具(详解)

Git版本控制工具 Git常见命令速查表 集中式版本控制 cvs和svn都是属于集中式版本控制系统 他们的主要特点是单一的集中管理服务器 保存所有文件的修订版本协同开发人员通过客户端连接到这台服务器 取出最新的文件或者提交更新 优点每个人都可以在一定程度上看到项目中的其他…

动态规划——子序列、编辑距离、回文子串

目录 子序列问题 300.最长递增子序列 674.最长连续递增序列 718.最长重复子数组 1143.最长公共子序列 1035.不相交的线 53.最大子序和 编辑距离 392.判断子序列 115.不同的子序列 583.两个字符串的删除操作 72.编辑距离 回文子串 647.回文子串 516.最长回文子序列…

使用sapply函数改写for循环并绘制迟滞温度与污染物效应图

For循环应该是我们在R语言使用得最普遍的循环了,优势就是简单、易上手,缺点就是慢,特别对于跑数据量比较大的数据。Apply家族函数使用C来编写,运行得非常快,非常适合代替for循环。今天介绍一下sapply函数改写for循环并…

abp.net 5.0 部署IIS10

今天遇到了abp.net 5.0部署iis10被卡住的问题,网上找了一些资料,都不是我要的,最后我总结一下我用的是 5.0的版本,所以我需要给服务器安装 iis5.0的相关运行环境 1:https://dotnet.microsoft.com/zh-cn/download/dotne…

html--学习

javascrapt交互&#xff0c;网页控制JavaScript&#xff1a;改变 HTML 图像本例会动态地改变 HTML <image> 的来源&#xff08;src&#xff09;&#xff1a;点亮灯泡<script>function changeImage() {elementdocument.getElementById(myimage) #内存变量&#xff0…

Linux---基本指令

专栏&#xff1a;Linux 个人主页&#xff1a;HaiFan. 基本指令ls 指令pwd命令cd 指令touch指令mkdir指令&#xff08;重要&#xff09;rmdir指令 && rm 指令&#xff08;重要&#xff09;man指令&#xff08;重要&#xff09;cp指令&#xff08;重要&#xff09;mv指令…

win10 C++调用conda的python

普通 比如说是conda的DL环境&#xff0c;路径是D:\Miniconda3\envs\DL VC目录->包含目录里加入D:\Miniconda3\envs\DL\include VC目录->库目录里加入D:\Miniconda3\envs\DL\libs 链接器->输入->附加依赖项里加入D:\Miniconda3\envs\DL\libs\python37.lib 在l…

“ 寻友之旅 “ 的三种解决办法

题目来源于&#xff1a;稀土掘金 " 寻友之旅 " 的三种解决办法&#xff01; 本文将分别讲解如何使用BFS、双向BFS以及 Dijsktra堆优化的方法来解决此题~ 一起来看看吧&#xff01; 附Java题解代码&#xff01; 文章目录" 寻友之旅 " 的三种解决办法&#…

如何将两个或多个PDF文件合并成一个?这3个方法可以看看

在工作中&#xff0c;有时候我们需要把两个或多个PDF文件合并成一个&#xff0c;这样一来&#xff0c;可以方便阅读、修改&#xff0c;还能快速打印文件。 下面分享3个工具&#xff0c;看看如何将两个或多个PDF文件合并成一个文件。 方法一&#xff1a;使用美图工具 如果PDF文…

【Spring AOP】如何统一“拦截器校验、数据格式返回、异常返回”处理?

目录 一、Spring 拦截器 1.1、背景 1.2、实现步骤 1.3、拦截原理 二、 统一url前缀路径 2.1、方法一&#xff1a;在系统的配置文件中设置 2.2、方法二&#xff1a;在 application.properies 中配置 三、统一异常处理 四、统一返回数据返回格式处理 4.1、背景 4.2、…

PTA:L1-025 正整数A+B、L1-026 I Love GPLT、L1-027 出租(C++)

目录 L1-025 正整数AB 问题描述&#xff1a; 实现代码&#xff1a; L1-026 I Love GPLT 问题描述&#xff1a; 实现代码&#xff1a; L1-027 出租 问题描述&#xff1a; 实现代码&#xff1a; 原理思路&#xff1a; 出租那道题有点意思哈 L1-025 正整数AB 问题描述…

【Java学习笔记】13.Java StringBuffer 和 StringBuilder 类

Java StringBuffer 和 StringBuilder 类 当对字符串进行修改的时候&#xff0c;需要使用 StringBuffer 和 StringBuilder 类。 和 String 类不同的是&#xff0c;StringBuffer 和 StringBuilder 类的对象能够被多次的修改&#xff0c;并且不产生新的未使用对象。 在使用 St…

Tomcat8安装

1、前置环境 Tomcat 8 对应jdk 1.8 版本&#xff1b;如果你的jdk版本是8以上&#xff0c;则安装对应的tomcat版本。 jdk8 官方下载安装时&#xff0c;先安装jdk版本&#xff0c;最后单独安装jre。所以电脑会有两套jre&#xff0c;一套是jdk中的jre&#xff0c;位于 \jre 目录下…

客户案例|三强联手,深度集成,实现四方共赢

关键发现&#xff1a; 用户痛点&#xff1a;以现有ERP系统台账表单模式管理设备&#xff0c;已经不能满足伯恩业务增长所需的设备管理优化与革新的要求。 解决方案&#xff1a;利用西门子Mendix低代码平台与SAP PM模块进行集成开发的联合解决方案&#xff0c;为实现客户设备资…

3.8 并查集

并查集 题目链接 用途 维护集合 将两个集合合并询问两个元素是否在一个集合当中 实现思路 用树的形式维护集合每个集合用一棵树表示&#xff0c;树根的编号就是整个集合的编号&#xff0c;每个节点存储他的父节点&#xff0c;p[x]表示节点x的父节点判断树根的方法:p[x]x求…