【OpenFOAM】-olaFlow-算例1- baseWaveFlume

news2024/11/25 9:25:07

算例路径: olaFlow\tutorials\baseWaveFlume
算例描述: 一个基础的二维波浪水槽
算例快照:
在这里插入图片描述

图1 波浪模拟结果

在这里插入图片描述

图2 算例网格

文件结构:

├── 0.org
│   ├── U 
│   ├── alpha.water
│   ├── alpha.water.org
│   └── p_rgh
├── cleanCase
├── constant
│   ├── dynamicMeshDict
│   ├── g
│   ├── transportProperties
│   ├── turbulenceProperties
│   └── waveDict   --> 设置波浪要素
├── runCase
└── system
    ├── blockMeshDict
    ├── controlDict
    ├── decomposeParDict
    ├── fvSchemes
    ├── fvSolution
    └── setFieldsDict  --> 设置水深

算例文件解析:

【0.org\U】

dimensions      [0 1 -1 0 0 0 0];  // 量纲 m/s
internalField   uniform (0 0 0);   // 内部速度场 均一场 0 0 0
boundaryField   //边界场
{
    inlet      // 造波边界
    {
        type            waveVelocity; // 波浪速度
        waveDictName    waveDict;     // 读取constant\waveDict中的波浪要素
        value           uniform (0 0 0);  //初值为 0 0 0
    }
    outlet    // 消波边界
    {
        type            waveAbsorption2DVelocity;  // 使用了二维消波理论,olaFlow采用主动消波法
        value           uniform (0 0 0);
    }
    bottom   // 底部边界为固壁边界,边界上速度为零
    {
        type            fixedValue;   
        value           uniform (0 0 0);
    }
    atmosphere // 大气边界,允许空气流出和流入
    {
        type            pressureInletOutletVelocity;
        value           uniform (0 0 0);
    }
    frontAndBack // 前后面,empty指示模型为二维模型
    {
        type            empty;
    }
}

【0.org\p_rgh】

// p_rgh = p - rgh,实际压力减去静水压力
dimensions      [1 -1 -2 0 0 0 0];  // M(1) L(-1) T(-2)
internalField   uniform 0;
boundaryField
{
    frontAndBack
    {
        type            empty;
    }
    outlet
    {
        type            fixedFluxPressure; //将压力梯度设置为0,边界上的通量由速度边界条件指定
        value           uniform 0;
    }
    inlet 
    {
        type            fixedFluxPressure;
        value           uniform 0;
    }
    bottom
    {
        type            fixedFluxPressure;
        value           uniform 0;
    }
    atmosphere 
    {
        type            totalPressure; //总压条件:流出 p = p0; 流入 p = p0 - 0.5|U|^2
        U               U;
        phi             phi;
        rho             rho;
        psi             none;
        gamma           1;
        p0              uniform 0;
        value           uniform 0;
    }
}

【0.org\alpha.water.org】

// 设置流体体积分数
dimensions      [0 0 0 0 0 0 0]; 
internalField   uniform 0;       
boundaryField
{
    inlet
    {
        type            waveAlpha;  // 根据波浪条件设置
        waveDictName    waveDict;
        value           uniform 0;
    }
    frontAndBack
    {
        type            empty;
    }
    outlet
    {
        type            zeroGradient; // 零梯度
    }
    bottom
    {
        type            zeroGradient;
    }
    atmosphere
    {
        type            inletOutlet; // 当流体流出时,α的梯度为0;如果流入,α为0,100%的空气流入
        inletValue      uniform 0;
        value           uniform 0;
    }
}

【constant\dynamicMeshDict】

dynamicFvMesh        staticFvMesh;

【constant\g】

dimensions      [0 1 -2 0 0 0 0];
value           ( 0 0 -9.81 );

【constant\transportProperties】

phases (water air);

water
{
    transportModel  Newtonian;
    nu              [0 2 -1 0 0 0 0] 1e-06;  // 流体运动粘度
    rho             [1 -3 0 0 0 0 0] 1000;   // 流体密度
}

air
{
    transportModel  Newtonian;
    nu              [0 2 -1 0 0 0 0] 1.48e-05;
    rho             [1 -3 0 0 0 0 0] 1;
}

sigma           [1 0 -2 0 0 0 0] 0.07;     // 水和空气之间的表面张力参数

【constant\turbulenceProperties】

simulationType  laminar;     // 设置为层流模型

【constant\waveDict】

waveType        regular;    // 规则波
waveTheory      cnoidal;    // 椭圆余弦波
genAbs          1;          // 考虑造波边界的消波性能  1/0
absDir          0.0;        // 造波边界的消波方向
nPaddles        1;          // 主动消波的Paddles数量设置
waveHeight      0.10;       // 波高
wavePeriod      3;          // 波周期
waveDir         0.0;        // 波向
wavePhase       1.57079633; // 初始相位
// Change both entries to true to re-read this dictionary upon restart.
rereadAlpha     false;
rereadU         false;

