【OpenFOAM】-olaFlow-算例2- breakwater

news2024/10/7 2:26:58

算例路径: olaFlow\tutorials\breakwater
算例描述: 波浪对防波堤的作用,堤身为孔隙可渗透结构,堤顶沉箱为不可渗透结构。
学习目标: 渗透模型、可渗结构设置、孔隙材料各项参数设置
算例快照:
在这里插入图片描述

图1 防波堤越浪模拟结果

在这里插入图片描述

图2 算例网格划分

文件结构:

.
├── 0.org 
│   ├── U
│   ├── alpha.water
│   ├── alpha.water.org
│   ├── epsilon
│   ├── k
│   ├── nut
│   ├── omega
│   ├── p_rgh
│   ├── porosityIndex
│   └── porosityIndex.org
├── cleanCase
├── constant
│   ├── g
│   ├── porosityDict
│   ├── transportProperties
│   ├── triSurface
│   ├── turbulenceProperties_keps
│   ├── turbulenceProperties_sst
│   └── waveDict
├── plotSensPres.py
├── plotSensVOF.py
├── postSensPres.py
├── postSensVOF.py
├── runCaseKEpsilon
├── runCaseSST
└── system
    ├── blockMeshDict
    ├── controlDict_OF
    ├── controlDict_OF+
    ├── decomposeParDict
    ├── fvSchemes
    ├── fvSolution
    ├── setFieldsDict
    └── snappyHexMeshDict

算例文件解析:

【0.org\U】
【0.org\p_rgh】
【0.org\alpha.water.org】
参考 【OpenFOAM】-olaFlow-算例1- baseWaveFlume

【0.org\porosityIndex.org】

// 孔隙材料索引值
dimensions      [0 0 0 0 0 0 0];
internalField   uniform 0;
boundaryField
{
    inlet
    {
        type            zeroGradient; 
    }
    outlet
    {
        type            zeroGradient;
    }
    "wall."
    {
        type            zeroGradient;
    }
    caisson
    {
        type            zeroGradient;
    }
    defaultFaces
    {
        type            empty;
    }
    atmosphere
    {
        type            zeroGradient;
    }
}

【0.org\k】

// 湍流动能边界条件
dimensions      [0 2 -2 0 0 0 0];
internalField   uniform 0.00000001;
boundaryField
{
    inlet
    {
        type            inletOutlet;
        inletValue      uniform 0.00000001;
        value           uniform 0.00000001;
    }
    outlet
    {
        type            inletOutlet;
        inletValue      uniform 0.00000001;
        value           uniform 0.00000001;
    }
    "wall."
    {
        type            kqRWallFunction;   // kqR 壁面函数边界,该壁面函数实际上就是zeroGradient,适用于高雷诺数情况
        value           uniform 0.00000001; 
    }
    caisson
    {
        type            kqRWallFunction;
        value           uniform 0.00000001;
    }
    defaultFaces
    {
        type            empty;
    }
    atmosphere
    {
        type            inletOutlet;
        inletValue      uniform 0.00000001;
        value           uniform 0.00000001;
    }
}

【0.org\nut】

// 湍流粘度边界条件
dimensions      [0 2 -1 0 0 0 0];
internalField   uniform 0;
boundaryField
{
    inlet
    {
        type            calculated;
        value           uniform 0;
    }
    outlet
    {
        type            calculated;
        value           uniform 0;
    }
    "wall."
    {
        type            nutkWallFunction; // nutk 壁面函数边界,基于 k 修正壁面涡黏系数
        Cmu             0.09;
        kappa           0.41;
        E               9.8;
        value           uniform 0;
    }
    atmosphere
    {
        type            calculated;
        value           uniform 0;
    }
    defaultFaces
    {
        type            empty;
    }
    caisson
    {
        type            nutkWallFunction;
        Cmu             0.09;
        kappa           0.41;
        E               9.8;
        value           uniform 0;
    }
}

【0.org\omega】

