吾生有涯 学海无涯
析模有界 知识无界

OpenFOAM|算例 01 flage


本文介绍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";
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之道

赞(0) 打赏
版权声明:未经允许,请勿随意用于商业用途。
文章名称:《OpenFOAM|算例 01 flage》
文章链接:https://www.topcfd.cn/12418/
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
分享到

说两句 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者吧

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册