【system\blockMeshDict】

scale 1;
vertices        
(
   (0.0     -0.02   0.0)
   (10.0    -0.02   0.0)
   (10.0    -0.02   0.7)
   (0.0     -0.02   0.7)
   (0.0     0.0     0.0)
   (10.0    0.0     0.0)
   (10.0    0.0     0.7)
   (0.0     0.0     0.7)
);
blocks          
(
    hex (0 1 5 4 3 2 6 7)   (500 1 70) simpleGrading (1 1 1)
);
edges           
(
);
patches         
(
    patch inlet  // 造波边界
    (
        (0 4 7 3)
    )
    patch outlet  // 消波边界 
    (
        (1 5 6 2)
    )
    wall bottom   // 水槽底部边界
    (
        (0 1 5 4)
    )
    patch atmosphere  // 大气边界
    (
        (3 2 6 7)
    )
    empty frontAndBack // 水槽侧面边界
    (
        (0 1 2 3)
        (4 5 6 7)
    )
);
mergePatchPairs
(
);

【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.5;         // CFL条件的Courant数, 一般<1, 设置一个小值会使计算结果更精确,但也减小了时间步长,增加了计算成本
maxAlphaCo	    0.5;         // 两相交界面上的最大Courant数
maxDeltaT       0.025;

【system\decomposeParDict】

numberOfSubdomains 2;        // 并行区域分解数目
method          scotch;      // 区域分解方法
...

【system\fvSchemes】

// 指定控制方程中各项的有限体积法的离散格式
ddtSchemes  // 指定时间离散格式
{
    default         Euler;  // Euler法,一阶精度,条件稳定
} 

gradSchemes  // 梯度项离散格式
{
    default         Gauss linear; // 高斯定理,将网格中心的量插值到网格面上
}

// olaFlow 的算例中给出了几乎所有可能出现的项,具体算例可能不会包含全部项
divSchemes  // 对流项与散度项的离散格式, 将网格中心的量插值到网格面上,因此实际上选用的是interpolationSchemes
{
    div(rhoPhi,U)  Gauss limitedLinearV 1;  // Guass limitedLinear(一种TVD格式,使同时满足精度和有界) V类(采用限制器时考虑了流动方向)
    div(U)  Gauss linear; // 二阶精度,无界
    div((rhoPhi|interpolate(porosity)),U)  Gauss limitedLinearV 1;
    div(rhoPhiPor,UPor)  Gauss limitedLinearV 1;
    div(rhoPhi,UPor)  Gauss limitedLinearV 1;
    div(rhoPhiPor,U)   Gauss limitedLinearV 1; 
    div(phi,alpha)  Gauss vanLeer; // Gauss vanLeer(一种TVD格式,使同时满足精度和有界)
    div(phirb,alpha) Gauss interfaceCompression; // 界面压缩格式,基于一般限制格式
    div((muEff*dev(T(grad(U))))) Gauss linear;
    div(phi,k)      Gauss upwind; // 一阶迎风格式,有界
    div(phi,epsilon) Gauss upwind;
    div((phi|interpolate(porosity)),k)      Gauss upwind;
    div((phi|interpolate(porosity)),epsilon) Gauss upwind;
    div(phi,omega) Gauss upwind;
    div((phi|interpolate(porosity)),omega) Gauss upwind;
}

laplacianSchemes  // 拉普拉斯项离散格式
{
    default         Gauss linear corrected; // Guass线性插值,corrected(显式的非正交网格修正)
}

interpolationSchemes
{
    default         linear;  // 线性插值格式
}

snGradSchemes  // 面法向梯度格式
{
    default         corrected;
}

fluxRequired  // 
{
    default         no;
    p_rgh;
    pcorr;
    alpha.water;
}

【system\fvSolution】

// 指定方程组矩阵求解器、残差以及其他算法控制
solvers
{
    "alpha.water.*"
    {
        nAlphaCorr      1;  //
        nAlphaSubCycles 2;
        alphaOuterCorrectors yes;
        cAlpha          1;

        MULESCorr       no;
        nLimiterIter    3;

        solver          smoothSolver;    // 求解器:光顺求解器。对称和非对称矩阵均适用
        smoother        symGaussSeidel;  // 光顺器:对称Gauss-Seidel方法
        tolerance       1e-8;            // 标准化残差
        relTol          0;               // 相对残差,表征残差的递减量
    }

    "pcorr.*"  // 压强校正量
    {
        solver          PCG;            // 求解器:预处理共轭梯度法。仅适用于对称矩阵    
        preconditioner  DIC;            // 预处理器:基于对角的不完全Cholesky预处理器
        tolerance       1e-5;
        relTol          0;
    }

    p_rgh
    {
        solver          PCG;
        preconditioner  DIC;
        tolerance       1e-07;
        relTol          0.05;
    }

    p_rghFinal  // 在求解p_rgh时可设置较大的残差,在最后一步设置严格的误差
    {
        $p_rgh;
        relTol          0;
    }

    U
    {
        solver          smoothSolver; 
        smoother        symGaussSeidel;
        tolerance       1e-06;
        relTol          0;
    }
}

