当前位置: 首页 > 编程日记 > 正文

【小白的CFD之旅】16 流程

那天听了小牛师兄关于CFD应用的四种境界的说法后,小白发现自己连第一种境界都算不上,自己对于CFD还只是停留在做了少数几个案例的基础上,可以说是对其一无所知。不过小白不是那种遇到挫折就退缩的人,他决定沿着黄师姐的方法从软件入手继续学下去。在认真的做完了敲门实例后,小白又认真的做了几个FLUENT实例文档中的案例,虽然说案例都比较简单,但是小白还是在黄师姐的提示下对这些案例的共同点进行了总结,从而了解CFD解决实际问题的基本流程。

1 明确计算目的
2 抽象模型
3 计算规划
4 创建计算模型
5 确定物理模型
6 边界条件及初始条件
7 计算结果评估
8 计算后处理

1 明确计算目的

从现实世界中提出要解决的问题非常重要。提出的问题必须是清晰具体的。比如说,要研究飞机的飞行,我们提出的问题不能是
“飞机为什么会飞?”,这问题太大而且不方便进一步考虑,如果问题是“这飞机飞行时的升力和阻力多大?”则具体得多,也更方便进行下一步的研究工作。

准确地提出计算目的需要良好的理论背景作支撑。准确地抓住物理现象背后的力学模型,找到流体问题求解的目标,是利用CFD工程应用的基础

在这一步工作中需要对问题进行简化,保留重要特征忽略一些不重要的细节,如计算传热问题时,当温差不很大时,可以忽略热辐射。

在这一步,需要明确的问题包括:

  • 要算什么?有哪些物理量可以用来描述计算目标?
  • 这些物理量是否可以直接计算获取?若不能直接获取,是否可以用间接物理量进行替代?
  • 当物理模型过于复杂时,是否可以进行一些简化,忽略一些不重要的特征?
  • CFD是否适合解决此问题?

2 抽象模型

找到问题求解的目标之后,下一步的工作是建立力学模型,将物理现象以数学语言进行描述。利用流体力学理论建立适合自己问题的控制方程。
建立控制方程,包括:

  • 模型理论基础。基于哪些物理基础,进行了哪些假设,都需要明确。
  • 确定模型的边界条件及初始条件。对于建立的流体模型,通常都是一些偏微分方程,这些方程的求解必须配合边界条件与初始条件。

3 计算规划

确定了计算目标并建立了力学模型之后,下一步的工作就要开始规划如何进行计算了。流体力学模型通常是非线性的偏微分方程,绝大多数都无法进行解析求解,通常采用数值方法进行求解。利用数值方法求解这些方程可采用手动编制程序,也可以采用已有的一些软件包,至于采用何种方式,取决于当前的研究条件和时间周期要求。

编制程序计算灵活性更高,可以应用最新的研究成果和算法,可能获得更精确的计算结果。但是从头编制程序需要耗费大量的人力物力和时间,在工程上很难满足产品研发的周期要求,因此手动编制程序计算多见于研究机构。
工程产品研发多用成品软件包来进行,CFD商用软件包大多很贵,但是具有良好的人机界面而且经过严格的软件测试,具有良好的鲁棒性,可靠性能够得到保障。利用开源软件包开源节省一大笔软件购买费用,然而开源软件的人机界面通常不如商用软件做得好,软件不一定经过了严格的测试,特别是自己定制的程序。但是开源软件的程序代码是公开的,开源根据实际需要进行修改。

4 创建计算模型

在确定计算方式之后,若选用计算软件进行计算,则下一步工作为创建计算模型。
计算模型包括两部分:几何模型及网格模型。
几何模型可以采用常用的CAD软件创建,在创建几何模型时,对于模型中的一些细节特征,需要仔细的考量,尽可能的忽略一些不重要的特征,这有助于减少网格数量从而减小计算开销。
将几何模型进行网格划分后形成网格模型。网格模型不一定要完全贴合几何模型,但是对于计算过程中一些重要的特征,则需要尽可能的特近真实几何。流体计算网格通常需要沿着流线方向划分,在流动梯度大的区域需要加密网格。一般需要做多套网格进行计算,以评估网格疏密对计算结果的影响。

