[关闭]
@daidezhi 2016-07-01T07:50:52.000000Z 字数 4103 阅读 3377

经典算例:顶盖驱动流

CFD OpenFOAM


1. 问题描述

方腔内部等温不可压流动算例常用于测试不可压流动求解器的计算准确性,测试数据通常使用Ghia等人[1]的数据。如下图所示,方腔左表面、右表面和底部均为静止壁面,顶部为运动壁面,速度为

cavity

这里使用OpenFOAM标准不可压求解器icoFoam对雷诺数的工况进行数值模拟,并比较了upwindlinearUpwindvanLeer三种对流格式的精度。


2. 求解器设置

2.1 网格

这里使用的网格为适用于OpenFOAM二维模拟的多边形棱柱体网格,如下图所示

square_OpenFOAM_dual_mesh

关于多边形棱柱体网格的生成可参考教程OpenFOAM二维多面体网格准备

2.2 字典文件设置

本教程算例文件结构如下:

$case 算例根目录
├──constant 网格和输运参数目录
├──polyMesh 网格目录,网格格式详见CFD多面体网格数据结构—OpenFOAM
└──transportProperties 输运参数设置
├──0 初始和边界条件目录
├──p 变量p初始和边界条件设置
└──U 速度U初始和边界条件设置
└──system 求解器设置目录
├──controlDict 计算控制参数设置,设置起始终止时间,时间步长,输出控制等
├──fvSchemes 微分算子离散格式设置
├──fvSolution 代数方程组求解和PISO算法设置
└──sampleDict 数据采样设置

下面按照上面文件出现的次序依次列出其具体内容(略去文件头部说明)。

2.2.1 transportProperties

transportProperties字典文件的内容如下

  1. //文件说明
  2. FoamFile
  3. {
  4. version 2.0; //版本号
  5. format ascii; //文本格式
  6. class dictionary; //类型为字典文件
  7. location "constant"; //所在目录
  8. object transportProperties; //对象名
  9. }
  10. //设置运动粘性系数nu的单位和值
  11. nu nu [ 0 2 -1 0 0 0 0 ] 0.001;

2.2.2 p

p文件的内容如下

  1. //文件说明
  2. FoamFile
  3. {
  4. version 2.0; //版本号
  5. format ascii; //文本格式
  6. class volScalarField; //类型为体心标量场
  7. object p; //对象名
  8. }
  9. dimensions [0 2 -2 0 0 0 0]; //设置单位
  10. internalField uniform 0; //内场初始化为0
  11. //边界条件
  12. boundaryField
  13. {
  14. leftWall
  15. {
  16. type zeroGradient;
  17. }
  18. rightWall
  19. {
  20. type zeroGradient;
  21. }
  22. lowerWall
  23. {
  24. type zeroGradient;
  25. }
  26. topWall
  27. {
  28. type zeroGradient;
  29. }
  30. defaultFaces
  31. {
  32. type empty;
  33. }
  34. }

2.2.3 U

U文件的内容如下

  1. //文件说明
  2. FoamFile
  3. {
  4. version 2.0; //版本号
  5. format ascii; //文本格式
  6. class volVectorField; //类型为体心矢量场
  7. object U; //对象名
  8. }
  9. dimensions [0 1 -1 0 0 0 0]; //设置单位
  10. internalField uniform (0 0 0); //内场初始化为0矢量
  11. //边界条件
  12. boundaryField
  13. {
  14. leftWall
  15. {
  16. type fixedValue;
  17. value uniform (0 0 0);
  18. }
  19. rightWall
  20. {
  21. type fixedValue;
  22. value uniform (0 0 0);
  23. }
  24. lowerWall
  25. {
  26. type fixedValue;
  27. value uniform (0 0 0);
  28. }
  29. topWall
  30. {
  31. type fixedValue;
  32. value uniform (1 0 0);
  33. }
  34. defaultFaces
  35. {
  36. type empty;
  37. }
  38. }

2.2.4 controlDict

controlDict字典文件的内容如下

  1. FoamFile
  2. {
  3. version 2.0; //版本号
  4. format ascii; //文本格式
  5. class dictionary; //类型为字典文件
  6. location "system"; //所在目录
  7. object controlDict; //对象名
  8. }
  9. application icoFoam;
  10. startFrom startTime;
  11. startTime 0;
  12. stopAt endTime;
  13. endTime 50.0;
  14. deltaT 0.01;
  15. writeControl runTime;
  16. writeInterval 1.0;
  17. purgeWrite 0;
  18. writeFormat ascii;
  19. writePrecision 6;
  20. writeCompression off;
  21. timeFormat general;
  22. timePrecision 6;
  23. runTimeModifiable true;
  24. //设置探针类型和位置,用于判断流动是否达到稳态
  25. functions
  26. {
  27. UProbe
  28. {
  29. type probes;
  30. functionObjectLibs ("libsampling.so");
  31. outputControl outputTime;
  32. probeLocations
  33. (
  34. (0.5 0.5 0.125)
  35. );
  36. fields
  37. (
  38. U
  39. );
  40. }
  41. pProbe
  42. {
  43. type probes;
  44. functionObjectLibs ("libsampling.so");
  45. outputControl outputTime;
  46. probeLocations
  47. (
  48. (0.5 0.5 0.125)
  49. );
  50. fields
  51. (
  52. p
  53. );
  54. }
  55. }