// 湍动能比耗散率
dimensions      [0 0 -1 0 0 0 0];
internalField   uniform 0.001;
boundaryField
{
    inlet
    {
        type            inletOutlet;
        inletValue	    uniform 0.001;
        value           uniform 0.001;
    }
    outlet
    {
        type            inletOutlet;
        inletValue	    uniform 0.001;
        value           uniform 0.001;
    }
    "wall."
    {
        type            omegaWallFunction; // OpenFOAM仅提供了一种 w 壁面函数。
        value           uniform 0.001;
    }
    caisson
    {
        type            omegaWallFunction;
        value           uniform 0.001;
    }
    defaultFaces
    {
        type            empty;
    }
    atmosphere
    {
        type            inletOutlet;
        inletValue	    uniform 0.001;
        value           uniform 0.001;
    }
}

【0.org\epsilon】

// 湍动能耗散率,本算例中不要
dimensions      [0 2 -3 0 0 0 0];
internalField   uniform 0.0001;
boundaryField
{
    inlet
    {
        type            inletOutlet;
        inletValue      uniform 0.0001;
        value           uniform 0.0001;
    }
    outlet
    {
        type            inletOutlet;
        inletValue      uniform 0.0001;
        value           uniform 0.0001;
    }
    "wall."
    {
        type            epsilonWallFunction; // 
        value           uniform 0.0001;
    }
    caisson
    {
        type            epsilonWallFunction;
        value           uniform 0.0001;
    }
    defaultFaces
    {
        type            empty;
    }
    atmosphere
    {
        type            inletOutlet;
        inletValue      uniform 0.0001;
        value           uniform 0.0001;
    }
}

【constant\turbulenceProperties】

simulationType  RAS; // RAS类湍流模型
RAS
{
    RASModel        kOmegaSST; // k-w SST 湍流模型
    turbulence      on;        // 湍流模型开关
    printCoeffs     on;        // 输出模型系数
}   

【constant\waveDict】

waveType        regular;    // 规则波
waveTheory      cnoidal;    // 椭圆余弦波
genAbs          1;          // 考虑造波边界的消波性能  1/0
absDir          0.0;        // 造波边界的消波方向
nPaddles        1;          // 主动消波的Paddles数量设置,是patch被分割的垂直切片的(整数)数量。这个参数在消波和斜向造波中起着重要作用,默认值为1,即整个patch作为一个单独的单元起作用。
waveHeight      0.25;       // 波高
wavePeriod      3;          // 波周期
waveDir         0.0;        // 波向
wavePhase       1.57079633; // 初始相位
tSmooth         0.0;        // 平滑时间,秒。在产生不规则波或斜向波时,在造波patch上模拟的起始点会有许多波峰和波谷,初始条件必须tapered,以便在边界上得到更平滑的响应。则波面高度和速度都乘以一个因子,该因子在t = 0s到t = tSmooth时从0到1线性变化。tSmooth的默认值为-1,即不使用。

【constant\porosityDict】

// Materials: clear region, core, secondary armour layer, primary armour layer
a               4(0 50   50   50);     // 阻力系数
b               4(0 1.2  2.0  0.6);    // 阻力系数
c               4(0 0.34 0.34 0.34);   // 阻力系数

D50             4(1 0.01 0.035 0.12);  // 孔隙材料中值粒径 D50
porosity        4(1 0.49 0.493 0.5);   // 各种材料的孔隙率

【system\snappyHexMeshDict】
参考 【OpenFOAM】snappyHexMesh

【system\controlDict】

application     olaFlow;      // olaFlow求解器
startFrom       latestTime;
startTime       0;
stopAt          endTime;
endTime         60;
deltaT          0.001;       // 计算时间步
writeControl    adjustableRunTime;
writeInterval   0.05;        // 写出时间步
purgeWrite      0;
writeFormat     ascii;
writePrecision  6;
compression     off;         // 是否压缩格式写出,可节约硬盘空间, on/off
timeFormat      general;
timePrecision   6;
runTimeModifiable yes;
adjustTimeStep  yes;         // 采用自适应时间步,可能会加速计算,也可能造成时间步极小
maxCo           0.45;         // CFL条件的Courant数, 一般<1, 设置一个小值会使计算结果更精确,但也减小了时间步长,增加了计算成本
maxAlphaCo	    0.45;         // 两相交界面上的最大Courant数
maxDeltaT       0.05;

