简介

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编程相关推荐

  1. 极简创意编程:第7课——制作人工智能花盆

    <极简创意编程--人工智能启蒙课>,参考了相关国家软件素质教育的大纲规范,意在对国内中小学创意编程的推广尽微薄之力.同时也盼望这个课程,能对国内的家长.信息教师和相关教育机构有所帮助,共同 ...

  2. 【“计算机科学与技术”专业小白成长系列】Linux Shell 编程 极简教程

    Linux Shell 编程 极简教程 内容摘要 本文是 Linux Shell 编程简单入门.主要内容: Linux 简介 Shell 编程入门 Kotlin 脚本与 Shell 脚本 Linux ...

  3. 插件式编程SBP框架极简教程(基于SpringBoot)

    插件式编程SBP框架极简教程(基于SpringBoot 一.前言 二.背景 三.项目简介 四 .看效果 4.1 测试主程序接口 4.2 测试A插件程序接口 4.3 测试B插件程序接口 五 .展望 一. ...

  4. Asky极简教程:零基础1小时学编程,已更新前8节

    Asky极简架构 开源Asky极简架构.超轻量级.高并发.水平扩展.微服务架构 <Asky极简教程:零基础1小时学编程>开源教程 零基础入门,从零开始全程演示,如何开发一个大型互联网系统, ...

  5. 《Kotin 极简教程》第7章 面向对象编程(OOP)(1)

    第7章 面向对象编程(OOP) 最新上架!!!< Kotlin极简教程> 陈光剑 (机械工业出版社) 可直接打开京东,淘宝,当当===> 搜索: Kotlin 极简教程 http:/ ...

  6. 《Kotin 极简教程》第8章 函数式编程(FP)(1)

    第8章 函数式编程(FP) <Kotlin极简教程>正式上架: 点击这里 > 去京东商城购买阅读 点击这里 > 去天猫商城购买阅读 非常感谢您亲爱的读者,大家请多支持!!!有任 ...

  7. 【编程实践】Linux / UNIX Shell编程极简教程

    不同于一般的介绍Linux Shell 的文章,本文并未花大篇幅去介绍 Shell 语法,而是以面向"对象" 的方式引入大量的实例介绍 Shell 日常操作,"对象&qu ...

  8. 【编程实践】Google Guava 极简教程

    前言 Guava 工程包含了若干被 Google 的 Java 项目广泛依赖 的核心库,我们希望通过此文档为 Guava 中最流行和最强大的功能,提供更具可读性和解释性的说明. 适用人群 本教程是基础 ...

  9. 会生活会编程——我的极简主义尝试

    前段时间看过一本书<极简主义>,有一些收货,罗列一下其中的观点,以及作用到生活中的尝试. 首先来引述原文介绍下什么是极简主义: 极简主义是一个工具,我们用它来获得人生的满足感.极简主义中没 ...

最新文章

  1. GROMACS运行参数之em_real.mdp文件详解
  2. HDU 2094 产生冠军
  3. CAS 与.net 集成的 “循环重定向”问题分析
  4. 工作57:element格式化内容
  5. jsoup: Java HTML Parser
  6. 【转载】石油天然气常用单位换算
  7. 《机器学习》二刷超详细笔记| 第一章 绪论
  8. 在WPF中自定义控件(1)
  9. js 获取两个数组的交集,并集,补集,差集(转载+收藏)
  10. ESP8266闪存文件系统基本操作-删除文件
  11. Android指纹验证(BiometricPrompt)
  12. 产品驱动程序一览表(ThinkPad X61)
  13. oracle to_date 函数
  14. 【温故知新】—— React/Redux/React-router4基础知识独立团Demo
  15. 登录密码加密,RSA加密算法
  16. 前端局部刷新的几种方式
  17. KD树详解及KD树最近邻算法
  18. 装饰模式之半透明装饰模式
  19. webpack打包npm run dev 出现错误This is probably not a problem with npm. There is likely additional logging
  20. 关于windows 10开机自动修复的解决办法

热门文章

  1. excel格式导出合并单元格
  2. Peekaboo—站立式会议+alpha冲刺:Day2冲刺随笔
  3. 微信小程序实现多页面
  4. 2016年上半年信息系统监理师考试感想
  5. RHEL7.3 DNS配置
  6. element table filed显示不全
  7. python 合并表格
  8. 浅谈SAP顾问未来十年在中国的发展前景
  9. 安利一下好用免费的思维导图绘制软件(实在篇)
  10. 免费做流程图软件推荐ProcessOn