极简OpenFoam编程
简介
OpenFoam可以用于处理场类型的数据,但是如果采用“求解器”手脚架(见OpenFOAM编程基本结构)将会引入"setRootCase.H"、“createTime.H”、"createMesh.H"三个代码片段文件,引入了严重的“副作用”,难以将代码模块化。如果同时在多个线程上并行计算往往会出现严重错误。
本文将编写极简的OpenFoam源文件,剔除不必要的“副作用”,为并行计算提供条件
代码
#include "fvCFD.H"int main()
{//第一步:构造runTime对象,用于控制时间Foam::Time runTime(fileName("."), //可执行程序的根目录fileName("./pitzDaily")); //案例文件的相对目录//第二步:构造mesh对象,用于读取网格const Foam::fvMesh mesh(Foam::IOobject(Foam::fvMesh::defaultRegion,runTime.timeName(),runTime,Foam::IOobject::MUST_READ));//第三步:开始计算for (int i = 0; i < 20; i++) //以i为自变量步进{//初始化自定义场(均匀场)volScalarField IndexOfCell(IOobject("IndexOfCell",runTime.timeName(),mesh,IOobject::NO_READ, //不从文件中读取,而是直接在代码中生成IOobject::AUTO_WRITE),mesh,dimensionedScalar("tmp", dimless, 0), //初始化为无量纲的0场"zeroGradient"); //初始化为自然边界条件(零通量边界条件)//用户自定义的计算,这里给每个单元的数值赋值为单元序号forAll(IndexOfCell, cellI){IndexOfCell[cellI] = cellI;}IndexOfCell.correctBoundaryConditions(); //更新边界处的结果//输出场runTime.setTime(i, i); //设置时间runTime.writeTimeDict(); //输出时间IndexOfCell.write(); //输出场}return 0;
}
代码的核心思想是,对于固定网格问题,我们只需要完成一次runTime
初始化和mesh
初始化,之后在每一步计算中生成我们需要的场,使用各种方法加工这个场,再将结果输出为文件。
本代码使用官方pitzDaily案例,计算完成后,案例文件目录如下
.
├── 0
│ ├── IndexOfCell
│ ├── T
│ ├── U
│ └── uniform
│ └── time
├── 1
│ ├── IndexOfCell
│ └── uniform
│ └── time
├── 10
│ ├── IndexOfCell
│ └── uniform
│ └── time
├── 11
│ ├── IndexOfCell
│ └── uniform
│ └── time
├── 12
│ ├── IndexOfCell
│ └── uniform
│ └── time
├── 13
│ ├── IndexOfCell
│ └── uniform
│ └── time
├── 14
│ ├── IndexOfCell
│ └── uniform
│ └── time
├── 15
│ ├── IndexOfCell
│ └── uniform
│ └── time
├── 16
│ ├── IndexOfCell
│ └── uniform
│ └── time
├── 17
│ ├── IndexOfCell
│ └── uniform
│ └── time
├── 18
│ ├── IndexOfCell
│ └── uniform
│ └── time
├── 19
│ ├── IndexOfCell
│ └── uniform
│ └── time
├── 2
│ ├── IndexOfCell
│ └── uniform
│ └── time
├── 3
│ ├── IndexOfCell
│ └── uniform
│ └── time
├── 4
│ ├── IndexOfCell
│ └── uniform
│ └── time
├── 5
│ ├── IndexOfCell
│ └── uniform
│ └── time
├── 6
│ ├── IndexOfCell
│ └── uniform
│ └── time
├── 7
│ ├── IndexOfCell
│ └── uniform
│ └── time
├── 8
│ ├── IndexOfCell
│ └── uniform
│ └── time
├── 9
│ ├── IndexOfCell
│ └── uniform
│ └── time
├── constant
│ ├── polyMesh
│ │ ├── boundary
│ │ ├── faces
│ │ ├── neighbour
│ │ ├── owner
│ │ └── points
│ └── transportProperties
└── system├── blockMeshDict├── controlDict├── fvSchemes└── fvSolution
可以看出我们已经将IndexOfCell场
输出到了对应的时间文件夹,使用paraview实现可视化,如下图
该图可视化地显示了每个单元的标号
极简OpenFoam编程相关推荐
- 极简创意编程:第7课——制作人工智能花盆
<极简创意编程--人工智能启蒙课>,参考了相关国家软件素质教育的大纲规范,意在对国内中小学创意编程的推广尽微薄之力.同时也盼望这个课程,能对国内的家长.信息教师和相关教育机构有所帮助,共同 ...
- 【“计算机科学与技术”专业小白成长系列】Linux Shell 编程 极简教程
Linux Shell 编程 极简教程 内容摘要 本文是 Linux Shell 编程简单入门.主要内容: Linux 简介 Shell 编程入门 Kotlin 脚本与 Shell 脚本 Linux ...
- 插件式编程SBP框架极简教程(基于SpringBoot)
插件式编程SBP框架极简教程(基于SpringBoot 一.前言 二.背景 三.项目简介 四 .看效果 4.1 测试主程序接口 4.2 测试A插件程序接口 4.3 测试B插件程序接口 五 .展望 一. ...
- Asky极简教程:零基础1小时学编程,已更新前8节
Asky极简架构 开源Asky极简架构.超轻量级.高并发.水平扩展.微服务架构 <Asky极简教程:零基础1小时学编程>开源教程 零基础入门,从零开始全程演示,如何开发一个大型互联网系统, ...
- 《Kotin 极简教程》第7章 面向对象编程(OOP)(1)
第7章 面向对象编程(OOP) 最新上架!!!< Kotlin极简教程> 陈光剑 (机械工业出版社) 可直接打开京东,淘宝,当当===> 搜索: Kotlin 极简教程 http:/ ...
- 《Kotin 极简教程》第8章 函数式编程(FP)(1)
第8章 函数式编程(FP) <Kotlin极简教程>正式上架: 点击这里 > 去京东商城购买阅读 点击这里 > 去天猫商城购买阅读 非常感谢您亲爱的读者,大家请多支持!!!有任 ...
- 【编程实践】Linux / UNIX Shell编程极简教程
不同于一般的介绍Linux Shell 的文章,本文并未花大篇幅去介绍 Shell 语法,而是以面向"对象" 的方式引入大量的实例介绍 Shell 日常操作,"对象&qu ...
- 【编程实践】Google Guava 极简教程
前言 Guava 工程包含了若干被 Google 的 Java 项目广泛依赖 的核心库,我们希望通过此文档为 Guava 中最流行和最强大的功能,提供更具可读性和解释性的说明. 适用人群 本教程是基础 ...
- 会生活会编程——我的极简主义尝试
前段时间看过一本书<极简主义>,有一些收货,罗列一下其中的观点,以及作用到生活中的尝试. 首先来引述原文介绍下什么是极简主义: 极简主义是一个工具,我们用它来获得人生的满足感.极简主义中没 ...
最新文章
- GROMACS运行参数之em_real.mdp文件详解
- HDU 2094 产生冠军
- CAS 与.net 集成的 “循环重定向”问题分析
- 工作57:element格式化内容
- jsoup: Java HTML Parser
- 【转载】石油天然气常用单位换算
- 《机器学习》二刷超详细笔记| 第一章 绪论
- 在WPF中自定义控件(1)
- js 获取两个数组的交集,并集,补集,差集(转载+收藏)
- ESP8266闪存文件系统基本操作-删除文件
- Android指纹验证(BiometricPrompt)
- 产品驱动程序一览表(ThinkPad X61)
- oracle to_date 函数
- 【温故知新】—— React/Redux/React-router4基础知识独立团Demo
- 登录密码加密,RSA加密算法
- 前端局部刷新的几种方式
- KD树详解及KD树最近邻算法
- 装饰模式之半透明装饰模式
- webpack打包npm run dev 出现错误This is probably not a problem with npm. There is likely additional logging
- 关于windows 10开机自动修复的解决办法