首页 > 其他分享 >OpenFOAM检测一个面上的平均值

OpenFOAM检测一个面上的平均值

时间:2024-04-21 11:55:18浏览次数:17  
标签:box cylinder zMax 平均值 zMin 面上 OpenFOAM project radius

1.通过blockMesh创建网格。

blockMesh文件内容如下:

/*--------------------------------*- C++ -*----------------------------------*\
| =========                 |                                                 |
| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
|  \\    /   O peration     | Version:  5                                     |
|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
|    \\/     M anipulation  |                                                 |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version     2.0;
    format      ascii;
    class       dictionary;
    object      blockMeshDict;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
convertToMeters 1;

radius      0.11;//圆柱半径
radiusNeg  -0.11;
box         0.04;//box和boxNeg定义中间长方体block的范围
boxNeg     -0.04;
zMax        3.0;//zMax和zMin定义圆柱体的长度
zMin        0.0;

nR          12;//扇形block半径上的节点数
nBox        16;//矩形block正方形边上的节点数
nZ          300;//轴向方向上的节点数

verbose no;

geometry
{
    cylinder
    {
        type      searchableCylinder;
        point1    (0 0 -0.1);//由point1和point2构成的区域要大于zMax和zMin构成的区域
        point2    (0 0  6.1);
        radius    $radius;
    }
}

scale 1;


vertices
(
    // Inner
    ($boxNeg $boxNeg $zMin)//0
    ($box    $boxNeg $zMin)//1
    ($boxNeg $box    $zMin)//2
    ($box    $box    $zMin)//3

    // Outer block points
    project ($radiusNeg $radiusNeg $zMin) (cylinder)//4
    project ($radius    $radiusNeg $zMin) (cylinder)//5
    project ($radiusNeg $radius    $zMin) (cylinder)//6
    project ($radius    $radius    $zMin) (cylinder)//7

    // Inner
    ($boxNeg $boxNeg $zMax)//8
    ($box    $boxNeg $zMax)//9
    ($boxNeg $box    $zMax)//10
    ($box    $box    $zMax)//11

    // Outer block points
    project ($radiusNeg $radiusNeg $zMax) (cylinder)//12
    project ($radius    $radiusNeg $zMax) (cylinder)//13
    project ($radiusNeg $radius    $zMax) (cylinder)//14
    project ($radius    $radius    $zMax) (cylinder)//15
);

blocks
(
    hex ( 4  5  1  0 12 13  9  8) ($nBox $nR   $nZ) simpleGrading (1 1 1)
    hex ( 4  0  2  6 12  8 10 14) ($nR   $nBox $nZ) simpleGrading (1 1 1)
    hex ( 1  5  7  3  9 13 15 11) ($nR   $nBox $nZ) simpleGrading (1 1 1)
    hex ( 2  3  7  6 10 11 15 14) ($nBox $nR   $nZ) simpleGrading (1 1 1)
    hex ( 0  1  3  2  8  9 11 10) ($nBox $nBox $nZ) simpleGrading (1 1 1)
);

edges
(
    project  4  5 (cylinder)
    project  7  5 (cylinder)
    project  6  7 (cylinder)
    project  4  6 (cylinder)
    project 12 13 (cylinder)
    project 13 15 (cylinder)
    project 12 14 (cylinder)
    project 14 15 (cylinder)
);

//boundary
boundary
(
    inlet
    {
        type cyclic;//cyclicAMI;
        neighbourPatch outlet;
        // transform translational;
        // separationVector (0.4 0 0);
        faces
        (
            (0 1 3 2)
            (0 2 6 4)
            (0 1 5 4)
            (1 5 7 3)
            (2 3 7 6)
        );
    }

    outlet
    {
        type cyclic;//cyclicAMI;
        neighbourPatch inlet;
        // transform translational;
        // separationVector (-0.4 0 0);
        faces
        (
            (8   9  11  10)
            (8  10  14  12)
            (8   9  13  12)
            (9  13  15  11)
            (10 11  15  14)
        );
    }

    wall
    {
        type wall;
        faces
        (
            (4  12  14  6)
            (4   5  13 12)
            (5  13  15  7)
            (6   7  15 14)
        );
    }
);

mergePatchPairs
(
);

// ************************************************************************* //

2.创建一个topoSetDict,内容如下:

OpenFOAM 中有一个专门的工具来帮助用户管理 “指定区域”,叫 topoSettopoSet 含义是 topology set(集合),该工具作用是将一些点、面、或者体网格提取出来存放在指定名字的 set 里,用以辅助前后处理。topoSet 可以生成的“集合”包括 pointSet,faceSet,cellSet,pointZone,faceZone,cellZone。set 和 zone 在概念上基本上是一致的,都是包含一系列点(或者面,或者体)的集合,只是由于历史原因,目前 set 和 zone 并存于 OpenFOAM 中,有的前后处理工具可能同时支持使用 set 或 zone,但也有的只支持其中一种。

/*--------------------------------*- C++ -*----------------------------------*\
| =========                 |                                                 |
| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
|  \\    /   O peration     | Version:  5                                     |
|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
|    \\/     M anipulation  |                                                 |
\*---------------------------------------------------------------------------*/
FoamFile
{
    version     2.0;
    format      ascii;
    class       dictionary;
    location    "system";
    object      topoSetDict.1;
}
// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //

