OpenFOAM顶盖驱动流详解!使用手册(中文翻译版)
引言
这是开源场运算和操作 c++库类(openfoam)的使用指南。他详细描述了OpenFOAM的基本操作。首先通过第二章一系列教程练习。然后通过对更多的独立组件的更详细的描述学习openfoam。
Of 首先主要是一个c++库类,主要用于创建可执行文件,比如应用程(application)。应用程序分成两类:求解器,都是为了解决特定的连续介质力学问题而设计的;公用工程,这些是为了执行包括数据操作等任务而设计的。Of 包括了数量众多的solver和utilities,牵涉的问题也比较广泛。将在第三章进行详尽的描述。
Of 的一个强项是用户可以通过必要的预备知识(包括数学,物理和编程技术)创建新的solvers 和utilities。
Of 需要前处理和后处理环境。前处理、后处理接口就是of本身的实用程序(utilities),以此确保协调的数据传输环境。图1.1是of总体的结构。第4章和第五章描述了前处理和运行of 的案例。既包括用of提供的mesh generator划分网格也包括第三方软件生成的网格数据转换。第六章介绍后处理。
Chapter 2
指导手册
在这一章中我们详细描述了安装过程,模拟和后进程处理一些OpenFOAM测试案例,以引导用户运行OpenFOAM的基本程序。 $FOAM_TUTORIALS 目录包含许多案件演示of提供的所有求解器以及许多共用程序的使用,在试图运行教程之前,用户必须首先确保他们已经正确地安装了OpenFOAM。
该教程案件描述 blockMesh预处理工具的使用,paraFoam案例设置和运行OpenFOAM求解器及使用paraFoam进行后处理。使用OpenFOAM支持的第三方后处理软件的用户可以选择:他们要么可以按照教程使用paraFoam,或当需要后处理时参阅第六章的第三方软件使用说明。
OpenFOAM安装目录下的tutorials目录中所有的指导手册都是可复制的。教程根据流动类型分列在不同的目录下,对应子目录根据求解器slover分类。例如,所有icoFoam的案件存储在一个子目录“incompressible / icoFoam”, incompressible表示流动类型为不可压。如果用户希望运行一套例子,建议该用户复制tutorials目录到本地运行目录。他们可以轻松的通过输入下边的命令来复制:
mkdir -p $FOAM RUN
cp -r $FOAM TUTORIALS $FOAM RUN
2.1盖驱动腔流Lid-driven cavity flow
本节将介绍如何进行预处理,运行和后处理一个例子,涉及二维正方形区域内的等温,不可压缩流动。图2.1中几何体的所有边界都是由壁面。在x方向顶层墙体以1米/秒的速度移动,而其他3个墙壁是静止的。最初,流动会假设为层流,将在均匀网格上使用icoFoam求解器来求解层流等温不可压流动。在本教程中,将研究加强网格的划分的效果和网格朝向壁面分级的效果。最终,流动雷诺数增加,必须使用用于恒温不可压缩紊流的pisoFoam求解器.
2.1.1前处理
通过编辑实例文件在OpenFOAM中设置实例,用户应选择一个xeditor进行前处理,如emacs,vi,gedit,kate,nedit等。编辑文件可能在OpenFOAM中,因为I / O的目录格式的关键字意思很明确,很容易使没有经验的用户理解。
模拟实例涉及网格,流场,属性,控制参数等数据。如4.1节所述,在OpenFOAM,这些数据是存储在实例目录下的一组文件中,而不是单个实例文件,如许多其他流体力学软件包。实例目录给予适当的描述性名称,例如:该教程中的第一个例子就叫cavity。在编辑实例文件和运行cavity实例前的准备工作中,用户应打开该案例的目录: cd /home/turtlebot/OpenFOAM/OpenFOAM-2.3.0/tutorials/incompressible/icoFoam/cavity
2.1.1.1生成网格
OpenFOAM经常运行在三维直角坐标系统中,生成的都是三维几何结构。OpenFOAM默认求解三维问题,可以通过在某些边界上指定一个'special' empty边界条件,这些边界垂直于不要求解的第三维,从而来求解二维问题。(三维如何求解二维的问题) cavity腔域是一个在xy平面上边长d= 0.1m的正方形。起初用20*20的均匀网格。块结构见图2.2。网格生成器是OpenFOAM的blockMesh,根据一个输入文档blockMeshDict(在给定实例的constant/polyMesh目录下)中的指定描述生成网格。对该实例输入的blockMeshDict如下所示:
11 format ascii;
12 class dictionary;
13 object blockMeshDict;
14 }
15 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
16
17 convertToMeters 0.1;
18
19 vertices
20 (
21 (0 0 0)
22 (1 0 0) 23 (1 1 0)
24 (0 1 0)
25 (0 0 0.1)
26 (1 0 0.1)
27 (1 1 0.1)
28 (0 1 0.1)
29 );
30
31 blocks
32 (
33 hex (0 1 2 3 4 5 6 7) (20 20 1) simpleGrading (1 1 1)
34 );
35
36 edges
37 (
38 );
39
40 patches
41 (
42 wall movingWall
43 (
44 (3 7 6 2)
45 )
46 wall fixedWalls
47 (
48 (0 4 7 3)
49 (2 6 5 1)
50 (1 5 4 0)
51 )
52 empty frontAndBack
53 (
54 (0 3 2 1)
55 (4 5 6 7)
56 )
57 );
58
59 mergePatchPairs 60 (
61 );
62
63 // ************************************************************************* //
头7行是文件头信息,用寬显线表示。接下来是FoamFile子目录中的文件信息,用{...}大括号界定。
注释(来自苏军伟博客):
FoamFile //文件头
{
version 2.0; //版本号
format ascii; //存储形式二进制或者ascii
class volScalarField;//场的类型,体心标量场
object p; //场的名字
}
在手册其他部分:
为清楚起见并节省空间,文件头,包括寬显线及FoamFile子目录,将会在引用实例文件时全部省去。
文件首先指定块顶点坐标,然后通过顶点标号和单元个数定义块(此处仅有一个),最后,它定义边界块。建议用户查阅5.3节了解blockMeshDict文件中输入项的含义。
在blockMeshDict文件上运行blockMesh生成网格。在这个实例目录中,做到这一点,只需在终端输入:
blockMesh
终端窗口产生blockMesh运行状态报告。任何blockMeshDict文件的错误都会被blockMesh挑出来,所产生的错误信息直接引导用户到文件中产生问题的所在行。在该阶段不应该有错误。
2.1.2 边界和初始条件
完成网格生成,用户可以看看为这个案例设置的初始场文件。案例设置开始时间t = 0 s,所以初始流场数据被设置在cavity目录下面的名字为0的子文件夹里。文件夹0里包括两个文件,p和U。每个压力(p)和速度(U)的初始值和边界条件都必须设置。让我们来检验下文件p:
17 dimensions [0 2 -2 0 0 0 0];
18
19 internalField uniform 0;
20
21 boundaryField
22 {
23 movingWall
24 {
25 type zeroGradient;
26 }
27
28 fixedWalls
29 {
30 type zeroGradient;
31 }
32
33 frontAndBack
34 {
35 type empty;
//空边界条件,说明求解是二维流动,这个在openFOAM是独有的,如果遇到该类边界,该边界不参与方程//离散,也就是什么都不做。
36 }
37 }
38
39// ************************************************************************* //
流场数据文件有3个主要的输入:
dimensions:指定流场尺度(单位的指数),这里的运动学压力,即m2s-2(0 2 -2 0 0 0 0 )(见第4.2.6节获取更多信息);
internalField:其内部文件数据可以是统一的,由单一值确定;不均匀时,流场所有值必须指定(详细信息见 4.2.8节 );
boundaryField:边界的流场数据,包括边界条件和及所有边界块的数据(详细信息见4.2.8节)。
对于这个腔体例子,边界仅由壁面组成,分为两种边界:(1)fixedWall:固定墙包括侧墙和低墙(2)
movingWall :移动墙的顶盖。作为壁面,两者的P文件都是 zeroGradient边界条件,即“压力垂直梯度为零”。frontAndBack代表二维情况下的前后两个块,因此必须设置为empty。
该实例中,正如大多数我们遇到的情况一样,初始场被设置为是均匀的。在这里,压力是运动学上的压力,作为一种不可压缩的情况,其绝对值是不相关,因此为方便起见设置为uniform
0。(为什么跟绝对值不相关?)
用户可用同样的方式检测0 / U文件中的速度场。dimensions为对速度所期望的因次,内部流场初始化为uniform zero ,在这个例子里速度场必须由由3个矢量表示,即均匀的(0 0
0)见第4.2.5节获取更多信息)。
对frontAndBack块,速度边界流场要求相同的边界条件。其他方向都是墙:固定墙需要假定无滑移条件,因此fixedValue 条件其值为统一(0 0 0)。顶面以1米每秒的速度沿x方向移动,因此也需要fixedValue条件,但为统一(1 0 0)值。
方腔顶盖驱动流数值模拟
方腔顶盖驱动流数值模拟
王向伟
(西安交通大学 化学工程与工艺系 710049)
摘 要:在计算流体力学的研究中,通常要计算方腔驱动流问题来检验各种N-S数值方法的有效性。要用Fluent软件对标准计算流体力学测试算例——方腔驱动流问题进行了模拟分析,其计算结果与文献中的标准解符合的比较好。
关键字:N-S方程 方腔驱动流 Fluent数值求解
流体流动的数值模拟广泛应用于气象、航天、机械、采矿等自然研究和工程计算的各个领域。近年来,随着高性能计算与通信的迅速发展,针对流体流动的数值模拟以及求解相应Navier Stokes方程(简称NS方程)的高级算法研究现已成为目前国内外备受关注的热点和前沿课题。Fluent软件是用于模拟具有复杂外形的流体流动以及热传导的计算机程序,可以有效地模拟方腔驱动流问题,为计算流体力学的算法理论研究提供仿真参考。
1、N-S方程
纳维司托克斯方程是描述粘性不可压缩流体动量守恒的运动方程。简称N-S方程。
在直角坐标系中,可表达为如下所示:
后人在此基础上又导出适用于可压缩流体的N-S方程。N-S方程反映了粘性流体流动的基本力学规律,在流体力学中有十分重要的意义。它是一个非线性偏微分方程,求解非常困难和复杂,目前只有在某些十分简单的流动问题上能求得精确解;但在有些情况下,可以简化方程而得到近似解。
2、数值计算
2.1、物理模型
在一个正方形的二维空腔中充满等密度的空气,方腔每边长为0.1m,其顶板以0.1m/s的速度向右移动,同时带动方腔内流体的流动,流场内的流体为层流。计算区域示意图如图1所示。在fluent软件中建立方腔流动问题的模型
在gambit软件中建立模型划分网络
2.2 fluent软件求解计算
迭代过程中的残差图如图3所示:
图3 迭代过程中的残差图
流函数等值线图如图4所示:
图4 流函数等值线图
速度矢量图如图5所示:
图5 速度矢量图
验证OpenFOAM中interFoam求解器
如有帮助,欢迎支持。
1 验证OpenFOAM中interFOAM求解器
1. OpenFOAM简介
OpenFOAM是Open Field Operation and Manipulation的简称,顾名思义,它实现的是(张量)场的运算和操作,实质上是一个应用于计算连续介质力学的C++类库。这一开源软件起源于八十年代后期英国帝国理工大学的Gosman教授的团队。当时的CFD代码普遍采用FORTRAN语言编写,为了寻求一种更为强大灵活通用的模拟平台,在以后的若干年里,他们利用上了C++语言的高级特性,采用更为有效的方式重新编写了很多代码。其中最初的一些C++类出自Charlie Hill的博士论文,到1993年由Henry Weller和Hrvoje Jasak以及后来的帝国理工博士生们持续不断的开发。这一软件起初叫做 FOAM,直到2004年由Henry创立的OpenCFD公司以开放源代码的形式公之于众,更名为OpenFOAM,目前最新版本是OpenFOAM-1.7,另外还有一个Jasak引导的克罗地亚版本,目前的版本是OpenFOAM-1.5-dev,两个版本在底层类库和上层应用的涵盖范围上有许多差异。OpenFOAM的优越性表现在以下几个方面:
1. 是最早利用C++语言编写而成的科学软件包之一(其它的主流CFD软件公司已经发布或正在开发新一代C++代码);
2. 利用C++的运算符重载功能使得顶层代码在对偏微分方程的描述上相对简单了许多,且可读性强,这使得OpenFOAM看上去就像一种非常自然的适用于模拟物理问题的编程语言;
3. 是最早采用多面体单元网格的通用CFD软件包,而这个功能得以实现是源于对模拟对象采用分层描述的自然结果;
4. 是目前发布于开源许可下的最强大的通用CFD软件包。
OpenFOAM为CFD领域研究工作者们提供了一个强大的开源研究平台,基于OpenFOAM展开的学习和研究目前正在欧美国家的研究院校和技术公司如火如荼的进行:Chalmer University of Technology从2006年开始开设了针对OpenFOAM的博士课程,他领导的涡轮机小组开发出用于模拟空泡和回旋流的代码,在瑞典还有另外几所大学也开设了OpenFOAM相关课程,Niklas Nordin和他的研究小组开发出强大的模拟燃烧的求解器(dieselFoam),瑞典的几家公司开始将它们应用于工业;2008年丹麦的工业界和研究院校发起了提升国家开源CFD软件的倡议,八家公司和两所院校(Aalborg University和Technical
(OpenFOAM入门学习资料)icoFoam学习笔记
|---icoFoam 求解器名称
|-createFields.H 场变量的声明和初始化
—————————————————————————————————————————————
Info<< "Reading transportProperties\n" << endl; //屏幕提示读入参数控制文件,等价于 C++中std::cout
//声明属性字典类对象,该对象由 constant 文件夹下的“transportProperties”初始化创建。
IOdictionary transportProperties
(
IOobject
//其实IOobject,顾名思义就是输入输出对象,它完成的是一个桥梁的作用,即连接要构造的类及硬盘中的相应文件。这可以通过其成员函数objectStream()了解到,当完成了“搭桥”之后,便可通过这一成员函数返回硬盘文件对应的输入流,从而从输入流中读入将要构造的类的相关信息//
(
"transportProperties", // 文件名称
runTime.constant(), // 文件位置,case/constant
mesh, // 网格对象
IOobject::MUST_READ_IF_MODIFIED, //如果更改,必须读入
IOobject::NO_WRITE // 不对该文件进行写操作
)
);
//字典查询黏性,以便初始化带有单位的标量
dimensionedScalar nu
(
transportProperties.lookup("nu")
icofoam解析
icoFoam解析
介绍
icoFoam是一种基于开源计算流体力学(CFD)库OpenFOAM的求解器。OpenFOAM是一个广泛使用的CFD软件包,用于模拟流体流动和传热问题。icoFoam是OpenFOAM中的一种求解器,主要用于求解不可压缩、稳态和稳定的流动问题。本文将对icoFoam进行解析,探讨其原理、应用和优势。
原理
icoFoam基于有限体积法(Finite Volume Method)求解Navier-Stokes方程,该方程描述了流体的运动和动量传递。通过将连续介质假设应用于Navier-Stokes方程,icoFoam可以模拟不可压缩流体的流动。其基本原理如下:
1. 网格划分:将计算区域离散成有限数量的控制体积(Cells),每个控制体积包含一个网格点(Cell Center)。
2. 方程离散化:将Navier-Stokes方程在每个控制体积内进行离散化,得到离散方程组。
3. 边界条件:根据实际问题设置边界条件,如速度、压力或壁面条件。
4. 迭代求解:通过迭代求解离散方程组,得到流场的数值解。
5. 后处理:分析数值解,获取感兴趣的物理量,如速度分布、压力分布等。
应用
icoFoam广泛应用于各种流体力学问题的模拟和分析。以下是一些常见的应用领域:
1. 空气动力学
icoFoam可以用于模拟和分析飞行器、汽车、船舶等的气动性能。通过对流场的数值模拟,可以预测气动力、气动力矩、升力和阻力等关键参数,为设计和优化提供指导。 2. 液体流动
icoFoam可以模拟和分析各种液体流动问题,如管道流动、水泵流动、湍流等。通过分析流体的速度分布、压力分布和剪切应力等,可以评估流体的运动特性,并优化流体系统的设计。
3. 燃烧和传热
icoFoam可以模拟和分析燃烧和传热问题,如燃烧室内的燃烧过程、热交换器中的传热过程等。通过分析温度分布、燃烧产物分布和传热速率等,可以评估燃烧和传热系统的性能。
欧瑞传动SDE15伺服驱动器用户手册说明书
i
前言
感谢您选用欧瑞传动伺服驱动器!同时,您将享受到我们为您提供的全面、真诚的服务!
本手册将为您提供安装调试、操作使用、故障诊断及日常维护的有关注意事项,在安装、使用前请
仔细阅读。本手册随驱动器一起提供,请妥善保管,以备以后查阅和维护使用。
当您在使用中发现任何问题,而本手册无法为您提供解答时,请与本公司各地经销商或直接与本公
司联系咨询。我们的专业技术服务人员将竭诚为您服务,并希望您能继续选用我们的产品,敬请提出宝
贵的意见和建议!
本公司致力于产品的不断改善和功能升级,手册提供资料如有变更,恕不一一通知。最新及详细版
使用手册会在公司网站()上进行公布。
版权所有,保留一切权利。
开箱验货:
在开箱时,请认真确认:
确认项目 说明
到货产品是否与您订购的产品型号相符? 箱内含您订购的机器、SDE15伺服驱动器用户手册、
伺服驱动器配件。
请通过伺服电机以及驱动器铭牌型号进行确认。
产品是否有损坏的地方? 请查看整机外表,产品在运输过程中是否有损坏的现
象。若发现有损坏或者配件遗漏,请及时联系本公司
或与您的供应商联系解决。
伺服电机旋转轴是否运行顺畅? 能够用手轻轻转动属于正常,“带抱闸”的伺服电机
除外
ii
■ 安全标识
本产品的安全运行取决于正确的安装和操作以及运输与保养维护,请务必遵守本手册中使用的如下
安全标识:
错误的操作将引发危险情况,导致人身伤亡。
错误的操作将引发危险情况,导致轻度或中度人身伤害,损坏设备。
另外,该标识中所述事项有时也可能造成严重的后果。
驱动器外壳上标识符的意义如下:
电压高,有电击危险。
表面热,禁止触摸。
■ IEC标准
本产品严格按照最新国际标准进行测试生产:
IEC/EN 61800-5-1:2007—可调速电气传动系统安全要求
IEC/EN 61800-3:2004/+A1:2012—可调速电气传动系统,第三部分:产品的电磁兼容性标准及其
OpenFOAM常用类的一些总结
OpenFOAM常用类的一些总结
OpenFOAM中有许多类,每个类的功能都很强大,这也使它面向对象设计得以实现。
对于程序,最常用到的,也是最底层的就是数据,在OpenFOAM中引入了三类基础数据
类型:标量scalar, 向量vector, 张量tensor.这三个中数据类型,也是FOAM中最基础的三个
类。(还有一个比较重要的就是bool和label,前者就是是非型,及对错型,只不过是更扩展一些,
后者是标签型数据,相当于c中的整型。关于更多的其它数据类型可以参看目
录..\src\OpenFOAM\primitives里面) 在上述数据类的基础上,增加场(field)的概念,就引入了标量场scalarField, 向量场
vectorField, 张量场tensorField。 实际上这三个类又是field类的typedef,如typedef field
saclarField。这些场类中都有对应的成员函数进行加减乘除运算,还有复杂的点积叉积等。说到
这field class,其实他就像是一个数据存放的区域一样,存放上scalar,那它成了标量场scalarField。
这些类中可以有接口实现数据的计算。从field类中又派生出了FieldField类,这个就是说场中
场类,其实这个主要用于边界条件类的一个基类。因为边界条件算是网格类场中的一个特殊的
场,后面会介绍。 比field类高一点的就是几何场类 GeometricField class,其相比field class多了纪录场位置
的相关信息。说到这里请大家注意他和polyMesh class的区别,后者只是纪录网格的结构,如点
的位置、面的组成、体的组成等等,polyMesh class中对应有pointMesh,surfaceMesh,volMesh
工程设计半轴壳体左右两面孔加工组合机床的总体设计外文翻译2
在OPENFOAM基础上研究双叶片泵内部流动
文摘:离心泵的内部流动分析逐渐成为液压设计和一个重要的问题提高性能。如今,CFD仿真工具箱泵的内部流动主要包含商业工具和开放源工具。有一些缺陷为商业CFD软件内部三维湍流流动的数值模拟泵,尤其是在捕获偏离设计的操作条件下的流动特性。此外,很难研究人员做进一步的调查,因为未申报的来源。因此,一个开源软件喜欢空旷的田野操作和操作(OpenFOAM)与研究人员来自世界各地越来越受欢迎。在本文中,一个新的计算研究是实现基于最初的解决者和被用来直接模拟稳态内流的双叶片泵,以特定的速度是111。为了披露特点,三个研究计划进行的。比率(Q / Qd)的流量是0.8,1.0和1.2,分别。仿真结果验证了粒子成像测速技术(PIV)实验结果和数值计算结果与实验数据吻合较好。与此同时,非设计工况下的流动分离现象被OpenFOAM操作条件好。的结果表明,OpenFOAM具有明显优势强劲计算泵的内部流场。分析结果也可以作为进一步研究的基础和改善离心泵。
关键词:数值模拟、双叶片泵内部流动,粒子成像测速技术(PIV)
介绍
双叶片泵是一种离心两个叶片泵。有两个对称的曲线从进口到出口和叶轮通道叶轮出口很宽。因此,它通常成为叶轮在固液两相的形状离心泵。然而,由于短发展历史和不完美的设计理论,其叶轮常常相结合的设计在实践经验的设计师到目前为止,所以它的性能和稳定性不保证[1 - 3]。确定泵的性能决定的*项目得到了国家自然科学基金的支持杰出的年轻学者(批准号50825902),中国国家自然科学基金(批准号。51079062、51079062、51079062)和自然科学江苏省基础(批准号。BK2009006,BK2010346)。
传记:刘Hou-lin(1971 -),男,博士。教授检查其内部流动特性无疑最好的方法来提高性能的泵[4 - 6]。最近,与CFD的快速进步和计算机技术,模拟内部流已逐渐成为重要的基础优化和设计涡轮机械[7]。
基于OpenFoam得机翼绕流仿真
前言
本文采取的是用gambit画网格,然后使用OpenFoam开源软件进行CFD计算,在这里开
源软件的运用不仅可以帮助我们理解计算流体力学的理论知识,还可以让我们查看开源软件
的源代码,学习编制CFD应用软件的经验,同时还能满足我们的个性化需求,我们甚至可
以根据自己的需求编写自己的求解器。
在这里简单的介绍下OpenFoam的文件结构,首先整个软件是开源的,首先是软件的功能通过求解器和工具实现,其结构如下:
solvers即为求解器,utilities即为各个工具的文件夹,test为软件功能的测试文夹。接下来介绍求解器的文件结构:
appName.c为求解器的主文档(main()函数所在地),以及各个求解器需要调用的头文
件,例如下文提到的Ueqn.H,Make文件夹是求解器的编译文件夹,由于OpenFoam是在linux
系统中,OpenFoam采用的是UNIXmake程序来传递给编译器进行编译,make就提供了wmake
程序脚本。
接下来介绍case文件结构:
System文件夹包含了求解过程的控制、离散格式、求解器的代数解法。Constant则包含
网格信息、湍流条件、传输方程的参数。0文件夹则包含各个量的初始条件。一.题一:1.网格的绘制
首先,在这里叙述一下OpenFoam对网格的支持,OpenFoam支持大多数网格软件的格
式,只用调用相应的转换工具即可生成需要的网格。例如本文使用的是gambit软件绘制
的.neu文件,将网格文件放入相应的const文件夹中,在终端输入gambitToFoamxxx.neu,
即可生成OpenFoam能够识别的网格文件。需要注意的是,生成的网格会根据在gambit中
设置的边界条件生成一个boundary文件,但在转换的过程中可能出现问题,这时就需要自己手动的根据具体问题重新设置。本文的边界情况如下图:
我们可以看到整个文件分为四部分:inlet、outlet、wall以及frontAndBack。前三个很好
OpenFOAM+LIGGGHTS+CFDEM的安装
在Ubuntu上安装OpenFOAM + liggghts +
CFDEM coupling
张祺 · 3 个月前
2016.03.28
OpenFOAM 是著名的计算流体力学(CFD)软件;liggghts 基于 lammps 进行大尺度颗粒模拟,可用于基于离散元法(DEM)的模拟;CFDEM coupling 则将前两者结合,耦合流体和固体颗粒的动力方程。
Ubuntu 是十分流行的 Linux 发行版,本文发表时已经发布 15.10 版,作为长期支持版 14.04 仍有巨大的市场份额,Ubuntu 社区也推荐个人用户使用长期支持版。所以,本文已 14.04 为例,介绍 OpenFOAM + liggghts + CFDEM
coupling 的安装。
本文发表时,OpenFOAM 已推出 3.0.1 版,但由于 CFDEM coupling 基于
2.2.0开发,支持到 2.3.0 版,因而 OpenFOAM 应选择 2.3.0 版。(官网说明coupling3.0.0 与 OpenFOAM-3.0.1兼容,2016.03.28)
liggghts 的版本对 CFDEM coupling 的安装影响不大,可选最新版或笔者选用的3.3.0版。(注意liggghts关于按质量均匀分布和滚动刚度的源文件需要修改)
后处理软件为了与 OpenFOAM 2.3.0 匹配,选用 paraview 4.1;另选用 LPP
将 liggghts 生成的 dump 格式的文件转成 paraview 可识别的 vtk 格式。这一后处理方案也是官网推荐的,笔者认为较为易用。
并行计算选用 openmpi。
下面我们从新装的 Ubuntu 14.04 出发,安装上述软件。注意:在执行命令前请先搞懂命令的含义,并在下载、编译的同时,浏览相关的shell脚本,以便在出现问题时定位原因。
1 安装依赖包
[转载]OpenFOAM求解器开发入门(十):三个k-epsilon模型的实现
[转载]OpenFOAM求解器开发⼊门(⼗):三个k-epsilon
模型的实现
原⽂地址:OpenFOAM求解器开发⼊门(⼗):三个k-epsilon模型的实现作者:WayneWangY
主要参考[1-3][9]。
不可压缩流动的动量⽅程[3]:
先看openfoam240/src//turbulenceModels/incompressible/RAS/kEpsilon
不可压的标准k-epsilon模型⽅程如下:
(KE)
tmp kEpsilon::R() const 计算雷诺应⼒张量, ((2.0/3.0)*I)*k_ - nut_*twoSymm(fvc::grad(U_)) 对应的表达式如下:
twoSymm函数见primitives/Tensor/TensorI.H,如下:
//- Return twice the symmetric part of a tensor
template
inline SymmTensor twoSymm(const Tensor& t)
{
return SymmTensor
(
2*t.xx(), (t.xy() + t.yx()), (t.xz() + t.zx()),
2*t.yy(), (t.yz() + t.zy()),
2*t.zz()
);
}
tmp kEpsilon::devReff() const 计算有效应⼒张量,nuEff()*dev(twoSymm(fvc::grad(U_))) 对应的表达式如下
tmp kEpsilon::divDevReff(volVectorField& U) const 中
- fvm::laplacian(nuEff(), U)
- fvc::div(nuEff()*dev(T(fvc::grad(U)))) 对应
容易看出,最重要的void kEpsilon::correct() 函数,与没有密度的式(KE)是对应的[6,8]。void kEpsilon::correct()