// 离散方程组的分离式解法
PIMPLE   // SIMPLE 与 PISO 算法的耦合
{
    momentumPredictor   no;
    nOuterCorrectors    1;  // 值不大于1时,算法变为纯PISO算法;若大于1,为非定常SIMPLE算法
    nCorrectors         3;
    nNonOrthogonalCorrectors 0;
}

relaxationFactors // 松弛方法,为降低数值波动
{
    fields        // 表示需要使用松弛方法(显式)的变量
    {
    }
    equations     // 表示需要使用松弛方法(隐式)的方程
    {
        ".*" 1;
    }
}

【system\setFieldsDict】

defaultFieldValues
(
    volScalarFieldValue alpha.water 0   // 初始化流体体积分数
);
regions
(
    boxToCell
    {
        box (-10 -1 -1) (30 1 0.4);
        fieldValues
        (
            volScalarFieldValue alpha.water 1  // 将box范围内的流体设置为a = 1的相,即水深
        );
    }
);

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

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

相关文章

关于Redis的远程连接 Connection: Disconnect on error 问题

bug描述&#xff1a; Connection: Disconnect on error: Connection error: Connection timed outConnection: 192.168.245.128 > connection failed 问题复现&#xff1a; redis版本&#xff1a; redis-6.2.6 Linux版本&#xff1a;CenterOS 7 在linux上已经完成了red…

第五章. 可视化数据分析分析图表—常用图表的绘制1—折线图,柱形图

第五章. 可视化数据分析分析图 5.3 常用图表的绘制1—折线图,柱形图 本节主要介绍常用图表的绘制&#xff0c;主要包括折线图&#xff0c;柱形图。 1.折线图&#xff08;matplotlib.pyplot.plot&#xff09; 折线图可以显示随时间而变化的连续数据&#xff0c;适用于显示在相…

Hadoop原理与技术——hdfs命令行基本操作

一、实验目的 熟悉hdfs命令行基本操作 二、实验环境 Windows 10 VMware Workstation Pro虚拟机 Hadoop环境 Jdk1.8 三、实验内容 1&#xff1a;hdfs常见命令&#xff1a; &#xff08;1&#xff09;查看帮助&#xff1a;hdfs dfs -help &#xff08;2&#xff09;查看当前目录…

OpenCV图像处理——目标追踪

总目录 图像处理总目录←点击这里 二十四、目标追踪 24.1、多目标&#xff08;手动检测&#xff09;追踪 24.1.1、原理 目标检测&#xff1a;运行之后按下s&#xff0c;通过鼠标对某个目标进行检测&#xff0c;然后点击空格或者回车 目标追踪&#xff1a;opencv的八种追踪…

【JavaEE】JavaScript(基础语法)1

努力经营当下&#xff0c;直至未来明朗&#xff01; 文章目录前言一、JavaScript初识&#xff08;简单了解就行&#xff0c;没时间跳过&#xff09;二、【JS的代码相关】【注释】【输入输出】三、语法1. 变量2. 【基本数据类型】THINK前言 一个人最大的痛苦就是对自己无能的愤…

信贷风控NCL净损失率的指标实现与应用

在金融信贷业务的风险控制过程中&#xff0c;有一项财务指标发挥着比较重要的信息参考价值&#xff0c;可以有效衡量某个月份放款金额在形成呆账后的资金损失情况&#xff0c;其中呆账指的是信贷逾期180天以上&#xff0c;这个指标便是NCL&#xff08;Net Credit Loss&#xff…

大家都在用的福昕阅读器 foxit 你还不知道吗? 祛除水印PDF转换全功能解锁…

趣味拓展 什么字大家看了都说没用&#xff1f; (答案在文末) 引言 福昕阅读器是一款高级PDF编辑器&#xff0c;查看目录、去除水印、编辑文本、转换格式等都是可以用到的~ 小编第一次使用的时候是用来查看pdf文档目录的&#xff0c;当时未使用破解版&#xff0c;后来循序渐进…

基于PHP+MySQL中小学生科学实验展示网站的设计与实现

中小学生科学实验展示网站能够通过互联网得到广泛的、全面的宣传,让尽可能多的人积极的参加到科学实验行列中来,不仅为需要的人提供了服务,而且锻炼了自己,同时能够让中小学生对科学实验的兴趣有很大的提高 PHP中小学生科学实验展示网站是一个科普类型的网站,系统通过PHp&#…

