资源描述
CFX user Fortran: 在每个时间步输出结果
问题是这样的,用CFX user CEL完成变量的同时,还希望CFX输出每个时间步的变量值(比如,每个时间步的压力值)到一个文本文件。虽然在程序中作了一些控制(以避免在每个coefficient loop都输出结果),但是CFX总是在一个时间步输出同样的变量多次。 User CEL的功能其实是和CFX的内置CEL一样的,只是用户化的CEL。User CEL会在“需要时”,被实时引用。如果user CEL是用来定义边界条件,在一个coefficient loop,user CEL会被运行多次。这样结果也会被多次重复输出。 其实CFX user Fortran有两种,第一种是user CEL,它的主要功能是表达式的计算;第二种是junction box routine,它的主要功能是控制计算流程。user CEL会被实时引用,而junction box routine只在用户设定的运行点运行。下图是从CFX帮助里复制的流程图。要完成上面所说的功能,只要定义个junction box routine,然后把运行点设成End of Time Step (transient only)就可以了。
Fri, 14 Dec 2007 18:34:57 +0000
Fluent: 计算叶轮功率
问题是这样的,Fluent可以不可以计算驱动搅拌器叶轮所需要的功率;如果可以的话,是不是要做面积分。 按照物理学上的定义,对于旋转的系统,功率=力矩*转速。通过表面积分(把每个壁面单元,wall face,的功率相加)可以得到整个系统的功率。但是,这个方法比较麻烦,需要用UDF计算,可能比较费时间。 既然功率=力矩*转速。转速我们是已经知道的。力矩可以在Fluent->Report->Forces…上计算得到。因此,如果叶轮转动轴是和x,y,z轴其中之一方向一致的话,我们可以直接用Fluent图形界面进行计算。当然如果转动轴方向不和系统坐标一致,UDF还是需要的(有兴趣的朋友可以email给我)。这是因为力矩和转速都是矢量,只是在和系统坐标一致时,才可以方便的找到转动轴方向的力矩分量。 具体的做法是这样的: 1. Fluent -> Report -> Forces … 把Options选成Moments,把Moment Center设成转动轴上任意一点(但必须要是转动轴上的一点,否则就错了)。在Wall Zones里选择所要计算的壁面。然后点击Print。 2. Fluent会输出力矩的三个放量,单位是Nm,牛顿米。 3. 假设转动轴是在x方向的,把x分量乘以转速(单位是弧度每秒),就得到所需的功率了。
Wed, 12 Dec 2007 18:58:45 +0000
在Fluent里设置回流边界条件(recirculation opening)
这里的回流边界和流体力学里说的回流是不一样的。在室内通风系统,由很多设备,比如空调室内机,空气过滤器,会从房间内吸走一定量的空气,然后返还等量的空气。这一过程中,可能空气的温度会发生变化(空调室内机),空气的组分会发生变化(空气过滤器)。空气的质量总是等量的。 在Airpak里面有一种特别的opening条件,可以定义recirculation opening。在这种边界条件中,必须是两个边界组成一对,质量保持守恒,但是可以有热量和组分的变化。 问题是这样的,怎么在Fluent里面定义这样的边界条件呢。 要在Fluent里面定义这样的边界条件,需要输入下面两行scheme(和输入TUI一样): (rpsetvar ‘icepak? #t) (models-changed) 如果觉得每次输入很麻烦的话,可以把这两行放在一个文本文件中,然后把这个文本文件命名为*.scm。在Fluent -> File -> Read -> Scheme …可以读入这个文件,完成设定。 完成设定后在Fluent的boundary conditions面板,就会多出来两个选项,然下图所示(Fluent 6.3.26)。 具体的做法就不多说了,因为界面还是相当直观的。 当然,另外一种办法是用DEFINE_ADJUST UDF来做,但是这个办法会复杂一些。
Tue, 11 Dec 2007 19:21:34 +0000
ESI发布CFD-Ace+ v2008.0
主要的提升有:1. 多面体网格;2. 燃料电池模型;3. 新的边界层网格生成技术。 新闻链接 CFX-Ace+网站
Mon, 10 Dec 2007 19:43:37 +0000
在Tgrid里划分多个体网格
很多时候我们需要一个网格里面有多个体(例如,定义源项,有转动部分),但是默认情况下Tgrid只划分其中一个体的网格(严格说,只输出其中一个体的网格到*.msh文件)。要解决这个问题,需要改变Tgrid的默认设置:Tgrid -> Mesh -> Tri/Tet -> Controls -> Init/Mesh,然后把Non-Fluid Type选成Fluid(默认选项是dead)。 和ICEM CFD一样,Tgrid里面是没有体的。体是由面组成的封闭空间决定的。是用默认设置的话,Tgrid只会把最大的体输出,其余的体设成dead,不会输出。 Tgrid Tutorial的第一个练习题就是有关多个体划分网格的。具体操作可以练习第一题。
Sun, 09 Dec 2007 19:58:24 +0000
Fluent安装后不能启动
问题是这样的,Fluent安装后不能启动,并且给出下面的错误消息: The application failed to initialize properly (0XC0150002). Click OK to terminate the application 出现这样的问题是因为在64位windows上,Fluent需要Microsoft .NET Framework 2.0 libraries。需要下载.NET framework Version 2.0 Redistributable Package。x64版本可以在微软网站免费下载到。当然最好的方法是,使用windows的自动更新功能,下载安装所有的补丁和升级程序。 下载链接:
Sat, 08 Dec 2007 20:07:51 +0000
Airpak 3.0.16 发布
Fluent刚刚发布了Airpak 3.0.16。在此以前的版本是Airpak 3.0.12(链接)。我还没有具体试用过,应该没用功能性的提高,主要是提高稳定性。最重要的是从这个版本起,Airpak开始支持64位系统(Windows和Linux)。用户可以求解更大更复杂的问题。Airpak可以在Fluent用户服务中心下载。
Fri, 14 Dec 2007 04:32:00 +0000
Fluent for Catia V5 3.1 发布
包括32位windows和64位windows版本。产品介绍网页: Technorati : Catia, Fluent
Wed, 10 Oct 2007 02:34:00 +0000
本博客主要介绍ANSYS,CFX,Fluent的最新更新,使用技巧等。同时也有CFD和FEA基本理论,及其他CAE软件的介绍。
CFX 11.0的两个CEL新功能
1.inside()函数 有时候我们需要在不同的区域设置不同的属性。比如,要初始化一个自有表面问题,在volume A体积比是1,在volume B体积比是0。在10.0时,需要把这两个区域防近两个domain,然后对各自domain进行初始化。这样,需要建立domain interface来连接domain。可能只能使用GGI来连接,这样精度就会受到影响。 在11.0,inside()函数可以方便解决这个问题。inside()函数的功能和step()函数的功能类似(if…else…语法)。如果在指定区域内,返回1;否则,返回0。 首先,找到volume A和B的原始区域名。只要把树形目录里的mesh展开,就可以看到下面所有的面和体区域。面区域以F开头。体区域以B开头。然后,写出inside()@REGION:B****函数。最后把这个CEL函数放到模型中。 下面是一个利用inside()函数进行初始化的例子: Initial_C = 1 [kg m^-3]*inside()@REGION:B3872 在区域B387内,初始值为1;否则为0。 2. REGION:语法 在10.0时,基于区域的函数如area()@只能基于已定义边界条件的面。也就是说,@后面只能跟边界条件名,而不能是网格中的原始区域(primitive region)。这样,如果要定义基于原始区域的函数,而这个区域不是边界条件时,就会比较麻烦。 11.0提供的REGION:语法可以方便的解决这个问题。其实REGION:的用法已经在上面的例子解释了,这里就不多说了。 Technorati : CEL, CFX
Sun, 07 Oct 2007 05:03:29 +0000
简化Airpak模型的小经验
Airpak虽然提供了非常强大的划分网格功能,不过如果不认真控制的话,还是会产生非常大的网格。最近遇到一个问题在32位PC上,Airpak不能显示大于一百万网格的PMV和PPD。我猜想PMV和PPD结果并没有保存在最终结果中,需要暂存在内存中,因此对内存的要求会增加。 在使用Airpak的过程中,还遇到过其它和网格质量相关的问题。网格质量低的话,会导致收敛问题。下面总结一些我发现的经验(有新发现的话,持续添加)。 1. 尽量使用Hexa unstructured方法。Tetra生成的单元数最多,Hexa Cartesian次之,Hexa unstructured最少。Hexa Cartesian不能划分弯曲、倾斜的几何形状,不推荐使用。Tetra可以用在复杂的几何形状。Tetra生成需要很长时间。Hexa dominant是指混合使用Hexa unstructured和Tetra。 2. 少用CAD,多用polygon。虽然Airpak 3.0允许直接使用CAD几何形状,但是由于CAD本身的缺陷或者过于复杂,生成Tetra网格会很慢,并且单元数太多,浪费计算资源。用Polygon可以近似复杂的形状,进而生成效率高的Hexa unstructured网格。 3. 使用Non-conformal Meshing。如果room里有比较小的细节的话,把这些细节放到assembly,然后mesh seperately,能够显著减少单元数。网格质量也能大大提高。 4. 控制Minimum gap。默认的minimum gap是1毫米。在模拟大的流域时,如果一些object没有对齐,会生成非常大纵横比的单元,影响收敛。如果object很多,对齐困难的话,使用大一点的minimum gap就可以解决这个问题。 5. 使用Per object control。可以更好的控制,物体旁边的边界层等。 6. 检查网格质量。网格质量的第一项Face Alignment非常重要,如果有很多单元在0 - 0.15的范围的话,会很难收敛或发散。把下面的max改成0.15,然后点击柱状图,可以检查低质量单元的位置。 7. 如果有收敛问题,可以暂时deactivate所有object,然后依次activate进行测试,找出问题所在。 Airpak的帮助文件对网格生成有比较详细的阐述,如果认真阅读的话,会有很大的帮助。网格生成是CFD模拟中最重要的环节之一,因此磨刀不误砍柴工。 Technorati : Airpak, 网格
Sat, 06 Oct 2007 03:50:23 +0000
CFX:用动网格来转动固体表面
在一些CFD模拟中,用户需要测试流场对一系列尺寸的反应。比如所当管道的直径为10 mm,12 mm,和14 mm时,流场各有什么不同。DesignModeler里面的parameter可以做到这一点。如果使用CAD interface的话,DesignModeler可以读进上游软件的parameter,比如Pro/E。这样做的问题是每次都需要重新生成网格(用DesignXplorer可以自动化这一过程)。其实我们可以用CFX的Mesh deformation功能实现这个目的。 问题是这样的,要测试控制叶片在0-5度内,每转动一度时流场的不同。做法是这样的: 1. 在domain上设定mesh deformation。 2. 设定所有的wall边界。如果没有移动,设置成Unspecfied;如果有移动,设置成Spcified Location。 要计算出转动后的location,需要用CEL进行坐标变换。下面的连接介绍了转动坐标变换的公式: 如果转动轴和z轴平行,并且位于(x0,y0)的话,我们可以算出转动后的坐标为: x2 - x0 = (x1-x0)*cos(phi) - (y1-y0)*sin(phi) y2 - y0 = (y1-y0)*cos(phi) + (x1-x0)*sin(phi) x0, y0:转动中心 x1, y1:转动前的坐标 x2, y2:转动后的坐标 把x2,y2输入就可以模拟转动了。 下面是一段CEL例子: LIBRARY:CEL:EXPRESSIONS:phi = 5*pi/180x2 = xy0 = 0 [m]y1 = yy2 = y0+(y1-y0)*cos(phi)-(z1-z0)*sin(phi)z0 = -0.21 [m]z1 = zz2 = z0+(z1-z0)*cos(phi)+(y1-y0)*sin(phi)ENDENDEND Technorati : CFX, 动网格
Fri, 05 Oct 2007 04:48:00 +0000
CFX:opening temperature vs. static temperature
前面一篇帖子讨论了在CFX里面应该使用什么样opening边界条件。当时只是讨论了动量方程边界条件,没有讨论能量方程边界条件。问题是这样的,在CFX做通风系统模拟时,环境温度是32度,流场内只有热源,没有热量损失。根据常识,温度不可能低于32度,但是实际模拟结果却有部分区域温度低于32度。 问题是稳态的,我只算了两个迭代,在CFX-Post里面发现温度的global range是低于32度的。但是在切面上很难看到那些区域温度低于32度。使用isosurface功能可以方便的看到低温区域。低温区域位于一个opening边界条件旁边。 检查了opening的定义后,发现温度定义为opening temperature。也就是说,如果空气流入时,total temperature是32度;如果空气流出时,static temperature是32度。换句话说,如果空气流入,static temperature实际上低于32度。空气流速越大,static temperature越低。这样就会造成没有热损失,温度却低于32度的情形。 在做通风系统模拟时,opening条件应该统一设成静压和静温。 Technorati : CFX, 边界条件
Thu, 04 Oct 2007 05:45:00 +0000
用CFX模拟二维问题
CFX只有3d求解器,在求解二维问题时,需要有特别的设置。当然,Fluent有专门的2d求解器,求解速度要快得多。 二维问题可以分为平面二维(planar 2D)问题和轴对称二维(axisymmetric 2D)问题。 1. 几何形状 平面二维:在DesignModeler里面,extrude二维sketch。延伸的长度不重要,但是厚度要比较薄。 轴对称二维: 在DesignModeler里面,revolve二维sketch。转动的角度部重要,1度到5度比较合适。 2. 网格 平面二维:在CFX-Mesh里面,把Option -> Meshing Strategy改成Extruded 2D Mesh,Number of Layers = 1,然后定义Extruded Pair,Option = Translational 轴对称二维:在CFX-Mesh里面,把Option -> Meshing Strategy改称Extruded 2D Mesh, Number of Layers = 1,然后定义Extruded Pair,Option = Rotational,并定义轴。 生成的网格主要由锲形(prism)网格组成。轴对称情况下,靠近轴的地方会有退化网格。 3. 定义 二维问题使用和三维问题类似的边界条件。对前面和后面,定义成symmetry(对称)边界条件就可以了。如果没有定义成对称条件的话,CFX-Solver回提示不能正确计算梯度,求解器会自动中止。 Technorati : CFX, 二维
Wed, 03 Oct 2007 07:27:00 +0000
用CFX模拟流体在不同材料里的扩散
在生物医药的应用上,有时候需要模拟药物在不同材料里的扩散。流体本身没有流动,但是药物会从高浓度区域扩散到低浓度区域。 要求解这个问题,不需要求解速度场和对流项。只要求解一个扩散方程。因此自己开发程序或者用matlab可能会更适合。用CFX可以模拟比较复杂的几何形状。 1. 不求解动量方程。Insert -> Solver -> Expert Parameter -> Model Over-rides,把solve fluid的选项改成f。 2. 不求解湍流方程。把湍流模型设成laminar 3. 不使用任何其他模型。没有传热,多相流等。 4. 定义一个Additional variable。然后再domain里面激活这个additional variable,使用diffusive transport equation。并且定义该additional variable在里面的扩散系数。 5. 定义边界条件。 在CFX里,默认情况下,CFX-Pre会对所有的domain使用同样的设定。如果要给不同的domain设定不同的扩散系数的话,需要作一个高级设置。Edit -> Options -> CFX-Pre -> Enable Beta Features。最后在树形目录的Simulation上点右键,选空Constant Domain Physics。这样便可以给不同的区域顶以不同的扩散系数了。当然,在做网格时,要先把domain划分好。 Technorati : CFX, 扩散
Mon, 01 Oct 2007 07:56:00 +0000
CFX:Insufficient Catalogue Size
前面一篇帖子,介绍了CFX求解器堆栈长度不足的处理。最近遇到一个实例,在进行瞬态计算时,CFX报告了下面的错误消息: +——————————————————————–+| *** INSUFFICIENT CATALOGUE SIZE *** || ACTION REQUIRED : Increase the file catalogue size. || If the situation persists please contact the CFX Customer Helpline || giving the following details:- || Current catalogue size : 50822 |+——————————————————————–+ 这是由于CFX的存储管理系统(Memory Management System, MMS)没有分配足够的内存给所要求解的问题。这种问题是不常见的。 有两个办法可以解决这个问题,在CFX-Pre里面用CCL控制,或者在CFX-Solver里,配置相应的参量。它们的作用是一样的。 1. 在CFX-Pre里用CCL控制 在Solver Control上点右键,然后选择”Edit in Command Editor”。在CCL里插入下面的语句: Catalogue Size Multiplier = 1.2 这句定义可以直接放在”SOLVER CONTROL”下面。点击Process确认。 2. 在CFX-Solver里配置参量 如果是用命令行提交CFX,在CFX5solve命令里加上”-size-mms 1.2″控制。这个控制是让MMS请求1.2倍的内存。根据情况不同,可以使用更大的值。 如果是用图形界面提交CFX,在solver标签下面,可以输入advanced arguments。 [...]
Sun, 30 Sep 2007 05:40:00 +0000
配置windows系统CFX并行计算
最近被问到怎么给windows系统配置CFX并行计算。其实CFX的并行计算功能是很容易配置的。32位windows上使用mpich,64位windows上使用mpich2。 如果已经安装了ANSYS Workbench的话,帮助里会有一本Installation and Licensing Documentation。在里面搜索mpich会看到具体的配置方法: 1.在CFX-Launcher上,Tools -> Command Line 2.安装mpi 2.1 32位系统,输入: cfx5parallel -install-mpich-service 2.2 64为系统,输入: cfx5parallel -install-mpich2-service 3.注册用户 3.1 32位系统,输入: cfx5parallel -register-mpich-user 3.2 64位系统,输入: cfx5parallel -register-mpich2-user 4. 输入用户名和密码。个人认为这个用户名和密码并不是很重要,可以输入任意值。 如果使用分布式并行计算的话,还需要安装rsh服务和配置防火墙。对于前者,安装帮助上的说明安装就可以了;对于后者,通常我是直接把windows防火墙关了。 另外,在windows上使用mpich要比pvm快很多很多。用pvm不需要特别的设置。 Technorati : CFX, 并行计算
Sat, 29 Sep 2007 06:08:00 +0000
ICEM CFD:extrude mesh操作的side part name
问题: ………………………………………………….Subject…: 关于ICEM的一个问题………………………………………………….请问通过平面网格通过extrude mesh操作,转化为六面体网格以后,边界条件(part)不能从原来的线对应成面,是什么原因? 回答: 请参见附件的截图。设定一个side part name就可以了。
Fri, 28 Sep 2007 06:17:00 +0000
ANSYS 11.0 service pack 1发布
ANSYS 11.0 SP1已经发布了。ANSYS, Workbench和ICEM CFD已经支持Windows Vista,CFX对Windows Vista的支持是beta版本。 Technorati : ANSYS, Vista
Tue, 02 Oct 2007 13:12:07 +0000
本博客主要介绍ANSYS,CFX,Fluent的最新更新,使用技巧等。同时也有CFD和FEA基本理论,及其他CAE软件的介绍。
CFX:如果确定timescale
CFX的求解器是比较特别的,和普通教科书上的不太一样。它使用耦合求解器(coupled solver),并且使用求解瞬态方程的方法来求解稳态问题。时间步长(timescale)是影响收敛的最重要的因素。时间步长在耦合求解器里的重要性,相当于松弛因子(underrelaxation factor)在分离求解器(segregated solver)里的重要性。前面有一篇帖子,讲了时间步长在流固耦合传热问题中的作用。 打个比方,在开车时。如果速度很慢,就会比较安全,但是需要比较长的时间才能到达目的地;如果速度很慢,就会节省时间,但是可能会不安全。同样的,在用CFX求解时,如果timescale很小,收敛会很稳定,但是需要很多的迭代,速度较慢;如果timescale很大,需要的迭代次数较少,但也可能引起求解器不稳定,甚至发散。因此合适的timescale对于收敛是很重要的。 通常情况下,timescale可以根据(特征时间=特征长度/特征速度)这个公式算出来。但是对于复杂的流场而言,直接推算出合适的时间步长还是有一定难度的,需要试出合适的timescale。 在CFX里,auto timescale是让系统自动估算出timescale,而physical timescale是由用户直接输入timescale。通常情况下,系统估算出的auto timescale过于保守,用户需要使用较大的physical timescale。另外,由于使用耦合求解器的缘故,CFX一般能在100-200个迭代步内收敛。如果在200步内还没有收敛的话,需要考虑改大timescale,而不是让系统跑更多的迭代(例如,把最大迭代数设成1000),这样会浪费很多宝贵的时间。 最近碰到一个室内空调系统的模拟问题,由于浮力(buoyancy)的存在,动量方程和能量方程的耦合会导致收敛困难。使用的是CFX 11.0。11.0提供了时间步长系数(Timescale factor)这个新选项,可以方便的测试不同的timescale。timescale factor = 10代表timescale = 10 * auto timescale。 上面所说的空调模拟问题,我测试了timescale factor = 1、10、100三种情况。平均残差(RMS residual)和全局不平衡(global imbalance)的曲线图附在下面。 从曲线图可以清楚地看出,使用小的时间步,收敛曲线呈波浪形,或收敛缓慢,全局不平衡较大;使用大的时间步,收敛曲线呈”之”字形上下跳动。下面这个例子,timescale factor = 10可能较快得到收敛结果,最终我使用了timescale factor = 20。曾经尝试修改能量方程的时间步长,但是效果不太好。 timescale factor = 1 timescale factor = 10 timescale factor = 100 Technorati : CFX, 收敛, 时间步长
Sun, 26 Aug 2007 01:16:46 +0000
CFX:带压力差的周期性边界条件
带压力差的周期性边界条件(translational periodic boundary with pressure drop)是一种常见的边界条件。比如很多用DNS/LES的管道流动,以及换热器流动。CFX在11.0才正式支持这种边界条件。要定义周期性边界条件,需要定义一个fluid-fluid interface。 阅读了帮助后,发现位移周期性边界条件可以有两种应用(除了模拟周期性条件以外): 1.连接网格。这个时候位移周期性边界条件的作用是和通用连接(general connect with no frame change or pitch change)一样的。CFX的第8个练习题(Tutorial 8: Supersonic Flow Over a Wing)便是使用周期性边界条件来连接三块网格。个人认为,这个时候使用周期性边界条件或通用连接并没有区别,完全是个人的使用习惯问题。 2.模拟porous jump。前面有一篇帖子讲过Fluent里可以定义porous jump,但是CFX不可以。其实这个功能可以使用带压力差的周期性边界条件来实现。具体做法是:1)用周期性边界条件来连接相邻的网格;2)设定一个压力差。具体的公式推导在CFX帮助里已经提到: ANSYS CFX-Solver Modeling Guide | Domain Interface Modeling | Interface Models | Mass and Momentum Models 在这个帮助里还提到,除了在位移周期性边界条件上设定压力差,用户还可以设定质量流量(massflow rate)。通常情况下,设定质量流量会比较难收敛。因为CFX使用的是基于压力的求解器,如果使用质量流量的话,系统需要根据质量流量来收敛得到压力差;而如果设定压力差的话,系统会直接使用压力差来计算,因此比较容易收敛。 Technorati : CFX, 周期性边界条件
Sat, 25 Aug 2007 02:23:00 +0000
Fluent UDF:为什么不能使用C_R_G
在写Fluent UDF时,不能使用C_R_G macro,但是其它mcro,例如C_P_G和C_U_G可以正常使用。求解器是基于压力的隐式耦合求解器。 查看了UDF manual后发现,C_R_G的功能是取出密度梯度,在帮助中有下里面的注解: C_R_G can be used only in the density-based solver and C_P_G can be used only in the pressure-based solver. 也就是说在使用基于压力的求解器时,系统并不支持C_R_G;使用基于密度的求解器时,系统不支持C_R_P。 要解决这个问题,可以根据理想气体方程计算密度,而不是直接从求解器中取密度。 Technorati : Fluent, UDF
Fri, 24 Aug 2007 02:46:00 +0000
GAMBIT:OPENGL_DEVICE_DRIVER not supported
在运行GAMBIT时,会出现下面的警告: Gambit build SP2006032921.Warning: locale not supported by Xlib, locale set to COPENGL_DEVICE_DRIVER not supportedDefaulting to X_DEVICE_DRIVER with standard visual 我在网络上也发现不少问同样问题的帖子。出现这个警告信息的原因是没有安装Hummingbird Exceed 3D。Exceed 3D是一个附加模块,它并不是运行GAMBIT所必须的,因此我们可以忽略这个警告。 Technorati : GAMBIT
Thu, 23 Aug 2007 04:48:00 +0000
CFX:MPICH运行失败
最近遇到了一个并行计算的例子,用serial(1个CPU)和2个CPU的并行计算,求解器可以正常收敛,用4个CPU或者更多,在开始求解第一步时,求解器自动终止,并且没有错误消息。 刚开始是怀疑patitioner的问题,但是CFX的默认patitioner是MeTis,而且通常情况下patitioner的选择只会影响效率,很少会引起求解器失败。 测试使用的MPI(message passing interface)是local MPICH(CFX 10.0, IBM UNIX)。模型有很多interface。 在换用local PVM后,系统可以在8个CPU上正常运行。这个实例说明如果MPICH不能运行的话,可以换用PVM MPI试试。另外这也可能是10.0里面的bug。PVM其实是CFX里默认的MPI。MPICH虽然速度较快,但是可能不如PVM稳定。 Technorati : CFX, MPI
Wed, 22 Aug 2007 05:12:00 +0000
CFX:读取CGNS网格
CGNS(CFD General Notation System, http://www.cgns.org/)是一种通用的CFD文件交换标准。很多软件可以输出、输入CGNS格式。下面的链接提供了一些CGNS例子:http://www.cgns.org/CGNSFiles.html 很多CGNS格式网格是multi-block structred mesh。在读入CFX-Pre之后,在图形界面上,显示为很多block。但是,网格实际上是连续的。用户并不需要用interface把网格连接起来。 在CFX Tutorial 8里面的例子使用的是Patran Neutral格式,需要用interface把三个区域连接起来。 如果不太熟悉这些网格格式的话,可以用简单的方法测试出来: 1)定义一个简单的边界条件,计算一下,看看流场是不是连续。事实上,如果网格不连续的话,在CFX-Solver刚开始求解时,会提示有isolated fluid region。 2)如果网格是不连续的,CFX-Pre会自动把界面处的网格放在Domain Default边界条件里面。如果网格是连续的,界面处的网格会被默认为是连通的,被忽略掉。因此,这要选中Domain Default,看看里面有没有界面网格就行了。 CGNS网格里的界面会被忽略,而Patran网格的界面会被放在Domain Default里,当成是壁面条件。 另外我试用了用ICEM CFD把CGNS structured mesh转换成unstructured mesh。ICEM CFD虽然能完成转换,但是不能更新part名,还需要看看有什么其他解决方法。 Technorati : CFX, CGNS, 网
展开阅读全文