zoukankan      html  css  js  c++  java
  • OpenFOAM&Gmsh&CFD圆柱绕流(两个圆柱)

    问题:

    圆柱绕流问题,模拟仿真有两个圆柱、一个源的流体变化情况。

    解决步骤:

    1.使用Gmsh画出网格,并保存cylindertwo.msh

    2.以Cavity为基础创建新的Case:Cylindertwo,先将0,constant,system三个文件夹复制进Cylindertwo,将constant文件夹中的transportProperties文件复制出来,删除constant文件夹。

    3.由于采用源码安装,使用以下代码启动OpenFoam.

    source ~/OpenFOAM/OpenFOAM-v3.0+/etc/bashrc
    run

    运行以下代码生成网格:

    gmshToFoam

    4.改写P,U和boundary文件,具体如何改写参见代码.

    5.生产网格,进行计算,命令如下:

    checkMesh
    renumberMesh -overwrite
    icoFoam

    6.使用paraFoam命令查看效果.

    paraFoam

    画网格:

    画出的网格效果如下:

    Fg.1 mesh前三维图

    Fg.2 mesh后三维图

    代码:

    cylindertwo.geo

    // Gmsh project created on Wed Jun 29 11:30:24 2016
    Nx = 41;Rx = 1.00;
    Ny = 41;Ry = 1.00;
    Nb = 41;Rb = 1.00;
    Nc = 41;Rc = 1.00;
    
    Point(1) = {-10,-10,0,1.0};
    Point(2) = {10,-10,0,1.0};
    Point(3) = {40,-10,0,1.0};
    Point(4) = {-10,10,0,1.0};
    Point(5) = {10,10,0,1.0};
    Point(6) = {40,10,0,1.0};
    
    //cylinder1 points
    Point(7) = {-0.35355339,-0.35355339,0,1.0};
    Point(8) = {0.35355339,-0.35355339,0,1.0};
    Point(9) = {-0.35355339,0.35355339,0,1.0};
    Point(10) = {0.35355339,0.35355339,0,1.0};
    Point(11) = {0,0,0,1.0};
    
    //cylinder2 points
    Point(12) = {-0.35355339+30,-0.35355339,0,1.0};
    Point(13) = {0.35355339+30,-0.35355339,0,1.0};
    Point(14) = {-0.35355339+30,0.35355339,0,1.0};
    Point(15) = {0.35355339+30,0.35355339,0,1.0};
    Point(16) = {0+30,0,0,1.0};
    
    Point(17) = {20,10,0,1.0};
    Point(18) = {20,-10,0,1.0};
    
    
    //x lines
    Line(1) = {4, 5};Transfinite Line {1} = Nx Using Progression Rx;
    Line(2) = {5, 17};Transfinite Line {2} = Nx Using Progression Rx;
    Line(3) = {17, 6};Transfinite Line {3} = Nx Using Progression Rx;
    Line(4) = {1, 2};Transfinite Line {4} = Nx Using Progression Rx;
    Line(5) = {2, 18};Transfinite Line {5} = Nx Using Progression Rx;
    Line(6) = {18, 3};Transfinite Line {6} = Nx Using Progression Rx;
    //y lines
    Line(7) = {4, 1};Transfinite Line {7} = Ny Using Bump Ry;
    Line(8) = {5, 2};Transfinite Line {8} = Ny Using Bump Ry;
    Line(9) = {17, 18};Transfinite Line {9} = Ny Using Bump Ry;
    Line(10) = {6, 3};Transfinite Line {10} = Ny Using Bump Ry;
    //cicle lines of one
    Circle(11) = {9, 11, 10};Transfinite Line {11} = Nc Using Progression Rc;
    Circle(12) = {10, 11, 8};Transfinite Line {12} = Nc Using Progression Rc;
    Circle(13) = {8, 11, 7};Transfinite Line {13} = Nc Using Progression Rc;
    Circle(14) = {7, 11, 9};Transfinite Line {14} = Nc Using Progression Rc;
    //cicle lines of two
    Circle(15) = {14, 16, 15};Transfinite Line {15} = Nc Using Progression Rc;
    Circle(16) = {15, 16, 13};Transfinite Line {16} = Nc Using Progression Rc;
    Circle(17) = {13, 16, 12};Transfinite Line {17} = Nc Using Progression Rc;
    Circle(18) = {12, 16, 14};Transfinite Line {18} = Nc Using Progression Rc;
    //block lines
    Line(19) = {4, 9};Transfinite Line {19} = Nb Using Progression Rb;
    Line(20) = {5, 10};Transfinite Line {20} = Nb Using Progression Rb;
    Line(21) = {2, 8};Transfinite Line {21} = Nb Using Progression Rb;
    Line(22) = {1, 7};Transfinite Line {22} = Nb Using Progression Rb;
    Line(23) = {17, 14};Transfinite Line {23} = Nb Using Progression Rb;
    Line(24) = {6, 15};Transfinite Line {24} = Nb Using Progression Rb;
    Line(25) = {3, 13};Transfinite Line {25} = Nb Using Progression Rb;
    Line(26) = {18, 12};Transfinite Line {26} = Nb Using Progression Rb;
    
    
    //surfaces
    Line Loop(27) = {1, 20, -11, -19};
    Plane Surface(28) = {27};
    Line Loop(29) = {7, 22, 14, -19};
    Plane Surface(30) = {29};
    Line Loop(31) = {4, 21, 13, -22};
    Plane Surface(32) = {31};
    Line Loop(33) = {8, 21, -12, -20};
    Plane Surface(34) = {33};
    Line Loop(35) = {2, 9, -5, -8};
    Plane Surface(36) = {35};
    Line Loop(37) = {3, 24, -15, -23};
    Plane Surface(38) = {37};
    Line Loop(39) = {9, 26, 18, -23};
    Plane Surface(40) = {39};
    Line Loop(41) = {6, 25, 17, -26};
    Plane Surface(42) = {41};
    Line Loop(43) = {10, 25, -16, -24};
    Plane Surface(44) = {43};
    Transfinite Surface {28};
    Transfinite Surface {30};
    Transfinite Surface {32};
    Transfinite Surface {34};
    Transfinite Surface {36};
    Transfinite Surface {38};
    Transfinite Surface {40};
    Transfinite Surface {42};
    Transfinite Surface {44};
    Recombine Surface {28};
    Recombine Surface {30};
    Recombine Surface {32};
    Recombine Surface {34};
    Recombine Surface {36};
    Recombine Surface {38};
    Recombine Surface {40};
    Recombine Surface {42};
    Recombine Surface {44};
    
    
    Extrude {0, 0, 2} {
      Surface{28, 30, 32, 34, 36, 40, 38, 44, 42};
      Layers{1};
      Recombine;
    }
    
    Physical Surface("inlet") = {75};//inlet
    Physical Surface("outlet") = {207};//outlet
    Physical Surface("top") = {53, 141, 185};//top
    Physical Surface("bottom") = {97, 149, 229};//bottom
    Physical Surface("cylinderWalls_1") = {61, 83, 105, 127};//cylinderWalls_1
    Physical Surface("cylinderWalls_2") = {193, 171, 237, 215};//cylinderWalls_2
    Physical Surface("frontAndBack") = {66, 88, 110, 132, 154, 176, 198, 220, 242, 30, 32, 28, 34, 36, 40, 42, 44, 38};
    //frontAndBack
    Physical Volume("internal") = {1,2,3,4,5,6,7,8,9};//internal

    P

    /*--------------------------------*- C++ -*----------------------------------*
    | =========                 |                                                 |
    | \      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
    |  \    /   O peration     | Version:  v3.0+                                 |
    |   \  /    A nd           | Web:      www.OpenFOAM.com                      |
    |    \/     M anipulation  |                                                 |
    *---------------------------------------------------------------------------*/
    FoamFile
    {
        version     2.0;
        format      ascii;
        class       volScalarField;
        location    "0";
        object      p;
    }
    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
    
    dimensions      [0 2 -2 0 0 0 0];
    
    internalField   uniform 0;
    
    boundaryField
    {
        frontAndBack
        {
            type            empty;
        }
        top
        {
            type            zeroGradient;
        }
        cylinderWalls_1
        {
            type            zeroGradient;
        }
        inlet
        {
            type            zeroGradient;
        }
        bottom
        {
            type            zeroGradient;
        }
        cylinderWalls_2
        {
            type            zeroGradient;
        }
        outlet
        {
            type            fixedValue;
            value           uniform 0;
        }
    }
    
    
    // ************************************************************************* //

    U

    /*--------------------------------*- C++ -*----------------------------------*
    | =========                 |                                                 |
    | \      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
    |  \    /   O peration     | Version:  v3.0+                                 |
    |   \  /    A nd           | Web:      www.OpenFOAM.com                      |
    |    \/     M anipulation  |                                                 |
    *---------------------------------------------------------------------------*/
    FoamFile
    {
        version     2.0;
        format      ascii;
        class       volVectorField;
        location    "0";
        object      U;
    }
    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
    
    dimensions      [0 1 -1 0 0 0 0];
    
    internalField   uniform (0 0 0);
    
    boundaryField
    {
        frontAndBack
        {
            type            empty;
        }
        top
        {
            type            slip;
        }
        cylinderWalls_1
        {
            type            fixedValue;
            value           uniform (0 0 0);
        }
        inlet
        {
            type            fixedValue;
            value           uniform (1 0 0);
        }
        bottom
        {
            type            slip;
        }
        cylinderWalls_2
        {
            type            fixedValue;
            value           uniform (0 0 0);
        }
        outlet
        {
            type            zeroGradient;
        }
    }
    
    
    // ************************************************************************* //

    Boundary

    /*--------------------------------*- C++ -*----------------------------------*
    | =========                 |                                                 |
    | \      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
    |  \    /   O peration     | Version:  v3.0+                                 |
    |   \  /    A nd           | Web:      www.OpenFOAM.com                      |
    |    \/     M anipulation  |                                                 |
    *---------------------------------------------------------------------------*/
    FoamFile
    {
        version     2.0;
        format      ascii;
        class       polyBoundaryMesh;
        location    "constant/polyMesh";
        object      boundary;
    }
    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
    
    7
    (
        frontAndBack
        {
            type            empty;
            inGroups        1(empty);
            nFaces          28800;
            startFace       28480;
        }
        top
        {
            type            patch;
            physicalType    patch;
            nFaces          120;
            startFace       57280;
        }
        cylinderWalls_1
        {
            type            patch;
            physicalType    patch;
            nFaces          160;
            startFace       57400;
        }
        inlet
        {
            type            patch;
            physicalType    patch;
            nFaces          40;
            startFace       57560;
        }
        bottom
        {
            type            patch;
            physicalType    patch;
            nFaces          120;
            startFace       57600;
        }
        cylinderWalls_2
        {
            type            patch;
            physicalType    patch;
            nFaces          160;
            startFace       57720;
        }
        outlet
        {
            type            patch;
            physicalType    patch;
            nFaces          40;
            startFace       57880;
        }
    )
    
    // ************************************************************************* //

    controlDict

    /*--------------------------------*- C++ -*----------------------------------*
    | =========                 |                                                 |
    | \      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
    |  \    /   O peration     | Version:  v3.0+                                 |
    |   \  /    A nd           | Web:      www.OpenFOAM.com                      |
    |    \/     M anipulation  |                                                 |
    *---------------------------------------------------------------------------*/
    FoamFile
    {
        version     2.0;
        format      ascii;
        class       dictionary;
        location    "system";
        object      controlDict;
    }
    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
    
    application     icoFoam;
    
    startFrom       startTime;
    
    startTime       0;
    
    stopAt          endTime;
    
    endTime         100;
    
    deltaT          0.005;
    
    writeControl    timeStep;
    
    writeInterval   20;
    
    purgeWrite      0;
    
    writeFormat     ascii;
    
    writePrecision  6;
    
    writeCompression off;
    
    timeFormat      general;
    
    timePrecision   6;
    
    runTimeModifiable true;
    
    
    // ************************************************************************* //

    结果展示:

    Fg3 T = 0

    Fg4 T = 40

    Fg8 T = 200

    Fg11 T = 600

    Fg13 T = 725

  • 相关阅读:
    android_handler(二)
    android_handler(一)
    java_synchronized 用法
    android surfaView surfaHolder video 播放
    《Java 8 实战》读书笔记
    Java面试宝典——基础部分
    Shell脚本---处理用户输入
    《Spring》(十八)---- 事务管理
    《Spring》(十七)---- JDBC访问数据
    《Spring》(十六)---- 基于Schema的AOP
  • 原文地址:https://www.cnblogs.com/TigerZhang/p/5627141.html
Copyright © 2011-2022 走看看