OpenFOAM常用类的一些总结(4)

2019-03-27 20:31

( \

runTime.timeName(), mesh,

IOobject::MUST_READ, IOobject::AUTO_WRITE ), mesh );

这样,创建了新的vol标量场T,从文件T中读入。 对于T的创建具体解释如下: a)创建了标量场T

b)T通过读(IOobject::MUST_READ)在runTime.timeName()目录下名称为“T”的文件创建,在开始计算时,runTime.timeName()是contorlDict中设定的startTime值决定的。 c)T将自动写入(IOobject::AUTO_WRITE)计算结果到runTime.timeName()目录中,runTime.timeName()随迭代是变化的,写入控制由contorlDict中设定。

d)T是定义在mesh对象上的,这意味着T在内部cell上有值internalField,在边界上还需要边界条件,这与polyMesh/boundary中要一致。 2)在求解器中加入新的求解方程

下一步回到myicoFoam.C加入新的微分方程,由于温度场依赖于速度场,可放在PISO循环后面。

# include \ U -= rUA*fvc::grad(p);

U.correctBoundaryConditions(); // Add the temperature equation fvScalarMatrix Teqn 温度是标量方程 (

fvm::ddt(T)

+ fvm::div(phi, T) 要用到界面流量 - fvm::laplacian(DT, T) 扩散项

);

TEqn.solve(); 求解 3)编译 wmake

4)在算例中加入新方程的初始和边界条件 4.1拷贝一个cavity算例到mycavity

4.2修改transportProperties字典文件,设定DT cd constant

修改transportProperties文件,前面已提到DT要从该字典文件读入。设定DT=0.002m2/s DT DT [0 2 -1 0 0 0 0] 0.002; 4.3修改T文件,设定初始值和边界 cd 0 进入0目录 拷贝一个T文件 cp p T 修改T文件为 FoamFile {

version 2.0; format ascii; class volScalarField; object T; }

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // dimensions [0 0 0 1 0 0 0];

internalField uniform 300; 初始内部点为300℃ movingWall {

type fixedValue;

value uniform 350.; 边界为350℃ }

fixedWalls {

type fixedValue;

value uniform 300.; 边界为300℃ 5)修改离散格式和代数求解器求解控制文件 A进入system目录

由于温度方程有非稳态项,对流项,扩散项,分别要在ddt,div,laplacian中设置 打开fvSchemes文件,添加 divSchemes {

default none;

div(phi,U) Gauss upwind; div(phi,T) Gauss upwind; }

laplacianSchemes {

default none;

laplacian(nu,U) Gauss linear corrected; laplacian(DT,T) Gauss linear corrected; laplacian((1|A(U)),p) Gauss linear corrected; }

在fvSolution中设置代数求解器选项 T PBiCG {

preconditioner DILU; tolerance 1e-06; relTol 0; };

注意T方程形成的矩阵是非对称的,不要用PCG和DIC

6)运行

myicoFoam . mycavity

七.OpenFOAM程序开发――求解器的详细分析1 进入icoFoam目录 可以看到

createFields.H icoFoam.C icoFoam.dep Make/ Make/为wmake编译所需的文件

IcoFoam.C为主程序文件,它包含createFields.H 编辑icoFoam.C

可以看到icoFoam.C首先引入的头文件为fvCFD.H。 所以你可以看到,在编译选项options中 EXE_INC = \\

-I$(LIB_SRC)/finiteVolume/lnInclude //fvCFD.H的存放目录 EXE_LIBS = \\

-lfiniteVolume //需要链接的库 找到fvCFD.H,编辑,可以看出这些是主程序必须的类库 #ifndef fvCFD_H #define fvCFD_H #include \

#include \ 时间类 #include \ 网格类 #include \ fvc类 #include \ fvMatrix类 #include \ fvm类 #include \

#include \#include \#include \#include \

#include \#include \#include \#ifndef namespaceFoam #define namespaceFoam using namespace Foam; #endif #endif

再看看icoFoam的程序体,了解一下求解程序的结构

#include \ ――――――――――――――――(头文件) 通常位于main函数前,是程序所需的类的定义 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // int main(int argc, char *argv[]) {

―――――――――――――――(包含文件) # include \ # include \# include \

―――――――――――包含文件通常是程序片断,如创建时间、创建网格等 ―――――――――――――――(求解器代码)―――――― # include \

需要根据应用,单独写的代码,如\和Main,以及Ueqn,pEqn等 ――――――――――――――――――――――――――――――――――――― # include \

// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // 。。。。。 }

八.OpenFOAM程序开发――求解器的详细分析2 a.场变量的定义


OpenFOAM常用类的一些总结(4).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:11.4分式加减法(2)学案

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: