MapFields和并行计算(OpenFOAM)】的更多相关文章

这几天研究了一下OpenFOAM里的MapFields和并行计算,总结一下. Case 1 先进行并行计算 SetFields 初始化流场 decomposePar 把初始化好的流场分块 mpirun -np N Solver -parallel reconstructPar把并行计算的结果拼接 Case 2 导入 Case 1 的计算结果 MapFields <Source PATH> 导入 Case 1 计算好的结果(默认好像是自动导入最后一个计算步) decomposePar把初始化好的…
前言:很多人说OpenFOAM很难,要啃上很多的理论书籍,什么流体力学.计算流体力学.矩阵理论.线性代数.数值计算.C++程序设计神马的,看看光这一堆书就能吓倒绝大多数的人.其实我们并不一定要从这些基础的东西入手,我觉得要学习使用一个工具,首先使它运转起来才是最靠谱的.通过大量实例练习,做多了自然就能有所感悟. 前面讲到了利用icoFoam求解器计算弯曲管道中流体混合问题.现在来自己动手做一个简单的案例,还是利用icoFoam求解器.icoFoam求解器计算的是瞬态不可压层流流动问题,是Open…
1  明确目标——为啥费老大劲儿学习OpenFOAM 学习OpenFOAM主要出于课题需要,希望实现以下几个目标: l  [ ]学会用SnappyHexMesh生成高质量网格: l  [ ]学习使用OpenFOAM自带的 Immersed Boundary Method (IBM)处理复杂几何边界: l  [ ]实现LES算例: l  [ ]实现CFD的批处理以完成大量算例. 2 前期准备——在Win10上安装OpenFOAM 这部分主要参CFD大佬[流沙]提供的方法,详情见网页: https:…
本算例来自<ANSYS Fluid Dynamics Verification Manual>中的VMFL037:Turbulent Flow Over a Forward Facing Step 一个出口(inlet),入口速度为9.7 m/s,一个出口(outlet),模型顶部为对称边界,其余为壁面. 流体的物性参数为: 密度:1.02 kg/m3 粘度系数:1.5×10-5kg/(m·s) 本算例采用kOmegaSST湍流模型进行计算,请注意第一层网格的高度. 首先进行建模操作,任何建模…
本算例来自<ANSYS Fluid Dynamics Verification Manual>中的VMFL045: Oblique Shock Over an Inclined Ramp 来流大概为2.5马赫数,转换为来流速度为852.68m/s 物性参数: 密度:理想气体 导热系数:0.0242W/(m·K) 动力黏度:1×10-8kg/(m·s) 比热容:1006.43J/(kg·K) 普朗特数:0.00041588 针对超音速流动,采用可压缩稳态求解器的收敛性很差,所以我们采用可压缩瞬态…
本算例来自<ANSYS Fluid Dynamics Verification Manual>中的VMFL052: Turbulent Natural Convection Inside a Tall Cavity 顶部和底部壁面为绝热边界,左侧壁面(COLD_WALL)为288.25K,右侧壁面为(HOT_WALL)为   307.85K 流体的物性参数为: 密度:1.17kg/m3 粘度系数:1.81×10-5N·s/m2 运动粘度:1.54×10-5 m2/s 定压比热容:1005J/(…
流体的物性参数为: 密度:1kg/m3 粘度系数:0.01N·s/m2           首先进行建模操作,任何建模软件均可,本算例在ICEM建模和进行网格划分,生成的网格如下: 接下来转入OpenFOAM的操作: 首先新建一个文件夹,名字任取,本算例中我将该文件夹命名为:cylinder 然后进入OpenFOAM的安装目录,将安装目录下的wingMotion算例(我的目录为/opt/openfoam5/tutorials/ incompressible/pimpleDyMFoam/wingM…
计算域的顶部为大气,其余部分为壁面 流体的物性参数为: 首先进行建模操作,任何建模软件均可,本算例采用ICEM直接建模,生成网格,然后利用OpenFOAM下转化网格,划分完成的网格如下: 网格比较密集,高度方向设置了960个节点,宽度方向上设置了480个节点,在导出网格的同时,我们对网格进行了缩放.建议在导出网格的时候就缩放网格,避免在后面的操作中,由于忘记缩放网格,导致计算出错 接下来转入OpenFOAM的操作: 首先新建一个文件夹,名字任取,用来作为算例文件夹,本算例中我将该文件夹命名为:b…
本算例来自<ANSYS Fluid Dynamics Verification Manual>中的VMFL009: Natural Convection in a Concentric Annulus 外环温度为327K,内环温度为373K 圆环内流体的物性参数为: 对于一般的流动来说,可以通过临界雷诺数的大小来判断流态.而对于自然对流来说,流动的驱动力为浮力,为了反映由于温差引起密度的变化,从而产生浮力驱动流体流动,在自然对流中我们经常使用瑞利数(Ra)来判断流态. 首先进行建模操作,任何建…
文件布置 在 OpenFOAM 中,所有代码都以注释段开头,使用有限体积的 CFD 类型文件都包括以下头文件 #include "fvCFD.H" 在此头文件种,仅包含类或函数的定义,函数的内容会在运行时以动态形式调用. 当 fvCFD.H 文件被引用后,在对应的编译设置文件 Make/options 中还需要添加如下命令 EXE_INC = \ -I${LIB_SRC}/finiteVolume/lnInclude EXE_LIBS = \ -lfiniteVolume 这两句话指定…
OpenFOAM初学者常常对于软件的使用流程感到很迷惑,与其他的具有GUI的CFD软件不同,OpenFOAM的所有操作均为基于文本操作,譬如说里面各种计算模型.计算参数.流程控制参数等,均为通过修改对应的文本文件来进行指定.那么什么时候该用哪些文件,该修改哪些参数,要了这些则需要花费时间去了解OpenFOAM的内部运作机理. 1 CFD的一般流程 如果只是将OpenFOAM当做一款CFD软件的话,则其使用流程与其他的商用CFD软件使用流程一致.通常的CFD使用流程包括以下几个步骤: 问题定义与规…
1 为什么要学习OpenFOAM 掐指算起来,接触CFD也差不多有十个年头了,其间一直使用的商用CFD软件,有Fluent.CFX.StarCCM+等,这些商用软件各有其优缺点,都能较好的解决常规的工程问题.然而,最近当我试图往这些软件中添加一些核心求解算法时,发现这是一个不可完成的任务,这些软件的核心计算程序都已经被封装得严严实实,外人连看一眼的资格都没有,更别说去修改了.这时我将目光投向了开源CFD软件OpenFOAM. 其实严格来讲OpenFOAM并不能称之为一款软件,说其是一个C++类库…
"工欲善其事必先利其器",在利用OpenFoam解决我们的工程问题之前,首先要做的事情是搭建一个OpenFoam运行环境.很遗憾的是,OpenFoam的原生开发系统是Linux,因此对于习惯使用Linux操作系统的使用者来讲,自然不存在任何的问题,但是对于长期使用Windows操作系统的人,就需要掌握一些简单的Linux操作基础了.本文存在的目的即在于此. 1 软件的获取 OpenFoam的获取很简单,在其官方网站可以下载. 不同于Windows安装程序,在Linux下安装软件的步骤略…
在不是Ubuntu系统下安装OpenFoam,需要采用编译安装的方式.以下以OpenSuSE为例进行编译安装. 1 软件包准备 需要下载两个程序包: OpenFOAM-4.x-version-4.1.tar.gzThirdParty-4.x-version-4.1.tar.gz 2 安装GCC 启动终端Konsole,在终端中输入命令: sudo zypper install gcc 按提示输入密码并确认安装后,系统自动从网络上下载gcc并进行安装.安装完毕后利用终端命令测试gcc安装版本: g…
CFD技术发展到今天,已经超过了大半个世纪了,已经涌现出非常多的CFD软件可供人们使用.通用商业CFD软件譬如Fluent.CFX.Star CCM+等在工业上得到了广泛的应用,另外一些专用的软件(如旋转机械领域Numeca.电子散热领域的Flotherm等)也以其专业性牢牢占据着各自领域的市场.这些软件都具有良好的前后处理.众多的物理模型.较高的并行求解效率及可靠性. 但是细数起来,这些软件仍然具有一些劣势,可以简单的归纳为: 价格很贵.这些商用软件,价格一个比一个贵,少则好几万,高则几十万上…
对32K*32K的随机数矩阵进行FFT变换,数的格式是32位浮点数.将产生的数据存放在堆上,对每一行数据进行N=32K的FFT,记录32K次fft的时间. 比较串行for循环和并行for循环的运行时间. //并行计算//调用openmp,通过g++ -fopenmp test.cpp -o out 编译程序#pragma omp parallel for ;i<LEN;i++) fft(num[i],LEN,); 最终的运行时间:247,844,013 us 而串行fft,不调用openmp,它…
-------------------paper--------------------- 一种基于GPU并行计算的MD5密码解密方法 0.abstract1.md5算法概述2.md5安全性分析3.基于GPU的爆破3.1GPGPU3.2CUDA3.3implementation4性能对比 -----------------presentation------------------ [Code] Section 0:Introduction of MD5, and its application…
平常写的程序,无论是单线程还是多线程,大多只有一个进程,而且只能在一个核心里工作.所以很多应用程序即使正在满载运行,在任务管理器中CPU使用量还是只有50%(双核CPU)或25%(四核CPU) 如果能让一个程序自己建立出多个进程,并且让它们并行运行,那么就可以在不同cpu核心上同时运行,进而实现并行计算啦. Python的并行计算就是这么做的. 之前的理解错了......还是要学习一个 1.多线程与多进程 之前OS课学过..... in general,线程是比进程低一级的调度单位.一个进程可以…
问题: 圆柱绕流问题,模拟仿真有两个圆柱.一个源的流体变化情况. 解决步骤: 1.使用Gmsh画出网格,并保存cylindertwo.msh 2.以Cavity为基础创建新的Case:Cylindertwo,先将0,constant,system三个文件夹复制进Cylindertwo,将constant文件夹中的transportProperties文件复制出来,删除constant文件夹. 3.由于采用源码安装,使用以下代码启动OpenFoam. source ~/OpenFOAM/OpenF…
Java在JDK7之后加入了并行计算的框架Fork/Join,可以解决我们系统中大数据计算的性能问题.Fork/Join采用的是分治法,Fork是将一个大任务拆分成若干个子任务,子任务分别去计算,而Join是获取到子任务的计算结果,然后合并,这个是递归的过程.子任务被分配到不同的核上执行时,效率最高. package com.thread.forkjoin; import java.util.Arrays; import java.util.Random; import java.util.co…
郑昀 创建于2015/11/10 最后更新于2015/11/12 关键词:佣金计算.定时任务.数据抽取.数据清洗.数据计算.Java.Redis.MySQL.Zookeeper.azkaban2.oozie.mesos 提纲: 为什么要做“数据”并行计算调度? 他山之玉:azkaban2/oozie/mesos Summoner的特性 Summoner 是国玺部门推出的基于 MySQL+Redis+Zookeeper 的分布式并行计算调度和管理系统,李红红主设.   0x00,为什么要做“数据”…
阅读目录: 1.开篇介绍 2.NET并行计算基本介绍 3.并行循环使用模式 3.1并行For循环 3.2并行ForEach循环 3.3并行LINQ(PLINQ) 1]开篇介绍 最近这几天在捣鼓并行计算,发现还是有很多值得分享的意义,因为我们现在很多人对它的理解还是有点不准确,包括我自己也是这么觉得,所以整理一些文章分享给在使用.NET并行计算的朋友和将要使用.NET并行计算的朋友: NET并行编程推出已经有一段时间了,在一些项目代码里也时不时会看见一些眼熟的并行计算代码,作为热爱技术的我们怎能视…
"Two weeks of playing with a CFD code will save you one afternoon of reading" 什么是OpenFOAM(力荐) 注意,下面列的资料都在不断更新,本站博文也不断更新.   OpenFOAM国内使用情况调查 在大家眼里OpenFOAM难点在哪? 不断有新人加入OpenFOAM的学习和使用中来,因此一些问题反复被提起,比如:刚开始怎么学openfoam? 因此这里花一点时间稍微总结一些入门的建议,首先通读本文可以事半…
原文地址: http://blog.sina.com.cn/s/blog_14bf001d10102wifw.html OpenFOAM安装 OpenFOAM基于Linux系统下运行,由于对Linux系统的不熟悉,很多人对OpenFOAM的安装很头疼.本文手把手一步一步的演示OpenFOAM的安装过程.演示采用的系统为Ubuntu系统.其他的Linux发行版比如openSUSE(Henry和Alberto力荐),Arch Linux也可以采用类似的方法安装.基于国人多年使用Windows的操作习…
https://msdn.microsoft.com/zh-cn/ff652648.aspx 图像处理——并行计算的应用实例 http://blog.csdn.net/bitfan/article/details/4713872 http://www.cnblogs.com/xiangism/category/375725.html…
以前没接触过MPI编程,对并行计算也没什么了解.朋友的期末课程作业让我帮忙写一写,哎,实现结果很一般啊.最终也没完整完成任务,惭愧惭愧. 问题大概是利用MPI完成矩阵和向量相乘.输入:Am×n,Bn×1  ,输出:Cm×1 附:程序中定义m=400,n=100,矩阵和向量的取值为随意整型数,为了便于显示并行效果,循环完成该计算任务100000次. 实现过程 1.实验环境:WINDOWS8.1 64位+ MPICH + VS2013   / kubuntu 14.04 + mpich 2.解题思路…
并行计算 沿用微软的写法,System.Threading.Tasks.Parallel类,提供对并行循环和区域的支持. 我们会用到的方法有For,ForEach,Invoke. Program.Data = new List<int>(); ; i < ; i++) { Data.Add(i); } 下面我们定义4个方法,分别为for,foreach,并行For,并行ForEach.并测试他们的运行时长. /// <summary> /// 是否显示执行过程 /// <…
本文参考<OpenMP中的任务调度>博文,主要讲的是OpenMP中的schedule子句用法. 一.应用需求 在OpenMP并行计算中,任务调度主要用于并行的for循环.当for循环中每次迭代的计算量相差较大时,如果简单的为每次迭代分配相同的线程,就会导致线程任务不均衡,CPU资源没有被充分利用,影响程序执行性能.例如下面这种情况: int i, j; ][] = {}; ; i < ; ++i ) { ; ++j ) { a[i][j] = i*j; } } 很显然,如果对外层for循…
在上一篇文章中介绍了并行计算的基础概念,也顺便介绍了OpenMP. OpenMp提供了对于并行描述的高层抽象,降低了并行编程的难度和复杂度,这样程序员可以把更多的精力投入到并行算法本身,而非其具体实现细节.对基于数据分集的多线程程序设计,OpenMP是一个很好的选择.同时,使用OpenMP也提供了更强的灵活性,可以较容易的适应不同的并行系统配置.线程粒度和负载平衡等是传统多线程程序设计中的难题,但在OpenMp中,OpenMp库从程序员手中接管了部分这两方面的工作.但是,作为高层抽象,OpenM…
#include <omp.h>#include <stdio.h>#include <stdlib.h> void test(int n){ for (int i = 0; i < 1000000; i++) { } printf("%d,",n);} int main(){//#pragma omp parallel for schedule(dynamic)//动态并行计算? #pragma omp parallel for for (i…