5 确定物理模型

其实在第一步和第二步中已经涉及到了物理模型,这里说的物理模型指的是在CFD程序中添加的物理模型。对于不同的物理模型,需要设置相应的模型参数,这些模型参数有些依赖于理论,有些则依赖于实验。

6 边界条件及初始条件

边界条件和初始条件直接影响计算结果,确保输入真实的边界条件。
对于瞬态计算,还要求输入真实的初始条件。虽然稳态计算不依赖于初始条件,但是输入相对真实的初始值有助于帮助收敛。
真实的边界条件和初始条件通常都需要通过实验测定获取。

7 计算结果评估

在初步计算后,通常需要通过对比实验结果进行模型标定。
在这一过程中,往往包括网格独立性验证、时间独立性验证以及数值控制参数调整等。
通常需要准备多套网格,进行多组计算,比较计算结果与实验值来获取计算结果与网格、时间步长等的敏感性,从而选择最合适的网格粒度以及时间步长。

8 计算后处理

分析计算结果,获取有用的数据。



来自为知笔记(Wiz)


转载于:https://www.cnblogs.com/LSCAX/p/5201908.html

相关文章:

XWiki 4.3 正式版发布

XWiki 4.3 正式版发布了,工作空间、扩展管理器、分发向导和 REST API 做了很多改进,改进了翻译和新的体验的 Solr 搜索。 XWiki是一个由Java编写的基于LGPL协议发布的开源wiki和应用平台。它的开发平台特性允许创建协作式Web应用,同时也提供了…

新建异常并处理java_java – 动态创建异常的工厂模式

我创建了Exception xml并动态创建并抛出异常.com.package.CheckedExceptionChecked Exception Messagecom.package.UnCheckedExceptionUnChecked Exception Message我根据异常键使用反射动态创建异常对象.public static void throwException(final String key) throws CheckedE…

React navtive

http://www.linuxidc.com/Linux/2015-09/123239.htm 转载于:https://www.cnblogs.com/chenzhenfj/p/5203685.html

c# Pdf 转换图片

1&#xff0c;引入 dll itextsharp.dll、 PDFView.dll、 把 gsdll32.dll 拷贝在项目 bin目录下 &#xff0c;注意&#xff1a;它不能 直接引用 直接上代码&#xff1a; 1 /// <summary>2 /// 将PDF 相应的页转换为图片3 /// </summary>4 …

Entity Framework 约定

约定&#xff0c;类似于接口&#xff0c;是一个规范和规则&#xff0c;使用Code First 定义约定来配置模型和规则。在这里约定只是记本规则&#xff0c;我们可以通过Data Annotaion或者Fluent API来进一步配置模型。约定的形式有如下几种&#xff1a; 类型发现约定主键约定关系…

java用构造方法定义book类_JAVA基础学习之路(三)类定义及构造方法

类的定义及使用一&#xff0c;类的定义classBook {//定义一个类intprice;//定义一个属性intnum;public static int getMonney(int price, intnum) {//定义一个方法return price*num;}}public classtest2 {public static voidmain(String args[]) {Book monney newBook();//声明…

Linux下如何查看文档的内容

查看文档内容的命令有&#xff1a;cat tac head nl tail more less odcat命令显示文档的全部内容&#xff0c;当文档较大的时候只显示最后的部分&#xff0c;所以cat命令适合查看内容较少的文档。可加选项-n显示行数(此时空白行也会显示行号)。-b空白行则不显示行号。tac与cat显…

Java中getResourceAsStream的用法

Java中getResourceAsStream的用法 首先&#xff0c;Java中的getResourceAsStream有以下几种&#xff1a;1. Class.getResourceAsStream(String path) &#xff1a; path 不以’/开头时默认是从此类所在的包下取资源&#xff0c;以’/开头则是从 ClassPath根下获取。其只是通过p…

Asp.Net MVC3 简单入门详解过滤器Filter

为什么80%的码农都做不了架构师&#xff1f;>>> 前言 在开发大项目的时候总会有相关的AOP面向切面编程的组件&#xff0c;而MVC&#xff08;特指&#xff1a;Asp.Net MVC&#xff0c;以下皆同&#xff09;项目中不想让MVC开发人员去关心和写类似身份验证&#xff0…