actions
(
    // 创建faceSet
    {
        name    faceSet_1;//需要生成的集合的名字
        type    faceSet;//集合的类型,包括pointSet, pointZoneSet,faceSet, faceZoneSet, pointSet, pointZoneSet, cellSet, cellZoneSet等等
        action  new;//操作类型,new, add, delete, subset(交集) 
        source  boxToFace;//操作对象,boxToFace的含义是将box内的所有face作为本次操作的对象
        sourceInfo    //要操作的对象的信息
        {
            box (-0.12 -0.12 1.499) (0.12 0.12 1.501);//box的范围信息。这两个点的范围内只能有一层网格面
        }
    }
    // 根据faceSet创建faceZone
    {
        name    faceZone_1;//需要生成的集合的名字
        type    faceZoneSet;//这里表示需要生成一个faceZone的集合
        action  new;//new表示新建一个
        source  setToFaceZone;//表示将前面定义的某个集合作为操作对象
        sourceInfo
        {
            faceSet faceSet_1;//操作对象是上面定义的faceSet_1
        }
    }
);

// ************************************************************************* //

3.修改controlDict文件

在controlDict的最后加上下面的内容:

functions
{
  // - 包含外部定义的functionObject
  #include "externalFunctionObject"
}

在case/system/目录下,创建一个externalFunctionObject文件,文件的内容如下:

// 检测一个面上的平均值
voidfraction_average_zplane
{
    type            surfaceFieldValue;
    functionObjectLibs ("libfieldFunctionObjects.so");
    outputControl   timeStep;
    outputInterval  1;
    log             false;
    writeFields     false;
    valueOutput     false;
    regionType      faceZone;//patch;
    name            faceZone_1;
    operation       average;
    fields
    (
        voidfraction
    );
}

// 定义了监测点数据提取
probes
{
    type        probes;
    // Where to load it from
    functionObjectLibs ( "libsampling.so" );  
    // Name of the directory for probe data
    name        probes;
    probeLocations
    (
        (0.00000 0.000000 0.000001)
        (0.00000 0.000000 1.500000)
        (0.00000 0.000000 2.999999)
    );

    // Fields to be probed
    fields ( p U voidfraction );

    // Write at same frequency as fields
    outputControl   timeStep;//outputTime;
    outputInterval  1;
}

4.其他的操作

在经过上面的设置之后,通过:

blockMesh      //生成网格
topoSet      //生成面
foamToVTK    //将面转化为“.vtk”格式

然后就可以在paraview中查看了升成的面了。

标签:box,cylinder,zMax,平均值,zMin,面上,OpenFOAM,project,radius
From: https://www.cnblogs.com/Xiwang-Sun/p/18148760

