本算例利用scalarTransportFoam求解器计算区域内的标量输运问题。
案例路径:$FOAM_TUTORIALS/basic/scalarTransportFoam/pitzDialy
”
求解器scalarTransportFoam主要用于求解标量输运问题。该求解器求解的控制方程为:
式中为待求的标量;为速度向量;为扩散系数。待求物理量为T与U,并且需要给定扩散系数。
算例文件结构如下所示。
文件Allrun
中的内容如下所示。
#!/bin/sh
cd ${0%/*} || exit 1 # Run from this directory
# Source tutorial run functions
. $WM_PROJECT_DIR/bin/tools/RunFunctions
application="$(getApplication)"
runApplication blockMesh -dict $FOAM_TUTORIALS/resources/blockMesh/pitzDaily
runApplication $application
文件内容比较简单。本算例中并未包含blockMeshDict
文件,而是利用了其他文件夹中的字典文件。但是如果要利用其它文件夹中的字典文件,则在调用blockMesh命令时需要添加参数-dict
,如本算例要生成网格,可以使用命令:
blockMesh -dict $FOAM_TUTORIALS/resources/blockMesh/pitzDaily
网格如下图所示。
入口速度10 m/s,标量值为1。
注:在利用scalarTranportFoam求解器时,可以先使用其他求解器(如icoFoam)得到计算区域内的速度分布,并以此作为scalarTransportFoam求解器的初始速度值。
”
算例需要指定参数值DT,以及边界条件的速度U与标量T。
指定transportProperties
文件中的材料介质参数DT。文件内容如下所示,本算例指定DT值为0.01 m2/s。
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "constant";
object transportProperties;
}
// * * * * * * * * * * * * * * * * * //
DT DT [0 2 -1 0 0 0 0] 0.01;
1、T文件
指定边界条件标量T的值,如下图所示。
FoamFile
{
version 2.0;
format ascii;
class volScalarField;
object T;
}
// * * * * * * * * * * * * * * * * //
dimensions [0 0 0 1 0 0 0]; //这里指定标量为温度单位
internalField uniform 0;
boundaryField
{
inlet
{
type fixedValue;
value uniform 1; //指定inlet边界标量值为1
}
outlet
{
type zeroGradient;
}
upperWall
{
type zeroGradient;
}
lowerWall
{
type zeroGradient;
}
frontAndBack
{
type empty;
}
}
2、U文件
本算例中,U文件
FoamFile
{
version 2.0;
format ascii;
class volVectorField;
location "288";
object U;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
dimensions [0 1 -1 0 0 0 0];
internalField nonuniform List<vector>
12225 // 12225个网格上的速度值列表
(
(9.85698 -0.886449 0)
(9.66665 -0.740747 0)
(9.45574 -0.429483 0)
(9.22457 -0.222216 0)
(9.00656 -0.106462 0)
(8.81447 -0.0458767 0)
(8.64764 -0.0151809 0)
(8.50548 0.000439179 0)
(8.38389 0.00837067 0)
... // 省略显示
)
;
boundaryField
{
inlet
{
type fixedValue;
value uniform (10 0 0); //指定inlet边界速度值为10 m/s
}
outlet
{
type zeroGradient;
}
upperWall
{
type noSlip;
}
lowerWall
{
type noSlip;
}
frontAndBack
{
type empty;
}
}
1、controlDict文件
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object controlDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * //
application scalarTransportFoam;
startFrom startTime;
startTime 0;
stopAt endTime;
endTime 0.1; // 指定计算时间为0.1 s
deltaT 0.0001; // 指定时间步长为0.0001 s,通常控制库朗数在1附近即可
writeControl timeStep;
writeInterval 50;
purgeWrite 0;
writeFormat ascii;
writePrecision 6;
writeCompression off;
timeFormat general;
timePrecision 6;
runTimeModifiable true;
2、fvSchemes文件
文件内容如下所示。
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object fvSchemes;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
ddtSchemes
{
default Euler;
}
gradSchemes
{
default Gauss linear;
}
divSchemes
{
default none;
div(phi,T) Gauss linearUpwind grad(T);
}
laplacianSchemes
{
default none;
laplacian(DT,T) Gauss linear corrected;
}
interpolationSchemes
{
default linear;
}
snGradSchemes
{
default corrected;
}
3、fvSolution文件
文件内容为:
FoamFile
{
version 2.0;
format ascii;
class dictionary;
location "system";
object fvSolution;
}
// * * * * * * * * * * * * * * * * * //
solvers
{
T
{
solver PBiCGStab;
preconditioner DILU;
tolerance 1e-06;
relTol 0;
}
}
SIMPLE
{
nNonOrthogonalCorrectors 0;
}
运行命令进行求解及后处理:
scalarTransportFoam
paraFoam
---------------------------------------------------------------------------------------------
版权声明:
原创文章,来源CFD之道,本文已经授权,欢迎分享,如需转载请联系作者。