




已阅读5页,还剩15页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
冶金工艺与热过程课程论文 Openfoam简介及使用 课程教师:黄军 学号:0862126411OpenfoamOpenfoam的简介及使用方法:openFOAM是一个具有开源代码的CFD模拟软件,运行于LINUX操作系统中(运行于WINDOWS下的LINUX虚拟环境同样可以),目前最新版本为1.3。受GNU Free Documentation License 保护,不过既然是开源软件,自然可以随便传播了,但是对源代码和说明文档的随意篡改是不负责任的,所以没有十足的把握,还是要尊重原始版权吧。openFOAM,open Field Operation and Manipulation,字面意思就是“开放的 域 操作 和 处理”,貌似和CFD没有什么关系,但是它却可以处理很多CFD问题抑或偏微分方程数值解问题。openFOAM是采用面向对象方法(Object-Orientation Method),采用C+语言编写的一个“库”(Library)。个人感觉很像Delphi,软件本身提供了大量的类,用户可以根据自己的需求和喜好进行组织、程序设计。与Delphi不同的是,openFOAM本身并不是一个编译环境,用户需要自己选用第三方软件来进行编译,这样一来,实际上openFOAM只提供了“料”,而与之对比的,Delphi则既提供了“料”,又提供了“锅”。 个人感觉,openFOAM可以像Delphi那样,形成自己的编译环境,这样应该更有利于应用和推广,不过希望不要商业化才好,毕竟大家都喜欢用免费的东西:)openFOAM是个软件,但是其本身又不会运行,这就是为什么我们仅仅称之为库的原因。但我们使用它,自然希望得到可以用的软件(application)。利用openFOAM可以得到两种类型的application:求解器solver和工具utility,前者用来解决数值计算上的问题,而后者用来进行前处理和后处理。至于怎么得到这些application,显然,需要我们用C+编程实现了。我们编程,自然不应该从零开始,因为我们有openFOAM,这是我们进行CFD模拟工作的基石。然而需要注意的是,要想利用openFOAM,就必须适应它的思想,从而在它的框架下去解决问题。这样,首要任务便是了解openFOAM的框架思想,以及它到底提供了哪些丰富而又精彩的内容。Windows下OpenFOAM开发及使用环境配置指南 (2) * 基本环境:操作系统:Windows 7 Ultimate 32 bit Linux环境:Cygwin 1.7 32bit OpenFOAM: 1.6 并行环境:MPICH2配置过程:1. Install Cygwin (国内镜像) (1) 除基本安装外,还需安装以下包:autoconf automake binutils bison byacc diffutils patch doxygen flex gcc-core gcc-g+ git make python readline texinfo wget w3m(2) 其余建议安装包:bzip2 gitk liblzma rxvt vim2. 修改注册表, 使系统区分大小写(1)HKEY_LOCAL_MACHINESYSTEMCurrentControlSetControlSession ManagerkernelObCaseInsensitive 设为0. (2) 重启系统使应用生效.3. 配置Cygwin (1) 启动Cygwin, home/目录将依据当前Windows用户创建. 若用户名存在空格, 则需要在Cygwin根目录下的 /etc/passwd 中将映射名改为无空格的用户名标识, 并重启Cygwin. (2) 在Cygwin Shell中输入 mkdir OpenFOAM echo export TEMP=/tmp /.bashrc echo export TMP=/tmp /.bashrc 以创建OpenFOAM安装目录并使TEMP/TMP变量有效. (3) 在Windows中建立文件夹, 用于mount OpenFOAM及tmp目录: 在/etc/fstab中添加 /home/OpenFOAM ntfs binary,posix=1 0 0 ntfs binary,posix=1 0 0 其中 为OpenFOAM的实际安装目录, 为实际临时目录. patch 命令的运行依赖/tmp目录. - NOTE: 将以上目录设在根目录下比较方便, 且保持命名简洁易记. (4) 重启Cygwin使修改生效. 输入 ln -s /usr/bin/cpp /lib/cpp 以使wmake正确运行.4. 安装OpenFOAM (1)下载OpenFOAM-1.6.General.gtgz, ThirdParty-1.6.General.gtgz解压到安装目录 tar xzf OpenFOAM-1.6.General.gtgz tar xzf ThirdParty-1.6.General.gtgz (2) 下载PatchesNBatches.tar.gz并解压到$HOME/OpenFOAM目录. 在该目录下运行命令 patch -p0 pnb/OpenFOAM-1.6_patch patch -p0 pnb/ThirdParty-1.6_patch (3) 修改脚本, 配置OpenFOAM环境 (3a)在$HOME/.bashrc文件中添加下面一行:source $HOME/OpenFOAM/OpenFOAM-1.6/etc/bashrc-mingw32使OpenFOAM配置随Cygwin启动生效. bashrc-mingw32中需将case $WM_ARCH inLinux)中的Linux)改为*), 以使Cygwin能够假冒Linux. (当然也可以加入Cygwin选项, 但会涉及到一些需要适应OpenFOAM的规则配置, 如wmake rule等, 不建议使用. 这种假冒策略是一个trick, 如果仅是本人在 cygwin 下使用, 这种做法足够, 且可将源码修改降至最低. 至于考虑平台可移植性的通用性设置, 则应该是OpenFOAM发布者该做的事情) (3b)重启Cygwin, 发现有编译器未安装的警示信息, 不用理会, 这是因为OpenFOAM认为编译器是mingw32, 有错误提示是正常的. 我们需要做的检查当前系统是否含有gcc(用gcc -v命令, 我的版本是3.4.4) (3c)运行以下 chmod 命令以使新patch的script文件正确运行 chmod 744 $WM_THIRD_PARTY_DIR/build-mingw32 chmod 744 $WM_THIRD_PARTY_DIR/build-mingw-w32 chmod 744 $WM_THIRD_PARTY_DIR/build-mingw-w64 chmod 744 $WM_THIRD_PARTY_DIR/build-mingw-w64-45 chmod 744 $WM_THIRD_PARTY_DIR/makeGcc44 chmod 744 $WM_THIRD_PARTY_DIR/get-mpich2 chmod 744 $WM_PROJECT_DIR/src/Allcleanchmod744$WM_PROJECT_DIR/applications/utilities/parallelProcessing/Allwmake chmod 744 $WM_PROJECT_DIR/bin/tutowin chmod 744 $WM_PROJECT_DIR/bin/foamDiff chmod 744 $WM_PROJECT_DIR/bin/backupSourceFolder chmod 744 $WM_PROJECT_DIR/bin/backupFullFolder (3d)下载mpich2-1.1.1p1-win-ia32.msi文件, 安装32位 MPICH2 1.1.1p1, 将安装目录下的bin, include和lib文件夹拷贝至ThirdParty-1.6/mpich2-1.1.1p1. (3e)修改bashrc-mingw32:将 WM_GETMPICH2 设为 DONTGETMPICH2重启Cygwin使编译mingw32的环境设置生效. (4) 编译mingw交叉编译器mingw32 (4a)将ThirdParty-1.6/build-mingw32脚本中以下变量对应的文件下载到ThirdParty-1.6/mingwcc/source目录(手动创建).当然也可以下载这些package 的最新版本, 但需注意要同时在脚本中修改相应的名字. BINUTILS_ARCHIVE=binutils-2.19.1-src.tar.gz MINGW_ARCHIVE=mingwrt-3.15.2-mingw32-dev.tar.gz W32API_ARCHIVE=w32api-3.13-mingw32-dev.tar.gz REGEX_ARCHIVE=mingw-libgnurx-2.5.1-bin.tar.gz REGEX2_ARCHIVE=mingw-libgnurx-2.5.1-dev.tar.gz (4b)针对Cygwin环境修改build-mingw32脚本: * BUILD=uname -m-$WM_ARCH-gnu 改为 BUILD=uname -m-pc-cygwin * do_gmp, do_mpfr函数中将-host=$TARGET改为-host=$BUILD * do_mpfr函数中-enable-thread-safe改为-disable-thread-safe (4c)在ThirdParty-1.6目录下输入命令 ./build-mingw32 GCC-4.3.3 运行脚本, 等待命令完成. (约数小时, 期间若有tar错误或者 no file or directory错误, 不用理会.) (5) 配置wmake编译环境. (5a)建立flex+链接: 将 alias flex+=flex -+ 命令加入到 OpenFOAM-1.6/etc/alias.sh中 (5b)修改wmake rules. (我们现在的平台是linux, 编译器是mingw32, 因此要改的是OpenFOAM-1.6/wmake/rules/linuxmingw32文件夹中的内容) * mplibMPICH中-lmpich改为-lmpi, 删除-lrt * general中删除 include $(GENERAL_RULES)/byacc include $(GENERAL_RULES)/btyacc+ 加入 include $(GENERAL_RULES)/version include $(GENERAL_RULES)/bison (5c)修改zlib配置. 将ThirdParty-1.6/zlib/Make目录拷贝至 ThirdParty-1.6/gcc-4.3.3/zlib (5d)重启Cygwin, 使修改生效 (6) 到OpenFOAM-1.6目录, wclean all & ./Allwmake, 完成. * 参考链接: /index.php/Tip_Using_Cygwin_for_cross-compiling_OpenFOAM /index.php/Tip_Cross_Compiling_OpenFOAM_1.6_in_Linux_For_Windows_with_MinGW https:/trac.handbrake.fr/wiki/CygWin .pt/ (blueCAPE) / (OpenFlow) /Unix/GNU/gnu/ /sourceforge/mingw 注意事项: * 表示依赖于用户系统的一些变量, 用户需根据自己的系统配置来设定. * Cygwin只有32位的安装版本, 因此对gmp, mpfr, gcc的编译过程来说, 系统都是i686, 而不是x86_64, 在Cygwin中输入uname -m可确认这点 * 以上配置过程请按顺序进行文件下载:OpenFOAM-1.6.General.gtgz: /foam/OpenFOAM-1.6.General.gtgz?use_mirror=meshThirdParty-1.6.General.gtgz: /foam/ThirdParty-1.6.General.gtgz?use_mirror=meshPatchesNBatches.tar.gz: /images/e/e2/PatchesNBatches.tar.gzmpich2-1.1.1p1-win-ia32.msi: /research/projects/mpich2/downloads/tarballs/1.1.1p1/mpich2-1.1.1p1-win-ia32.msimingw相关文件: /sourceforge/mingw使用OpenFOAM的基本流程任何CFD软件的使用无非通过3个基本步骤: 前处理,CFD计算,后处理。(注:CFD软件是计算流体力学(Computational fluid Dynamics)软件的简称,是专门用来进行流场分析、流场计算、流场预测的软件)(一)、前处理主要包括:网格的生成,物理参数的设定,初始边界条件的设定,求解控制设定,方程求解方法的选择,离散格式的选择。(1)、网格生成: OpenFOAM带有自己的网格生成功能blockMesh,他可以生成块结构化网格,使用比较简单,但对于复杂几何,该功能实施比较复杂。 可以采用其网格软件如:gridgen,pointwise,gambit,icemcfd,tetgen,gmesh,ansys等生成网格,通过网格转换功能将其转换为openfoam可识别的网格。我本人通常采用gridgen生成fluent网格,再采用fluentMeshToFaom功能转换为openfoam可识别网格。(2)、物理参数的设置: OpenFOAM中的物理参数文件都在当前case文件夹里面的constant文件夹中,里面常用的文件通常常有 environmentalProperties:设定环境参数,重力加速度 transportProperties:传输相关参数,比如黏性,密度,对于非牛顿流体的黏性模型及其参数等 LESProperties:大涡模型及其相关的模型参数 RASProperties: 雷诺时均模型及其相关模型参数 thermodynamicProperties:热物理相关参数 这些文件的名字由solver里面定义,可以任意更改,上面书写是openfoam中的一个惯例,至于如何更改,请参看solver说明。(3)、初始边界条件的设定:初始条件和边界条件设定都在case文件夹中的0文件夹中,在Openfoam中,每个求解变量都有自己的单独的求解文件,下面以/OpenFOAM/OpenFOAM-1.5/tutorials/icoFoam/cavity/0/p压力文件为例进行说明FoamFile /文件头 version 2.0; /版本号 format ascii; /存储形式二进制或者ascii class volScalarField;/场的类型,体心标量场 object p; /场的名字/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /场的单位,应当注意这里的压强单位并非实际压强,而是压强除去密度(p/rho)的单位/因为openfoam对动量方程直接求解的速度dimensions 0 2 -2 0 0 0 0;/初始条件:内部场为均匀场,所有全为0,如果不均匀场则采用setField或者funkySetField对初始场进行/设置,如何使用这些功能,以后再说明。internalField uniform 0;/边界条件boundaryField movingWall /边界名字 type zeroGradient; /边界条件为第二类边界条件,梯度为0 fixedWallsm /边界名字 type zeroGradient;/边界条件为第二类边界条件,梯度为0 frontAndBack /边界名字 /空边界条件,说明求解是二维流动,这个在openFOAM是独有的,如果遇到该类边界,该边界不参与方程离/散,也就是什么都不做。 type empty; (4)、求解控制设定:文件为system/controlDict,典型的controlDict文件如下/文件头FoamFile version 2.0; format ascii; class dictionary; object controlDict;/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /当前case所用求解器的名字application icoFoam;/程序从什么时候开始执行,startTime开始startFrom startTime;/startTime 设定为0,即从0时刻开始执行startTime 0;/程序什么时候结束,endTime结束stopAt endTime;/程序结束时间endTime 0.5;/当前算例的时间步长deltaT 0.005;/以什么方式写文件,按照时间步长写(也可以为runTime,即按照时间来些)writeControl timeStep;/20个时间步长,20*timeStep写一次;(如果按照时间来写的话为1)writeInterval 20; /写过程是否覆盖,如果0则不覆盖,大于0为覆盖,比如:2,case文件家中只有输出文件 比如6 和 7,/当算到8时候,会覆盖6,9会覆盖8,以此类推purgeWrite 0;/写的格式ascii或者binarywriteFormat ascii;/文件写入精度writePrecision 6;/是否对生成数据进行压缩,压缩的话会战较少空间。uncompressed/compressed;writeCompression uncompressed;/时间文件夹格式:fixed m.ddddd(d的个数取决于下面的timePrecision),scientific :采用科学计数/法,general:科学计数法指数小于4用指数,大于4用小数timeFormat general;/时间文件夹精度timePrecision 6;/在求解过程中是否允许修改以上参数runTimeModifiable yes;(5)、方程求解方法的选择:文件为system/fvSolution,典型的文件为/文件头FoamFile version 2.0; format ascii; class dictionary; object fvSolution;/ * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * /solvers /方程求解器 p PCG /压力采用预条件共轭梯度法(主要用于求解对称矩阵) preconditioner DIC; /预测器,对角不完全Cholesky方法 tolerance 1e-06; /参差 relTol 0; /迭代容差 ; U PBiCG /速度采用预条件双共轭梯度法(主要用于反对称矩阵) preconditioner DILU; /预测器,对角不完全LU tolerance 1e-05;/残差 relTol 0; /迭代容差 ;PISO /piso控制参数 nCorrectors 2;/修正次数 nNonOrthogonalCorrectors 0;/非正交修正次数 pRefCell 0;/压力参考cell的index pRefValue 0;/压力参考值如果对求解器不明白,可以参看相关理论,或者直接找到一个差不多的case进行复制。(6)、离散格式的选择:文件:system/fvSchemes,典型文件/文件头FoamFile version 2.0; format ascii; class dictionary
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 广东省紫金县2026届化学高一第一学期期末调研模拟试题含解析
- 情景转述课件
- 2026届山东省莒县第二中学实验班化学高一上期中质量检测试题含解析
- 威海市重点中学2026届高二化学第一学期期中复习检测模拟试题含解析
- 园林绿化个人年度工作方案
- 医院医生年度工作方案
- 成功的茶叶营销策划方案
- 社区三八妇女节活动方案
- 识字试卷测试题及答案
- 鼻肠管留置操作流程
- 片区护士长竞聘
- 人教版高中数学必修一《基本不等式》课件
- 北方园林主要病虫害防治月历
- SL 168-2012 小型水电站建设工程验收规程(附条文说明)
- 河道清理合同范本
- 化肥欠款协议模板
- 社会适应能力评估表
- HYT 251-2018 宗海图编绘技术规范
- 应急预案内部评审表
- 《静脉输液》课件
- 珠海打印耗材行业分析
评论
0/150
提交评论