【OpenFOAM】-olaFlow-算例1- baseWaveFlume

news/2024/4/27 22:15:01/文章来源:https://blog.csdn.net/ou_no/article/details/128132337

算例路径: 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|^2U               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.luyixian.cn/news_show_228928.aspx

如若内容造成侵权/违法违规/事实不符,请联系dt猫网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

一种多引擎可视化数据流实现方案

企业大数据处理的挑战 随着大数据时代的到来&#xff0c;数据量迅猛增长&#xff0c;给传统的分析技术带来了巨大的冲击和挑战&#xff0c;企业面临着大数据处理的巨大挑战。将复杂的大数据处理问题进行简化&#xff0c;以便企业有更多人能够进行大数据处理&#xff0c;进而整…

C_C++文件,字符串和控制台格式化处理总结

在实际业务开发中经常会用到文件&#xff0c;字符串和控制台格式化操作&#xff0c;格式化操作无非就是将数据转成指定格式存储在文件或者字符串&#xff0c;或者显示在控制台上&#xff0c;或者反过来。本篇结合实际工作将C/C语言中常用的文件&#xff0c;字符串和控制台常用格…

8、python中的模块和包

文章目录模块模块导入的方式直接导入部分导入import module 和from module import *的区别模块的其他信息_ _ name _ _ 的特殊使用模块的分类包从包中导入模块的方式模块 模块就是工具包,要想使用这个工具包中的工具(就好比函数),就需要导入这个模块 模块是非常简单的Python文…

小学生python游戏编程arcade----灯光示例

小学生python游戏编程arcade----灯光示例前言灯光阴影效果1、灯光效果1.1 玩家灯光效果1.2 代码2、灯光效果2.1 软效果2.2码实现3、硬效果3.1 灯光硬效果3.2代码实现4、灯光开关4.1 灯光开关4.2 代码实现灯光示例代码源码获取前言 接上篇文章继续解绍arcade游戏编程的基本知识…

凌玮科技IPO注册生效:曾踩雷理财损失2000万元,胡颖妮为董事长

11月30日&#xff0c;广州凌玮科技股份有限公司&#xff08;下称“凌玮科技”&#xff09;在深圳证券交易所创业板递交招股书&#xff08;注册稿&#xff09;。相较于此前招股书&#xff0c;凌玮科技补充披露了截至2022年9月30日的财务数据等信息&#xff0c;并对2022年度的业绩…

算法设计与分析 SCAU19180 集合划分问题

19180 集合划分问题 时间限制:1000MS 代码长度限制:10KB 提交次数:0 通过次数:0 题型: 编程题 语言: G;GCC;VC;JAVA Description 教材课后习题2-8 n个元素的集合{1,2,…,n}可以划分若干个非空子集。例如&#xff0c;当n4时&#xff0c;集合{1,2,3,4}可以划分为15个不同的非…

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

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

22.12.1打卡 漫步校园 记忆化搜索

题目里很显然只走最短路, 直接用bfs从终点到起点搜一遍将每一步到终点所需要的最短的时间存在一个dis数组中, 然后你就会发现原来的地图变成了这样 上面是地图下面是dis数组, 再看看经典记忆化搜索模板题滑雪的地图 对的, 非常地相似, 接下来的操作和滑雪基本一样, 只不过起点是…

轨迹预测——day 57 基于车道交叉和考虑驾驶方式的终点生成模型的前目标车辆轨迹预测

Trajectory Prediction of Preceding Target Vehicles Based on Lane Crossing and Final Points Generation Model Considering Driving Styles导读II.问题表述与系统架构A. Trajectory Prediction for PTVs&#xff08;preceding target vehicles&#xff09;B. Position and…

realme手机配什么蓝牙耳机?realme蓝牙耳机推荐

蓝牙耳机作为人手必备的单品&#xff0c;不同厂商的产品更是多种多样&#xff0c;用户可以有更多的选择&#xff0c;选购蓝牙耳机的时候&#xff0c;除了看重佩戴舒适度、发声单元人们更加追求最新研发的技术。realme是为年轻人而来的科技潮牌。秉持“敢越级”品牌理念&#xf…

Spring基础篇:注入

