• 255.00 KB
  • 2022-06-16 15:31:21 发布

CFXANSYS使用高手流固耦合至理名言

  • 25页
  • 当前文档由用户上传发布,收益归属用户
  1. 1、本文档共5页,可阅读全部内容。
  2. 2、本文档内容版权归属内容提供方,所产生的收益全部归内容提供方所有。如果您对本文有版权争议,可选择认领,认领后既往收益都归您。
  3. 3、本文档由用户上传,本站不保证质量和数量令人满意,可能有诸多瑕疵,付费之前,请仔细先通过免费阅读内容等途径辨别内容交易风险。如存在严重挂羊头卖狗肉之情形,可联系本站下载客服投诉处理。
  4. 文档侵权举报电话:19940600175。
CFXuserFortran:在每个时间步输出结果问题是这样的,用CFXuserCEL完成变量的同时,还希望CFX输出每个时间步的变量值(比如,每个时间步的压力值)到一个文本文件。虽然在程序中作了一些控制(以避免在每个coefficientloop都输出结果),但是CFX总是在一个时间步输出同样的变量多次。UserCEL的功能其实是和CFX的内置CEL一样的,只是用户化的CEL。UserCEL会在“需要时”,被实时引用。如果userCEL是用来定义边界条件,在一个coefficientloop,userCEL会被运行多次。这样结果也会被多次重复输出。其实CFXuserFortran有两种,第一种是userCEL,它的主要功能是表达式的计算;第二种是junctionboxroutine,它的主要功能是控制计算流程。userCEL会被实时引用,而junctionboxroutine只在用户设定的运行点运行。下图是从CFX帮助里复制的流程图。要完成上面所说的功能,只要定义个junctionboxroutine,然后把运行点设成EndofTimeStep(transientonly)就可以了。http://blog.singinfo.com/?p=116}Fri,14Dec200718:34:57+0000Fluent:计算叶轮功率问题是这样的,Fluent可以不可以计算驱动搅拌器叶轮所需要的功率;如果可以的话,是不是要做面积分。按照物理学上的定义,对于旋转的系统,功率=力矩*转速。通过表面积分(把每个壁面单元,wallface,的功率相加)可以得到整个系统的功率。但是,这个方法比较麻烦,需要用UDF计算,可能比较费时间。既然功率=力矩*转速。转速我们是已经知道的。力矩可以在Fluent->Report->Forces…上计算得到。因此,如果叶轮转动轴是和x,y,z轴其中之一方向一致的话,我们可以直接用Fluent图形界面进行计算。当然如果转动轴方向不和系统坐标一致,UDF还是需要的(有兴趣的朋友可以email给我)。这是因为力矩和转速都是矢量,只是在和系统坐标一致时,才可以方便的找到转动轴方向的力矩分量。具体的做法是这样的:1.Fluent->Report->Forces…把Options选成Moments,把MomentCenter设成转动轴上任意一点(但必须要是转动轴上的一点,否则就错了)。在WallZones里选择所要计算的壁面。然后点击Print。2.Fluent会输出力矩的三个放量,单位是Nm,牛顿米。3.假设转动轴是在x方向的,把x分量乘以转速(单位是弧度每秒),就得到所需的功率了。http://blog.singinfo.com/?p=117}Wed,12Dec200718:58:45+0000在Fluent里设置回流边界条件(recirculationopening)这里的回流边界和流体力学里说的回流是不一样的。在室内通风系统,由很多设备,比如空调室内机,空气过滤器,会从房间内吸走一定量的空气,然后返还等量的空气。这一过程中,可能空气的温度会发生变化(空调室内机),空气的组分会发生变化(空气过滤器)。空气的质量总是等量的。在Airpak里面有一种特别的opening条件,可以定义recirculationopening。在这种边界条件中,必须是两个边界组成一对,质量保持守恒,但是可以有热量和组分的变化。问题是这样的,怎么在Fluent里面定义这样的边界条件呢。要在Fluent里面定义这样的边界条件,需要输入下面两行scheme(和输入TUI一样):(rpsetvar‘icepak?#t)(models-changed)如果觉得每次输入很麻烦的话,可以把这两行放在一个文本文件中,然后把这个文本文件命名为*.scm。在Fluent->File->Read->Scheme…可以读入这个文件,完成设定。完成设定后在Fluent的boundaryconditions面板,就会多出来两个选项,然下图所示(Fluent6.3.26)。具体的做法就不多说了,因为界面还是相当直观的。当然,另外一种办法是用DEFINE_ADJUST UDF来做,但是这个办法会复杂一些。http://blog.singinfo.com/?p=118}Tue,11Dec200719:21:34+0000ESI发布CFD-Ace+v2008.0主要的提升有:1.多面体网格;2.燃料电池模型;3.新的边界层网格生成技术。新闻链接CFX-Ace+网站http://blog.singinfo.com/?p=119}Mon,10Dec200719:43:37+0000在Tgrid里划分多个体网格很多时候我们需要一个网格里面有多个体(例如,定义源项,有转动部分),但是默认情况下Tgrid只划分其中一个体的网格(严格说,只输出其中一个体的网格到*.msh文件)。要解决这个问题,需要改变Tgrid的默认设置:Tgrid->Mesh->Tri/Tet->Controls->Init/Mesh,然后把Non-FluidType选成Fluid(默认选项是dead)。和ICEMCFD一样,Tgrid里面是没有体的。体是由面组成的封闭空间决定的。是用默认设置的话,Tgrid只会把最大的体输出,其余的体设成dead,不会输出。TgridTutorial的第一个练习题就是有关多个体划分网格的。具体操作可以练习第一题。http://blog.singinfo.com/?p=120}Sun,09Dec200719:58:24+0000Fluent安装后不能启动问题是这样的,Fluent安装后不能启动,并且给出下面的错误消息:Theapplicationfailedtoinitializeproperly(0XC0150002).ClickOKtoterminatetheapplication出现这样的问题是因为在64位windows上,Fluent需要Microsoft.NETFramework2.0libraries。需要下载.NETframeworkVersion2.0RedistributablePackage。x64版本可以在微软网站免费下载到。当然最好的方法是,使用windows的自动更新功能,下载安装所有的补丁和升级程序。下载链接:http://msdn2.microsoft.com/en-us/netframework/aa731542.aspxhttp://blog.singinfo.com/?p=121}Sat,08Dec200720:07:51+0000Airpak3.0.16发布Fluent刚刚发布了Airpak3.0.16。在此以前的版本是Airpak3.0.12(链接)。我还没有具体试用过,应该没用功能性的提高,主要是提高稳定性。最重要的是从这个版本起,Airpak开始支持64位系统(Windows和Linux)。用户可以求解更大更复杂的问题。Airpak可以在Fluent用户服务中心下载。http://blog.singinfo.com/?p=115}Fri,14Dec200704:32:00+0000FluentforCatiaV53.1发布包括32位windows和64位windows版本。产品介绍网页:http://www.fluentforcatia.com/Technorati:Catia,Fluenthttp://blog.singinfo.com/?p=114}Wed,10Oct200702:34:00+0000本博客主要介绍ANSYS,CFX,Fluent的最新更新,使用技巧等。同时也有CFD和FEA基本理论,及其他CAE软件的介绍。 CFX11.0的两个CEL新功能1.inside()函数有时候我们需要在不同的区域设置不同的属性。比如,要初始化一个自有表面问题,在volumeA体积比是1,在volumeB体积比是0。在10.0时,需要把这两个区域防近两个domain,然后对各自domain进行初始化。这样,需要建立domaininterface来连接domain。可能只能使用GGI来连接,这样精度就会受到影响。在11.0,inside()函数可以方便解决这个问题。inside()函数的功能和step()函数的功能类似(if…else…语法)。如果在指定区域内,返回1;否则,返回0。首先,找到volumeA和B的原始区域名。只要把树形目录里的mesh展开,就可以看到下面所有的面和体区域。面区域以F开头。体区域以B开头。然后,写出inside()@REGION:B****函数。最后把这个CEL函数放到模型中。下面是一个利用inside()函数进行初始化的例子:Initial_C=1[kgm^-3]*inside()@REGION:B3872在区域B387内,初始值为1;否则为0。2.REGION:语法在10.0时,基于区域的函数如area()@只能基于已定义边界条件的面。也就是说,@后面只能跟边界条件名,而不能是网格中的原始区域(primitiveregion)。这样,如果要定义基于原始区域的函数,而这个区域不是边界条件时,就会比较麻烦。11.0提供的REGION:语法可以方便的解决这个问题。其实REGION:的用法已经在上面的例子解释了,这里就不多说了。Technorati:CEL,CFXhttp://blog.singinfo.com/?p=109Sun,07Oct200705:03:29+0000简化Airpak模型的小经验Airpak虽然提供了非常强大的划分网格功能,不过如果不认真控制的话,还是会产生非常大的网格。最近遇到一个问题在32位PC上,Airpak不能显示大于一百万网格的PMV和PPD。我猜想PMV和PPD结果并没有保存在最终结果中,需要暂存在内存中,因此对内存的要求会增加。在使用Airpak的过程中,还遇到过其它和网格质量相关的问题。网格质量低的话,会导致收敛问题。下面总结一些我发现的经验(有新发现的话,持续添加)。1.尽量使用Hexaunstructured方法。Tetra生成的单元数最多,HexaCartesian次之,Hexaunstructured最少。HexaCartesian不能划分弯曲、倾斜的几何形状,不推荐使用。Tetra可以用在复杂的几何形状。Tetra生成需要很长时间。Hexadominant是指混合使用Hexaunstructured和Tetra。2.少用CAD,多用polygon。虽然Airpak3.0允许直接使用CAD几何形状,但是由于CAD本身的缺陷或者过于复杂,生成Tetra网格会很慢,并且单元数太多,浪费计算资源。用Polygon可以近似复杂的形状,进而生成效率高的Hexaunstructured网格。3.使用Non-conformalMeshing。如果room里有比较小的细节的话,把这些细节放到assembly,然后meshseperately,能够显著减少单元数。网格质量也能大大提高。4.控制Minimumgap。默认的minimumgap是1毫米。在模拟大的流域时,如果一些object没有对齐,会生成非常大纵横比的单元,影响收敛。如果object很多,对齐困难的话,使用大一点的minimumgap就可以解决这个问题。5.使用Perobjectcontrol。可以更好的控制,物体旁边的边界层等。6.检查网格质量。网格质量的第一项FaceAlignment非常重要,如果有很多单元在0-0.15的范围的话,会很难收敛或发散。把下面的max改成0.15,然后点击柱状图,可以检查低质量单元的位置。7.如果有收敛问题,可以暂时deactivate所有object,然后依次activate进行测试,找出问题所在。Airpak的帮助文件对网格生成有比较详细的阐述,如果认真阅读的话,会有很大的帮助。网格生成是CFD模拟中最重要的环节之一,因此磨刀不误砍柴工。Technorati:Airpak,网格http://blog.singinfo.com/?p=104Sat,06Oct200703:50:23+0000 CFX:用动网格来转动固体表面在一些CFD模拟中,用户需要测试流场对一系列尺寸的反应。比如所当管道的直径为10mm,12mm,和14mm时,流场各有什么不同。DesignModeler里面的parameter可以做到这一点。如果使用CADinterface的话,DesignModeler可以读进上游软件的parameter,比如Pro/E。这样做的问题是每次都需要重新生成网格(用DesignXplorer可以自动化这一过程)。其实我们可以用CFX的Meshdeformation功能实现这个目的。问题是这样的,要测试控制叶片在0-5度内,每转动一度时流场的不同。做法是这样的:1.在domain上设定meshdeformation。2.设定所有的wall边界。如果没有移动,设置成Unspecfied;如果有移动,设置成SpcifiedLocation。要计算出转动后的location,需要用CEL进行坐标变换。下面的连接介绍了转动坐标变换的公式:http://www.kwon3d.com/theory/transform/rot.html如果转动轴和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)ENDENDENDTechnorati:CFX,动网格http://blog.singinfo.com/?p=105Fri,05Oct200704:48:00+0000CFX:openingtemperaturevs.statictemperature前面一篇帖子讨论了在CFX里面应该使用什么样opening边界条件。当时只是讨论了动量方程边界条件,没有讨论能量方程边界条件。问题是这样的,在CFX做通风系统模拟时,环境温度是32度,流场内只有热源,没有热量损失。根据常识,温度不可能低于32度,但是实际模拟结果却有部分区域温度低于32度。问题是稳态的,我只算了两个迭代,在CFX-Post里面发现温度的globalrange是低于32度的。但是在切面上很难看到那些区域温度低于32度。使用isosurface功能可以方便的看到低温区域。低温区域位于一个opening边界条件旁边。检查了opening的定义后,发现温度定义为openingtemperature。也就是说,如果空气流入时,totaltemperature是32度;如果空气流出时,statictemperature是32度。换句话说,如果空气流入,statictemperature实际上低于32度。空气流速越大,statictemperature越低。这样就会造成没有热损失,温度却低于32度的情形。在做通风系统模拟时,opening条件应该统一设成静压和静温。Technorati:CFX,边界条件http://blog.singinfo.com/?p=106Thu,04Oct200705:45:00+0000用CFX模拟二维问题CFX只有3d求解器,在求解二维问题时,需要有特别的设置。当然,Fluent有专门的2d求解器,求解速度要快得多。二维问题可以分为平面二维(planar2D)问题和轴对称二维(axisymmetric2D)问题。1.几何形状平面二维:在DesignModeler里面,extrude二维sketch。延伸的长度不重要,但是厚度要比较薄。轴对称二维:在DesignModeler里面,revolve二维sketch。转动的角度部重要,1度到5度比较合适。2.网格平面二维:在CFX-Mesh里面,把Option->MeshingStrategy改成Extruded2DMesh,NumberofLayers=1,然后定义ExtrudedPair,Option=Translational轴对称二维:在CFX-Mesh里面,把Option->MeshingStrategy改称Extruded2DMesh,NumberofLayers=1,然后定义ExtrudedPair,Option=Rotational,并定义轴。生成的网格主要由锲形(prism)网格组成。轴对称情况下,靠近轴的地方会有退化网格。3.定义 二维问题使用和三维问题类似的边界条件。对前面和后面,定义成symmetry(对称)边界条件就可以了。如果没有定义成对称条件的话,CFX-Solver回提示不能正确计算梯度,求解器会自动中止。Technorati:CFX,二维http://blog.singinfo.com/?p=107Wed,03Oct200707:27:00+0000用CFX模拟流体在不同材料里的扩散在生物医药的应用上,有时候需要模拟药物在不同材料里的扩散。流体本身没有流动,但是药物会从高浓度区域扩散到低浓度区域。要求解这个问题,不需要求解速度场和对流项。只要求解一个扩散方程。因此自己开发程序或者用matlab可能会更适合。用CFX可以模拟比较复杂的几何形状。1.不求解动量方程。Insert->Solver->ExpertParameter->ModelOver-rides,把solvefluid的选项改成f。2.不求解湍流方程。把湍流模型设成laminar3.不使用任何其他模型。没有传热,多相流等。4.定义一个Additionalvariable。然后再domain里面激活这个additionalvariable,使用diffusivetransportequation。并且定义该additionalvariable在里面的扩散系数。5.定义边界条件。在CFX里,默认情况下,CFX-Pre会对所有的domain使用同样的设定。如果要给不同的domain设定不同的扩散系数的话,需要作一个高级设置。Edit->Options->CFX-Pre->EnableBetaFeatures。最后在树形目录的Simulation上点右键,选空ConstantDomainPhysics。这样便可以给不同的区域顶以不同的扩散系数了。当然,在做网格时,要先把domain划分好。Technorati:CFX,扩散http://blog.singinfo.com/?p=108Mon,01Oct200707:56:00+0000CFX:InsufficientCatalogueSize前面一篇帖子,介绍了CFX求解器堆栈长度不足的处理。最近遇到一个实例,在进行瞬态计算时,CFX报告了下面的错误消息:+——————————————————————–+|***INSUFFICIENTCATALOGUESIZE***||ACTIONREQUIRED:Increasethefilecataloguesize.||IfthesituationpersistspleasecontacttheCFXCustomerHelpline||givingthefollowingdetails:-||Currentcataloguesize:50822|+——————————————————————–+这是由于CFX的存储管理系统(MemoryManagementSystem,MMS)没有分配足够的内存给所要求解的问题。这种问题是不常见的。有两个办法可以解决这个问题,在CFX-Pre里面用CCL控制,或者在CFX-Solver里,配置相应的参量。它们的作用是一样的。1.在CFX-Pre里用CCL控制在SolverControl上点右键,然后选择”EditinCommandEditor”。在CCL里插入下面的语句:CatalogueSizeMultiplier=1.2这句定义可以直接放在”SOLVERCONTROL”下面。点击Process确认。2.在CFX-Solver里配置参量如果是用命令行提交CFX,在CFX5solve命令里加上”-size-mms1.2″控制。这个控制是让MMS请求1.2倍的内存。根据情况不同,可以使用更大的值。如果是用图形界面提交CFX,在solver标签下面,可以输入advancedarguments。[...]http://blog.singinfo.com/?p=110Sun,30Sep200705:40:00+0000配置windows系统CFX并行计算最近被问到怎么给windows系统配置CFX并行计算。其实CFX的并行计算功能是很容易配置的。32位windows上使用mpich,64位windows上使用mpich2。 如果已经安装了ANSYSWorkbench的话,帮助里会有一本InstallationandLicensingDocumentation。在里面搜索mpich会看到具体的配置方法:1.在CFX-Launcher上,Tools->CommandLine2.安装mpi2.132位系统,输入:cfx5parallel-install-mpich-service2.264为系统,输入:cfx5parallel-install-mpich2-service3.注册用户3.132位系统,输入:cfx5parallel-register-mpich-user3.264位系统,输入:cfx5parallel-register-mpich2-user4.输入用户名和密码。个人认为这个用户名和密码并不是很重要,可以输入任意值。如果使用分布式并行计算的话,还需要安装rsh服务和配置防火墙。对于前者,安装帮助上的说明安装就可以了;对于后者,通常我是直接把windows防火墙关了。另外,在windows上使用mpich要比pvm快很多很多。用pvm不需要特别的设置。Technorati:CFX,并行计算http://blog.singinfo.com/?p=111Sat,29Sep200706:08:00+0000ICEMCFD:extrudemesh操作的sidepartname问题:………………………………………………….Subject…:关于ICEM的一个问题………………………………………………….请问通过平面网格通过extrudemesh操作,转化为六面体网格以后,边界条件(part)不能从原来的线对应成面,是什么原因?回答:请参见附件的截图。设定一个sidepartname就可以了。http://blog.singinfo.com/?p=112Fri,28Sep200706:17:00+0000ANSYS11.0servicepack1发布ANSYS11.0SP1已经发布了。ANSYS,Workbench和ICEMCFD已经支持WindowsVista,CFX对WindowsVista的支持是beta版本。Technorati:ANSYS,Vistahttp://blog.singinfo.com/?p=103Tue,02Oct200713:12:07+0000本博客主要介绍ANSYS,CFX,Fluent的最新更新,使用技巧等。同时也有CFD和FEA基本理论,及其他CAE软件的介绍。CFX:如果确定timescaleCFX的求解器是比较特别的,和普通教科书上的不太一样。它使用耦合求解器(coupledsolver),并且使用求解瞬态方程的方法来求解稳态问题。时间步长(timescale)是影响收敛的最重要的因素。时间步长在耦合求解器里的重要性,相当于松弛因子(underrelaxationfactor)在分离求解器(segregatedsolver)里的重要性。前面有一篇帖子,讲了时间步长在流固耦合传热问题中的作用。打个比方,在开车时。如果速度很慢,就会比较安全,但是需要比较长的时间才能到达目的地;如果速度很慢,就会节省时间,但是可能会不安全。同样的,在用CFX求解时,如果timescale很小,收敛会很稳定,但是需要很多的迭代,速度较慢;如果timescale很大,需要的迭代次数较少,但也可能引起求解器不稳定,甚至发散。因此合适的timescale对于收敛是很重要的。通常情况下,timescale可以根据(特征时间=特征长度/特征速度)这个公式算出来。但是对于复杂的流场而言,直接推算出合适的时间步长还是有一定难度的,需要试出合适的timescale。在CFX里,autotimescale是让系统自动估算出timescale,而physicaltimescale是由用户直接输入timescale。通常情况下,系统估算出的autotimescale过于保守,用户需要使用较大的physicaltimescale。另外,由于使用耦合求解器的缘故,CFX一般能在100-200个迭代步内收敛。如果在200步内还没有收敛的话,需要考虑改大timescale,而不是让系统跑更多的迭代(例如,把最大迭代数设成1000),这样会浪费很多宝贵的时间。 最近碰到一个室内空调系统的模拟问题,由于浮力(buoyancy)的存在,动量方程和能量方程的耦合会导致收敛困难。使用的是CFX11.0。11.0提供了时间步长系数(Timescalefactor)这个新选项,可以方便的测试不同的timescale。timescalefactor=10代表timescale=10*autotimescale。上面所说的空调模拟问题,我测试了timescalefactor=1、10、100三种情况。平均残差(RMSresidual)和全局不平衡(globalimbalance)的曲线图附在下面。从曲线图可以清楚地看出,使用小的时间步,收敛曲线呈波浪形,或收敛缓慢,全局不平衡较大;使用大的时间步,收敛曲线呈”之”字形上下跳动。下面这个例子,timescalefactor=10可能较快得到收敛结果,最终我使用了timescalefactor=20。曾经尝试修改能量方程的时间步长,但是效果不太好。timescalefactor=1timescalefactor=10timescalefactor=100Technorati:CFX,收敛,时间步长http://blog.singinfo.com/?p=97Sun,26Aug200701:16:46+0000CFX:带压力差的周期性边界条件带压力差的周期性边界条件(translationalperiodicboundarywithpressuredrop)是一种常见的边界条件。比如很多用DNS/LES的管道流动,以及换热器流动。CFX在11.0才正式支持这种边界条件。要定义周期性边界条件,需要定义一个fluid-fluidinterface。阅读了帮助后,发现位移周期性边界条件可以有两种应用(除了模拟周期性条件以外):1.连接网格。这个时候位移周期性边界条件的作用是和通用连接(generalconnectwithnoframechangeorpitchchange)一样的。CFX的第8个练习题(Tutorial8:SupersonicFlowOveraWing)便是使用周期性边界条件来连接三块网格。个人认为,这个时候使用周期性边界条件或通用连接并没有区别,完全是个人的使用习惯问题。2.模拟porousjump。前面有一篇帖子讲过Fluent里可以定义porousjump,但是CFX不可以。其实这个功能可以使用带压力差的周期性边界条件来实现。具体做法是:1)用周期性边界条件来连接相邻的网格;2)设定一个压力差。具体的公式推导在CFX帮助里已经提到:ANSYSCFX-SolverModelingGuide|DomainInterfaceModeling|InterfaceModels|MassandMomentumModels在这个帮助里还提到,除了在位移周期性边界条件上设定压力差,用户还可以设定质量流量(massflowrate)。通常情况下,设定质量流量会比较难收敛。因为CFX使用的是基于压力的求解器,如果使用质量流量的话,系统需要根据质量流量来收敛得到压力差;而如果设定压力差的话,系统会直接使用压力差来计算,因此比较容易收敛。Technorati:CFX,周期性边界条件http://blog.singinfo.com/?p=98Sat,25Aug200702:23:00+0000FluentUDF:为什么不能使用C_R_G在写FluentUDF时,不能使用C_R_Gmacro,但是其它mcro,例如C_P_G和C_U_G可以正常使用。求解器是基于压力的隐式耦合求解器。查看了UDFmanual后发现,C_R_G的功能是取出密度梯度,在帮助中有下里面的注解:C_R_Gcanbeusedonlyinthedensity-basedsolverandC_P_Gcanbeusedonlyinthepressure-basedsolver.也就是说在使用基于压力的求解器时,系统并不支持C_R_G;使用基于密度的求解器时,系统不支持C_R_P。要解决这个问题,可以根据理想气体方程计算密度,而不是直接从求解器中取密度。Technorati:Fluent,UDFhttp://blog.singinfo.com/?p=99Fri,24Aug200702:46:00+0000GAMBIT:OPENGL_DEVICE_DRIVERnotsupported 在运行GAMBIT时,会出现下面的警告:GambitbuildSP2006032921.Warning:localenotsupportedbyXlib,localesettoCOPENGL_DEVICE_DRIVERnotsupportedDefaultingtoX_DEVICE_DRIVERwithstandardvisual我在网络上也发现不少问同样问题的帖子。出现这个警告信息的原因是没有安装HummingbirdExceed3D。Exceed3D是一个附加模块,它并不是运行GAMBIT所必须的,因此我们可以忽略这个警告。Technorati:GAMBIThttp://blog.singinfo.com/?p=100Thu,23Aug200704:48:00+0000CFX:MPICH运行失败最近遇到了一个并行计算的例子,用serial(1个CPU)和2个CPU的并行计算,求解器可以正常收敛,用4个CPU或者更多,在开始求解第一步时,求解器自动终止,并且没有错误消息。刚开始是怀疑patitioner的问题,但是CFX的默认patitioner是MeTis,而且通常情况下patitioner的选择只会影响效率,很少会引起求解器失败。测试使用的MPI(messagepassinginterface)是localMPICH(CFX10.0,IBMUNIX)。模型有很多interface。在换用localPVM后,系统可以在8个CPU上正常运行。这个实例说明如果MPICH不能运行的话,可以换用PVMMPI试试。另外这也可能是10.0里面的bug。PVM其实是CFX里默认的MPI。MPICH虽然速度较快,但是可能不如PVM稳定。Technorati:CFX,MPIhttp://blog.singinfo.com/?p=101Wed,22Aug200705:12:00+0000CFX:读取CGNS网格CGNS(CFDGeneralNotationSystem,http://www.cgns.org/)是一种通用的CFD文件交换标准。很多软件可以输出、输入CGNS格式。下面的链接提供了一些CGNS例子:http://www.cgns.org/CGNSFiles.html很多CGNS格式网格是multi-blockstructredmesh。在读入CFX-Pre之后,在图形界面上,显示为很多block。但是,网格实际上是连续的。用户并不需要用interface把网格连接起来。在CFXTutorial8里面的例子使用的是PatranNeutral格式,需要用interface把三个区域连接起来。如果不太熟悉这些网格格式的话,可以用简单的方法测试出来:1)定义一个简单的边界条件,计算一下,看看流场是不是连续。事实上,如果网格不连续的话,在CFX-Solver刚开始求解时,会提示有isolatedfluidregion。2)如果网格是不连续的,CFX-Pre会自动把界面处的网格放在DomainDefault边界条件里面。如果网格是连续的,界面处的网格会被默认为是连通的,被忽略掉。因此,这要选中DomainDefault,看看里面有没有界面网格就行了。CGNS网格里的界面会被忽略,而Patran网格的界面会被放在DomainDefault里,当成是壁面条件。另外我试用了用ICEMCFD把CGNSstructuredmesh转换成unstructuredmesh。ICEMCFD虽然能完成转换,但是不能更新part名,还需要看看有什么其他解决方法。Technorati:CFX,CGNS,网格http://blog.singinfo.com/?p=102Tue,21Aug200705:17:00+0000Workbench环境下CFX-Post背景色的设定CFX11.0提供的report功能可以快速的在CFX-Post里后处理结果并且发布为html格式。用户可以方便的更新模型的方向、显示方式等选项。Report里的设定可以重复使用在相同的模型上,而不必每次重复操作。用户可以更改report开头的ANSYS图标(logo),但是每个图片右上角的ANSYS图表是去不掉的(如果有谁知道怎么去掉这个图标,欢迎email给我)。 问题是这样的,默认的图片背景色是Workbench默认的蓝白过渡背景色,通常情况下,我们可以通过CFX-Post->Edit->Options来修改(如下图所示),但是实际上用户看不到改变背景色的选项(另一幅截图)。当CFX单独运行时,选项如第一幅图;当CFX在Workbench里运行时,选项如第二幅图。当在Workbench里运行时,需要通过修改Workbench的背景色来设定CFX背景色。[Project]tab->Tools->Options->CommonSettings->GraphicsStyle。一点题外话,CFX-Post的report功能还是新功能,还不太稳定。比如在comment里插入的图片在发布后不能正常显示。这个问题可能在以后的版本中得到解决。Technorati:CFX,Workbench,背景色http://blog.singinfo.com/?p=96Tue,14Aug200703:21:24+0000Flomerics发布EFD8新闻连接在这里。EFD是EngineeringFluidDynamics的缩写,基于和通用CFD同样的数学理论。同时和CAD软件有更好的协作性,使用也相对容易。Technorati:EFD,Flomericshttp://blog.singinfo.com/?p=95Sun,12Aug200712:36:51+0000CFX:最大堆栈长度在求解很大的CFX模型时,可能会遇到下面的错误信息#001100279(其实在正常求解时,求解器也会给出内存分布的信息)。这个信息其实并不是因为系统物理内存不够。而是由于实型堆栈(realstack)容量不足。在CFX里,堆栈的最大容量是2^31-1。任何堆栈大于这个长度,系统都会给出这个错误信息,即使系统内存足够。这个时候解决问题的唯一办法是使用并行计算。怎么解读这个错误信息?错误消息的第一行是:实型堆栈长度为2481110.5千字(word),平均每个节点需要318.47字,每个单元需要330.24字,总共需要的内存是9691838.0千字节,平均每个节点需要1273.89字节。这个模型使用的是六面体网格,因此单元和节点的比例为1:1。模型有大概8百万节点。需要9.6GB内存来存储实型变量,2.7GB内存来存储整型变量,总共需要12GB多内存。在CFX里,任何一个堆栈的长度都不能超过2147483647。+——————————————————————–+|MemoryAllocatedforRun(Actualusagemaybeless)|+——————————————————————–+DataTypeKwordsWords/NodeWords/ElemKbytesBytes/NodeReal2481110.5318.47330.249691838.01273.89Integer712176.891.4194.792781940.8365.66Character2480.0.32.332421.9.32Logical40.0.01.01156.2.02Double1208.0.16.169437.51.24+——————————————————————–+|ERROR#001100279hasoccurred[...]http://blog.singinfo.com/?p=90Sun,05Aug200706:33:08+0000CFX:浮力和对称边界条件前面有两篇文章(文章1、文章2)提到大气边界层的定义。流场的顶面(天空)可以定义成对称边界条件。在有些情况下,可能需要考虑浮力项,比如在大气边界层内有一个热源。在Domain上加上浮力项后,求解器可能会给出下面的错误信息:ERROR#001100279hasoccurredinsubroutineErrAction.Message:Whenbuoyancyisactive,allsymmetryplanenormalsmustbeperpendiculartothegravityvector.WritingcrashrecoveryfileERROR#001100279hasoccurredinsubroutineErrAction.Message:StoppedinroutineASS_GLOB_SYM起初我以为这是由于软件问题,在把expertparameter里的vectorparallel tolerance设为90或大于90后,可以让求解器继续运行。这个错误信息说的是,如果激活浮力项,所有对称面的法线方向必须要和重力矢量垂直。也就是说对称面必须和重力方向平行。因为有浮力项时,在重力方向会有对流速度。如果对称面和重力不平行的话,在对称面上会有一个垂直于该面的速度分量。而对称面的物理意义是速度场只和该面相平行。这两点之间是矛盾的,因此对称面必须和重力方向相平行。因此要解决上面的问题,需要定义一个合适的边界条件,而不是修改expertparameter。Technorati:CFX,对称边界条件,浮力http://blog.singinfo.com/?p=91Sat,04Aug200707:22:00+0000本博客主要介绍ANSYS,CFX,Fluent的最新更新,使用技巧等。同时也有CFD和FEA基本理论,及其他CAE软件的介绍。Airpak收敛问题的解决由于Airpak使用Fluent求解器,默认情况下对流项使用一阶迎风(firstorderupwind)离散格式。通常情况下,收敛性还是很好的。最近帮忙解决了几个收敛问题,现在把解决方法列在下面,本帖将持续更新。1.slackvalue。在使用Airpak3.0做non-conformalmesh的时候,需要填写slack值。slack值可以让assembly的范围比Airpak对象稍大。有时候,assembly和room之间会有一个很小的缝隙,使网格质量很差。由于slack值是一个相对值,当更新了模型的尺寸后,assembly的大小也会随之变化,这样也容易导致小的缝隙。2.多面体(ploygon)高度的差别。比如有两个多面体,起始高度都为z=0m。如果第一个多面体的高度为10m,第二个多面体的高度为10.01m。这两者之间会有0.01m的缝隙,网格质量会很低。要检查网格质量,可以检查facealignment。把网格质量范围设成0.0到0.15之间,检查有没有质量低于0.15的网格。如果有的话,可以点中相应的柱状图,检查低质量网格所在的位置。另外alignface功能可以帮助精确对齐表面。另外使用较小的动量和压力松驰因子也有助于加快收敛。http://blog.singinfo.com/?p=92Fri,03Aug200707:41:00+0000LES/DES里可以用对称或周期边界条件吗?很多时候,我们可以使用对称性边界条件或者周期性边界条件来简化问题、节省计算时间。通常情况下,对称性或周期性是指几何形状和流场两者都具有对称性/周期性。当然,对称性也适用于几何形状不对称,而流场对称的情形(速度和边界平行,标量在垂直于边界的方向上梯度为0)。在做LES/DES时,通常不能使用对称或周期性边界条件。因为平均速度场也许是对称或周期性,但是湍流是没有规律、紊乱的,它们不可能是对称或周期性的。如果用LES/DES模拟透平机械内部或者汽车外部流动,需要模拟所有的叶片以及整个汽车,而不可以用对称或周期性条件来进行简化。但是当边界距离重要区域比较远的时候,对称性/周期性边界条件是可以使用的。比如做汽车外部流场分析时,需要建立一个相当大的外部流畅,除了进口、入口和地面外,两个侧面和顶面可以使用对称条件。虽然这种情况下对称边界条件并不成立,但是相对而言,对称条件比较接近实际的远场流场。同样,有的时候位移周期性边界条件也是可以接受的。比如,用DNS/LES模拟管道内流场时,带有压力差的位移性边界条件是很常用的。Technorati:DES,LES,周期性,对称,边界条件http://blog.singinfo.com/?p=93Thu,02Aug200709:47:00+0000 Flowizard3.0.4发布Fluent的产品发布好像都是无声无息的,只有经常查看用户服务中心才知道。最新版本的Flowizard是3.0.4,发布于7月。NewFeaturesinFloWizardV3.0.4CADConnectionsFloWizardV3providesCADconnectionsforPro/ENGINEER,SolidWorks,AutodeskInventor,andUGS’NXusers.TheseCADconnectionsletyousendyourgeometryfromyourCADsoftwaretoFloWizardwiththeclickofabutton.ThisreducesthetimeittakestogenerateCFDmodelsfromyourCADmodels.Onelicense[...]http://blog.singinfo.com/?p=94Wed,01Aug200713:32:00+0000我的email地址昨天夜里把我的email地址写在一片帖子里,不到10个小时就有垃圾邮件。终于找了一个网站,把email地址做成图片。刚刚看了一些CFD的幻灯片,CFD的应用还是很浩渺的!有问题大家一起讨论。Technorati:emailhttp://blog.singinfo.com/?p=87Sun,29Jul200706:53:07+0000CFX:求解时实时显示阻力系数和升力系数问题是怎么用CEL计算阻力系数(dragcoefficient,cd)和升力系数(liftcoefficient,cl),并且在求解时实时显示cd和cl。碰巧遇到一个例子,现在把CEL贴在下面。应该把这个CEL稍微修改一下,可以轻松应用到其他模型上。在CFX-Pre里定义一个新的monitorpoint的方法是点击”CreateOutputFilesandMonitorPoints”图标,然后到Monitortab下面把CEL表达式定义成一个monitorpoint。LIBRARY:CEL:EXPRESSIONS:DragForce=2*(force_x()@DLRF6*cos(alpha)+force_z()@DLRF6*sin(alpha))DynamicPres=0.5*ReferenceDensity*Vinlet^2LiftForce=max(2*(force_z()@DLRF6*cos(alpha)-force_x()@DLRF6*sin(alpha)),1[N])MachNumber=0.75PitchingMoment=torque_y()@DLRF6*2PitchingMomentatQuaterChord=-1*(-torque_y()@DLRF6*2/LiftForce-QuaterChordLocation)*LiftForceQuaterChordLocation=0.1579[m]ReferenceArea=0.1453[m^2]ReferenceChord=0.1412[m]ReferenceDensity=StaticPres/(287[JK^-1kg^-1]*Temp)ReferenceViscosity=ReferenceDensity*ReferenceChord*Vinlet/ReynoldsNumberReynoldsNumber=3000000StaticPres=119750[Pa]Temp=293.0[K]Timestep=1e-5[s]+TimeStepRamp(atstep)*2e-4[s]ToTemp=[...]http://blog.singinfo.com/?p=89Sun,24Jun200715:58:00+0000ANSYS:部分浸没固体模态分析模态分析是常见的动态分析形式,通常我们都忽略周围流体对固体模态的影响。在一些结构中,固体会部分浸没在油中。液体可能会影响固体的频率。ANSYSVerificationManual里的VM177介绍了固体全部浸没在液体中时的模态分析方法。可以使用频率扫描或者模态分析的方法,找到共振频率。仿照这个例子,我做了一个圆柱形固体部分浸没在水中的模态分析的例子。APDL帖在下面。具体的理论可以在流体分析部分的声学模块里找到。模块分析时,要使用unsymmetric方法来提取模。我对结构分析不是很了解,不知道这样分析是否合理;这只是一个简单的练习,网格质量和求解控制不是很好。欢迎指教。我的朋友帮我比较了一个有水和没有水时候模态分析结果。其实对这个例子,流体对结果的影响很小。提示:把文件保存为demo.inp,运行会比较方便。 finish/clear,start*ABBR,INPUT,/input,demo,inp/prep7et,1,fluid30!interfacefluidet,2,solid45!solidet,3,fluid30,,1!non-interfacefluidmp,ex,1,1mp,dens,1,1000mp,sonc,1,1482mp,ex,2,2e11mp,dens,2,7850mp,nuxy,2,0.3r,1,1CYL4,,,0.01CYL4,,,0.05AOVLAP,allVEXT,all,,,0,0,0.05,,,,SMRT,4type,3MAT,1REAL,1VSWEEP,2type,2MAT,2VSWEEP,1EXTOPT,ESIZE,10,0VOFFST,2,0.05CSYS,1NSEL,S,LOC,X,0.01!NPLOTESLN,sESEL,R,TYPE,,3!EPLOTEMODIF,all,TYPE,1,allselCSYS,1NSEL,S,LOC,X,0.01NSEL,R,LOC,Z,0,0.05ESEL,S,TYPE,,1SF,ALL,FSIallselNSEL,S,LOC,X,0.05D,ALL,PRES,0.0NSEL,S,LOC,Z,0NSEL,R,LOC,x,0,0.01D,all,,,,,,ALL,,,,,Allselfinish/solutionantype,modalmodopt,unsym,10,-1mxpand,10solvefinishTechnorati:ANSYS,声学,模态分析http://blog.singinfo.com/?p=88Sat,23Jun200715:48:00+0000Workbench里怎么划分non-manifoldgeometry网格?在Workbench里,manifoldgeometry是指对三维体而言,每个边只和两个面相连接。这是几何形状里最常见的一种拓朴结构。但是有些情况下,可能会生成non-manifoldgeometry,就是说有的边会和超过两个面相连接。通常的基本形状如长方体、圆柱体都是manifoldgeometry。但是如下图所示的复杂情况,会有non-manifoldgeometry。左图最上面一条边和四个面相连接。要解决这个问题,可以把体切成两份,这样就把几何形状转换成manifoldgeometry。对于二维情况而言,manifoldgeometry是指一个点只和两条边相连接;而non-manifoldgeometry是指一个点和超过两条边相连接。在CFX-Mesh的帮助里明确指出CFX-Mesh是不支持non-manifoldgeometry。要划分non-manifoldgeometry生成CFD网格,除了上面提到的切割方法外,还可以试试用patchindepedent方法来划分网格。Patchindependent方法是Workbench11.0的新功能,实际是使用ICEMCFDOctree的内核来划分网格,因此对几何形状的要求相对较低,网格划分成功率较高。具体做法是这样的:1.在DesignModeler里面定义NamedSelection。因为在目前版本的workbench,无法在划分网格是定义表面的名字(CFX-Mesh除外)。在把几何形状传递到Meshing以前,要在Projecttab下,选中DesignModeler,然后在左侧选项(DefaultGeometryOptions)中选中NamedSelection,并把参量中的NS去掉(不使用前缀)。2.把几何形状转到Meshing下面,插入一个新的网格划分方法(Method),选中所要划分网格的几何形状,Method=Tetrhedons,Algorithm=PatchIndependent,根据实际情况定义最大(MaxElementSize)和最小(MinimumSizeLimit)单元大小。当然也可以根据需要定义一些sizecontrol。由于Patch-Indepent和CFX-Mesh比较适合CFD应用,所以我没有测试其它方法。CFX-Mesh是一个入门级的产品,总体而言对几何的要求较高。Technorati:Non-manifoldgeometry,Workbench,网格http://blog.singinfo.com/?p=82Fri,22Jun200702:58:00+0000CFX:怎么把用模拟结果作为初始条件在CFX里,我们可以把前一次模拟结果输出为*.csv文件,然后作为后一次模拟的边界条件。有时,可能需要把前一次模拟结果作为初始条件。例如,在做污染物扩散模拟时,可能需要把污染物的浓度保存下来,作为下一次模拟的初始条件。最方便的方法是,在Solver-Manager里定义求解时,使用*.res作为初始条件。但是,使用这种方法,不光会初始化浓度,还会初始化速度、压力等。要解决这样的问题,可以使用three-dimensionalinterpolation(三维插值)功能。做法是这样的:1.在CFX-Post里面保存所要初始化的变量为*.csv文件。CFX-Post->File->Export…编辑*.csv文件,删除开始部分的描述性文字。2. 在CFX-Pre里定义一个三维插值函数。工具栏上的fx图标(DefineaUserFunction(InterpolationorUserFortran))。定义一个名字,Option=Interpolation(DataInput),ArgumentUnit=三个长度单位,ResultUnit=所要插值的变量单位,InterpolationDataOption=ThreeDimensional,在下面的列表框点右键,选择Import,然后读入刚才的*.csv文件。3.在初始化窗口,使用刚才定义的三维插值函数即可。如果刚才定义的函数为initialconcentration,那么在浓度初始值出应填initialconcentration(x,y,z)。除了三维插值函数外,CFX还提供了一维插值函数,可以应用于和时间相关的插值。Technorati:CFX,三维插值函数,初始化http://blog.singinfo.com/?p=81Wed,20Jun200721:04:00+0000大气边界层模拟边界条件的设定前面一篇文章提到了在Airpak里定义大气边界层边界条件的方法。这篇文章只提到了进口处的设定,而没有提到流场其他面的边界条件的设定。最近在网上看到一篇相当流行的文章:《建筑群流场模拟中边界条件的设定》,对边界条件的设定进行了比较详尽的论述。个人在进行试用后,觉得实际应用中会分成以下两种情况:1.如左图所示,来风方向和迎风面垂直。这种情况底面和顶面分别设成壁面和对称面。图中所示的四个面分别设成:左面为入口,使用速度和湍流函数;右面为出口,只定义压力;上面和下面设成对称面。2.如右图所示,来风方向和迎风面有一个角度。这种情况底面和顶面的情况和前面一样。图中所示的四个面分别设成:左面和上面为入口,使用速度和湍流函数;右面和下面为出口,只定义压力。通常情况下,我们只看到情形1。但是如果要测试不同的来风方向,情形2会比较方便,因为不用重复定义网格。尤其在Airpak里,很难定义倾斜的流域。在使用CFX时,有人会把图中所示的对称面设成opening。这样其实和实际情形是不一致的,因为opening需要定义压力条件,而实际上在对称面上压力并不是恒定的。如果不定义对称面的话,定义成入口条件也是可以的,定义速度和湍流函数。但是个人觉得使用对称面条件比较容易收敛。在模拟大气边界层的时候,另外一个问题是CFD得到的速度场在水平方向并不是恒定的。在入口处定义的速度函数会随着流动而改变,也就是在下游大气边界层和原先定义的函数会不一样。在一些高精度的模拟中,这种误差可能会影响精度。今天看到一篇文章摘要,也许能解决这个问题。Technorati:CFD,大气边界层http://blog.singinfo.com/?p=80Tue,19Jun200719:35:00+0000Gambit2.4.6发布Gambit2.4现在已经可以在Fluent用户服务中心下载了。GAMBITVersion2.4.6-ReleaseNotesGAMBIT2.4includesincrementalimprovementsingeometryandmeshingoperations,enhancementstoexistingfeatures,andbugfixes.EnhancedFeaturesinGAMBIT2.4include:geometryenhancements,including:anupgradeoftheACISgeometrykerneltoR16,betterimportofIGES,STEP,ParasolidandnativeCATIAV4files,enhancedCADreadersforPro/ENGINEERandParasolidCADsystems,anupgraded[...]http://blog.singinfo.com/?p=76Sun,08Jul200713:23:00+0000本博客主要介绍ANSYS,CFX,Fluent的最新更新,使用技巧等。同时也有CFD和FEA基本理论,及其他CAE软件的介绍。CFX:怎么模拟固体化学反应? 问题是这样的,在高温环境内放入碳和钛会反应生成碳钛复合材料,不知道在CFX里面可不可以模拟这一过程。碳颗粒和钛颗粒(直径均约为2微米)被压缩成圆柱状。因此反应是在固体内部进行的,而不是在流体内。模拟化学反应实际是模拟多组分流体(multi-componentfluid)内的传热传质过程。而在CFX里,不可以把固体材料定义成多组分固体。要解决这个问题,需要用到CFXV11.0的一个测试功能:共轭附加变量(conjugatetransferofadditionalvariables)。AdditionalVariable(AV)和Fluent的UserDefinedScalar(UDS)基本类似。但是由于CFX的CEL功能,因此使用上相对要容易很多。默认的AV功能,只支持在流体内的传递,在固体内只可以定义代数方程(algebraicequation),而不可以模拟扩散。使用CFX测试功能,需要到CFX-Pre->Edit->Options…->选中”CFX-Pre”->选择”EnableBetaFeatures”->OK。在CFX-Pre里面,可以定义一些AV,分别代表反应物和生成物。化学反应过程可以通过定义反应物和生成物的质量源/损失(masssource/sink)来模拟,同时也可以定义热量源来模拟化学反应所产生的热量。具体的做法可以参考CFX里对燃烧过程的模拟。如果固体成分在内体内有传质过程的话,可以把AV在固体内的传递定义成扩散传递方程(diffusivetransportequation)。Technorati:CFX,additionalvariable,固体反应http://blog.singinfo.com/?p=75Sat,16Jun200714:27:00+0000怎么在一个系统上同时安装Airpak2.1和3.0?Airpak3.0的界面提高了很多,但是在熟悉新界面以前,很多人想同时有2.1和3.0。如果按照默认设定安装的话,系统在开始菜单会显示2.1和3.0,但是点击2.1或者3.0,并不会启动不同的版本。系统总会启动最后安装的那个版本。默认情况下,Airpak2.1安装在C:Fluent.Incairpak2.1目录下,而Airpak3.0安装在C:Fluent.Incairpak3.0.12目录下,它们并没有相互覆盖。但是windows开始菜单下的Airpak2.1.12和3.0.12却指向同一个文件C:Fluent.Incntbinntx86airpak.bat。安装新版本后,airpak.bat总会指向最新版本,而不是分别指向新旧两个版本。解决办法上,复制airpak.bat到airpak1.bat。然后修改这两个*.bat文件的内容。airpak.bat指向3.0安装目录,而airpak1.bat指向2.1安装目录。airpak.bat:setAIRPAK_ROOT=%AIRPAK_INSTALL_LOCATION%airpak3.0.12airpak1.bat:setAIRPAK_ROOT=%AIRPAK_INSTALL_LOCATION%airpak2.1最后是编辑windows开始菜单下的快捷方式,让Airpak2.1.12的快捷方式指向airpak1.bat就行了。Technorati:airpak,安装http://blog.singinfo.com/?p=73Mon,02Jul200701:33:28+0000文摘:ANSYSAPDL和Abaqusscript的比较今天看到一篇对ANSYSAPDL和Abaqusscript相比较的文章。链接在下面。http://fegs.wordpress.com/2007/07/01/ansys-apdl-versus-abaqus-script/不知道Abaqus的script是不是和Fluent或CFX的script(CCL)差不多?Technorati:ANSYS,APDL,Abaqus,scripthttp://blog.singinfo.com/?p=74Tue,03Jul200701:08:00+0000CFX的playtutorial功能新版本的CFX提供了playtutorial功能。上周使用了一下,本来以为会向其它软件的动画教程一样,会提供详细的交互式演示,其实并不是这样的。在CFX-Pre上点击Play tutorial,系统会直接打开CFX安装目录下的examples文件夹,然后可以打开一个*.pre文件。打开*.pre文件后,系统并不会在图形界面上演示操作过程,而是直接生成一个*.def文件(在当前工作目录下)。用户需要用CFX-Solver来求解这个问题。Playtutorial的功能和已有的playsession的功能几乎是一模一样的。唯一不同的事,Playtutorial会直接导航到examples文件夹,而playsession只是打开当前工作目录。从这个意义上说,playtutorial的功能并不是很有用。Technorati:CFX,Playtutorialhttp://blog.singinfo.com/?p=72Fri,15Jun200701:10:00+00002007中国CFD年会暨第一届“年度CFD用户大奖”论文征集原始链接在这里。尊敬的Fluent用户:“2007中国CFD年会”将于2007年11月举行。一年一度的CFD年会旨在为广大中国Fluent用户提供一个深入交流、互相学习和发布科研新成果的平台,为用户和潜在用户提供一个与CFD及其应用方面的专家交流、咨询机会。第一届”年度CFD用户大奖”评选和颁奖活动将作为年会期间的最为重要的活动内容之一隆重登场。设立该奖项是为了嘉奖优秀的CFD应用者和使用FluentCFD软件发表优秀论文的用户。获奖者将得到从600-5000元不等的奖金或等值奖品,以及一个奖章。此外,我们还设立了一个由Fluent公司专家和外界CFD权威人士组成的评审小组,由该小组来选出不同级别的获奖者。我们将在以后陆续公布评审小组名单。稿件的形式可以多样化,如Powerpoint,已发表印刷的论文和杂志文章,动画演示,等等;可以是英文或中文。通过初评的投稿者可以免费参加我们的CFD年会。您的投稿既是对Fluent公司的支持,也是您学术成绩的一个见证。希望各位专家、学者、工程技术人员踊跃投稿。征文内容:凡Fluent公司的正式用户均可参加投稿,稿件数量不限。稿件内容须是利用Fluent公司系列产品完成的工程项目、科研课题、成果报告等。注意事项:-请务必按照我们提供的论文格式编写您的用户论文;其他格式如PPT则不限,但请注意,格式的好坏也将影响评分高低。-请务必填写保密侵权协议,以确保您提供给我们的稿件不涉及任何泄密和侵权行为。凡涉及保密内容的部分请作者自行处理。稿件/稿件摘要提交截止日期:摘要提交:截止日期:2007年8月10日联系人:张蓉稿件提交:截止日期:2007年9月1日联系人:张蓉Email地址:rong.zhang@ansys.com通过邮寄方式提交:联系人:张蓉地址:上海市延安东路222号外滩中心22楼4A邮编:200002电话:+86-21-63351885传真:+86-21-633500082007年度CFD用户论文征集-论文格式:点击下载Technorati:CFD,Fluent,年会http://blog.singinfo.com/?p=71Thu,14Jun200714:22:00+0000ANSYS11.0快速上手指南今天发现ANSYSworkbench快速上手指南,其实不需要登录客户服务中心也可以浏览。网址是:http://www1.ansys.com/customer/quickstart/QuickStartHome.htm里面有flash形式的演示录像,以及可以打印的PDF格式。一些例子还有输入文字,可以下载下来练习。如果flash显示太慢的话,可以下载一些小软件,把*.swf文件保存在本地。其实在ANSYSvirtualdemoroom(虚拟展示厅)里,也有很多例子。网址:http://www-harwell.ansys.com/demoroomTechnorati:ANSYShttp://blog.singinfo.com/?p=70Wed,13Jun200714:03:00+0000CFX自动接触面功能导致求解器错误CFX 11.0提供的自动接触面功能可以极大简化接触面的定义。有些时候,我们可以利用这个功能来控制网格大小(参见前面的帖子)。但是在使用自动接触面的时候,也有可能会引起GGI(generalgridinterface)内存分配错误。错误信息是这样的:ERROR#001100279hasoccurredinsubroutineErrAction.Message:SYMASS_ZIFCS_EL:Thesolverranoutoftemporaryspacewhilebuildingalinkedlistforadomaininterface.Trysettingtheexpertparameter“topologyestimatefactorzif”toavaluegreaterthan1.0.Valueshigherthan1.2shouldnotbenecessary.要解决这个问题,需要把expertparameter“topologyestimatefactorzif”[...]http://blog.singinfo.com/?p=69Tue,12Jun200711:00:00+0000Fluent不能读ICEMCFD做的网格前面的一篇帖子讲了Fluent不能读ICEMCFD做的网格的一个解决办法。在实际应用过程中,这样的问题应该并不少见,毕竟这两个程序是由两个团队开发的,而到目前为止,这两个团队的合作并不紧密。最近也发现在ICEMCFD里做的hexa-core网格,不能成功输出到Fluent。这个问题可能会在下一个版本,或者下一个servicepack才能被解决。我试了一下,在ICEMCFD里面做的四面体和棱柱体网格可以顺利地输出到Fluent,如果不能输出的话,要按照上面的帖子所讲的检查边界条件的定义。有一种情况是,在做三维模拟时,应该把体定义成Fluid或者Solid,把面定义成wall,velocity-inlet等等。在定义面的时候,ICEMCFD还会显示fluid和solid选项。也就是说,尽管模拟的是一个三维模型,用户还是可以把一个面定义成fluid或者solid。这样会导致Fluent无法成功建立网格。解决方案是把定义成fluid/solid的面改成wall,pressureoutlet等属性就行了。总体来说,ICEMCFD是一个非常灵活的软件,需要用户对网格的结构和求解器有相当的了解。上面的问题,很可能是因为ICEMCFD支持二维和三维网格,所以用户界面本身并不会问题是二维或三维而自动更新。Technorati:Fluent,ICEMCFD,网格http://blog.singinfo.com/?p=68Mon,11Jun200709:50:00+0000解决CFX的回流问题CFX对回流的处理和Fluent有很大的不同。在CFX里,如果在outlet有回流,会自动建立wall来阻止回流。如果回流区域很小的话,也许对流场影响很小。但是大多数情况,会得到很不合理的结果,甚至是错误的结果。最近我在模拟分体式空调室外机的时候,刚开始为了简化模型,把室外机的正面和背面全部设成入口/出口边界条件。由于面积比实际情况大了很多,一部分空气会在出口处回流回来。CFX会自动建立wall来阻止回流,结果非常不合理,流场非常奇怪的偏向一边。解决办法是模拟入口/出口的真实形状(在正面和背面imprint两个圆形面),而不是过度简化模型。改变之后,流场基本对称,结果合理。除此以外,定义一个合理的压力或者质量流量也可以解决回流问题。如果真实情况确实有回流的话,应该使用opening边界条件(用什么Opening边界条件?)。但是,如果使用CFX时候,系统提醒有回流的话,一定要想办法解决,否则计算精度会受到很大影响。Technorati:CFX,回流http://blog.singinfo.com/?p=67Sun,10Jun200709:22:00+0000CFX共轭传热问题的收敛CFX的求解器和通常的求解器是很不相同的,比如CFX把稳态问题当成瞬态问题来求解。在控制求解器时,时间步长的作用相当于Fluent里面的松弛因子(under-relaxation factor)。大的时间步长可以加快收敛,但是会使求解不稳定;小的时间步长可以稳定求解,但会使收敛缓慢。在求解流固共轭传热问题时,如果不控制求解器,使用默认设置的话(auto-timescale),通常会很难收敛。通常收敛很慢,而且全局不平衡(globalimbalance)很大。造成这个结果的原因通常是因为固体传导传热会比流体对流传热慢得多。如果在固体和流体部分使用相同的时间步长的话,固体部分收敛会非常慢,整体的收敛也会因此很慢。要解决这样的问题,需要在固体部分使用较大的时间步长,而在流体部分使用较小的时间步长。通常需要把solidtimescalefactor设为10-100之间的值,这样能有效的加快收敛。除此之外,可以使用双精度求解器和在equationclasssetting里面给energyeqation大一点的timescalefactor。这样也能帮助收敛。Technorati:CFX,收敛http://blog.singinfo.com/?p=66Sat,09Jun200708:34:00+0000本博客主要介绍ANSYS,CFX,Fluent的最新更新,使用技巧等。同时也有CFD和FEA基本理论,及其他CAE软件的介绍。怎么改变Airpak云图的层级通常情况下,数值模拟软件在后处理时会自动计算出云图的层级。但是有些时候用户需要对结果的层级有比较详细的控制,比如层级并不是均匀分布的,或者用户可以直接控制层级。其实在Airpak里,是可以做到这一点的,如下图所示。只要在Input后面输入一系列值就可以了。有兴趣的用户可以试着在云图的图例上,试着ctrl+拖拽和shift+拖拽。看看它们的功能。前者是移动云图图例的位置,后者是改变层级的分布,非常的方便。Technorati:Airpak,云图http://blog.singinfo.com/?p=65Fri,08Jun200707:32:00+0000Airpak定义大气边界层用Airpak做建筑物外部流动分析时,需要定义大气边界层(Atomosphericboundarylayer)。Airpak提供了一个Macro来定义大气边界层,如下图所示。这个Macro可以方便的定义一个opening,并且根据风向及模型的方向,计算出opening速度曲线(velocityprofile)。在使用这个Macro时,要注意的是,在定义了Macro之后,就不可以再移动opening的位置了。换句话说,在定义大气边界层时要输入确切的opening位置信息,而不能定义一个大概位置,然后在移去别的位置。原因是在Airpak里面,速度曲线是和绝对坐标(x,y,z)相联系的。把opening移到一个新的位置,opening所处的x,y,z会相应变化,而曲线定义里面的x,y,z却没有变化。这样速度曲线和opening的位置不对应,系统会给opening处加入默认的边界条件,而不是大气边界层速度曲线。Technorati:Airpak,大气边界层http://blog.singinfo.com/?p=64Thu,07Jun200707:03:00+0000Airpak3.0.12发布今天在Fluent用户服务中心看到Airpak3.0.12已经发布了。虽然现在还没有正式的新闻,Airpak的网站还没有更新,但在用户服务中心一个关于新版本的幻灯片。新版本的界面和Icepak基本一致,并且增加了很多实用功能,试用了以后觉得方便很多。但是对于习惯了2.0版本的用户来说,需要一段时间适应,因为用户界面完全不同,而且增加一些新的操作。新版本在windows下工作应该会比旧版本稳定。但是目前只有32位版本,64位版本应该会在夏天推出。Technorati:Airpak,Fluenthttp://blog.singinfo.com/?p=63 Wed,27Jun200712:51:20+0000免费在线ICEMCFD讲座转换成北京时间是6月28日凌晨2点到3点。JoinusforafreewebseminarwhereyouwillfindouthowANSYSICEMCFDcanimproveyourmeshingcapabilitiesthrough:PatchIndependence-Automaticallywalkoverflawsandirregularitiesinmodels(sliversurfaces,gaps,holes,andoverlaps)SurfaceMeshing-Goodforcomplexgeometrywhereaquickanswerisneeded;Requireslessuserexperiencefor[...]http://blog.singinfo.com/?p=62Wed,06Jun200704:01:00+0000CFX-Mesh:怎么让固体流体有不同的单元密度?在做固体流体耦合传热分析(conjugateheattransfer,CHT)时,通常需要固体部分网格比较疏,流体部分网格比较密。但是在CFX-Mesh10.0里面只允许设定一个bodyspacing。并不能把流体固体区分开来。要实现固体、流体分别划分网格。在DesignModeler里面,先suppress固体,然后划流体部分网格,生成一个*.gtm文件;然后unsuppress固体,suppress流体,划分固体部分网格,生成另外一个*.gtm。把这两部分都导入CFX-Pre。定义两个domain,以及之间的domaininterface就可以了。以上所说的是10.0里面的情形,如果是11.0的话,操作更为简便。在meshing里面把固体和流体分别放到两个meshmethod里面去,就可以单独划分网格了。划分好的网格会存在一个*.cmdb里面,导入到CFX-Pre里后,CFX会自动生成默认domain和默认interface。Technorati:CFX,CFX-Meshhttp://blog.singinfo.com/?p=61Tue,05Jun200703:55:00+0000Fluent:怎么在长方体内画一个圆形切面在用Fluent做后处理时,通常我们会截取一个切面,然后在这个切面上画云图、矢量图等等。这个切面的形状决定于所模拟的几何模型的形状(切面是无限大的,和几何模型相交)。有一种特殊情况是可以定义boundedplane。就是可以通过指定三个点来定义一个长方形的切面。有些后处理分析,需要画出圆形切面,而不是长方形或者模型自己的边界。这个时候需要用到isoclip功能。Isosurface功能是得到等值曲面,isoclip功能是”剪出”两个等值曲面之间的表面。如果要得到一个圆形切面的话,具体的做法是这样的:1.用通常的方法得到一个无限切面”Surfce->Plane…”。因为isoclip要基于一个平面,所以这步相当于是定义圆形切面所在平面。2.定义圆柱坐标系的原点和轴向。”Define->BoundaryConditions”,选择”Fluid”区域,并且编辑”Rotation-AxisOrigin”和”Rotation-AxisDirection”。因为Fluent里面的默认坐标系是笛卡尔坐标系,这一步是定义该圆所处的圆柱坐标系。3.定义clipplane”Surface->Isoclip…”。把”Cliptovalueof”选项改成:”Grid->RadialCoordinate”。把”clipplane”设成第一步定义的面。最后再设置一个合理的最小值和最大值。这一个是定义用径向坐标来修剪表面。如果Min=0m,Max=1m,那就相当于定义一个半径是1米的圆了。Technorati:Fluent,Isoclip,切面,后处理http://blog.singinfo.com/?p=60Mon,04Jun200703:03:00+0000怎么模拟膏状物挤压?这是个很难的问题,个人觉得目前的技术还做不到,但是不知道有没有CFD以外的软件可以做到。 在很多生产工艺中,需要用胶水把两个表面粘起来。有些胶水呈牙膏状。生产时,先把该膏状物挤在一片固体表面上,然后用另外一片固体表面来挤压,最终这两块表面将粘合在一起。在这个生产过程中,膏状物的分布是很重要的。如果挤压后膏状物没有能够填充整个固体界面,成品的强度会受到影响;如果挤压后膏状物能够填充整个表面,但是会有材料溢出来,会造成浪费。不知道数值模拟能不能做到这一点?用什么软件呢?Technorati:数值模拟,膏状物http://blog.singinfo.com/?p=59Sun,03Jun200702:17:00+0000利用virtualtopology简化几何模型昨天遇到一个机翼空气动力学分析的例子。由于机翼结构相对复杂,需要用Pro/E来做。而Pro/E生成的机翼表面由很多很狭窄的面组成,有些面长度为1米,宽度不到2毫米。在画网格的时候,会生成非常细的网格,有时甚至会因内部错误而中断。要解决这样的问题,最好的方法当然是回到Pro/E中修复几何形状。但是并不是所有情况都可以做到。在11.0的WorkbenchMeshing中,提供了virtualtopology功能,可以非常方便的解决这一问题。在导入几何模型到Meshing以后,选中”Model”,在上面的工具栏会有”VirtualTopology”选项,点击该选项。在树形目录下,右击”VirtualTopology”然后”CreateVirtualCells”,便可以看到,一些碎片会自动被整合成大的表面。重新划网格,会发现网格质量有显著提高,而生成虚拟拓扑机构的过程非常自动化。如果选中树形目录里的”VirtualTopology”,在Behavior选项里有low、medium、high和edgeonly四个选项,分别代表不同的简化程度。具体的结果,可以测试一下,或者查看帮助。但是千万不要过于贪心,上面的机翼的例子,用low能显著提高网格质量。但是用medium会出现内部错误。况且,用medium并不会比用low好很多。在CFX-Mesh中,也有virtualtopology功能,但是不是全自动的,用户需要手动点击需要组成虚拟拓扑的面,如果几何形状很复杂的话,可能会很费时间。Technorati:Workbench,virtualtopology,几何模型,简化http://blog.singinfo.com/?p=58Sat,02Jun200701:46:00+0000CFX11.0update1可以下载ANSYS最近在用户服务中心(userservicecenter)提供了CFX11.0update1的下载。主要是修正CFX11.0目前发现的一些bug。另外ANSYSWorkbenchServicePack2007-SV16也可以下载了,主要是解决license方面的一个bug。Technorati:ANSYS,CFX,Workbench,bug,updatehttp://blog.singinfo.com/?p=57Fri,01Jun200700:47:00+0000Flomerics发布FloventV7这里是新闻链接。该版的最显著的升级应该是提供了响应面优化(responsesurfaceoptimization)功能。这个功能应该是相当于ANSYSDesignSpace的功能。虽然CFX最近也可以支持DesignSpace,但是只能支持几何参数和CEL参数。Fluent的Icepak页支持一些基本的参数化模拟。问题是,CFD模拟通常要花很多时间,把整个设计空间(designspace)模拟出来会很费时。另外的升级还有用于模拟电脑机房的SmartPart模型、输入二维DXF文件的功能、太阳载荷模型。在后处理方面,可以做建筑物内部穿行(walk-through或fly-through)的动画。Technorati:Flomertics,Floventhttp://blog.singinfo.com/?p=56Thu,31May200713:13:00+0000 本博客主要介绍ANSYS,CFX,Fluent的最新更新,使用技巧等。同时也有CFD和FEA基本理论,及其他CAE软件的介绍。怎么在Flotran里定义理想气体今天看了一下Flotran用户界面,在Flotran里面定义理想气体并不是很直接。对于单相流动问题,需要定义密度和粘性系数。如果是传热问题的话,还需要定义导热系数和比热。在Flotan里,并没有理想气体的选项,要定义理想气体,需要用到FLDATA12、FLDATA13和FLDATA8命令。在图形界面的位置是:Preprocessor->FlotranSetup->FluidProperties。定义理想气体的具体步骤是:1.把密度选项设成是”Gas”。并且允许密度变化(Allowdensityvariation)。2.把粘性系数、导热系数和比热的选项设成是”Constant”。不允许变化。也可以把粘性系数和比热设成是”Gas”。然后用相应的kinetictheory来计算。3.在跳出的第二个窗口上,输入D0、D1和D2系数,以及粘性系数、导热系数和比热的值。理想气体的表达式是:密度=(理想气体常数/摩尔质量)压力/温度界面上给出的密度表达式是:Density=D0*(P/D2)/(T/D1)因此D0=理想气体常数/摩尔质量、D1=1、D2=1。其实D0、D1和D2可以任意组合。写D0=1、D1=摩尔质量、D2=理想气体常数也可以。最好在定义完气体材料后,做一个简单的模拟来确认定义是正确的。Technorati:Flotran,理想气体http://blog.singinfo.com/?p=55Wed,30May200703:21:00+0000单向CFX/Fluent/ANSYS流固耦合——直接插值发现遗漏了一种特殊情况。在CFD里面做了流体和固体耦合传热分析后,如果要把固体部分的温度输出到ANSYS做热应力分析的话,其实不要使用前面介绍的方法(多物理场或者映射到固体单元)。ANSYS里面的BFINT命令可以把温度自由度从一个网格直接映射到另一个网格。但是BFINT只能映射温度。ANSYS在半导体行业应用非常广泛,使用BFINT命令可以方便的做热应力分析,传热分析和结构分析可以使用两套不同的网格。BFINT的原意应该是bodyforceinterpolation。在GUI上的位置是:GeneralPostProcessor->Submodeling->InterpBodyForce。因此,实际的操作和submodeling非常类似。1.从CFD软件输出固体温度。具体操作可以参见前面的文章。这是会得到一个*.cdb文件。如果*.cdb文件缺少单元类型的话,可以用ET命令加上。2.从ANSYS输出节点文件这里需要使用NWRITE命令得到一个节点文件(nodefile,*.node)。3.读进温度进行插值读进刚才的*.cdb文件,并求解。在后处理器中执行BFINT命令。这是会得到一个*.bfin文件。4.把*.bfin文件读入到固体模型中打开固体模型,直接读入*.bfin文件(/INPUT)。这样,温度场就直接加到模型上了。Technorati:ANSYS,CFX,Fluent,单向流固耦合,插值http://blog.singinfo.com/?p=54Tue,29May200702:41:00+0000单向ANSYS/CFX流固耦合——固体到流体(这样就可手动实现双向流固耦合了)已经曾经被问到,通常做单向流固耦合,是从流体传递边界条件(温度、压力等)到固体。问什么需要做从固体到流体的单向流固耦合呢?当时被问住了。可能的情形有,1)如果固体部分有变形。这个变形通常在建模的时候很难画出来。用ANSYS模拟出边界的位移,把相对位移输出到CFX就可以准确地模拟固体壁面的实际情况;2)如果用有限元程序模拟传热。在有些情况下,用有限元做传热可能会比较方便,这样就需要把温度等变量输出到流体程序。还有其它情形吗?这个功能应该是用的人非常少。目前可以做从ANSYS到CFX的单项载荷传递,是用EXPROFILE命令。可以传递的量有:表面载荷:位移、温度、热流量;体载荷:位移、力、热源。 原理是从ANSYS输出CFX边界上的profile。这个profile可以方便的加到CFX边界上。做法在ANSYS的帮助中有详细介绍和实例(TheUnidirectionalLoadTransferMethod:ANSYStoCFX)。在ANSYS中要做的操作有三步:1)定义要输出载荷的面或体。如果是面的话:SF,all,fsin,,1;如果是体的话:BFE,all,fvin,,1。注意上面的命令和通常定义流固界面的命令是不同的。第一个值为空,第二个值才是面或体的标志。2)定义单位。使用EXUNIT命令。因为ANSYS是没有单位的,而CFX有单位。3)输出边界到CFX。使用EXPROFILE命令。这个会得到一个*.csv文件。在CFX中,需要读入这个*.csv,然后把它加到相应的边界上。对于温度、热量等边界条件,很容易理解这个映射过程。位移怎么加进去呢?首先要在domain上激活meshdeformation功能,然后在相应的固体壁面边界条件上,就可以把meshmotion设为SpecifiedDisplacement,代入刚才生成的*.csv文件就可以了。Technorati:ANSYS,CFX,单向流固耦合,边界条件http://blog.singinfo.com/?p=53Mon,28May200702:11:00+0000单向CFX/ANSYS流固耦合——使用Workbench现在CFX和ANSYS都已经被整合到ANSYSWorkbench里面了。这是做单向流固耦合最方便的途径。在10.0时,用户可以直接映射压力到Workbench模型;在11.0,新添加了映射温度和对流系数的功能。具体操作非常简单。完成CFX模拟,会得到一个*.res文件。在WorkbenchSimulation里面会看到在结构分析里,有CFXPressure边界条件;在传热分析里,有CFXTemperature和CFXConvection边界条件。用户需要告诉Workbench*.res文件的位置,以及要映射的面。由于Workbench非常傻瓜,所以应该很容易搞清楚具体操作的。如果CFX模拟是瞬态模拟,用户需要输入要传递的时间步。为了保证面和面(流固界面)是相对应的。最好用DesignModeler一起做流体和固体模拟,然后分别生成流体和固体网格。这样可以保证面的对应。我看了一下Workbench生成的APDL,其实原理也是使用表面效果单元映射得到载荷(参见前面的文章)。只是这些是由程序自动完成的。希望ANSYS早日推出和Fluent的接口。Technorati:ANSYS,CFX,Workbench,单向流固耦合http://blog.singinfo.com/?p=52Sun,27May200711:24:00+0000单向CFX/Fluent/ANSYS流固耦合——使用ANSYS多物理场求解器Fluent的UDF虽然使用起来相当方便,但是只能传递传热学变量,不能传递结构变量,如压力等。这个时候需要使用ANSYSmultifieldsolver(多物理场求解器)。如果我们能拿到上面那个UDF的源代码的话,应该可以比较容易地修改得到映射结构变量的UDF。既然现在ANSYS和Fluent已经是一家了,在下一个版本应该可以有直接的用户界面。现在还需要multifieldsolver。虽然这个方法的操作并不算麻烦,但是如果对多物理场的概念不熟悉的话,需要一点时间理解一些基本概念。Multifieldsolver是一种求解多物理场的方法。多物理场是指结构、传热、电磁、流体等等物理现象之间的相互作用。Multifieldsolver允许用户就不同的物理场建立不同的有限元模型,然后生成CDB文件,在一个统一的求解器中进行耦合求解。比如做流固耦合,流体部分生成一个CDB文件,固体部分生成一个CDB文件,两个文件的网格、边界条件、求解器设定都可以不同,multifieldsolver可以进行staggerediteration进行耦合。这里要使用的是multifieldsolver的一个特殊功能,使用外部程序生成的CDB文件和ANSYS本身的物理场进行耦合,把外部CBD边界条件映射到ANSYS模型上。具体步骤如下:1)从Fluent输出CDBFluent->File->Export…->ANSYSInput。虽然在这个界面上可以输出力、压力和温度。Multifield solver只支持力和温度。我试了一下生成的*.cdb文件,用户可能要添加一些信息1.在开始的地方加上”et,1,154″定义单元类型;2.在最后加上”sf,all,fsin,1″定义流固界面;3.把原APDL里的solve命令去掉(变成注释,在前面加”!”)。2)准备结构模型并存成*.cdb文件ANSYS->Preprocessor->ArchiveModel->Write在建立结构模型时,要注意给定流固界面”sf,all,fsin,1″。3)设定multifieldsolver在ANSYS->Preprocessor->MultifieldSet-up。打开multifieldsolver(MFAN,ON)。导入前两步生成的*.cdb(MFIMPORT命令)。设定物理场顺序(MFOR,1,2)。设定外部求解器,Fluent生成的*.cdb来自外部求解器(MFEX,1)。定义界面,界面在流体固体的CDB里面已经设好了,这里只是设定所传递的量(MFSU,1,1,FORC,2)。4)求解和后处理在后处理的时候,只要读入第二个物理场的解就行了。文件名应该是field2.rst。以上是从Fluent输出到ANSYS。对于CFX来说,虽然CFX已经有压力的输出功能,但是在CFX中还是可以做同样的操作的。所不同的只是第一步:1)从CFX输出*.cdbCFX-Solver->ExporttoANSYSMultifieldSolver。输出为二维应力表面效果单元(154)。同样,我们需要在CFX输出的*.cdb里加上一行”sf,all,fin,1″来定义流固界面。我比较了CFX->ANSYS和Fluent->ANSYS的结果,结果基本相似,证明上面的步骤应该是正确的。http://blog.singinfo.com/?p=51Sat,26May200714:47:00+0000单向CFX/Fluent/ANSYS流固耦合——生成表面效果单元今天忙了很久,终于实现用ANSYSmulti-fieldsolver(多物理场求解器)把CFX/Fluent生成的*.cdb文件,映射到ANSYS结构单元上,做单向流固耦合(one-wayfluidstructureinteraction)。然后看到Fluent用户服务中心里面其实已经有现成的UDF可以做传热学方面的流固耦合,于是想有必要总结一下。CFX/Fluent/ANSYS的单向流固耦合在目前(CFX11.0,Fluent6.3和ANSYS11.0)应该有四种情况:1.在CFD程序中生成表面载荷,然后把边界条件代入ANSYS2.在CFD程序中直接输出*.cdb文件,然后利用ANSYSmulti-fieldsolver把边界条件映射到固体网格上去3.利用ANSYSWorkbench直接代入CFD结果4.把ANSYS结果输入为边界曲线,然后代入CFX前面3种是流体到固体耦合,通常需要传递压力、力、温度、热流量或对流系数。最后一种是固体到流体耦合,通常是传递位移,但有时也可以传递温度。单向流固耦合所要解决的问题其实是要让边界条件能够从一个软件传递到另一个软件。除了文件格式的不同外,最大的问题是网格不一致。CFD网格和FEA网格往往不会一致,在CFD里面得到结果后,需要把边界上的值从CFD网格映射到固体网格上。在CFX里要做到这一点比较容易,因为ANSYS已经开发了相应的图形界面。首先流体和固体的几何形状需要大致吻合。在ANSYS里面需要在流固界面上铺一层表面效果单元(152或154)。然后单独选择这些单元,保存为一个CDB文件(Preprocessor->archivemodel->write)。在CFX-Post里面可以看到这样的菜单File->ANSYSImport/Export->ImportANSYSCDBSurface…或者ExportANSYSLoadFile。用前面一个功能把刚才的*.cdb都进来,然后用后面一个功能把结果映射上去,生成一个*.csv文件。这个*.csv可以直接读到ANSYS中去,这样边界条件就过去了。可以映射的量有:压力、切应力、应力、对流系数、热流量和温度。Fluent的界面虽然没有和ANSYS整合,但是Fluent已经开发了一个UDF,可以传递结果去常见的有限元程序,如Abaqus、ANSYS等。在加载UDF和读入scheme文件后,在Define->Models的最后会看到ExportFEMMapping->VolumeMapping或surfacemapping。Surfacemapping的原理大致和CFX差不多。在所附的帮助文件中,提到要用没有中间节点的壳单元。个人认为用表面效果单元会比较好,但是没有具体试过。这里可以映射的量有:温度、热流量和对流系数。至于volume mapping是把CFD里面的固体温度映射到有限元程序中去。其实CFX也是有相对应的功能的,在CFX-Solver->Tools->ExporttoANSYSMultiFieldSolver选择3Dthermal(70)就可以了,至于为什么只支持70单元,如果单元不是四面体,会发生什么情况,我也不清楚,不过应该没有多少人会使用这个功能吧。5月29日更新:今天看到一篇文章,其实可以手工修改生成的APDL来模拟其它类型的单元(SOLID45等等)。http://blog.singinfo.com/?p=50Fri,25May200714:03:00+0000实际气体模拟做CFD模拟时,通常我们把气体当成是恒定密度气体或者理想气体,但是当压力很大时,理想气体定律就不适用了,这个时候需要使用实际气体(realgas)。最近看了一下ANSYS旗下的三个CFD求解器CFX,Flotran,Fluent对实际气体的支持。1.CFX里有不同的实际气体模型。其中对于常用制冷剂,使用RedlichKwong状态模型,可以比较方便的模拟。遗憾的是,11.0里面还没有R600a(isobutane,异丁烷)。但是由于RedlichKwong模型,只需要输入6个状态值,所以用户自定义并不会太困难。2.Fluent的实际气体模型,需要用TUI来激活,而且只能用基于密度求解器。由于数据来自NISTREFPROPv7.0(www.nist.gov/srd/nist23.htm),从中可以找到异丁烷。3.Flotran不支持实际气体模型。Technorati:CFX,Flotran,Fluent,实际气体http://blog.singinfo.com/?p=49Thu,24May200711:03:00+0000一个ANSYS教程网站http://instruct1.cit.cornell.edu/courses/ansys/index.htmTechnorati:ANSYS,教程http://blog.singinfo.com/?p=48Wed,23May200713:57:14+0000两则新闻1.达索发布新的SIMULIA多物理场模拟平台(Multiphysicsplatform)新闻链接。新的多物理场模拟平台包括直接耦合和第三方程序耦合。在流固耦合方面Abaqus将通过mpcci实现和STAR-CD的流固耦合。2.Moldflow发布MoldflowStructureAlliance(MSA,结构联盟)新闻链接。使用MSA可以方便的把MPI(MoldflowPlasticsAdvisers)和MPA(MoldflowPlasticsInsight)的模拟结果输出到Abaqus和ANSYS中做进一步的有限元分析。由于塑料的结构属性和成型过程密切相关,MSA将可提高数值模拟的精确性,并缩短模拟时间。题外话:MSA的测试版已经发布一年多了,这次是正式商业发布。Technorati:Abaqus,MSA,Moldflow,Multiphysics,SIMULIA,STAR-CD,mpcci,多物理场,流固耦合http://blog.singinfo.com/?p=47Tue,22May200713:53:27+0000Fluent太阳负荷模型1.Fluent的太阳负荷模型(solarloadmodel)并不是辐射模型。它只计算太阳辐射加在固体表面的热量,然后把热量作为边界条件代入模型。如果要考虑辐射的话,需要使用一个辐射模型。也就是说,太阳负荷模型使用辐射的算法计算辐射热量,但是只是直接代入sourceterm(源项),它可以和辐射模型”串联”使用。2.太阳负荷模型使用光线追踪方法(raytracing)。也就是根据表面的几何关系,计算太阳光束能量在所有固体表面上的分布。固体表面可以为不透明或半透明。Technorati:Fluent,Solarloadmodel,太阳负荷模型,太阳辐射http://blog.singinfo.com/?p=46Mon,21May200715:49:40+0000 本博客主要介绍ANSYS,CFX,Fluent的最新更新,使用技巧等。同时也有CFD和FEA基本理论,及其他CAE软件的介绍。用什么CFXopening条件?和Fluent相比,CFX里面只有5种边界条件:inlet、outlet、opening、wall和symmetry。当outlet边界上有回流时,CFXsolver会提示回流,并且会临时建立一个wall边界来阻止回流。通常这个时候,要解决回流,一个办法是换成opening条件。这样流体便可以流出和流入流场。在使用opening条件时,在opening的MassandMomentum一栏会有六个选项:1)OpeningPressureandDirection(开口压力及方向);2)OpeningPressure(Entrainment)(开口压力(夹带));3)StaticPressureandDirection(静压及方向);4)StaticPressue(Entrainment)(静压(夹带));5)CartesianVelocityComponents(笛卡尔坐标速度分量);6)CylindricalVelocityComponents(圆柱坐标分量)。对新手来说,这六个选项的前四个会非常混淆。静压就是通常所说的静压。开口压力是指当开口当地流体流入流场时(入口),使用总压作为开口压力;当开口当地流体流出流场时(出口),使用静压作为开口压力。至于方向(direction)和夹带(entrainment)的区别。使用方向时,用户需指定流体流入流场时的方向。使用夹带时,流体流入流场的方向是由计算所得的当地的流动方向。上面的条件两两组合会得到1)到4)的条件。默认条件是1)。CFX认为进口压力应当使用总压而不是静压。使用开口压力能更好的定义流场。而实际上使用开口压力时,流体流入和流出使用不同的压力(总压和静压),压力分布在开口表面上是不连续的,反而会影响收敛。另外在使用方向时,虽然限定了流体进入的方向,表面上有利于收敛,但是同样由于方向在开口上也是不连续的,因此收敛也会受到影响。在实践中,选项4)能给出最合理的结果。我遇到过一些情况使用选项1),求解器不能收敛或者错误,改成4)就能得到合理的结果。另外,改成4)的时候,CFX-Pre会给出警告,把湍流选项改成ZeroGradient。相比之下,Fluent的界面设计比较合理,在每个outlet需要设置回流条件,而没有那么多繁琐的设置。至于选项5)和6),他们的区别是很直观的。在求解往复式压缩机(或者其他变速度的边界)时,使用选项5)和6)可以模拟这类问题。Technorati:CFX,opening,回流,边界条件http://blog.singinfo.com/?p=45Sun,20May200713:45:32+0000CFX-Post里的hybrid和conservativevalue有什么区别?细心的CFX用户可以发现在CFX-Post里面所有的变量都有有hybrid和conservative两个选项。在画云图时,选择hybrid或者conservative有时候会给出不同的结果。这样的原因是由于CFX的求解器是基于节点的(vertexbased),而不是基于单元的(cellbased)。也就是说,在CFX里,我们所求到的是在节点处的值,而不是单元中心的值。使用基于节点的求解器,可以自动生成多面体网格,这是CFX求解器的优点之一。问题是当节点位于边界上时,节点处的平均值(实际上应该是体积平均值)和节点处的实际值是不一样的。比如通常固体壁面上的速度边界条件是0,但是速度在该节点所定义的控制体内的平均速度并不是0。所以在CFX里面有两种量:hybrid值是节点处的实际值;conservative值是节点所定义的控制体的平均值。对于固体壁面,hybrid值是0,而conservative值不是0。那么在什么时候使用hybrid值,什么时候使用conservative值呢?hyrbid值是边界处的实际值,在画云图的时候,会给出合理的结果。conservative值是平均值,在求积分、求平均值时会给出合理的结果。通常情况下,CFX的默认设置是不用改的。但是如果做流体固体耦合传热的话,有些时候,用hybrid值,固体壁面的的温度有时会比流体温度高或低很多,用conservative值,或者自定义云图范围,会比较合理一点。另外,hybrid和conservative值只会在边界不一样。通常我们认为在流场中,实际值等于平均值。Technorati: CFX,conservative,hybrid,云图http://blog.singinfo.com/?p=44Sat,19May200715:49:34+0000巧用DesignModeler的pattern功能最近发现DesignModeler里面的pattern(式样)功能是一个非常有用的功能。在建立大模型的时候,可以省去很多重复性的劳动。DesignModler允许有三种式样:线性、矩形和圆形。在11.0里面,选取方向比10.0要容易。在DesignModeler里,pattern操作只能作用于体(body),而不能作用于操作步骤。比如,如果要画一个五层的楼。可以只画一层,然后可以用线性式样来得到另外四层楼。在画第一层楼的时候,使用的操作应该是addmaterial(添加材料),所以在做pattern的时候可以直接选取体。如果要做的是另外的一种操作,比如在一个房间的顶部有五个排风口,怎么用pattern功能做到呢?因为pattern功能只能作用于体,而生成排风口的操作应该是imprintfaces(印面),没有体可以选择。要解决这个问题,只要把imprintfaces的操作拆成几步来做就行了。第一步是生成体,选择操作addfrozen(添加为冻结体)。做这一步时,体的大小可以任意设定。现在有体了,可以用pattern来复制体,生成五个体。第三步是选择Create->BodyOperation里面的imprintfaces功能,生成五个面。上面的方法也可以应用于cutmaterial(切除材料)的情形。比如在房间里,有5台电脑需要切除。在DesignModeler里面做pattern操作,要比copy(复制)和move(移动)容易得多。因为这两个操作需要先选择或建立参考面,对于三维问题,需要有相当好的空间想象力。另外在DesignModeler里面的一个使用技巧是,我们可以先建立固体,然后把固体一起从流体域切除。一般情况下,固体是可以看得到,摸得着的,我们会比较容易理解固体的形状。比如在做建筑物外部流动时,把所以的大楼、大楼的附属物以及建筑物的固体模型建好,然后一次切除,会比较容易理解。如果只顾删除固体的话,很可能会混淆几何关系。Technorati:DesignModeler,pattern,模型http://blog.singinfo.com/?p=43Fri,18May200713:59:23+0000达索发布Abaqus6.7达索(Dassault)在5月15日发布了Abaqus6.7。新闻链接在这里。Technorati:Abaqushttp://blog.singinfo.com/?p=42Thu,17May200713:17:51+0000