首页/文章/ 详情

OpenFOAM|算例 01 flage

精品
作者优秀平台推荐
详细信息
文章亮点
作者优秀
优秀教师/意见领袖/博士学历/特邀专家
平台推荐
内容稀缺
3年前浏览2729

本文介绍OpenFOAM随机算例中laplacianFoam求解器的flage算例。

计算条件模型如下图所示。内壁面patch2温度273 K,外部壁面patch4温度573 K,计算热传导状况。

图片

1 算例运行

flage算例位于$FOAM/TUTORIALS/basic/flage中,该算例演示利用laplacianFoam求解器计算计算区域内的瞬态热传导。

算例原始文件夹结构如下图所示。

图片

其中文件Allclearn及Allrun均为bash脚本文件,主要用于帮助用户运行该算例,其中Allclean文件用于清除与算例运行无关的文件,而Allrun则包含了运行该算例的所有命令过程。

打开Allrun文件,其内容如下所示。

#!/bin/sh
cd ${0%/*} || exit 1    # 进入到当前路径
# 将RunFunctions添加到环境变量
. $WM_PROJECT_DIR/bin/tools/RunFunctions
# 获取运行该算例所需的求解器
application=$(getApplication)
# 定义函数用于执行ansysToFoam命令将ans网格转换为openfoam网格
runAnsysToFoam()
{
   if [ -f log.ansysToFoam ]
   then
       echo "ansysToFoam already run on $PWD: remove log file to re-run"
   else
       echo "Running ansysToFoam: converting mesh $1"
       ansysToFoam $1 -scale $2 > log.ansysToFoam 2>&1
   fi
}
runAnsysToFoam flange.ans 0.001 //转换计算网格,网格进行了缩放
runApplication $application   // 调用求解器执行计算
runApplication foamToEnsight  // 将计算结果转换为ensight格式(非必须)
runApplication foamToEnsightParts //转换计算结果(非必须)
runApplication foamToVTK        //转换计算结果(非必须)

Allrun文件可以直接删除掉。

若不使用Allrun文件,运行该算例只需要三条命令:

ansysToFoam flange.ans -scale 0.001
laplacianFoam
paraFoam

2 算例解释

OpenFOAM中laplacianFoam求解器计算的是瞬态热传导方程:

式中,为热扩散系数,其单位为m2/s,,为热导率,为密度,为定压比热容。

2.1 网格处理

本算例采用外部文件转换的方式准备。OpenFOAM支持转换多种不同格式类型的计算网格,转换工具位于路径$FOAM_UTILITIES/mesh/conversion,如下图所示。

本算例要转换的ans格式的网格文件,这是ansys格式网格文件,可以使用命令ansysToFoam进行转换。

在转换的过程中,可以使用参数-scale对计算网格进行缩放,如本算例将网格各方向尺寸缩小1000倍。网格缩放功能主要是应对模型单位不一致的情况。

网格缩放完毕后,通常需要使用命令checkMesh对网格进行检查,检查结果如下所示。

图片

确保网格检查没有问题再进行下一步操作。

2.2 物理属性设置

transportProperties文件中设置物理属性参数。这里需要指定参数DT的值。

文件内容如下所示,指定DT值为4e-5

FoamFile
{
   version     2.0;
   format      ascii;
   class       dictionary;
   location    "constant";
   object      transportProperties;
}
// * * * * * * * * * * * * * * * * //
DT              DT [0 2 -1 0 0 0 0] 4e-05;

2.3 边界条件与初始条件

OpenFOAM的边界条件与初始条件都是在0文件夹中设置相应文件。

本算例只有一个待求的物理量T,因此只需要指定0文件夹中的T文件。

FoamFile
{
   version     2.0;
   format      ascii;
   class       volScalarField;
   object      T;
}
// * * * * * * * * * * * * * * * * * * * * //
dimensions      [0 0 0 1 0 0 0]; // 量纲为温度K
internalField   uniform 273;        //内部网格被初始化为273 K
// 下面指定各边界上T的值
boundaryField
{
   patch1
   {
       //零梯度表示绝热边界,边界温度值通过内部网格值进行计算
       type            zeroGradient;
   }
   patch2
   {
       // 采用第一类边界指定温度值为273 K
       type            fixedValue;
       value           uniform 273;
   }
   patch3
   {
       type            zeroGradient;
   }
   patch4
   {
       // 指定边界温度573 K
       type            fixedValue;
       value           uniform 573;
   }
}

2.4 求解控制参数设置

1、controlDict文件

在controlDict文件中指定与计算迭代相关的参数。文件内容如下所示。

FoamFile
{
   version     2.0;
   format      ascii;
   class       dictionary;
   location    "system";
   object      controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
application     laplacianFoam;   // 这里指定求解器,用于Allrun中提取求解器
startFrom       startTime;       // 指定计算的起始时刻方式为startTime,备选项还有firstTime及latestTime
startTime       0;                // 指定起始时刻为0,意为从0时刻开始计算
stopAt          endTime;        // 指定终止时刻为endTime,备选项还有nextWrite、noWriteNow及writeNow
endTime         3;                // 指定终止时刻为3 s
deltaT          0.005;            // 指定时间步长为0.005 s
writeControl    runTime;        // 按时间写出文件,备选项包括adjustableRunTime、clockTime、cpuTime、runTime、timeStep
writeInterval   0.1;            // 指定文件写出间隔,这里 间隔0.1s保存一次文件
purgeWrite      0;                // 指定保存的文件数量,取0表示此参数不激活
writeFormat     ascii;            // 指定文件写出格式,ascii为文本文件
writePrecision  6;                // 指定数据精度,这里保留6位有效数字
writeCompression off;            // 是否压缩文件,off表示不压缩
timeFormat      general;        // 时间格式
timePrecision   6;                // 时间保留6位有效数字
runTimeModifiable true;            // 是否允许运行时修改

2、fvSchemes文件

fvSchemes文件用来定义控制方程离散格式。

文件内容如下所示。

FoamFile
{
   version     2.0;
   format      ascii;
   class       dictionary;
   location    "system";
   object      fvSchemes;
}
// * * * * * * * * * * * * * * * * * * //
ddtSchemes
{
   default         Euler;
}
gradSchemes
{
   default         Gauss linear;
   grad(T)         Gauss linear;
}
divSchemes
{
   default         none;
}
laplacianSchemes
{
   default         none;
   laplacian(DT,T) Gauss linear corrected;
}
interpolationSchemes
{
   default         linear;
}
snGradSchemes
{
   default         corrected;
}

这些不同的离散格式位于OpenFOAM路径$FOAM_SRC/finiteVolume/finiteVolume下。如ddtSchemes,在该目录下包含可以使用的算法,如下图所示。

图片

待选项包括CoEuler、CrankNicolson、Euler、SLTS、backward、bounded、localEuler、steadyState。若忘记了有哪些算法可用,可以随便设置,然后在计算过程中OpenFOAM会报错并给出所有待选项。

3、fvSolution文件

fvSolution文件用于指定线性方程求解算法。文件内容如下所示。

FoamFile
{
   version     2.0;
   format      ascii;
   class       dictionary;
   location    "system";xxxxxxxxxxxxxxxxxxxxxxxxx
   object      fvSolution;
}
// * * * * * * * * * * * * * * * * * * * * * //
solvers
{
   T
   {
       solver          PCG; //采用预条件共轭梯度求解器
       preconditioner  DIC; //简化的基于对角线的不完全Cholesky预处理器
       tolerance       1e-06; //计算容差
       relTol          0;
   }
}
SIMPLE
{
   nNonOrthogonalCorrectors 2;  //非正交修正次数
}

线性方程求解算法的源代码位于$FOAM_SRC/OpenFOAM/matrices/lduMatrix,其中包含了线性求解过程中的预条件器、光顺器以及求解器算法。如下图所示。

图片

如solver中可以选择的算法存在与solvers文件夹中,如下图所示。比较常用的求解器除了PCG外,还包含GAMG、PBicg、PBiCGStab等。

图片

关于这些算法的选用,对于新手来讲可以暂时不必关注。

2.5 求解计算

采用laplacianFoam进行求解。在终端运行以下命令:

laplacianFoam

计算完毕后,可以使用命令:

paraFoam

进行后处理。

3 计算结果

  • 3s时刻温度分布

图片

鉴于本算例极为简单,其他过程略过。

4 总结

laplacianFoam求解器是一个用于求解温度等标量扩散方程的求解器。需要准备的文件包括:

  • 0/T:指定边界条件与初始条件
  • constant/transportProperties:指定Dt值

---------------------------------------------------------------------------------------------

版权声明:

原创文章,来源CFD之道,本文已经授权,欢迎分享,如需转载请联系作者。

仿真体系科普代码&命令求解技术网格处理OpenFOAM
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2020-12-24
最近编辑:3年前
CFD之道
博士 | 教师 探讨CFD职场生活,闲谈CFD里外
获赞 2423粉丝 10353文章 649课程 27
点赞
收藏

作者推荐

未登录
还没有评论

课程
培训
服务
行家

VIP会员 学习 福利任务 兑换礼品
下载APP
联系我们
帮助与反馈