OpenFOAM初学者常常对于软件的使用流程感到很迷惑,与其他的具有GUI的CFD软件不同,OpenFOAM的所有操作均为基于文本操作,譬如说里面各种计算模型、计算参数、流程控制参数等,均为通过修改对应的文本文件来进行指定。那么什么时候该用哪些文件,该修改哪些参数,要了这些则需要花费时间去了解OpenFOAM的内部运作机理。

1 CFD的一般流程

如果只是将OpenFOAM当做一款CFD软件的话,则其使用流程与其他的商用CFD软件使用流程一致。通常的CFD使用流程包括以下几个步骤:

  • 问题定义与规划

    通常利用CFD来求解工程流动问题,并不是一上来就使用软件的,除非你对于所要解决的问题细节非常熟悉。一般情况下,在进行CFD计算之前,需要对所涉及的物理问题进行仔细的分析,比如说计算中涉及到哪些物理模型,流动是层流还是湍流,要计算哪些物理量,采用什么样的计算域,计算域能否简化等等。

  • 计算区域几何构建

    在对问题进行了仔细分析的基础上,可以开始考虑构建计算区域了。在构建计算区域的过程中,需要考虑的是:计算区域可否利用对称性或周期性条件?是否可以利用2D模型?一些细小的特征是否可以简化掉?计算域中是否包含有运动区域?等等。

    在模型规划完毕后,即可着手模型的创建。创建几何模型的工具很多,有的是采用外部CAD软件,也有一些CAE前处理软件具备一定的几何创建功能。但不管采用何种方式进行几何的创建,最终是要将这些几何模型划分为计算网格。因此在创建几何模型时,也要顾及一下后面使用的网格划分软件了,虽然说目前主流的高端的网格生成软件能够支持非常多的几何格式,但是也不排除有悲剧的事情发生对不,万一你创建的几何模型人家就是不支持呢?

  • 计算网格划分

    网格划分一直都是CFD计算过程中比较热门的话题,人们也常常习惯于将计算过程中发生的种种问题都归结到网格身上,虽然很多时候往往是人的问题。但是网格在计算过程中的作用的确非常重要,其影响计算精度和收敛性。在CFD应用过程中,可以利用专业的网格生成工具创建网格。

  • 计算模型选择及参数设置

    选择什么样的计算模型,一般在问题规划过程中已经确定好了,但是模型选择之后还需要设置与模型相关的参数,不同的物理模型涉及到的参数也不同,因此这方面如果想要做好的话,则需要去理解物理模型背后的数学物理原理。

  • 物性参数设置

    需要指定哪些物性参数,有时候也是和物理模型相关的。通常单纯的流动问题,只需要指定流体的粘度和密度即可;若涉及到传热,则需要额外指定比热及热膨胀系数。因此

  • 边界条件及初始条件指定

    很重要的内容,通常情况下直接决定了计算结果的正确与否,而且很多时候还会影响到计算收敛性和稳定性。需要按照实际情况进行设置。

  • 离散算法指定

    决定了计算的精度和收敛快慢。

  • 计算控制参数指定

    如残差标准、迭代次数、时间步长等等参数的指定。

当上述步骤都做完了之后,就可以启动求解器进行迭代计算了。计算完毕后进行后处理。OpenFOAM如果作为一款CFD软件来使用的话,同样也是按照以上的工作流程来进行。

2 最简单的OpenFOAM案例

以OpenFOAM提供的测试案例来描述OpenFOAM工程文件的组织形式,此案例是OpenFOAM提供的。

  • 启动终端terminal
  • 执行命令从OpenFOAM实例文件中拷贝cavity文件夹到当前路径下
cd $FOAM_RUN
cp -r $FOAM_TUTORIALS/incompressible/icoFoam/cavity/cavity .
  • 执行命令生成计算网格
blockMesh
  • 执行命令进行计算
icoFoam
  • 进行后处理
paraFoam

自动启动ParaView软件进行后处理。


本OpenFOAM系列会在微信公众号定期推送。

