星期三, 一月 03, 2007

推荐几本学ANSYS的好书

这里要推荐四本学ANSYS的好书。这当中前两本是我经常翻看的,另外两本是我今天在一个ANSYS用户那儿看到,觉得很好,对于一些ANSYS高级用户可能会有用。这些书都是英文的,我给出了Google book search和Amazon的链接。这些书的价格都是很贵的,如果要买的话,需要有老板赞助。

当然最好的ANSYS学习参考书是ANSYS的在线帮助。

1. Finite Element Analysis: Theory and Applications with ANSYS, Second Edition (有限元分析:理论及ANSYS应用,第二版)
作者:Saeed Moaveni

Google book search链接:无,没有收录
Amazon链接:http://www.amazon.com/Finite-Element-Analysis-Theory-Applications/dp/0131112023

简介:这本书从最基本的有限元分析方法讲起,涵盖了基本的有限元单元的推导(truss,beam,plane结构单元和1d,2的传热单元),并且还简单介绍了模态分析。这本书适合初学者(包括没有任何有限元分析基础的人)。书里面的例子简单易懂,推导循序渐进,并且理论推导结合简单的手工计算实例和ANSYS计算实例。手工计算实例和ANSYS计算实例的讲解非常详尽。是一本学习有限元基础知识和ANSYS基本操作的好书。


2. An Introduction to Computational Fluid Dynamics: The Finite Volume Method Approach (计算流体力学简介:有限体积法)
作者:H. Versteeg, W. Malalasekra

Google book search链接:无,没有收录
Amazon链接:http://www.amazon.com/Introduction-Computational-Fluid-Dynamics-Approach/dp/0582218845

简介:这本书同样是一本入门书籍,非常适合于初学者。和上面一本一样,这本书对基本概念的阐述非常详尽和清楚,公式推导过程清晰易懂。该书简介CFD的基本思想,和湍流模拟的基本概念。该书对有限体积法的离散方法的作了详细介绍。事实上,认真研读本书足以编出基于结构化网格的简单CFD程序。

题外话:这本书其实不是ANSYS参考书,但是由于上面的两本书分别是我学FEA和CFD的启蒙书,加上他们的编排比较适合初学者,所以一起放在一起。对于通常的FEA和CFD分析,掌握这些基本知识可能就足够了。另外,对于CFD,陶文铨教授的《数值传热学》我也认真看过。可惜一直没有能买一本。《数值传热学》是我看到的国内教授写的最好最有分量的一本书。听说陶老师刚刚被评为中科院院士,恭喜。另外,这部CFD书的作者H. Versteeg, W. Malalasekra中的一个是我一个同事的毕业论文导师。据他说,这两个人一个好,一个一般,哈哈。

3. The Finite Element Method and Applications in Engineering Using ANSYS (有限元方法及ANSYS的工程应用)

作者:Erdogan Madenci, Ibrahim Guven

Google book search链接:无,没有收录
Amazon链接:http://www.amazon.com/Finite-Element-Method-Applications-Engineering/dp/0387282890

简介:上面我说过学习ANSYS最好的参考书是ANSYS的在线帮助。而如果翻阅一下这本书的目录,你会发现这本书的结构和ANSYS的在线帮助有几分相似。通常的有限元书籍,可能会花很多篇幅讨论有限元方程的建立,但是对于工程中常用的非线性材料模型,接触分析等很少有分析。因此,这本书适合对ANSYS有一定了解,向知道一些进阶功能的朋友。


4. Fatigue Life Prediction of Solder Joints in Electronic Packages with ANSYS (ANSYS在电子封装焊点疲劳分析中的应用)
作者:Erdogan Madenci, Ibrahim Guven, Bahattin Kilic

Google book search链接:http://books.google.com/books?vid=ISBN1402073305&id=E7HOfOQsgpEC
Amazon链接:http://www.amazon.com/Prediction-Electronic-Packages-International-Engineering/dp/1402073305