functions     // 后处理设置
{
    gaugesVOF // 用于输出自由水面位置
    {
        type    sets;
        libs ("libsampling.so");
        writeControl    outputTime;
        writeInterval   1;
        setFormat       raw;
        surfaceFormat   raw;
        interpolationScheme cellPoint;
        fields          ( alpha.water );
        sets
        (
            GaugeVOF01
            {
                type    lineCellFace;
                axis    xyz;
                start   ( 0.5 0.001 0 );
                end     ( 0.5 0.001 1.2 );
            } 
            GaugeVOF02
            {
                type    lineCellFace;
                axis    xyz;
                start   ( 9.25 0.001 0 );
                end     ( 9.25 0.001 1.2 );
            } 
            GaugeVOF03
            {
                type    lineCellFace;
                axis    xyz;
                start   ( 15.75 0.001 0 );
                end     ( 15.75 0.001 1.2 );
            } 
            GaugeVOF04
            {
                type    lineCellFace;
                axis    xyz;
                start   ( 17.75 0.001 0 );
                end     ( 17.75 0.001 1.2 );
            } 
            GaugeVOF05
            {
                type    lineCellFace;
                axis    xyz;
                start   ( 21.1 0.001 0 );
                end     ( 21.1 0.001 1.2 );
            } 
        );
    }
    gaugesP  // 输出点压力
    {
        type    sets;
        libs ("libsampling.so");
        writeControl    outputTime;
        writeInterval   1;
        setFormat       raw;
        surfaceFormat   raw;
        interpolationScheme cellPointFace;
        fields          ( p );
        sets
        (
            GaugesP
            {
                type    boundaryPoints; // 边界上的点
                axis    xyz;
                patches 1(caisson);   // 测量沉箱面上一些点的波压力
                points  ((18.0 0.01 0.75) 
                        (18.00 0.01 0.80)
                        (18.00 0.01 0.85)
                        (18.00 0.01 0.95)
                        (18.01 0.01 0.70)
                        (18.25 0.01 0.70)
                        (18.50 0.01 0.70)
                        (18.75 0.01 0.70));
                maxDistance 0.01;  // 根据上述坐标,在 0.01m的范围内搜索几何caisson面上的 points
            }
        );
    }
}

【system\fvSchemes】
【system\fvSolution】
参考 【OpenFOAM】-olaFlow-算例1- baseWaveFlume

【system\setFieldsDict】

defaultFieldValues
(
    volScalarFieldValue alpha.water 0      // 设置标量场 alpha 的值
    volScalarFieldValue porosityIndex 0    // 设置标量场 porosityIndex 的值
);

regions
(
    boxToCell
    {
        box (-10 -10 -10) (500 10 0.8);
        fieldValues
        (
            volScalarFieldValue alpha.water 1   // box范围内单元的 alpha 值为 1,即水深为 0.8
        );
    }

    surfaceToCell
    {
        file            "./constant/triSurface/primLayer.stl"; // 通过*.stl几何文件确定孔隙材料范围
        outsidePoints   ((0.25 0.001 0.25));    // definition of outside
        includeCut      true;              // cells cut by surface
        includeInside   true;              // cells not on outside of surf
        includeOutside  false;              // cells on outside of surf
        nearDistance    -1;                 // cells with centre near surf
                                            // (set to -1 if not used)
        curvature       -100;                // cells within nearDistance
                                            // and near surf curvature
                                            // (set to -100 if not used)
        fieldValues
        (
            volScalarFieldValue porosityIndex 3   // 孔隙材料索引值 3
                                                  // 外部水体的“孔隙材料”索引值 0
                                                  // 分别对应 constant\porosityDict 中的孔隙材料阻力系数
        );
    }

    surfaceToCell
    {
        file            "./constant/triSurface/secLayer.stl";
        outsidePoints   ((0.25 0.001 0.25));    // definition of outside
        includeCut      true;              // cells cut by surface
        includeInside   true;              // cells not on outside of surf
        includeOutside  false;              // cells on outside of surf
        nearDistance    -1;                 // cells with centre near surf
                                            // (set to -1 if not used)
        curvature       -100;                // cells within nearDistance
                                            // and near surf curvature
                                            // (set to -100 if not used)
        fieldValues
        (
            volScalarFieldValue porosityIndex 2
        );
    }

    surfaceToCell
    {
        file            "./constant/triSurface/core.stl";
        outsidePoints   ((0.25 0.001 0.25));    // definition of outside
        includeCut      true;              // cells cut by surface
        includeInside   true;              // cells not on outside of surf
        includeOutside  false;              // cells on outside of surf
        nearDistance    -1;                 // cells with centre near surf
                                            // (set to -1 if not used)
        curvature       -100;                // cells within nearDistance
                                            // and near surf curvature
                                            // (set to -100 if not used)
        fieldValues
        (
            volScalarFieldValue porosityIndex 1
        );
    }
);

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/86367.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

