多孔介质模型.pdf

多孔介质模型.pdf

ID:52436072

大小:638.00 KB

页数:38页

时间:2020-03-27

上传者:asd881529
多孔介质模型.pdf_第1页
多孔介质模型.pdf_第2页
多孔介质模型.pdf_第3页
多孔介质模型.pdf_第4页
多孔介质模型.pdf_第5页
资源描述:

《多孔介质模型.pdf》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

FLUENT6.1全攻略分量来定义。图8-26Solid(固体)面板6.定义辐射参数如果使用DO模型计算辐射过程,可以在ParticipatesinRadiation(是否参与辐射)选项中确定固体区域是否参与辐射过程。8.19多孔介质条件很多问题中包含多孔介质的计算,比如流场中包括过滤纸、分流器、多孔板和管道集阵等边界时就需要使用多孔介质条件。在计算中可以定义某个区域或边界为多孔介质,并通过参数输入定义通过多孔介质后流体的压力降。在热平衡假设下,也可以确定多孔介质的热交换过程。在薄的多孔介质面上可以用一维假设“多孔跳跃(porousjump)”定义速度和压强的降落特征。多孔跳跃模型用于面区域,而不是单元区域,在计算中应该尽量使用这个模型,因为这个模型可以增强计算的稳定性和收敛性。9 FLUENT6.1全攻略8.19.1多孔介质模型的假设和限制条件多孔介质模型采用经验公式定义多孔介质上的流动阻力。从本质上说,多孔介质模型就是在动量方程中增加了一个代表动量消耗的源项。因此,多孔介质模型需要满足下面的限制条件:(1)因为多孔介质的体积在模型中没有体现,在缺省情况下,FLUENT在多孔介质内部使用基于体积流量的名义速度来保证速度矢量在通过多孔介质时的连续性。如果希望更精确地进行计算,也可以让FLUENT在多孔介质内部使用真实速度,详情见8.19.7节。(2)多孔介质对湍流的影响仅仅是近似。(3)在移动坐标系中使用多孔介质模型时,应该使用相对坐标系,而不是绝对坐标系,以保证获得正确的源项解。8.19.2多孔介质的动量方程在动量方程中增加一个动量源项可以模拟多孔介质的作用。源项由两部分组成:一个粘性损失项,即方程(8-45)右端第一项;和一个惯性损失项,即方程(8-45)右端第二项。⎛331⎞Si=−⎜⎜∑Dijμvj+∑Cijρvmagvj⎟⎟(8-45)⎝j=1j=12⎠式中S是第i个(x、y或z方向)动量方程中的源项,D和C是给定矩阵。负的源项i又被称为“汇”,动量汇对多孔介质单元动量梯度的贡献,在单元上产生一个正比于流体速度(或速度平方)的压力降。在简单、均匀的多孔介质上,还可以使用下面的数学模型:⎛μ1⎞Si=−⎜vi+C2ρvmagvi⎟(8-46)⎝α2⎠式中α代表多孔介质的渗透性,C是惯性阻力因子,将D和C分别定义为由1/α和2C为对角单元的对角矩阵。2FLUENT中还可以用速度的指数律作为源项的模型,即:C1()C1−1S=−Cv=−Cvv(8-47)i00i式中C和C为用户自定义的经验常数。其中压力降是各向同性的,C的单位为国际01010 FLUENT6.1全攻略单位制。1.多孔介质的Darcy定律在流过多孔介质的层流中,压力降正比于速度,常数C可以设为零。忽略对流加速和2扩散项,多孔介质就简化为Darcy定律:μd∇p=−v(8-48)αFLUENT在x、y、z三个坐标方向计算出的压力降为:3μΔpx=∑vjΔnxj=1αxj3μΔpy=∑vjΔny(8-49)j=1αyj3μΔpz=∑vjΔnzj=1αzj式中的1/α就是方程(8-45)中的D,v是x、y、z三个坐标方向的速度分量,Δn、ijjxΔn、Δn是多孔介质在x、y、z三个坐标方向的真实厚度。如果计算中使用的厚度值不yz等于真实厚度值,则需要对1/α做出调整。ij2.多孔中的惯性损失在流速很高时,方程(8-45)中的常数C可以对惯性损失做出修正。C可以被看作22流动方向上单位长度的损失系数,这样一来就可以将压力降定义为动压头的函数。如果计算的是多孔板或管道阵列,在一些情况下可以略去渗透项,而只保留惯性损失项,并产生下面简化形式的多孔介质方程:3⎛1⎞∇p=−∑C2ij⎜ρvjvmag⎟(8-50)j=1⎝2⎠或者写成分量形式:11 FLUENT6.1全攻略31Δpx≈∑C2xjΔnxρvjvmagj=1231Δpy≈∑C2yjΔnyρvjvmag(8-51)j=1231Δpz≈∑C2zjΔnzρvjvmagj=12再次说明,上式中的厚度即模型中定义的厚度。8.19.3多孔介质能量方程的处理多孔介质对能量方程的影响体现在对对流项和时间导数项的修正上。在多孔介质对对流项的计算中采用了有效对流函数,在时间导数项中则计入了固体区域对多孔介质的热惯性效应:∂()()()d()⎡⎛⎞()d⎤hγρfEf+1−γρsEs+∇⋅vρfEf+p=∇⋅⎢keff∇T−⎜∑hiJi⎟+τ⋅v⎥+Sf∂t⎣⎝i⎠⎦(8-52)式中E为流体总能,E为固体介质总能,γ为介质的多孔性,k介质的有效热导fseffh率,S流体焓的源项。fFLUENT中使用的有效导热率k是流体导热率和固体导热率的体积平均值:effk=γk+()1−γk(8-53)efffs式中γ为介质的多孔率,k为流体的热导率,k为固体的热导率。k和k可以用自fsfs定义的函数计算。各向异性的热导率也可以用自定义函数定义。8.19.4多孔介质模型对湍流的处理在缺省情况下,FLUENT在多孔介质计算中通过求解标准守恒型方程计算湍流变量。在计算过程中,通常假设固体介质对湍流的生成和耗散没有影响。在多孔介质的渗透率很大,因而介质的几何尺度对湍流涡结构没有影响时,这个假设是合理的。在另外一些情况12 FLUENT6.1全攻略中,可能不需要考虑流动中的湍流,即假定流动为层流。如果计算中使用的湍流模型是k−ε、k−ω或Spalart-Allmaras模型中的一种,则可以通过将湍流粘度μ设为零的方式忽略湍流的影响。如果湍流粘度μ被设置为零,则在tt计算过程中仍然会将湍流变量输运到介质的另一面,但是湍流对动量输运过程的影响则完全被消除。在Fluid(流体)面板中将多孔介质区设为LaminarZone(层流区)选项就可以将湍流粘度μ设为零。t8.19.5多孔介质对瞬态标量方程的影响对于多孔介质的瞬态计算,多孔介质对时间导数项的影响体现在对所有变量的输运方∂程和连续性方程求解中。在考虑多孔介质的影响时,时间导数项变为()γρφ,式中φ为∂t任意流动变量,γ为多孔率。在瞬态流动计算中,多孔介质的影响是被自动加入计算过程的,其多孔率在缺省设置中等于1。8.19.6多孔介质计算中用户的输入参数多孔介质计算中需要输入的项目如下:(1)定义多孔介质区域。(2)定义多孔介质速度函数形式。(3)定义流过多孔介质区的流体属性。(4)设定多孔区的化学反应。(5)设定粘性阻力系数。(6)设定多孔介质的多孔率。(7)在计算热交换的过程中选择多孔介质的材料。(8)设定多孔介质固体部分的体热生成率。(9)设定流动区域上的任意固定值的流动参数。(10)需要的话,将多孔区流动设为层流,或取消湍流计算。(11)定义旋转轴或区域的运动。所有参数设置均在流体(Fluid)面板中完成,见图8-27。1.定义多孔区选中PorousZone(多孔介质区)选项就可以将流体区域设为多孔介质。13 FLUENT6.1全攻略图8-27多孔计算选项2.定义多孔介质速度公式在Solver(求解器)面板中有一个PorousFormulation(多孔公式)区可以确定在多孔介质区域上使用名义速度或物理速度。缺省设置为名义速度。3.定义流过多孔介质的流体在MaterialName(材料名称)中选择所需的流体名称即可。可以用编辑功能改变流体的参数设置。组元计算或多相流计算中的流体不在这里定义,而是在SpeciesModel(组元模型)面板中定义。4.在多孔区域上设置化学反应在Fluid(流体)面板上选中Reaction(反应)选项,再从ReactionMechanism(反应14 FLUENT6.1全攻略机制)中选择合适的反应就可以在多孔介质区域的计算中加入化学反应。如果化学反应中包括表面反应,则需要设定SurfacetoVolumeRatio(面体比)。面体比是多孔介质单位体积上拥有的表面积,因此可以作为催化反应强度的度量。根据这个参数,FLUENT可以计算出体积单元上总的表面积。5.定义粘性和惯性阻力系数粘性和惯性阻力系数的定义方式是相同的。在直角坐标系中定义阻力系数的办法是:在二维问题中定义一个方向矢量,或在三维问题中定义两个方向矢量,然后再在每个方向上定义粘性和惯性阻力系数。在二维计算中的第二个方向,即没有被显式定义的那个方向,是与被定义的方向矢量相垂直的方向。与此类似,在三维问题中的第三个方向为垂直于前两个方向矢量构成平面的方向。在三维问题中,被定义的两个方向矢量应该是相互垂直的,如果不垂直的话,FLUENT会将第二个方向矢量中与第一个方向矢量平行的分量删除,强制令二者保持垂直。因此第一个方向矢量必须准确定义。用UDF也可以定义粘性和惯性阻力系数。在UDF被创建并调入FLUENT后,相关的用户定义选项就会出现在下拉列表中。需要注意的是,用UDF定义的系数必须使用DEFINE_PROPERTY宏。如果计算的问题是轴对称旋转流,可以为粘性和惯性阻力系数定义一个附加的方向分量。这个方向应该与其他两个方向矢量相垂直。在三维问题中,还允许使用圆锥(或圆柱)坐标系。需要提醒的是,多孔介质流中计算粘性或惯性阻力系数时采用的是名义速度。6.定义阻力的步骤定义阻力系数的步骤如下:(1)定义方向矢量。1)如果采用直角坐标系,在二维计算中只要定义第一方向矢量(Direction-1Vector)即可,在三维计算中则还要定义第二方向矢量(Direction-2Vector)。矢量的起点都是(0,0)或(0,0,0),终点则用坐标(x,y)或(x,y,z)定义。在无法确定多孔介质的方向矢量时,可以使用三维的平面工具或二维的线工具定义方向矢量:£在多孔介质边界上启动planetool(面工具)或linetool(线工具)。£旋转面工具或线工具的轴,使之与多孔介质相吻合。£从Fluid(流体)面板中点击UpdateFromPlaneTool(从面工具更新)或UpdateFromLineTool(从线工具更新),FLUENT就会将工具的红箭头方向设为第一方向矢量。在三维问题中,同时将绿色箭头方向设为第二方向矢量。2)在三维问题中还可以使用圆锥坐标系完成设置,具体步骤如下:£选择Conical(圆锥)选项。£定义ConeAxisVector(圆锥轴矢量)和PointonConeAxis(圆锥轴上的点)。15 FLUENT6.1全攻略圆锥轴矢量的方向由起点为(0,0,0)终点为(x,y,z)的矢量确定。而圆锥轴上的点则用于将阻力转换为直角坐标系中的值。£设置ConeHalfAngle(半锥角)。如果使用的是圆柱坐标系,则将半锥角设为零。在事先不知道圆锥轴的方向和锥面上一点坐标的时候,可以用面工具设置圆锥轴矢量和锥面上一点的坐标。一种方法是:(a)在SnaptoZone(转换到区域)按钮旁边选择垂直于圆锥轴的边界区域。(b)点击转换到区域按钮,FLUENT会自动将面工具设在边界上。同时设定的有ConeAxisVector(圆锥轴矢量)、PointonConeAxis(圆锥轴上一点)和半锥角。另一种方法是:(a)将面工具设在多孔区域上。(b)转动、平移面工具的轴,使得红色箭头指向圆锥轴的方向,同时使面工具的原点与圆锥轴的原点重合。(c)在二者的轴和原点全部重合后,点击UpdateFromPlaneTool(从面工具更新)按钮,FLUENT就会自动设定圆锥轴矢量和圆锥上一点的坐标。(2)在ViscousResistance(粘性阻力)下,在每个方向上定义粘性阻力系数1/α,在InertialResistance(惯性阻力)下,在每个方向上定义惯性阻力系数C。如果使用圆锥定2义方法,则方向一(Direction-1)为圆锥轴方向,方向二(Direction-2)为垂直于锥面的方向,对应于圆柱坐标系中的径向,方向三(Direction-3)为周向。在三维问题中有三类系数,二维问题中则有两类:1)在各向同性问题中,所有方向的阻力系数是相同的,比如海绵。在这类问题中,必须明确地将各方向的阻力系数设为同一个值。2)在某个方向的阻力系数与其他方向有所不同时,应该谨慎设置阻力参数。比如,如果一个多孔介质区由圆柱形吸管组成,并且吸管的开口方向与流动方向平行,则流体会比较容易地流过吸管,但是在其他两个方向则不易流过。如果有一个与流动方向垂直的平板,则流体完全不能流过平板,而是沿平板向其他两个方向流动。3)三维问题中另一种可能情况是所有三个方向都是不同的。比如,如果多孔介质区由不规则排列的物体组成,则流体在其中流过时在各个方向上的过程都是不同的。因此需要在各个方向上设置不同的系数。7.粘性和惯性阻力系数的推导推导粘性和惯性阻力系数的方法如下:(1)采用已知的压强损失,基于名义速度推导多孔介质参数。使用多孔介质模型必须注意的是,FLUENT中假设多孔介质单元是完全浸没在流体中的,而用户定义的1/α和C都是基于这个假设得出的。假定真实容器中的压强降与速度ij2ij16 FLUENT6.1全攻略的关系是已知的,而其中的多孔介质却是部分浸没在流体中的。通过下面的练习可以掌握一种计算C的方法。2例题:一块多孔板有25%浸没在流体中,压强降为动压头的0.5倍,损失因子K的L定义为:⎛12⎞Δp=KL⎜ρv25%⎟(8-54)⎝2⎠因此K应该等于0.5,计算动压使用的速度是经过25%浸没在流体中的多孔介质上的L速度。计算C时应该注意:21)在假定多孔板100%浸没在流体中的前提下计算其速度。2)损失系数必须被转化为单位长度上动压损失。因此损失因子K'适用于下面的公式:L⎛12⎞Δp=K'L⎜ρv100%⎟(8-55)⎝2⎠式中v=4×v,25%100%22v25%⎛4⎞K'L=KL×2=0.5×⎜⎟=8(8-56)v100%⎝1⎠根据第2)条要求,还需要将K'转换为单位厚度多孔板上的损失系数。假定板的厚L度为1mm,则惯性损失因子为:K'L8−1C===8000m(8-57)2-3厚度10对各向异性介质,上述过程需要在各坐标方向上重复进行。(2)用Ergun方程计算充填床的多孔介质参数。作为第二个例子,可以研究一下充填床问题。在湍流中,充填床的数学模型是用穿透率和惯性损失系数来定义的。计算相关常数的一种办法是使用半经验公式Ergun方程,这个方程适用的雷诺数范围很广,同时也使用于多种填充物:17 FLUENT6.1全攻略2Δp150μ(1−ε)1.75ρ(1−ε)2=v+v(8-58)23∞3∞LDpεDpε在计算层流时,(8-58)式中右端第二项可以被去掉,Ergun方程随之简化为Blake-Kozeny方程:2Δp150μ(1−ε)=v(8-59)23∞LDεp在上述方程中μ为粘度,D为粒子的平均直径,L为床的深度,ε为空腔比率,定p义为空腔与填充床的体积比。对比方程(8-48)、(8-50)和(8-58)可知,各方向上的渗透率和惯性损失系数为:D2ε3pα=(8-60)()21501−ε3.5()1−εC=(8-61)23Dεp(3)用经验公式推导穿过多孔板的流动参数作为第三个例子,下面用VanWinkle方程计算带方孔的多孔板上压强的损失。方程的提出者认为该方程适用于呈三角形分布的等距方孔板的湍流计算,具体形式如下:()()()2m"=CA2ρΔp/1−A/A(8-62)ffp式中m"为通过板的质量流量,A为孔的总面积,A板的总面积(固体与孔的和),fpD/t孔直径与板厚之比,C是随雷诺数和D/t变化的系数,其值可以通过查表获得。在t/D>1.6,且Re>4000时,C近似等于0.98,其中雷诺数是用孔的直径做特征长,孔中流体的速度做特征速度求出的。将方程m"=ρvA代入(8-62),并除以板厚Δx=t,可得:p()2Δp⎛12⎞1Ap/Af−1=⎜ρv⎟(8-63)2Δx⎝2⎠Ct其中v是名义速度。与方程(8-50)对比后可以发现:()21A/A−1pfC=(8-64)22Ct(4)用表格数据计算流过纤维垫的多孔介质参数18 FLUENT6.1全攻略在计算流体流过纤维垫或过滤器这类问题时,除了Blake-Kozeny方程外,还可以用试验数据进行计算,见下表:表8-6纤维计算试验数据表格固体材料的体积比纤维的无量纲渗透率B0.2620.250.2580.260.2210.400.2180.410.1720.802表中B=α/a,a为纤维直径。α的含义与(8-48)式中相同,对于给定纤维直径和体积比的多孔介质是容易求出的。(5)用压强和速度的试验数据计算多孔介质系数在已知多孔介质上的速度与压强降的试验数据时,可以通过插值求出多孔介质上的系数。下面通过一个例子说明这一点。假设试验数据如表8-7所示。采用表8-7的数据可以拟合出一条“速度-压强降”曲线,其方程为:2Δp=0.28296v−4.33539v(8-65)其中Δp为压强降,v为速度。这个方程等价于方程(8-46),形式上是速度v的多项式,对比两个方程可知:10.28296=Cρ(8-66)22表8-7速度、压强降的试验数据速度(m/s)压强降(Pa)20.078.050.0487.080.01432.0110.02964.03在ρ=1.225kg/m时,惯性阻力因子C=0.462。同样地,2μ−4.33539=(8-67)α−5在μ=1.7894×10时,可知1/α=−242282。19 FLUENT6.1全攻略8.采用指数律模型如果采用指数律模型计算多孔介质的动量源项,则需要输入的系数只有C和C。在01Fluid(流体)面板的PowerLawModal(指数律模型)下,输入C和C。01指数律可以与Darcy和惯性模型同时使用,C必须使用国际单位制。09.定义多孔性在Fluid(流体)面板中的FluidPorosity(流体多孔率)下设置多孔率,即可定义计算中的多孔率参数。定义多孔率的另一个方法是使用UDF函数。在创建了相关函数并将其载入FLUENT后就可以在计算中使用了。10.定义多孔介质材料在Fluid(流体)面板中的FluidPorosity(流体多孔率)下,选择SolidMaterialName(固体材料名称),然后直接进行选择即可。如果固体材料的属性参数不符合计算要求,可以对其进行编辑,比如可以用UDF函数编辑材料的各向异性导热率。11.定义源项如果在计算中需要考虑多孔介质上的热量生成,可以开启SourceTerms(源项)选项,并设置一个非零的Energy(能量)源项。求解器将把用户输入的源项值与多孔介质的体积相乘获得总的热量生成量。12.定义固定值如果有些变量的值不需要由计算得出,就可以选择FixedValues(固定值)选项,并认为设定这些参数。13.在多孔区域中取消湍流计算在Fluid(流体)面板中,开启LaminarZone(层流区)选项,就可以将湍流粘度设为零,从而使相关区域中的流动保持层流状态。14.定义旋转轴和区域运动其方法与标准流体区域上的设置相同,这里不再重复。20 FLUENT6.1全攻略8.19.7用物理速度定义多孔介质在多孔介质的计算中,FLUENT在缺省情况下用名义速度计算多孔介质区域的流动。名义速度可以在总体上保证流动的连续性,但是对于流动细节的考虑则不如物理速度,因此如果要更准确地计算多孔介质流动应该使用物理速度。名义速度与物理速度的关系如下:ddv=γv(8-68)名义物理在Solver(求解器)面板中的PorousFormulation(多孔介质公式)中可以定义物理速度。采用物理速度公式,假定φ为通用的流体变量,则各向同性多孔介质的控制方程为:∂()γρφd+∇⋅()()γρvφ=∇⋅γΓ∇φ+γS(8-69)φ∂t假定流动为单相流,则体积平均的质量和动量应满足的守恒型方程如下:∂()γρd+∇⋅()γρv=0(8-70)∂td∂()γρv()dd()dd⎛μC2ρd⎞d+∇⋅γρvv=−γ∇p+∇⋅γτ+γBf−⎜+v⎟v(8-71)∂t⎝α2⎠(8-71)式的最后一项是由多孔介质产生的粘性和惯性阻力项。8.19.8多孔介质流动的求解策略在多数情况下,可以用标准的求解次序计算多孔介质流动,但是在计算过程中可以发现计算的收敛速度大大放慢,特别是通过多孔介质区的压强降很大时更是如此。收敛速度放慢的主要原因是多孔介质引起的压强降在动量方程中是作为一个源项出现的,而源项则可以看作对计算增加了一个扰动,使原有格式的收敛性有所降低。解决收敛性问题的方法是提高初始流场的准确性,初始流场的准确性可以加速收敛过程。比如在多孔介质前后设置更接近真实压强值的压强条件,或者在计算中先用不带多孔介质模型的模型计算出初始流场,再把多孔介质模型设置到计算中,这样在一个更接近于最终结果的初始流场中开始的计算能够更快地收敛。在各向异性多孔介质的计算中,如果某个方向上的阻力系数远远大于其他两个方向,也无需将阻力因子设置成很大的值,而最好是将它限制在其他两个方向的阻力系数的2、3个量级以内。比如多孔介质的一个方向上的阻力系数可能是无穷大,但是在计算中不要将阻力系数设置成无穷大,而是需要将它限制在主流方向阻力系数的1000倍以内。21 FLUENT6.1全攻略8.19.9多孔介质的后处理能够反映多孔介质流动特点的参数是速度和压强。这两个参数在FLUENT内建的后处理模块中都可以找到,并很容易进行图形显示等操作。需要注意的是多孔介质的热力学变量的计算结果不能反映固体介质的性质。报告中显示的密度、热容、热导率和焓,都是多孔介质区域中流体的属性,与固体介质无关。如果多孔介质流动计算中存在表面化学反应,可以用Reactions...(反应)项中的ArrheniusRateofReaction-n(第n个反应的Arrhenius反应速率)来表示。8.20风扇边界条件在已知风扇几何特征和流动特征的条件下,风扇的这些特征可以被参数化用于计算风扇风扇对流场的影响。在风扇边界条件中可以输入一条确定风扇前后压力头与速度关系的经验曲线。同时可以确定的量还包括风扇旋转速度的径向与周向速度分量。风扇模型不是绕风扇流动的精确模型,但是它可以计算流过风扇的流量。风扇可以与其他类型的源项共同使用,也可以作为唯一的源项使用。在作为唯一源项时,系统流量的计算是在考虑系统损失和前面提到的风扇曲线的前提下完成的。8.20.1风扇方程1.经过风扇的压强跃升模型风扇的物理模型是一个无限薄的面,压强在经过这个面时出现跃升,而跃升的值是速度的函数。在函数关系取为多项式的情况下,压强跃升函数的形式为:Nn−1Δp=∑fnv(8-72)n=1式中Δp为压强跃升量,f为多项式系数,v为速度。需要注意的是在这个关系式中,n速度v的值应该保持为正值,因为这代表流体是向前流过风扇,所以才会产生压强跃升。另一个确定压强跃升的方法是用垂直于风扇的质量平均速度作为计算压强跃升的速度,算出风扇区域的压强跃升。22 18.3.6连接多相的UDFs到FLUENT1.DEFINE_CAVITATION_RATE一旦通译或编译了DEFINE_CAVITATION_RATEUDF,函数的名字将会在FLUENT的User-DefinedFunctionHooks面板(如图18.3.6.1所示)中变地可视与可选。请注意,气蚀率的UDFs仅适用于混合物的多相模型。要连接UDF到FLUENT中,首先,在MultiphaseModel面板(如图18.3.6.2)中激活Mixture(混合物)模型,然后在InterphaseMassTransfer下面选择Cavitation。DefineModelsMultiphase…下一步,打开User-DefinedFunctionHooks面板,DefineUser-DefinedFunctionHooks…图18.3.6.1:User-DefinedFunctionHooks面板 图18.3.6.2:MultiphaseModel面板在CavitatinMassRateFunction的下拉菜单中选择函数的名字(例如,user_cavitation_rate),然后点击OK。2.DEFINE_EXCHANGE_PROPERTY一旦通译或编译了DEFINE_EXCHANGE_PROPERTYUDF,函数的名字将会在FLUENT的User-DefinedFunction面板(如图18.3.6.4所示)中变地可视与可选。用户化的质量输运UDFs可以用于VOF,混合物和Eulerian多相模型。阻力系数UDFs可以用于混合物和Eulerian模型,而热传递和升力系数UDFs仅适用于Eulerian模型。在连接函数之前需要激活多相模型。要连接一个交换特性的UDF到FLUENT,首先需要在Phases面板中通过点击Interactions...打开PhaseInteraction面板(如图18.3.6.3所示)。DefinePhases…下一步,在PhaseInteraction面板中点击合适的标签(如,Drag),然后从所需要的相应交换特性(如,DragCoefficient)的下拉菜单中选择user-defined。这样将打开User-DefinedFunctions面板。 DefineDynamicMeshParameters…图18.3.5.3:PhaseInteraction面板图18.3.5.4:User-DefinedFunctions面板!为了显示关于混合物模型的阻力系数,务必在MultiphaseModel面板中的MixtureParameters下面选择SlipVelocity。最后,从显示在User-DefinedFunction面板中的UDFs列中选择函数名(如,drag),点击OK。那么函数名(如,drag)将会显示于PhaseInteraction面板的关于DragCoefficient的user-defined函数的下面。 3.DEFINE_VECTOR_EXCHANGE_PROPERTY一旦通译或编译了DEFINE_VECTOR_EXCHANGE_PROPERTYUDF,函数名将会在FLUENT的User-DefinedFunctions面板(如图18.3.6.6所示)中变地可视与可选。要连接UDF到FLUENT,首先,通过点击Phases面板中Interactions…打开PhaseInteraction面板(如图18.3.6.5所示)。DefinePhases…图18.3.5.5:PhaseInteraction面板下一步,在PhaseInteraction面板中点击Slip标签,然后在关于SlipVelocity的下拉菜单中选择user-defined。这样将打开User-DefinedFunctions面板。 图18.3.5.6:User-DefinedFunctions面板!滑动速度的UDFs仅适用于多相混合物模型。最后,从显示在User-DefinedFunction面板(如图18.3.6.4所示)上的UDFs列中选择函数名(如,custom_slip),点击OK。8.4.7连接动态网格的UDF到FLUENT1.DEFINE_CG_MOTION一旦通译或编译了DEFINE_CG_MOTIONUDF,函数名将会在FLUENT的DynamicZones面板(如图18.3.7.1所示)中变地可视与可选。要连接UDF到FLUENT,首先需要激活动态网格模型。DefineDynamicMeshParameters…选择Model下面的DynamicMesh,点击OK。!仅当在Solver面板中选择了Unsteady时,DynamicMesh面板才可被访问。其次,打开DynamicZone面板。DefineDynamicMeshZones… 图18.3.7.1:DynamicZones面板在DynamicZones面板(如图18.7.1所示)中的Type的下面选择RigidBody,点击MotionAttributes标签。最后,从MotionUDF/Profile的下拉菜单中选择函数名(如,piston),然后点击Create,再点击Close。2.DEFINE_GEOM一旦通译或编译了DEFINE_GEOMUDF,函数名将会在FLUENT的DynamicZones面板(如图18.3.7.3所示)中变地可视与可选。连接DEFINE_GEOMUDF到FLUENT的步骤与DEFINE_GEOMUDF的相同,所不同的是,在DynamicZones面板(如图18.3.7.2所示)中的Type的下面选择Deforming,点击GeometryDefinition标签。从Definition下面的下拉菜单中选择user-defined,GeometryUDF的下拉菜单中选择函数名(如,parabola)。 图18.3.7.5.2:DynamicZones面板3.DEFINE_GRID_MOTION一旦通译或编译了DEFINE_GRID_MOTIONUDF,函数名将会在FLUENT的DynamicZones面板(如图18.3.7.3所示)中变地可视与可选。连接DEFINE_GRID_MOTIONUDF到FLUENT的步骤与DEFINE_GEOMUDF的相同,所不同的是,在DynamicZones面板(如图18.3.7.3所示)中的Type的下面选择User-Defined,并点击MotionAttributes标签。从MeshMotionUDF下拉菜单中选择函数名(如,beam)。 图18.3.7.5.3:DynamicZones面板8.4.8连接DPMUDF到FLUENT1.DEFINE_DPM_BC一旦通译或编译了DEFINE_DPM_BCUDF,函数名将会在FLUENT的适当的边界条件面板(如图18.3.8.1所示)中变地可视与可选。DefineBoundaryConditions假设UDF在一个壁面上定义了一个粒子速度的边界条件。要连接UDF到FLUENT,首先打开Wall边界条件的面板,选择DPM标签(如图18.3.8.1)DefineDynamicMeshZones… 图18.3.8.1:Wall面板然后,在Wall面板中(在DPM标签中),在DiscretePhaseModelConditions下面的BoundaryCond.Type的下拉菜单中选择的user_defined,这样将打开一个面板,在这个面板中的BoundaryCond.Function的下拉菜单中选择函数名(如,reflect)。点击OK。2.DEFINE_DPM_BODY_FORCE一旦通译或编译了DEFINE_DPM_BODY_FORCEUDF,函数名将会在FLUENT的DiscretePhaseModel面板(如图18.3.8.2所示)中变地可视与可选。DefineModelsDiscretePhase… 图18.3.8.2:DiscretePhaseModel面板要连接UDF到FLUENT,在User-DefinedFunctions下面的BodyForce下拉菜单中选择函数名(如,particle_body_force)。然后点击OK。3.DEFINE_DPM_DRAG一旦通译或编译了DEFINE_DPM_DRAGUDF,函数名将会在FLUENT的DiscretePhaseModel面板(如图18.3.8.3所示)中变地可视与可选。DefineModelsDiscretePhase… 图18.3.8.3:DiscretePhaseModel面板要连接UDF到FLUENT,在DragParameters下面的DragLaw下拉菜单中选择函数名(如,particle_drag_force)。然后点击OK。请注意,在下拉菜单中的函数名前面有单词udf,如udfparticle_drag_force。4.DEFINE_DPM_EROSION一旦通译或编译了DEFINE_DPM_EROSIONUDF,函数名将会在FLUENT的DiscretePhaseModel面板(如图18.3.8.3所示)中变地可视与可选。DefineModelsDiscretePhase… 图18.3.8.4:DiscretePhaseModel面板要连接UDF到FLUENT,激活Interaction下面的InteractionwithContinuousPhase选项,然后打开Option下面的Erosion/Accretion。最后,在User-DefinedFunction下面的Erosion/Accretion的下拉菜单中选择函数名(如,dpm_accr),点击OK。5.DEFINE_DPM_INJECTION_INIT一旦通译或编译了DEFINE_DPM_INJECTION_INITUDF,函数名将会在FLUENT的SetInjectionProperties面板(如图18.3.8.5所示)中变地可视与可选。DefineInjections… 图18.3.8.5:SetInjectionPorperties面板在连接UDF之前,需要在Injections面板中建立粒子注射。在Injections面板中点击Create打开SetInjectionProperties面板,建立粒子注射。下面连接UDF到FLUENT。在SetInjectionProperties面板中选择UDF标签,然后在User-DefinedFunctions下面的Initialization下拉菜单中选择函数名(如,init_bubbles)。点击OK。6.DEFINE_DPM_LAW一旦通译或编译了DEFINE_DPM_LAWUDF,函数名将会在FLUENT的CustomLaws面板(如图18.3.8.6所示)中变地可视与可选。要连接UDF到FLUENT,首先点击Injections面板中的Create打开SetInjectionProperties面板。DefineInjections…其次,在SetInjectionProperties面板中,点击Custom选项,这会打开CustomLaws面板。 图18.3.8.6:CustomLaws面板最后,在CustomLaws面板中,从六个粒子法则中的某个适当的(例如FirstLaw)下拉菜单中选择函数名(例如,custom_law),然后点击OK。7.DEFINE_DPM_OUTPUT一旦通译或编译了DEFINE_DPM_OUTPUTUDF,函数名将会在FLUENT的SampleTrajectories面板(如图18.3.8.7所示)中变地可视与可选。ReportDiscretePhaseSample… 图18.3.8.7:SampleTrajectories面板要连接UDF到FLUENT,在User-DefinedFunctions下面的Output下拉菜单中选择函数名(如,dpm_output)。然后点击Compute和Close。8.DEFINE_DPM_PROPERTY一旦通译或编译了DEFINE_DPM_PROPERTYUDF,函数名将会在FLUENT的User-DefinedFunctions面板(如图18.3.8.9所示)中变地可视与可选。要连接UDF到FLUENT,首先需打开User-DefinedFunctions面板,途径是在Materials面板中的适当特性(例如,ParticleEmissivity)的下拉菜单中选择user-defined。DefineMaterials… 图18.3.8.8:Materials面板!为了使关于PaticleEmissivity的特性显示在上述的面板中,必须激活辐射模型,在DiscretePhaseModel面板中打开ParticleRadiationInteraction选项,以及在Injections面板中引入一个粒子注射。图18.3.8.9:User-DefinedFunctions面板 其次,在User-DefinedFunctions面板中,从显示在UDFs的列中选择函数名(如,coal_emissivity),点击OK。随后,函数名显示在Materials面板中所选特性(如,ParticleEmissivity)的下面。9.DEFINE_DPM_SCALAR_UPDATE一旦通译或编译了DEFINE_DPM_SCALAR_UPDATEUDF,函数名将会在FLUENT的DiscretePhaseModel面板(如图18.3.8.10所示)中变地可视与可选。DefineModelsDiscretePhase…图18.3.8.10:DiscretePhaseModel面板要连接UDF到FLUENT,在User-DefinedFunction下面的ScalarUpdate的下拉菜单中选择函数名(如,melting_index)(如图18.3.8.10),然后点击OK。10.DEFINE_DPM_SOURCE一旦通译或编译了DEFINE_DPM_SOURCEUDF,函数名将会在FLUENT的DiscretePhaseModel面板(如图18.3.8.11所示)中变地可视与可选。 DefineModelsDiscretePhase…图18.3.8.11:DiscretePhaseModel面板要连接UDF到FLUENT,在User-DefinedFunction下面的Source的下拉菜单中选择函数名(如,dpm_source),然后点击OK。11.DEFINE_DPM_SPRAY_COLLIDE一旦通译或编译了DEFINE_DPM_SPRAY_COLLIDEUDF,函数名将会在FLUENT的User-DefinedFunctionHooks面板中(如图18.3.8.12所示)变地可视与可选。DefineUser-DefinedFunctionHooks… 图18.3.5.12:User-DefinedFunctionHooks面板!在连接UDF之前,需要激活DiscretePhaseModel面板中的一个离散相模型。要连接UDF到FLUENT,在User-DefinedFunctionHooks面板中的SprayCollideFunction的下拉菜单中选择函数名(如,udf_mean_spray),然后点击OK。12.DEFINE_DPM_SWITCH一旦通译或编译了DEFINE_DPM_SWITCHUDF,函数名将会在FLUENT的CustomLaws面板中变地可视与可选(如图18.3.8.13所示)。要连接UDF到FLUENT,首先点击Injections面板中的Create打开SetInjectionProperties面板。DefineInjections…其次,在SetInjectionProperties面板中,点击Custom选项,这将会打开CustomLaws面板。 图18.3.8.13:CustomLaws面板最后,在CustomLaws面板中,从Switching的下拉菜单中选择函数名(例如,dpm_switch)(如图18.3.8.13),然后点击OK。18.4用户定义函数(UDF)举例本章将通过一个例子按部就班的介绍一个UDF的编辑和它在FLUENT模型中的有效应用。编辑这个UDF总共有7步:ò定义问题ò建立一个C语言源代码文件ò启动FLUENT,读入(或建立)case文件ò通译源文件ò连接UDF到FLUENTò运行计算ò分析数值结果及比较数值结果与期望结果概述作为程序的第一步,有必要应用一个UDF给出所希望求解的问题的定义。例如,假设想使用一个UDF为自己的问题定义一个自定义边界剖面,那么首先需要定义出描述这个剖面的数学方程,即建立问题的数学模型。第二步,将需要把数学方程翻译成一个用C语言书写的函数。可以使用任何文本编辑器进行此工作。在工作目录中用扩展名为a.c(例如,velocity_profile.c)的形式保存文件。一旦写了C函数,准备启动FLUENT及读入(或建立)case文件,这是程序的第三步。然后,通译或编译并装载UDF的源文件,调试这个源文件(第四步),然后连接UDF到FLUENT中(第五步)。最后,运行这个计算(第六步),分析计算模拟结果,并把模拟结果与期望的结果比较(第七步)。下面将通过一个涡轮翼型的例子一步步的介绍这个过程。 第一步:问题的定义创建一个UDF的第一步是建立问题的数学模型。图18.4.1是涡轮翼型的图解。翼型周围的流场模型应用非结构网格。域从一个底部的周期边界延伸到同一个边界的顶部,左边是速度进口,右边是压力出口。图18.4.1:涡轮翼形的网格进口处x速度大小为常数20m/s,图18.4.2,图18.4.3分别是计算所得的速度等值线图和速度矢量图。可以看到,初始的定常速度场随着气流绕涡轮翼的流动而被曲解。为解决此问题,对入流速度进行修正,现在假设涡轮翼型的进口处的x速度是非一致的,可表示如下:2⎛y⎞vx=20−20⎜⎟⎝0.0745⎠其中,变量y在进口的中心取0值,从进口上部到下部呈线性取值,变化范围是±0.0745。所以x速度在进口中心的速度为20m/s,底边的速度为0。对进口速度修正后的涡轮翼进行计算所得的结果将与进口处为常数速度的计算结果进行比较。图18.4.2:关于进口x速度为常数的速度等值线图图18.4.3:关于进口x速度为常数的速度矢量图第二步:创建一个C源文件既然已决定用这个方程定义UDF,那么使用任一种文本编辑器去建立一个含C代码的文本文件。在工作目录中保存扩展名为.c的源代码文件(例如,udfexample.c)。下面的源代码清单仅包含一个单独的UDF。事实上,源文件中可以含有多个串联的函数。下面是关于在一个UDF中怎样执行上面方程的一个例子。UDF的功能是由主要的 DEFINE宏指定的。这里,DEFINE_PROFILE宏用来说明一个求解器,这个求解器中有下面代码将提供的边界上的翼型信息。其它的DEFINE宏将在后面讨论。/************************************************************************udfexample.cUDF规定一个定常速度的翼型的边界条件************************************************************************/#include”udf.h”/*必须在每一个你写的UDF的开始*/DEDINE_PROFILE(inlet_x_velocity,thread,index){realx[ND_ND];/*这个将取位置矢量*/realy;face_tf;begin_f_loop(f,thread)/*跳过线程中的所有的面,被传送到DEFINE宏自变量中*/{F_CENTROID(x,f,thread);Y=x[1];F_PROFILE(f,thread,index)=20.-y*y/(.0745*.0745)*20.;}end_f_loop(f,thread)}DEFINE_PROFILE宏的第一个自变量,inlet_x_velocity,是用来鉴别VelocityInlet面板中的函数。自变量的名字由自己任意规定。函数中的方程将应用在一个给定的边界区域(由thread识别)上的所有单元面(在面环中用f识别)。在FLUENT图形用户界面里,当为一个特殊的边界选择UDF时,线程是被自动定义的。指针是通过begin_f_loop设备被自动定义的。在这个UDF中,begin_f_loop宏用来跳过边界区域中的所有单元面。对于每一个面,面的中心坐标是通过F_CENTROID宏存取的。y坐标的y用于比喻的剖面方程中,返回的速度通过F_PROFILE宏分配到这个面上。Begin_f_loop和F_PROFILE是Fluent提供的宏。第三步:启动FLUENT和读(或建立)Case文件一旦创建了UDF,准备在FLUENT中开始建立问题。1.从工作的目录中启动FLUENT。2.读(或建立)case文件。第四步:通译源文件现在准备通译在第二步中创建的UDF,并且UDF包含在名为udfexample.c的源文件中。注意,这一步不适合用Windows并行网络。1.打开InterpretedUDFs面板。DefiUser-DefFunctiInterpreteneinedonsd… 图18.4.4:InterpretedUDFs面板2.规定源文件,其中有两种途径:直接在SelectFile面板中的SourceFileName下面的文本框中键入名字,另外一种方法是点击面板中的Browse…,从合适的目录中选择UDF的源文件名。3.在CPPCommandName下的框里规定用C预处理器。可以保留默认的cpp,也可以选择UseContributedCPP使用Fluent.Inc提供的预处理器。4.保留StackSize里的默认值10000,除非函数中的局部变量数会引起堆叠从而导致溢出。在这种情况下,在StackSize里设置的数要大于局部变量使用的数。当函数在翻译时,如果希望一列编译语言代码出现在自己的控制台窗口中,那么点击DisplayAssemblyListing。点击Interpret通译UDF。Inlet_x_velocity:.local.pointerthread(r0).local.intnv(r1)0.local.end0savelocal.intf(r3)0push.int0.local.pointerx(r4)3begin.data8bytes,0bytesinitialized:7save......156pre.inc.intf(r3)158pop.int159b.L3(22).L2161restore162restore163ret.v!注意,如果编辑失败,那么FLUENT将报告一个错误,那么需要对程序进行调试。当通译完成后,点击Close按扭。写case文件。名为inlet_x_velocity的通译的UDF,将被保存case文件中,以便无论何时读这个case文件时,函数都将被自动地翻译。如果选了DisplayAssemblyListing项,那么编译代码将在控制台窗口中出现。!除了翻译关于剖面UDF的这一特殊的例子,也可以使用FLUENT中CompiledUDFs面板编译UDF。编译UDFs的详细内容在第18.3节中介绍。第五步:连接UDF到FLUNET第四步工作即UDF通译完成后,开始下一步工作:使用一个图形用户界面面板连接这个函数到FLUENT。对这个特殊剖面UDF的例子,这个函数的名字将出现在VelocityInlet 的边界条件面板中的ZoneName下面的文本框里。DefiBoundaryneConditions…在X-Velocity下面的列中,选择udfinlet_x_velocity,它是我们样本例题中函数的名字。一旦被选择,这个UDF就会在计算中使用,而不是出现在X-Velocity框里面的那个0值(在这个例题中)。若接受新的边界条件,点击OK,然后关掉这个面板。第六步:运行计算和通常一样,运行这个计算。SolvIteratee…第七步:分析数值结果及比较数值结果与期望结果一旦计算结果收敛,可以获得修正后的速度场。图18.4.5给出了比喻的进口x速度的速度等值线图,可以与20m/s的常数速度的结果(图18.4.2)比较一下。对于常值速度情况,流场随着气流围绕涡轮翼的流动而受到曲解。然而,对于这个施以比喻的剖面的速度场在入口的中心呈现一个最大值,到达入口的边上则降到了0。图18.4.5:关于比喻的进口x速度的速度等值线图

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。
关闭