这本书对于电子组件焊点在温度循环(thermal cycling)条件下的疲劳寿命的分析非常有用。焊点疲劳分析是一种常见的电子封装有限元模拟。该书不仅回顾了焊点疲劳分析的理论,而且提供了非常用户友好的宏。通常做温度循环分析,需要做submodeling。而且电子组件的结构非常复杂,需要很长的时间(几个星期)才能生成高质量的六面体网格。该书提供的宏和图形界面模块,很好的解决这样的问题。用户只需输入焊点以及其他部件的大小尺寸,系统会自动生成六面体网格,并且进行温度循环分析。并且有专门的单元类型切换,submodeling,材料定义,后处理模块,非常强大和人性化。

这本书的价格虽然很贵(186美元),但是该书所附的宏,绝对是物超所值。

星期一, 一月 01, 2007

ANSYS/Fluent年会论文下载

最近安世亚太飞昂软件都相继把他们的年会论文放在网上,供免费下载。

2006 年ANSYS用户大会暨公司十年大庆

官方网站:http://www.ansys.com.cn/10th/

论文下载:http://www.ansys.com.cn/10th/paper.html

2006中国FLUENT用户大会

官方网站:http://www.fluentchina.com/cfd_index.html

论文下载:http://www.fluentchina.com/news_news_20061220.html

另外一个消息是,ANSYS11.0到目前还没有发布,看来台湾的虎门科技是摆了乌龙了。最近几日,在打开的workbench时,左边的新闻栏会显示,ANSYS和IE7的兼容性问题,当中隐约提到ANSYS11.0会在二月发布。这也算是正常的,现在是圣诞假期,怎么会发布新版呢?

FDS、Smokeview、PyroSim入门教程

FDS是Fire Dynamics Simulator(火灾动力学模拟器)的缩写。官方网站是http://www.fire.nist.gov/fds。FDS是一个专注于火灾模拟的CFD求解器,而Smokeview则是它的后处理器。FDS本身是没有图形化前处理器的,也就是用户要先编辑命令定义要求解的问题。FDS是由美国NIST(National Institute of Stardard and Technology,美国国家标准与技术研究院)开发的免费(对的,免费,因此你可以下载安装)CFD软件。Pyrosim是我在网上找到的(Google里搜索关键字FDS fire,右边会显示赞助商链接)。它是第三方开发的图形化FDS前处理器。PyroSim不是免费软件,但是提供30天的试用。对于学习者来说,30天应该是足够了。

想在网上找一些关于FDS的中文资料,但是系统的介绍很少。这个博客(人间四月芳菲尽)对FDS有零星的介绍。可惜的是,有一段时间没有更新了。在sogou里面搜索Pyrosim,只有屈指可数的几个结果。看来这个软件的应用还不是很广泛。

FDS的下载地址是:http://www.fire.nist.gov/fds/download/fdsall_407a.exe。在官方网站上,还有其它相关信息,比较有用的是FDS/Smokeview example,当中有超过150个算例,可以让初学者了解一下软件的功能。其他的文档在官方网站或者安装目录下都可以找到。其中,User's gudie(用户手册)是介绍软件的基本使用,而Technical reference guide(技术参考手册)是介绍求解器的模型及背景理论,需要一定的CFD基础以及相当长的时间消化。

对于FDS的input file(输入文件),这里就不多做解释了,一是因为本人并不熟悉这些功能,而是因为PyroSim提供了图形化前处理功能,把用户从枯燥的命令行中解放了出来。Pyrosim的官方网站是http://www.pyrosim.com/。用户提交了基本注册信息后,会收到一封含有下载地址的email。安装文件大概有45M。实际上,该安装文件不光有Pyrosim主程序和帮助,还有FDS/smokeview的主程序及文档。也就是说,如果你决定使用PyroSim,是不用单独下载FDS的。

下面我们要来做两个模拟,一个是Pyrosim Example Guide里面的第一个例子(Chapter 1. Air Movement),然后修改这个例子,做一个隧道火灾的模拟。

1. 运行一个FDS例子

1.1 启动PyroSim(并打开Example Guide, Chapter 1)。具体就不多说了,开始>程序>…………

下面是PyroSim启动时的截图,上面有中文“火”的写法,但是看起来似乎是源自日文汉字(Kanji)的火。但是开发PyroSim的Thunderhead engineering是一家位于美国的公司。

1.2 建立网格

选择Model > Edit Grid ... 在跳出的面板上点New。把网格的边界设置为Min X = 0,Max X = 10,Min Y = 0,Max Y = 10,Min Z = 0,Max Z = 10。同时把网格数量设为X cells = 20,Y cells = 20,Z cells = 20。如下图所示:

在FDS里面,基本形状只能是长方体的(尽管通过长方体的组合,能模拟复杂的几何形状)。网格也只能是正交网格(点确定后可以看到)。这个例子是模拟风洞内的燃烧,风洞尺寸为10米*10米*10米。每边划分成20个网格,总共有8000个网格。在FDS中,由于求解器的特殊要求,每边划分的单元数通常要求是2,3或5的倍数。

点击OK后,网格就生成了,如下图所示:

1.3 定义粒子

这里的粒子并不是通常CFD软件里的拉格朗日粒子,只是为了后处理方便而定义的示踪粒子。选择Model > Edit Particles ...,然后点New。不要选Particle Have Mass,这样粒子没有质量,仅是示踪粒子。选中Color Particles During Animation,使用默认的颜色,红色。这样在结果中会有红色的示踪粒子。

1.4 建立面

实际上,在建立网格的时候,我们已经得到了计算模型。这里的面是用来定义边界条件。要注意的是,这里仅仅定义边界条件,而没有给模型中的面指定边界条件。也就是说只定义边界上的物理条件,但并没有和模型中的边界联系起来。

定义入口边界。Model > Edit Surface Properties ...,点New。Surface name是BLOW,使用INERT作为模板。选择surface type为 "Fan/Wind”。然后下面会有很多选项。系统定义的表面类型都有明确的物理意义,还是比较好懂的。Fan/Wind里可以定义入口空气的温度和速度。为了便于区分,把Color选成蓝色。Air Temperature = 20 C,Specify Normal Velocity = -1.0 m/s。-1.0 m/s代表气流速度为1m/s,方向为进入计算域(+1.0m/s为出)。第三个标签下,选中Emit Particles,Particle Type = PART。最后点OK。各步骤的截图如下:

在这里例子里面,只需要定义BLOW这一个面,其余的面可以用系统定义的来表示。

1.5 定义边界条件

这里是真正指定表面的边界条件。

定义入口。选择Model > New Vent ...,在Specification标签下,Description = Vent Blow,Type = BLOW,Lies in the plane X = 0.0,Min Y = 3,Max Y = 7,Min Z = 3,Max Z = 7。在X=0平面上,有4*4的范围为BLOW的边界条件。点OK,离开界面。具体操作和操作后的结果为:

定义出口。步骤和上面的基本一样,Model > New Vent ... > New。Description = Vent Open,Type = Open,Lies in Plane X = 10,Min Y = 3, Max Y = 7,Min Z =3,Min Z = 7。在和入口相对的面上,有一个4*4的通风口。

1.6 定义切面

FDS使用LES模型模拟湍流,会产生大量的瞬时数据。FDS里面需要定义切面,只有切面数据会保存。

Output > Slices ...。XYZ plane = Y,Plane value = 5,Gas Phase Quantity = Velocity,Use Vector = No。OK。在Y=5平面上,保存速度值,但是不保存矢量。

1.7 设定模拟参数

FDS > Simulation Parameters ...。Simulation Title = Wind Tunnel,Specify Duration = 60 s,Initial Time Step = 0.15 s。数值模拟总时长为60秒,初始时间步长为0.15秒(后面的时间步长有系统自动决定)。OK。

1.8 运行FDS

FDS > Run FDS ... 先要保存一个*.data文件(自行命名)。然后FDS开始求解,求解过程如下图所示:

1.9 检查结果

FDS算完60秒后,会自动弹出SmokeView窗口。 在上面点右键Load/Unload > Slice File > VELOCITY > *Y=5.0。会显示前面定义的切面上的速度云图。

在上面点右键Load/Unload > Particle file > *SMOKE/WATER。会显示粒子轨迹。

至此,我们已经完成了FDS里面的第一个练习。下面可以修改上面的例子,做一个隧道内火灾的模拟。

2. 隧道火灾模拟

隧道内的火灾模拟是一个很常见的FDS应用。如果在隧道内发生火灾,如果通风系统没有工作,燃烧产生的烟会向两边对称扩散,引起能见度的下降,和对隧道内人员的健康威胁。通常,需要在隧道入口装风扇,把烟吹向出口,这样烟雾就不会向入口扩散。烟雾向上游的扩散成为是逆流(back layer flow)。入口风速大,逆流长度就小,或者没有逆流;入口风速小,逆流长度就长。逆流长度刚好为零的入口风速成为是临界速度(critical velocity)。FDS广泛使用于逆流的研究。