mysql 锁语句_mysql-笔记 事务 锁 语句

Start Transaction 或 begin [work] 开始一个事务&#xff0c;开始一个事务&#xff0c;引起其他未提交的事务提交&#xff0c;引起表锁释放commit 提交事务&#xff0c;永久修改rollback 回滚事务&#xff0c;撤消修改set autocommit 在当前会话状态下 启用或不启用 autocommi…

【收藏】Java多线程/并发编程大合集

&#xff08;一&#xff09;、【Java并发编程】并发编程大合集-兰亭风雨 【Java并发编程】实现多线程的两种方法 【Java并发编程】线程的中断 【Java并发编程】正确挂起、恢复、终止线程 【Java并发编程】守护线程和线程阻塞 【Java并发编程】Volatile关键字&#xff08;上&…

《深入理解Android:Wi-Fi,NFC和GPS》章节连载[节选]--第六章 深入理解wi-Fi Simple Configuration...

为什么80%的码农都做不了架构师&#xff1f;>>> 首先感谢各位兄弟姐妹们的耐心等待。本书预计在4月上市发售。从今天开始&#xff0c;我将在博客中连载此书的一些内容。注意&#xff0c;此处连载的是未经出版社编辑的原始稿件&#xff0c;所以样子会有些非专业。 …

iOS 的本地化使用和创建过程

在使用本地化语言之前&#xff0c;来看看本地化语言文件内容的结构&#xff08;这里我以Chinese为例&#xff09;&#xff1a;"Cancel""取消";"OK""确定";"Tip""信息提示";"Login Faild""登陆失败…

