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方法(附案例代码)相关推荐

  1. hashcode()方法和equals()方法

    一.hashcode()方法和equals()方法的介绍 Java的基类Object提供了一些方法,其中equals()方法用于判断两个对象是否相等,hashCode()方法用于计算对象的哈希码.eq ...

  2. Java实现二树杈_HashSet的hashCode方法和equals方法的重写,TreeSet中compareTo方法的重写,Comparator在treeSet中的应用。...

    HashSet的hashCode方法和equals方法的重写,TreeSet中compareTo方法的重写,Comparator在treeSet中的应用. HashSet: 首先,hashset底层是 ...

  3. java重写6,java重写equals()方法和hashCode()方法

    1.equals()方法和hashCode()方法是什么? equals()和hashCode()都是是Java中万物之源Object类中的方法: equals方法用于比较两个对象是否相同,Objec ...

  4. 为什么要重写hashCode()方法和equals()方法以及如何进行重写

    一.前言 本篇文章主要探讨的问题有三个: 1.首先我们为什么需要重写hashCode()方法和equals()方法? 2.在什么情况下需要重写hashCode()方法和equals()方法? 3.如何 ...

  5. 为什么要重写hashcode方法和equals方法

    为什么要重写hashcode方法和equals方法 我们可能经常听到说重写equals方法必须重写hashcode方法,这是为什么呢?java中所有的类都是Object的子类,直接上object源码 ...

  6. 精通Android自定义View(十五)invalidate方法和postInvalidate方法

    1 概述 invalidate方法和postInvalidate方法都是用于进行View的刷新,invalidate方法应用在UI线程中,而postInvalidate方法应用在非UI线程中,用于将线 ...

  7. Java hashCode()方法和equals()方法

    hashCode方法和equals方法之间的关系: equals方法指示其他一个对象和此对象是否相等.在Object类中定义如下: public boolean equals(Object obj) ...

  8. 详解 equals() 方法和 hashCode() 方法

    来源:编程迷思, www.cnblogs.com/kismetv/p/7191736.html 前言 Java的基类Object提供了一些方法,其中equals()方法用于判断两个对象是否相等,has ...

  9. charAt()方法和charCodeAt()方法—— 从字符串中选取一个字符.

    charAt() 方法和charCodeAt () 方法用于选取字符串中某一位置上的单个字符.对于检查用户输入的有效性 ,这两个方法也是非常有用的. charAt() 方法具有一个参数 :即所选取字符 ...

最新文章

  1. UE capability与 双连接相关的参数。
  2. Ubuntu Server 更改hostname
  3. 20210928 A列满秩,那么A转置A一定可逆
  4. 学术好帮手Publons使用指南
  5. spring-Bean依赖注入-》普通数据类型
  6. 零基础前端入门,真正难在哪里?简说编程思想和逻辑思维
  7. python批量删除注释_批量删除C和C++注释
  8. f2 柱状图滚动 钉钉小程序_钉钉小程序使用阿里的F2图表
  9. 机器学习问题总结(02)
  10. pycharm-自动换行
  11. 开源非英文关键词编程语言
  12. 机器学习的1000+篇文章总结
  13. 并发编程之:深入解析线程池
  14. B2B、B2C、C2C、O2O分别是什么意思
  15. 我说CMMI2.0之:策划PLAN
  16. P2738 [USACO4.1]篱笆回路Fence Loops
  17. sql语句,如何找出重复的数据
  18. 用html写除法竖式代码,模拟竖式除法
  19. 债券市场也有波动和熊市,债基应该在什么情况下退出?
  20. 希赛教育计算机网络基础,2020年9月网络教育统考《计算机应用基础》计算机网络模拟题试卷3...

热门文章

  1. 全球与中国冷气喷涂市场深度研究分析报告
  2. [资源分享]Linode免费使用 [ 资源分享 ]
  3. 微软2017校招笔试题2 composition
  4. Mac自动隐藏/显示程序坞有时延解决办法
  5. 频率响应分析--伯德图(matlab中bode函数的使用)
  6. 极路由云平台倒闭,路由器免插件离线ROOT方法
  7. ALL in —— 雷军的极致
  8. siki学院愤怒的小鸟脚本
  9. matlab如何求变换矩阵,如何用Matlab实现机器人的变换矩阵
  10. java图片处理类(图片水印,图片缩放)