这里要做的是一个60*16*6的隧道。入口速度是3m/s,入口温度是25C。在底部有一块8*8的燃烧区域,火灾大小为100MW。为了简化问题没有模拟过程,而是直接把100兆瓦的热量直接分布在64平方米的面积上,折合1562.5kw/m2。

2.1 继续前面的模型

下面要修改前面建立的模型。如果模型没有打开,可以打开保存的*.psm或者*.data文件。

2.2 建立网格

在左边的树形目录上,双击Grids > GRID。在弹出的面板上,修改Max X = 60,Max Y = 16,Max Z = 6,X cells = 120,Y cells = 32,Z cells = 12。OK。点OK后,可能模型不在屏幕中央,可以点击工具栏上右数倒数第二个图标(Reset View to All Visible Objects)重置显示。步骤和结果如下所示:

2.3 建立面

这里需要建立两个面。第一个面是入口,修改前面的BLOW条件;第二个面是FIRE,需要创建。
在左边双击Surfaces > BLOW。Properties > Air Temperature = 25 C。Air Flow > Specify Normal Velocity = -3 m/s。

Model > Edit Surface Properties ... > New...,Surface Name = FIRE,OK。Surface Type = Non-Flammable Solid。Boundary Conditions > Boundary Types = Fixed Heat Flux,Heat Flux = 1562.5,OK。

2.4 定义边界条件

按照上面的描述,有三个边界条件需要定义。

双击Model > Vent Blow。把整个X=0平面设成是入口。Min Y = 0,Max Y = 16,Min Z = 0,Max Z = 6。OK。

双击Model > Vent Open。把整个X=60平面设成是出口。Lies in the plane X = 60,Min Y = 0,Max Y = 16,Min Z = 0,Max Z = 6。OK。

新建一个Fire Region边界条件,在主菜单上选择:Model > New Vent。Description = Vent Fire,Type = FIRE,Lies in the plane Z = 0,Min X = 26,Max X = 34,Min Y = 4,Max Y = 12。OK。

过程及结果如下:

2.5 定义切面

在Y=8平面定义一个切面。Output > Slices ...。把Plane Value改成8。在Y=8平面定义一个新的切面,来显示温度。因为我们没有模拟燃烧,根据温度场可以大概知道烟雾的分布。XYZ Plane = Y,Plane Value = 8,Gas Phase Quantity = TEMPERATURE,Use Vector? = No。

2.6 设定模拟参数

模拟的总时长为60秒。FDS > Simulation Parameters ...。Simulation Title = Tunnel Fire,Specify Duration = 60,Initial Time Step = 0.1。OK。

2.7 运行FDS

FDS > Run FDS ...。先保存一个合适的*.data文件。然后求解器会启动。求解过程大约为15分钟(在我的电脑上)。求解结束后,会自动跳出SmokeView。

1.9 检查结果

在自动弹出SmokeView窗口上面点右键Load/Unload > Slice File > TEMPERATURE > *Y=8.0。会显示前面定义的切面上的温度云图。

1.10 分析

在上面的温度云图中,我们可以看到,在入口速度为3m/s的时候,隧道内有非常显著的回流。也就是说3m/s的入口速度,不足以阻止烟气向上游扩散。有兴趣的朋友可以增加入口速度,看看这个问题的临界速度是多少。我试出的临街速度是4.5m/s左右。

另外一个问题是这个结果准确吗?理论上来说LES和k-e相比,有很大的优越性,但是由于FDS使用是有限差分的方法,而且没有检查收敛性(explicit),通常情况下只能作为参考。比如这个例子,有兴趣的朋友,可以用Fluent/CFX建模算一下,Fluent/CFX给出的临界速度应该在2.7m/s左右。差别还是相当大的。另外根据我的测试(和一组条件不同的实验数据的比较),基于k-e的Fluent/CFX结果通常会稍稍低估临街速度。但是总体而言,还是Fluent/CFX的结果更加可信。值得提醒的是,用Fluent/CFX的时候,一定要记得加上浮力修正。