[附源码]Python计算机毕业设计SSM客户信息管理(程序+LW)

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

模拟电子技术(四)放大电路的频率响应

&#xff08;四&#xff09;放大电路的频率响应电路理论基础知识复习频率响应基本概念两个无源频率响应的单元电路波特图&#xff08;幅频、相频&#xff09;高、低同电路对比晶体管的高频等效模型单管放大电路的频率响应研究信号频率的变化对放大电路性能的影响也就是电路对输…

Linux零基础入门(二)Linux基础命令

Linux零基础入门&#xff08;二&#xff09;Linux基础命令前言Linux基础命令一 Linux的目录结构1 Linux路径的描述方式二 Linux命令入门1 Linux命令基础格式2 ls命令3 HOME目录和工作目录4 ls命令的参数ls 命令的 -a选项ls命令的 -l选项ls命令选项的组合使用ls选项和参数的组合…

基于人工势场法的二维平面内无人机的路径规划的matlab仿真,并通过对势场法改进避免了无人机陷入极值的问题

目录 1.算法描述 2.matlab算法仿真效果 3.MATLAB核心程序 4.完整MATLAB 1.算法描述 人工势场法原理是&#xff1a;首先构建一个人工虚拟势场&#xff0c;该势场由两部分组成&#xff0c;一部分是目标点对移动机器人产生的引力场&#xff0c;方向由机器人指向目标点&#xf…

C语言——malloc开辟矩阵

目录 用动态内存开辟矩阵 矩阵初始化 用动态内存开辟矩阵 动态内存更多的知识在这篇博客&#xff0c;本文将介绍用malloc开辟矩阵。 malloc是C语言中用来动态开辟内存的&#xff0c;通过malloc函数可以向计算机申请一串连续的内存空间。 因为malloc开辟的内存在堆上&#…

数据链路层-封装成帧

封装成帧 数据链路层给上层交付的协议数据单元添加上帧头和帧尾使之成为帧帧头和帧尾包含有重要的控制信息帧头和帧尾的作用之一就是帧定界 透明传输 数据链路层对上层的交付的传输数据没有任何的限制&#xff0c;就好像数据链路层不存在一样面向字节的物理链路使用字节填充(字…

manjaro (gnome) 记录 2 常用配置与快捷键介绍

manjaro &#xff08;gnome&#xff09; 记录 2 常用配置与快捷键介绍 初manjaro 记录 2 常用配置与快捷键介绍安装 vim 文本编辑器配置中文输入法安装谷歌拼音配置输入法添加快捷键&#xff1a;gnome 终端通过命令&#xff1a;gnome-terminal 可以打开 gnome 终端窗口设置快捷…

学习Hadoop(一)——搭建hadoop集群

最近开始学习大数据的相关知识&#xff0c;要学习大数据就不得不提到Hadoop。 一般来说学习一门新的知识&#xff0c;很多都是先理论再实践 我则不然&#xff0c;先实践&#xff0c;再了解理论 目录一、VM网络设置二、安装Centos72.1 网络配置2.2 设置主机名2.3 hosts设置2.4…

【在SpringBoot项目中使用Validation框架检查数据格式】

目录 1. 添加依赖 2. 检查POJO类型的请求参数 3. 关于响应的消息文本 4. 快速失败 5. 检查未封装的请求参数 1. 添加依赖 在pom.xml中添加spring-boot-starter-validation依赖项&#xff1a; <!-- Spring Boot Validation框架&#xff0c;用于检查数据格式 --> &…

ctfshow 月饼杯

寒假打算认真学习一下&#xff0c;就先从半个月的刷题开始。 文章目录web1_此夜圆web2_故人心web3_莫负婵娟web1_此夜圆 题目给的有附件&#xff0c;一看就是php反序列化字符串逃逸(应该是签到题)。 源码&#xff1a; <?php error_reporting(0);class a {public $uname;…

负载均衡组件Ribbon核心-@LoadBalanced-下

引言 书接上篇 负载均衡组件Ribbon核心-LoadBalanced-上 我们讲完了理解LoadBalanced注解的知识准备&#xff0c;接下来就是LoadBalanced注解详解。 LoadBalancerAutoConfiguration 激活 LoadBalanced 注解功能起点来至LoadBalancerAutoConfiguration自动配置类&#xff0c;S…

uni-app 超详细教程(三)(从菜鸟到大佬)

本文中内容为&#xff1a; 1. 支付功能&#xff08;微信支付&#xff0c;支付宝支付&#xff09; 2. 项目打包&#xff1a;&#xff08;APP打包&#xff0c;H5打包&#xff0c;微信小程序打包&#xff09; 一&#xff0c;uni - app 的支付功能 一、微信支付 1、登录微信开…