zoukankan      html  css  js  c++  java
  • 【OpenFOAM案例】01 elbow

    本案例演示利用OpenFOAM的icoFoam求解器计算弯曲管道中的混合流动问题。

    1 拷贝tutorials文件

    启动终端,且拷贝tutorials文件夹中的文件。利用命令:

    cp -r $FOAM_TUTORIALS/incompressible/icoFoam/elbow/ $FOAM_RUN
    

    将案例文件拷贝到了$FOAM_RUN路径中。

    此时可以利用命令查看目录结构:

    tree $FOAM_RUN/elbow
    

    查询结果如下图所示。

    $ tree $FOAM_RUN/elbow
    /home/ofuser/blueCFD/ofuser-of4/run/elbow
    ├── 0
    │   ├── p
    │   └── U
    ├── Allclean
    ├── Allrun
    ├── constant
    │   └── transportProperties
    ├── elbow.msh
    └── system
        ├── controlDict
        ├── foamDataToFluentDict
        ├── fvSchemes
        └── fvSolution
    3 directories, 10 files
    

    包含三个文件夹:0、constant以及system。

    2 转换网格

    案例中的网格使用的是msh文件,这里要通过命令将其转化为openfoam网格。

    采用命令:

    cd $FOAM_RUN/elbow
    fluentMeshToFoam elbow.msh
    

    如下图所示。

    注:Fluent提供了众多的工具用于将外部网格文件转换为OpenFOAM网格

    3 case结构

    OpenFOAM的case组织结构如如所示。

    包含三个基本文件夹:

    • 0:存储物理量的初始值
    • constant:存储网格参数、边界条件以及物理属性(如材料参数、湍流参数等)
    • system:存储一些求解控制参数

    4 设置0文件夹

    本案例中0文件夹中包含两个文件:p文件与U文件,分别设置初始时刻的压力与速度。

    4.1 修改p文件

    利用文本编辑器打开p文件。在blueCFD中可以使用命令(先进入0目录,然后用nano打开p文件):

    cd 0
    nano p
    

    注意:在不同的linux系统中可以使用不同的文本编辑器,如在ubuntu系统中,可以使用gedit、nano或vi

    /*--------------------------------*- C++ -*----------------------------------*
    | =========                 |                                                 |
    | \      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
    |  \    /   O peration     | Version:  4.x                                   |
    |   \  /    A nd           | Web:      www.OpenFOAM.org                      |
    |    \/     M anipulation  |                                                 |
    *---------------------------------------------------------------------------*/
    FoamFile
    {
        version     2.0;
        format      ascii;
        class       volScalarField;
        object      p;
    }
    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
     
    dimensions      [0 2 -2 0 0 0 0];
    internalField   uniform 0;
    boundaryField
    {
        wall-4
        {
            type            zeroGradient;
        }
     
        velocity-inlet-5
        {
            type            zeroGradient;
        }
     
        velocity-inlet-6
        {
            type            zeroGradient;
        }
     
        pressure-outlet-7
        {
            type            fixedValue;
            value           uniform 0;
        }
     
        wall-8
        {
            type            zeroGradient;
        }
     
        frontAndBackPlanes
        {
            type            empty;
        }
    }
     
    // ************************************************************************* //
     
    

    文件内容:

    • 压力单位是m2/s2。OpenFOAM不可压缩求解器中压力定义为单位质量的压力。即压力与密度的比值。
    • 量纲矩阵:[质量 长度 时间 温度 物质的量]
    • internalField关键字定义的是求解区域中的物理量
    • 边界类型:zeroGradient、fixedValue及empty。

    关于OpenFOAM中的边界类型:

    • zeroGradient:边界物理量梯度为0。(Neumann边界)
    • fixedValue:边界物理量为定值。(Direchlet边界)
    • empty:在利用2D模型模拟3D情况时,侧边同城设定为empty边界,在计算过程中,此边界并不参与求解。

    当fixedvalue的值与internalField的值相同时,fixedValue边界与zeroGradient边界等效。

    4.2 U文件

    U文件中指定边界速度值。利用文本编辑器打开U文件。

    /*--------------------------------*- C++ -*----------------------------------*
    | =========                 |                                                 |
    | \      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
    |  \    /   O peration     | Version:  4.x                                   |
    |   \  /    A nd           | Web:      www.OpenFOAM.org                      |
    |    \/     M anipulation  |                                                 |
    *---------------------------------------------------------------------------*/
    FoamFile
    {
        version     2.0;
        format      ascii;
        class       volVectorField;
        object      U;
    }
    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
     
    dimensions      [0 1 -1 0 0 0 0];
     
    internalField   uniform (0 0 0);
     
    boundaryField
    {
        wall-4
        {
            type            noSlip;
        }
     
        velocity-inlet-5
        {
            type            fixedValue;
            value           uniform (1 0 0);
        }
     
        velocity-inlet-6
        {
            type            fixedValue;
            value           uniform (0 3 0);
        }
     
        pressure-outlet-7
        {
            type            zeroGradient;
        }
     
        wall-8
        {
            type            noSlip;
        }
     
        frontAndBackPlanes
        {
            type            empty;
        }
    }
     
    // ************************************************************************* //
    

    文件中指定边界velocity-inlet-5的速度为x方向1m/s,velocity-inlet-6边界速度为y方向3m/s。

    本案例中U文件不需要修改。

    5 constant目录

    constant目录下保存了网格数据与物性参数等。

    ├── polyMesh
    │   ├── boundary
    │   ├── cellZones
    │   ├── faces
    │   ├── faceZones
    │   ├── neighbour
    │   ├── owner
    │   ├── points
    │   └── pointZones
    └── transportProperties
     
    1 directory, 9 files
    

    本案例中的网格来自于外部转化,因此不需要修改polyMesh文件夹中的内容。

    transportProperties文件中存储了传输属性参数,用文本文件打开来看。

    nano transportProperties
    

    此文件的内容:

    /*--------------------------------*- C++ -*----------------------------------*
    | =========                 |                                                 |
    | \      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
    |  \    /   O peration     | Version:  4.x                                   |
    |   \  /    A nd           | Web:      www.OpenFOAM.org                      |
    |    \/     M anipulation  |                                                 |
    *---------------------------------------------------------------------------*/
    FoamFile
    {
        version     2.0;
        format      ascii;
        class       dictionary;
        location    "constant";
        object      transportProperties;
    }
    // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
     
    nu              [0 2 -1 0 0 0 0] 0.01;
     
     
    // ************************************************************************* //
    

    此文件中只是定义了粘度为0.01 m2/s。在不可压缩流动中,只需要定义此参数。

    6 system目录

    system目录下包含四个文件。

    .
    ├── controlDict
    ├── foamDataToFluentDict
    ├── fvSchemes
    └── fvSolution
     
    0 directories, 4 files
     
    
    • fvShceme:该文件中定义了求解过程中所采用的各种离散格式。
    • fvSolution:该文件包含压力速度耦合方法、用于求解差分量的数值方法,以及收敛残差等。
    • controlDict:此文件中定义了各种求解控制参数,如时间步长、文件保存间隔等。
    • foamDataToFluentDict:此文件只有当使用了fluentMeshToFoam命令才会出现,一般情况下不用修改。

    本案例需要关注的是文件controlDict。用文本文件打开此文件,修改endTime为75。其他参数保持默认。

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

    7 求解计算

    case路径下输入命令:

    icoFoam
    

    计算自动进行,直至求解完成。

    8 计算后处理

    输入命令:

    paraFoam
    

    系统启动paraView进行后处理。

    速度分布如图所示。

    压力分布如图所示。

  • 相关阅读:
    mybatis映射文件配置-1对多
    启动服务器加载spring.xml:web.xml配置
    spring-mybatis.xml配置文件
    json转换器映射文件配置
    Restful levels
    事务隔离级别「脏读、不可重复读、幻读」
    Java CDI
    session和Cookie的介绍和应用
    java RE Validation常用
    hello2 source Analysis
  • 原文地址:https://www.cnblogs.com/LSCAX/p/7074314.html
Copyright © 2011-2022 走看看