相关文章

  • 市面上繁多的跨网软件,哪一款最适合中小型研发企业?
    中小型研发企业是指规模相对较小,以研究和开发新技术、新产品为主要业务的企业。这类企业虽在规模上无法与大型企业相比较,但同样作为市场经济最重要的组成部分,中小型研发企业仍以高创新力、强灵活性及市场灵敏度,具有非常强的发展生命力。数据对中小型研发企业而言非常重要,数据保......
  • OpenFOAM查看Y+报错:Unable to find turbulence model in the database
    计算完成并使用 reconstructPar 重组计算结果之后,使用 postProcess-funcyPlus 查看Y+,报错显示:-->FOAMFATALERROR:UnabletofindturbulencemodelinthedatabaseFromfunctionvirtualboolFoam::functionObjects::yPlus::execute()infileyPlus/yPlu......
  • 低功耗抗噪/高抗干扰,LCD显示驱动控制电路(IC)-VK2C23A/B LQFP48/64 替代市面上16C23,56*4
    VK2C23是一个点阵式存储映射的LCD驱动器,可支持最大224点(56SEGx4COM)或者最大416点(52SEGx8COM)的LCD屏。单片机可通过I2C接口配置显示参数和读写显示数据,也可通过指令进入省电模式。其高抗干扰,低功耗的特性适用于水电气表以及工控仪表类产品。L23+01特点:•工作电压2.4-5.5V•内......
  • 电脑桌面上表格不见了怎么找回?这5个方法不要错过
    在日常的办公和学习中,电脑桌面上的各种文件、文件夹和表格等无疑是我们较为频繁使用的资源。然而,有时我们可能会因为一些操作失误或者电脑问题,突然发现桌面上的某个表格文件神秘失踪了。面对这种情况,很多人可能会感到焦虑和不知所措。但别担心,本文将为你提供几种方法,希望能帮助......
  • win10电脑日历日程怎么放在桌面上显示出来?
    身为一名上班族,我每天都需要面对繁杂的工作任务,为了确保不遗漏任何重要事项并按时完成规划,我急需一款能在电脑桌面上直观展示日程的软件。那么,win10电脑日历日程怎么放在桌面上显示出来呢?幸运的是,同事向我推荐了一款名为“敬业签”的电脑桌面日程软件。在Windows电脑上使用它,并简......
  • 高抗干扰抗噪,段码LCD液晶低功耗驱动IC-VK2C23B,兼容市面上16C23
    VK2C23是一个点阵式存储映射的LCD驱动器,可支持最大224点(56SEGx4COM)或者最大416点(52SEGx8COM)的LCD屏。单片机可通过I2C接口配置显示参数和读写显示数据,也可通过指令进入省电模式。其高抗干扰,低功耗的特性适用于水电气表以及工控仪表类产品。L23+01特点:•工作电压2.4-5.5V•......
  • python opencv计算图片rgb平均值
    pythonopencv计算图片rgb平均值importcv2importnumpyasnp#读取图像3_202403281448172_20240328165448image=cv2.imread('3_20240328144817.jpg')#确保图像读取成功ifimageisnotNone:#OpenCV读取图像为BGR格式,我们需要转换为RGB#rgb_......
  • 电脑桌面上好用的记事本软件有哪些?
    在日常办公中,上班族们经常需要记录各种工作事项、笔记和资料。使用一款电脑桌面记事本软件能够大大提高工作效率和便捷性。想象一下,当你需要快速记录一个灵感或待办事项时,只需在电脑桌面上轻点几下,就能轻松完成记录,这是多么高效和方便啊!那么,电脑桌面上好用的记事本软件有哪些呢?哪......
  • 如何在电脑桌面上创建可视化工作计划日程表?
    对于职场人士来说,高效的时间管理和工作计划是提升工作效率、确保任务按时完成的关键。一款优秀的电脑工作计划软件,不仅能够帮助我们清晰地规划每一项任务,还能提醒我们按时完成,从而避免遗漏或延误。那么,电脑工作计划软件哪个好用呢?好用的电脑桌面日程软件选择哪款?这里我为大家推荐......
  • Python——timeit(运行时间平均值计算)
    可以计算其中运行代码所用的平均时间。importtimeitprint(timeit.timeit('a,b=10,20;a1=a;a=b;'))0.015125599999009864使用多重赋值的技巧来交换两个变量,也就是所谓的“迭代解包”它的运行时间是:importtimeitprint(timeit.timeit('a,b=10,20;a,b=b,......