第一章&#xff1a;注入 一&#xff1a;什么是注入 &#xff08;Injection&#xff09;注入就是通过Spring的工厂类和spring的配置文件&#xff0c;对spring所创建的对象进行赋值&#xff0c;为成员变量进行赋值 二&#xff1a;为什么注入 为什么需要Spring工厂创建对象的时…

荟味齐鲁鲁菜网站/美食网站/菜谱网站

摘要 菜谱信息是餐厅必不可少的一个部分。在餐厅发展的整个过程中&#xff0c;菜谱信息管理担负着最重要的角色。为满足如今日益复杂的管理需求&#xff0c;各类管理系统程序也在不断改进。本课题所设计的荟味齐鲁鲁菜网站&#xff0c;使用SSM框架&#xff0c;Mysql数据库&…

智能聊天机器人如何帮助独立站运营提高工作效率?

关键词&#xff1a;智能聊天机器人、独立站运营 独立站运营变得越来越受欢迎&#xff0c;独立站可以用来建立在线商店并推动您的电子商务业务取得成功。它具有大量以业务为中心的功能&#xff0c;也许这就是为什么许多公司相信它会发展其在线业务的轨迹。 添加聊天机器人可以进…

基于51单片机电子微波炉控制系统(源程序+仿真+原理图+全套资料)

资料编号&#xff1a;203 功能介绍&#xff1a; 该电子微波炉采用51单片机制作&#xff0c;有基本的加热、冷却、启动、停止等功能&#xff0c;并通过MCU 控制其加热、冷却时间&#xff0c;LED 数码管显示时间。程序采用C语言编写&#xff0c;仿真使用Proteus&#xff0c;程序…

mysql与磁盘的关系

1.如今一直在说mysql存储方式和磁盘的关系&#xff0c;但是现在都是硬盘存储啊 磁盘分为硬盘和软盘 硬盘结构&#xff08;机械硬盘和固态硬盘&#xff09;详解 硬盘的大小是使用"磁头数 x 柱面数 x 扇区数 x 每个扇区的大小 如下&#xff1a; 每个扇区的大小是固定的…

Allegro添加渐近线操作指导

Allegro添加渐近线操作指导 Allegro支持添加渐近线,让线宽变化的地方进行圆环的过渡,对于射频信号优化有很大帮助,类似下图 具体操作如下 首先设置参数,route-Gloss-Parameters 点击Fillet and Taper Trace前面的方框 勾选Allowed DRC, Unused Nets 勾选Tapered Trac…

【毕业设计】大数据心血管疾病数据分析(医学大数据分析)

文章目录0 前言1 课题背景2 数据处理3 数据可视化4 最后0 前言 &#x1f525; Hi&#xff0c;大家好&#xff0c;这里是丹成学长的毕设系列文章&#xff01; &#x1f525; 对毕设有任何疑问都可以问学长哦! 这两年开始&#xff0c;各个学校对毕设的要求越来越高&#xff0c…

【Redis】缓存击穿的产生情况解决方案

1. 缓存击穿产生 也叫做 热点 Key 问题&#xff0c;高并发访问并且缓存重建业务较复杂的 key 突然失效了&#xff0c;无数的请求想要重建缓存&#xff0c;大量的访问会在瞬间给数据库带来巨大冲击。 2. 解决方案 2.1 方案一&#xff1a;互斥锁 查询缓存不存在时&#xff0c;…

天宇优配|上架秒光 “3时代”的大额存单受宠

“最近理财产品动摇比较大&#xff0c;准备处理一笔大额存单&#xff0c;但查询发现&#xff0c;某国有行暂时没有可购买的大额存单产品。”11月29日&#xff0c;成都市民王女士向金融出资报记者表示。 记者发现&#xff0c;虽然通过数次下调&#xff0c;中长期大额存单利率已步…

k8s网络插件之Calico

Calico简介 Calico官方文档&#xff1a;https://projectcalico.docs.tigera.io/getting-started/kubernetes/quickstart Calico是一套开源的网络和网络安全解决方案&#xff0c;用于容器、虚拟机、宿主机之前的网络连接&#xff0c;它是一个纯三层的虚拟化网络解决方案&#…