基于51单片机的四位数字频率计数码管显示设计

仿真原理图&#xff1a; 程序运行图&#xff1a; 部分程序&#xff1a; #include <reg52.h> #define uchar unsigned char #define uint unsigned int uchar duan[10]{0xc0,0Xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90}; //所需的段的位码 //uchar wei[…

企业数字化转型关键路径:构建数据驱动的管控体系

本案例以元年方舟企业数字化转型PaaS平台为某国际运动品牌&#xff0c;解决全渠道对账项目应用为例&#xff0c;通过建立全渠道对账系统研发&#xff0c;构建数据驱动的管控体系&#xff0c;帮助该零售企业实现数字化转型的突破。 关键词&#xff1a;企业数字化&#xff1b;新…

Transformer网络

Transformer网络可以利用数据之间的相关性&#xff0c;最近需要用到这一网络&#xff0c;在此做一些记录。 1、Transformer网络概述 Transformer网络最初被设计出来是为了自然语言处理、语言翻译任务&#xff0c;这里解释的也主要基于这一任务展开。 在 Transformer 出现之前…

99-127-spark-核心编程-持久化-分区-io-累加器-广播变量

99-spark-核心编程-持久化-分区-io&#xff1a; RDD持久化 1) RDD Cache 缓存 Spark02_RDD_Persist RDD 通过 Cache 或者 Persist 方法将前面的计算结果缓存&#xff0c;默认情况下会把数据以缓存在 JVM 的堆内存中。但是并不是这两个方法被调用时立即缓存&#xff0c;而是触…

OS_@假脱机技术@设备分配@设备映射

文章目录OS_假脱机技术设备分配设备映射设备分配的策略1)设备分配原则2)设备分配方式静态分配动态分配3)设备分配算法设备分配的安全性1)安全分配方式2)不安全分配方式逻辑设备名到物理设备名的映射两种方式设置逻辑设备表假脱机(Spooling)系统SPOOLing系统的组成SPOOLing的工作…

足球一代又一代得青春

世界杯由来 世界杯&#xff08;World Cup&#xff09;即国际足联世界杯&#xff0c;是世界上最高水平的足球赛事。 众所周知&#xff0c;现代足球起源于英国&#xff0c;随后风靡世界。由于足球运动的迅速发展&#xff0c;国际比赛也随之出现。1896年&#xff0c;第一届现代奥…

[附源码]计算机毕业设计的疫苗接种管理系统Springboot程序

项目运行 环境配置&#xff1a; Jdk1.8 Tomcat7.0 Mysql HBuilderX&#xff08;Webstorm也行&#xff09; Eclispe&#xff08;IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持&#xff09;。 项目技术&#xff1a; Springboot mybatis MavenVue等等组成&#xff0c;B/S模式…

Educational Codeforces Round 139 (Rated for Div. 2) D. Lucky Chains

翻译&#xff1a; 让我们命名一对正整数(&#x1d465;&#xff0c;&#x1d466;)&#xff0c;幸运的是它们的最大公约数等于1 (gcd(&#x1d465;&#xff0c;&#x1d466;)1)。 让我们定义一个链(&#x1d465;&#x1d466;)引起的一系列双(&#x1d465;&#x1d466;)…

Vue中对获取数据、返回数据进行处理的wode总结

&#x1f4ad;&#x1f4ad; ✨&#xff1a;Vue中对获取数据、返回数据进行处理的总结   &#x1f49f;&#xff1a;东非不开森的主页   &#x1f49c;: 也许&#xff0c;不负光阴就是最好的努力&#xff0c;而努力就是最好的自己。&#x1f49c;&#x1f49c;   &#x1f3…

Mybatis:MyBatis的分页插件(11)

Mybaits笔记框架&#xff1a;https://blog.csdn.net/qq_43751200/article/details/128154837 Mybatis中文官方文档&#xff1a; https://mybatis.org/mybatis-3/zh/index.html 分页插件1. 分页插件使用步骤2. 分页插件的使用2.1: 开启分页功能2.2: 分页相关数据2.3: 常用数据1.…