MySQL中改变相邻学生座位_力扣——换座位(数据库的题

小美是一所中学的信息科技老师&#xff0c;她有一张 seat 座位表&#xff0c;平时用来储存学生名字和与他们相对应的座位 id。其中纵列的 id 是连续递增的小美想改变相邻俩学生的座位。你能不能帮她写一个 SQL query 来输出小美想要的结果呢&#xff1f;示例&#xff1a;------…

AnsiToUtf8 和 Utf8ToAnsi

在服务端数据库的处理当中&#xff0c;涉及中文字符的结构体字段&#xff0c;需要转为Utf8后再存储到表项中。从数据库中取出包含中文字符的字段后&#xff0c;如果需要保存到char *类型的结构体成员中&#xff0c;需要转为Ansi后再保存。从数据库中取出类型数字的字段后&#…

常见面试题:重写strcpy() 函数原型

已知strcpy函数的原型是 char* strcpy(char* strDest,const char* strSrc); 1.不调用库函数&#xff0c;实现strcpy函数 2.解释为什么要返回char*; 1.strcpy的实现代码 char* strcpy(char* strDest,const char* strSrc) { if((strDest NULL) || (strSrc NULL)) //[1] thro…

mongodb 系列 ~ journal日志畅谈

一 简介 我们来聊聊Journal日志二 核心观点 WAL 日志先行策略三 开启journal流程 在开启journal的系统中&#xff0c;写操作从请求到写入磁盘共经历5个步骤&#xff0c;在serverStatus()中已经列出各个步骤消耗的时间。 1 Write to privateView 2 prepLogBuffer …

java striptrailingzeros_java – 为什么不BigDecimal.stripTrailingZeros()总是删除所有尾随零?...

我做了以下事情MathContext context new MathContext(7, RoundingMode.HALF_UP);BigDecimal roundedValue new BigDecimal(value, context);// Limit decimal placestry {roundedValue roundedValue.setScale(decimalPlaces, RoundingMode.HALF_UP);} catch (NegativeArrayS…

box-shadow属性

一、定义和用法 box-shadow属性 向框添加一个或多个阴影。 二、语法 box-shadow: h-shadow v-shadow blur spread color inset; h-shadow必需。水平阴影的位置。允许负值。 v-shadow必需。垂直阴影的位置。允许负值。 blur可选。模糊距离。 spread可选。阴影的尺寸。 color可选…

秋色园QBlog技术原理解析:性能优化篇:用户和文章计数器方案(十七)

2019独角兽企业重金招聘Python工程师标准>>> 上节概要&#xff1a; 上节 秋色园QBlog技术原理解析&#xff1a;性能优化篇&#xff1a;access的并发极限及分库分散并发方案(十六) 中&#xff0c; 介绍了 Access的并发上限&#xff0c;及从某种程度上 秋色园QBlog 针…

ldconfig

为了让动态链接库为系统所共享,还需运行动态链接库的管理命令--ldconfigldconfig 命令的用途,主要是在默认搜寻目录(/lib和/usr/lib)以及动态库配置文件/etc/ld.so.conf内所列的目录下,搜索出可共享的动态 链接库(格式如前介绍,lib*.so*),进而创建出动态装入程序(ld.so)所需的连…

MySQL宽字节注入漏洞分析_宽字节注入

概念单字节字符集&#xff1a; 所有的字符都使用一个字节来表示&#xff0c;比如 ASCII 编码。多字节字符集&#xff1a; 在多字节字符集中&#xff0c;一部分字节用多个字节来表示&#xff0c;另一部分(可能没有)用单个字节来表示。两位的多字节字符有一个前导字节和尾字节。 …

objc runtime 动态增加属性

objective-c中&#xff0c;有类别可以在不修改源码的基础上增加方法 使用运行时库&#xff0c;必须要先引入 objc/runtime.h 可以使用的函数如下&#xff1a; OBJC_EXPORT void objc_setAssociatedObject(id object, const void *key, id value, objc_AssociationPolicy policy…

C#合并两张表结构相同(列数和列类型都相同)的表

DataTable appendDataTablenew DataTable(); 这个合并的大前提是两张表的结构相同且列的类型也必须相同 否则在赋值时就会出现异常。 for (int i 0; i < hostDt.Columns.Count;i ) { appendDataTable.Columns.Add(hostDt.Columns[i].ColumnName,hostDt.Columns[i].DataType…

erlang调优方法

2019独角兽企业重金招聘Python工程师标准>>> 1. 来自Scaling Erlang的方法 内核调优&#xff1a; # Increase the ipv4 port range: sysctl -w net.ipv4.ip_local_port_range"1024 65535" # General gigabit tuning: sysctl -w net.core.rmem_max16777…

mysql第四章_MySQL必知必会--第二章~第四章--MySQL简介

1.DBMS可分为两类:一类为基于共享文件系统的DBMS&#xff0c;另一类为基于客户机—服务器的DBMS。服务器部分是 负责所有数据访问和处理的一个软件。这个软件运行在称为数据库服务 器的计算机上。2.MySQL Administrator(MySQL管理器)是一个图形交互客户机&#xff0c;用 来简化…

Windows Phone 7编程学习点滴一——页面切换、返回键重载和工具栏

1. 页面切换和对齐方式 2 &#xff08;1&#xff09;XAML实现方式 <HyperlinkButton Content"TestPage1" NavigateUri"/TestPage1.xaml" Height"30" HorizontalAlignment"Left" Margin"10,10,0,0" Name"TestPage1Li…

call_user_func用法

1 //有一些函数&#xff0c;名字未知2 //名字在运行状态时&#xff0c;才知道3 4 //例如a(),b(),c()调用哪一个5 // ->index(),reg()?又调用哪一个6 7 function t(){8 echo hello;9 } 10 11 function s(){ 12 echo world; 13 } 14 15 $at; 16 //$a(); 17 18 //在…

构建现代化的命令行工具

文章源于 lambdas.dev 每当我们想要创建一个基于 NodeJS 的命令行工具时&#xff0c;就会衍生出一堆问题需要解决&#xff0c;比如如何准备开发环境&#xff0c;如何打包转译代码&#xff0c;如何使代码在转译后保持可调用的状态同时尽可能的压缩体积&#xff0c; 以及怎样设计…

Java怎么定义图片公共路径_【Java】springboot配置图片访问路径

springboot如何配置&#xff0c;就可以在地址栏输入http://localhost:9090/17AD93E86EB44287BA0D871A37017597.jpg就可以访问到图片回答需要添加下Springboot访问静态资源的Jar文件org.springframework.bootspring-boot-starter-thymeleaf直接去掉这两个配置就行&#xff0c;自…