openfoam计算旋转体滑移网格方法和MRF方法(附案例代码)
1 旋转体数值模拟
openfoam中处理旋转体的方法主要包括两种方法:滑移网格法和多重参考系方法,在滑移网格方法中主要采用的为任意网格界面法(AMI),多重参考系方法则是通过设定多重参考系区域,该区域包括将旋转体包括在内部,集体设为一个cellzone,通过旋转区域旋转来实现。
2 滑移网格法
openfoam中滑移网格通过字典文件dynamicMeshDict设置,具体设置方法可见 http://openfoamwiki.net/index.php/DynamicMeshDict
,在动网格求解器中,对于旋转运动主要采用solidBodyMotionFvMesh(单旋转体)和 multiSolidBodyMotionSolver(多旋转体),不同版本可能有不同的命名方法,具体可查阅 /openfoam/src/dynamicMesh/motionSolvers/displacement/solidBody
在滑移网格方法中需要对旋转区域设置AMI面。
具体实现:
在旋转体外部设置一个区域innerCylinder,将旋转区域全部包纳,区域属性为cellZone和faceZone,采用creatpatch或者creatbaffle创建一对AMI面,此时AMI贴合在innerCylinder上(该过程应用了innerCylinder faceZone属性),之后在dynamicMeshDict设置旋转区域为innerCylinder(该过程需要innerCylinder的cellZone属性)
代码可参考:
/openfoam/tutorials/incompressible/pimpleFoam/RAS/propeller
对于多旋转体则修改dynamicMeshDict
/*--------------------------------*- C++ -*----------------------------------*\========= |\\ / F ield | OpenFOAM: The Open Source CFD Toolbox\\ / O peration | Website: https://openfoam.org\\ / A nd | Version: 7\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{version 2.0;format ascii;class dictionary;location "constant";object dynamicMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dynamicFvMesh dynamicMotionSolverFvMesh;
motionSolverLibs ("libfvMotionSolvers.so");solver multiSolidBodyMotionSolver;multiSolidBodyMotionSolverCoeffs{innerCylinder1{solidBodyMotionFunction rotatingMotion;rotatingMotionCoeffs{origin (0 0 0);//旋转中心axis (0 1 0);//旋转轴omega 50; // rad/s}}innerCylinder2{solidBodyMotionFunction rotatingMotion;rotatingMotionCoeffs{origin (0 0 0);axis (0 1 0);omega 50; // rad/s}}}
3 MRF方法:
多重参考系方法:具体理论不再介绍,通过在计算区域设置两个参考系实现,具体则是可以设置MRF区域(cellZone),之后在区域内旋转体的相对速度应为0;即此时速度边界设置为:
propeller
{type fixedValue;value uniform (0 0 0);
}
在该设置中需要再去设置AMI面,只需要将innerCylinder设定为MRF区域,设置旋转中心,在snappyHexMeshDict文件中,对于innerCylinder设置为:
innerCylinder{level (4 4);cellZone innerCylinder;faceZone innerCylinder;cellZoneInside inside;}
cellZone将其设置为一个区域,此时可以将其设置为MRF区域,faceZone则是使得区域内部的旋转体propeller也可以将其划分网格,inside则指innerCylinder包括的为内部区域。
也可采用topoSet进行设置:
https://mp.weixin.qq.com/s/cTmcjdTrh-OeZWdyOHWIEg
旋转区域设置:MRFProperties
/*--------------------------------*- C++ -*----------------------------------*\========= |\\ / F ield | OpenFOAM: The Open Source CFD Toolbox\\ / O peration | Website: https://openfoam.org\\ / A nd | Version: dev\\/ M anipulation |
\*---------------------------------------------------------------------------*/
FoamFile
{version 2.0;format ascii;class dictionary;location "constant";object MRFProperties;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //MRF1
{cellZone innerCylinder;active yes;// Fixed patches (by default they 'move' with the MRF zone)nonRotatingPatches ();origin (0 0 0);axis (0 1 0);omega 158; // rad/s
}// ************************************************************************* //
附完整代码:
https://download.csdn.net/download/zhaoyunye01/13606525
openfoam计算旋转体滑移网格方法和MRF方法(附案例代码)相关推荐
- hashcode()方法和equals()方法
一.hashcode()方法和equals()方法的介绍 Java的基类Object提供了一些方法,其中equals()方法用于判断两个对象是否相等,hashCode()方法用于计算对象的哈希码.eq ...
- Java实现二树杈_HashSet的hashCode方法和equals方法的重写,TreeSet中compareTo方法的重写,Comparator在treeSet中的应用。...
HashSet的hashCode方法和equals方法的重写,TreeSet中compareTo方法的重写,Comparator在treeSet中的应用. HashSet: 首先,hashset底层是 ...
- java重写6,java重写equals()方法和hashCode()方法
1.equals()方法和hashCode()方法是什么? equals()和hashCode()都是是Java中万物之源Object类中的方法: equals方法用于比较两个对象是否相同,Objec ...
- 为什么要重写hashCode()方法和equals()方法以及如何进行重写
一.前言 本篇文章主要探讨的问题有三个: 1.首先我们为什么需要重写hashCode()方法和equals()方法? 2.在什么情况下需要重写hashCode()方法和equals()方法? 3.如何 ...
- 为什么要重写hashcode方法和equals方法
为什么要重写hashcode方法和equals方法 我们可能经常听到说重写equals方法必须重写hashcode方法,这是为什么呢?java中所有的类都是Object的子类,直接上object源码 ...
- 精通Android自定义View(十五)invalidate方法和postInvalidate方法
1 概述 invalidate方法和postInvalidate方法都是用于进行View的刷新,invalidate方法应用在UI线程中,而postInvalidate方法应用在非UI线程中,用于将线 ...
- Java hashCode()方法和equals()方法
hashCode方法和equals方法之间的关系: equals方法指示其他一个对象和此对象是否相等.在Object类中定义如下: public boolean equals(Object obj) ...
- 详解 equals() 方法和 hashCode() 方法
来源:编程迷思, www.cnblogs.com/kismetv/p/7191736.html 前言 Java的基类Object提供了一些方法,其中equals()方法用于判断两个对象是否相等,has ...
- charAt()方法和charCodeAt()方法—— 从字符串中选取一个字符.
charAt() 方法和charCodeAt () 方法用于选取字符串中某一位置上的单个字符.对于检查用户输入的有效性 ,这两个方法也是非常有用的. charAt() 方法具有一个参数 :即所选取字符 ...
最新文章
- UE capability与 双连接相关的参数。
- Ubuntu Server 更改hostname
- 20210928 A列满秩,那么A转置A一定可逆
- 学术好帮手Publons使用指南
- spring-Bean依赖注入-》普通数据类型
- 零基础前端入门,真正难在哪里?简说编程思想和逻辑思维
- python批量删除注释_批量删除C和C++注释
- f2 柱状图滚动 钉钉小程序_钉钉小程序使用阿里的F2图表
- 机器学习问题总结(02)
- pycharm-自动换行
- 开源非英文关键词编程语言
- 机器学习的1000+篇文章总结
- 并发编程之:深入解析线程池
- B2B、B2C、C2C、O2O分别是什么意思
- 我说CMMI2.0之:策划PLAN
- P2738 [USACO4.1]篱笆回路Fence Loops
- sql语句,如何找出重复的数据
- 用html写除法竖式代码,模拟竖式除法
- 债券市场也有波动和熊市,债基应该在什么情况下退出?
- 希赛教育计算机网络基础,2020年9月网络教育统考《计算机应用基础》计算机网络模拟题试卷3...