2.2.5 fvSchemes

fvSchemes字典文件的内容如下

  1. //文件说明
  2. FoamFile
  3. {
  4. version 2.0; //版本号
  5. format ascii; //文本格式
  6. class dictionary; //类型为字典文件
  7. location "system"; //所在目录
  8. object fvSchemes; //对象名
  9. }
  10. ddtSchemes
  11. {
  12. default Euler;
  13. }
  14. gradSchemes
  15. {
  16. default Gauss linear;
  17. grad(p) Gauss linear;
  18. }
  19. divSchemes
  20. {
  21. default none;
  22. div(phi,U) Gauss upwind phi; //之后将"upwind"替换为"linearUpwind"和"vanLeer"
  23. }
  24. laplacianSchemes
  25. {
  26. default Gauss linear corrected;
  27. }
  28. interpolationSchemes
  29. {
  30. default linear;
  31. }
  32. snGradSchemes
  33. {
  34. default corrected;
  35. }
  36. fluxRequired
  37. {
  38. default no;
  39. p ;
  40. }

2.2.6 fvSolution

fvSolution字典文件的内容如下

  1. //文件说明
  2. FoamFile
  3. {
  4. version 2.0; //版本号
  5. format ascii; //文本格式
  6. class dictionary; //类型为字典文件
  7. location "system"; //所在目录
  8. object fvSolution; //对象名
  9. }
  10. solvers
  11. {
  12. p
  13. {
  14. solver PCG;
  15. preconditioner DIC;
  16. tolerance 1e-08;
  17. relTol 0;
  18. }
  19. U
  20. {
  21. solver smoothSolver;
  22. smoother symGaussSeidel;
  23. tolerance 1e-08;
  24. relTol 0;
  25. }
  26. }
  27. PISO
  28. {
  29. nCorrectors 5;
  30. nNonOrthogonalCorrectors 5;
  31. pRefCell 0;
  32. pRefValue 0;
  33. }

2.2.7 sampleDict

sampleDict字典文件的内容如下

  1. //文件说明
  2. FoamFile
  3. {
  4. version 2.0; //版本号
  5. format ascii; //文本格式
  6. class dictionary; //类型为字典文件
  7. location "system"; //所在目录
  8. object sampleDict; //对象名
  9. }
  10. interpolationScheme cellPoint; //设置插值方式
  11. setFormat raw; //常规文本输出
  12. //采样集合
  13. sets
  14. (
  15. //垂直中心线
  16. verticalCenterLine
  17. {
  18. type uniform;
  19. axis y;
  20. start (0.5 0.0 0.25);
  21. end (0.5 1.0 0.25);
  22. nPoints 100;
  23. }
  24. //水平中心线
  25. horizontalCenterLine
  26. {
  27. type uniform;
  28. axis x;
  29. start (0.0 0.5 0.25);
  30. end (1.0 0.5 0.25);
  31. nPoints 100;
  32. }
  33. );
  34. //采样对象
  35. fields
  36. (
  37. U
  38. );

3. 计算结果

3.1 稳态判断

由于icoFoam求解器属于非定常求解器,因此需要按时间推进模拟顶盖驱动流,到达一定时间后流动趋于稳定。用来对比验证的数据是稳态数据,因此需要确定何时流动能够趋于稳定。

下面三幅图分别是压力p,速度Uxy分量随时间的变化曲线,从图中可以看出流动大概在后趋于稳定。

time_history_of_kinematic_pressure_at_centroid 探针位置p随时间变化曲线

time_history_of_x_velocity_at_centroid 探针位置U.x()随时间变化曲线

time_history_of_y_velocity_at_centroid 探针位置U.y()随时间变化曲线

3.2 upwind对流格式

使用upwind对流格式得到的计算结果与基准解的对比如下所示

x_velocity_along_vertical_central_line 垂直中线上U.x()变化曲线

y_velocity_along_horizontal_central_line 水平中线上U.y()变化曲线

3.3 linearUpwind对流格式

使用linearUpwind对流格式得到的计算结果与基准解的对比如下所示

x_velocity_along_vertical_central_line 垂直中线上U.x()变化曲线

y_velocity_along_horizontal_central_line 水平中线上U.y()变化曲线

3.4 vanLeer对流格式

使用vanLeer对流格式得到的计算结果与基准解的对比如下所示

x_velocity_along_vertical_central_line 垂直中线上U.x()变化曲线

y_velocity_along_horizontal_central_line 水平中线上U.y()变化曲线

不难看出,计算结果和基准解的吻合度linearUpwind vanLeer upwind


感谢您的阅读,欢迎讨论和批评指正。

作者:戴得志


[1] Ghia U, Ghia K N, Shin C T. High-Re solutions for incompressible flow using the Navier-Stokes equations and a multigrid method[J]. Journal of computational physics, 1982, 48(3): 387-411.
添加新批注
在作者公开此批注前,只有你和作者可见。
回复批注