在小公司干测试5年,如今终于熬出头了,入职美团涨薪14K

你的努力&#xff0c;终将成就无可替代的自己&#xff0c;本科毕业后就一直从事软件测试的工作&#xff0c;和多数人一样&#xff0c;最开始从事功能测试的工作&#xff0c;我朋友看着自己的同学一步一步往上走&#xff0c;自己还是在原地踏步&#xff0c;说实话这不是自己想要…

TongWeb7微服务适配方案

先介绍一下我们微服务项目的部署情况&#xff1a; 之前使用的是内置的Tomcat容器部署方式&#xff0c;运行项目使用的 java -jar 项目文件 方式&#xff0c;然后使用k8sdocker容器化部署。 还没了解TongWeb部署的同学们&#xff0c;可以看看我前面写的几个关于TongWeb本地部…

【有营养的算法笔记】巧解蛇形矩阵

&#x1f451;作者主页&#xff1a;进击的安度因 &#x1f3e0;学习社区&#xff1a;进击的安度因&#xff08;个人社区&#xff09; &#x1f4d6;专栏链接&#xff1a;有营养的算法笔记 ✉️分类专栏&#xff1a;题解 文章目录一、题目描述二、思路讲解三、代码实现一、题目描…

DevExpress ASP.NET and Blazor图表编制

DevExpress ASP.NET and Blazor图表编制 .NET 6现在是受支持的最低框架版本-此版本需要.NET 6和Microsoft Visual Studio 2022(v17.0)或更高版本。 图表编制 范围条形图-最小条形图大小-您现在可以使用新的minBarSize属性为范围条形图中显示的条形图指定最小大小。 数据可视化组…

RabbitMQ如何保证消息的可靠性

文章目录可靠性分析可靠性方案可靠性实现确认Exchange接收到消息确认Queue接收到消息保证Queue及其数据持久化保证消费者的正常消费重复消费问题消息丢失问题可靠性分析 RabbitMQ如何保证消息的可靠&#xff1f;如RabbitMQ基础概念中的架构模型 可以看到一条消息的传递过程&a…

还在用HttpUtil?SpringBoot 3.0全新HTTP客户端工具来了,用起来够优雅~

我们平时开发项目的时候&#xff0c;经常会需要远程调用下其他服务提供的接口&#xff0c;于是我们会使用一些HTTP工具类比如Hutool提供的HttpUtil。前不久SpringBoot 3.0发布了&#xff0c;出了一个Http Interface的新特性&#xff0c;它允许我们使用声明式服务调用的方式来调…

PreScan快速入门到精通第四十讲目标边界传感器

边界矩形传感器提供了关于传感器可检测物体的边界矩形的信息,并作为对摄像机输入的边界矩形算法的参考。一个例子是行人识别算法,该算法用于检测夜间、雾、雨或雪等恶劣照明条件下的行人。输出的检测到的边界矩形是按距离排序的--最近的在前。 注意:边界矩形传感器不检测(或…

Qt扫盲-QDoubleSpinBox理论总结

QDoubleSpinBox理论总结1. 简述2. 调值与值转换3. 信号4. 修饰&外观1. 简述 QDoubleSpinBox 主要是对于浮点数据的输入进行便捷的封装。QDoubleSpinBox和QSpinBox的使用基本一致&#xff0c;只是有些控制有些不同嘛。比如对于浮点数的小数点精度位数的控制啦。 QDoubleSpi…

第五章. 可视化数据分析图表—常用图表的绘制4—箱形图,3D图表

第五章. 可视化数据分析图 5.3 常用图表的绘制4—箱形图&#xff0c;3D图表 本节主要介绍常用图表的绘制&#xff0c;主要包括箱形图&#xff0c;3D柱形图&#xff0c;3D曲面图。 1.箱形图&#xff08;matplotlib.pyplot.boxplot&#xff09; 箱形图又称箱线图、盒须图或盒式…

你还在为 “动态规划” 发愁吗?看完本秘籍,带你斩杀这类题~

目录 前言 一、动态规划——解题思路 二、动态规划——模板以及题目 2.1、Fibonacci 2.2、字符串分割(Word Break) 2.3、三角矩阵(Triangle&#xff09; 2.4、路径总数(Unique Paths&#xff09; 2.5、最小路径和(Minimum Path Sum) 2.6、背包问题 2.7、回文串分割(Pa…