【一起学OpenFOAM】03 OpenFOAM基本使用流程的更多相关文章

  1. 【OpenFOAM】——OpenFOAM入门算例学习

    1  明确目标——为啥费老大劲儿学习OpenFOAM 学习OpenFOAM主要出于课题需要,希望实现以下几个目标: l  [ ]学会用SnappyHexMesh生成高质量网格: l  [ ]学习使用O ...

  2. [从产品角度学EXCEL 03]-单元格的秘密

    这是<从产品角度学EXCEL>系列——单元格的秘密. 前言请看: 0 为什么要关注EXCEL的本质 1 EXCEL是怎样运作的 2 EXCEL里的树形结构 或者你可以去微信公众号@尾巴说数 ...

  3. idou老师教你学Istio 29:Envoy启动流程

    1. 功能概述 Envoy启动时,会启动一个进程,并在这个进程中启动很多线程,这样,可以启动很多worker线程,一般worker线程数与核心数相同,每个worker线程处理所有已配置的listene ...

  4. 零基础学Java(6)控制流程

    控制流程 与任何程序设计语言一样,Java使用条件语句和循环结构确定控制流程. 块作用域 我们首先要了解块(block)的概念. 块是指由若干条Java语句组成的语句,并用一对大括号括起来.块确定了变 ...

  5. 【循序渐进学Python】5.Python常用流程控制及其他语句

    1. 赋值语句常用技巧 通过序列解包(sequence unpacking)可以将多个值的序列解开,让后一一放置到变量的序列中.解包的序列中的元素必须和等号左边变量数量一致.如下: values = ...

  6. 从零开始学JAVA(03)-用Eclipse生成HelloWorld的Jar文件(简单不带包)

    前面已经编写了helloWorld的程序,也可以在Eclipse IDE中正常运行,但如何脱离IDE运行呢? 先通过代码生成JAR文件,选择“File→Export...”,弹出Export对话框,选 ...

  7. 和菜鸟一起学linux之V4L2摄像头应用流程【转】

    转自:http://blog.csdn.net/eastmoon502136/article/details/8190262/ 上篇文章,知道了,C代码编译后存放在内存中的位置,那么C代码的整个编译过 ...

  8. idou老师带教你学Istio 03: istio故障注入功能的介绍和使用

    故障注入测试 故障注入测试顾名思义就是当被测试应用部分组件或功能出现潜在故障时其本身的容错机制是否正常工作,以达到规避故障保证正常组件或功能的使用.Istio提供了HTTP故障注入功能,在http请求 ...

  9. 03 spring security执行流程分析

    spring security主要是依赖一系列的Filter来实现权限验证的,责任链设计模式是跑不了的.下面简单记录一下spring操作这些Filter的过程. 1. WebSecurityConfi ...

随机推荐

  1. 【每日一linux命令4】常用参数:

     下面所列的是常见的参数(选项)义: --help,-h                              显示帮助信息 --version,-V                        ...

  2. Chrome出了个小bug:论如何在Chrome下劫持原生只读对象

    Chrome出了个小bug:论如何在Chrome下劫持原生只读对象 概述 众所周知,虽然JavaScript是个很灵活的语言,浏览器里很多原生的方法都可以随意覆盖或者重写,比如alert.但是为了保证 ...

  3. 谈一下关于CQRS架构如何实现高性能

    CQRS架构简介 前不久,看到博客园一位园友写了一篇文章,其中的观点是,要想高性能,需要尽量:避开网络开销(IO),避开海量数据,避开资源争夺.对于这3点,我觉得很有道理.所以也想谈一下,CQRS架构 ...

  4. 干货分享:SQLSERVER使用裸设备

    干货分享:SQLSERVER使用裸设备 这篇文章也适合ORACLE DBA和MYSQL DBA 阅读 裸设备适用于Linux和Windows 在ORACLE和MYSQL里也是支持裸设备的!! 介绍 大 ...

  5. .NET 基础 一步步 一幕幕[面向对象之构造函数、析构函数]

    构造函数.析构函数 构造函数: 语法: //无参的构造函数 [访问修饰符] 函数名() :函数名必须与类名相同. //有参的构造函数 [访问修饰符] 函数名(参数列表):函数名必须与类名相同. 作用: ...

  6. .NET Core的文件系统[5]:扩展文件系统构建一个简易版“云盘”

    FileProvider构建了一个抽象文件系统,作为它的两个具体实现,PhysicalFileProvider和EmbeddedFileProvider则分别为我们构建了一个物理文件系统和程序集内嵌文 ...

  7. spring源码分析之<context:property-placeholder/>和<property-override/>

    在一个spring xml配置文件中,NamespaceHandler是DefaultBeanDefinitionDocumentReader用来处理自定义命名空间的基础接口.其层次结构如下: < ...

  8. Angular源码分析之$compile

    @(Angular) $compile,在Angular中即"编译"服务,它涉及到Angular应用的"编译"和"链接"两个阶段,根据从DO ...

  9. Spark的StandAlone模式原理和安装、Spark-on-YARN的理解

    Spark是一个内存迭代式运算框架,通过RDD来描述数据从哪里来,数据用那个算子计算,计算完的数据保存到哪里,RDD之间的依赖关系.他只是一个运算框架,和storm一样只做运算,不做存储. Spark ...

  10. 程序员装B指南

    一.准备工作 "工欲善其事必先利其器." 1.电脑不一定要配置高,但是双屏是必须的,越大越好,能一个横屏一个竖屏更好.一个用来查资料,一个用来写代码.总之要显得信息量很大,效率很高 ...