版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
10本章包含了FLUENTUDFs边界条源物理属反应速率(Reacting用户定义标量(User_Defined边界条UDFsFLUENTUDFs涡轮叶片的抛物线速度分要考虑的涡轮叶片显示在Figure10.1.1Figure10.1.1:TheGridfortheTurbineVane常数速度应用于流场的结果显示在Figure10.1.2和Figure10.1.3中当流动移动到Figure10.1.2:VelocityMagnitudeContoursforaConstantInletxFigure10.1.3:VelocityVectorsforaConstantInletx现在x速度将用以下型线描述y0.0,在顶部和底部其值分别延伸到0.0745x速度在20m/sec0。UDF用于传入上的这个抛物线分布。C源代码(vprofile.c)显示如下。函数使用 中描述 提供的求解器函数/* /*UDFforspecifyingsteady-statevelocityprofileboundary #include"udf.h"DEFINE_PROFILE(inlet_x_velocity,thread,{realx[ND_ND]; /*thiswillholdthepositionvector*/realy;face_tbegin_f_loop(f,{y=x[1];F_PROFILE(f,thread,position)=20.-}end_f_loop(f,}position。Threadthread的指针,position(loop)内为变量设置的数值fface_txyreal数据类f的面输出面质心(x)fthread指向的线(thread)上。x[1]yyx速度。这个值接着被分配到F_PROFILEposition(VelocityInletUDF作为x边界条件的基础上通过求解器传递给它)来设置内存中x速度面值。为了在FLUENT中使用这个解释式UDF,你必须首先编译它。 CommandName区域输入你的CStackSizeDisplayAssemblyListing在你的控制台窗口中能看到汇编列表,当函数编译时。点击CompileClose面板。VelocityInletX-Velocityudfinlet_x_velocity,这个名字在上面已经命名给函数。X-Velocity0值(在这个例子中OK接受Figure10.1.4and10.1.5所示。速度场在中心显示了最大值,到边缘上降为0。Figure10.1.4:VelocityMagnitudeContoursforaParabolicInletxFigure10.1.5:VelocityVectorsforaParabolicInletx管内流动的瞬态速度分这个例子中,瞬时的周期性的速度边界条件使用UDF应用于管子的。速度形式为 (10.1.1)1m0.2m1kg/m3和粘度为2105kg/m-s气速度关于平衡值v020ms5m/s10rad/s速度分 ( )的源代码显示如下/* /*UDFforspecifyingatransientvelocityprofileboundary #include"udf.h"{face_tbegin_f_loop(f,{realt=RP_Get_Real("flow-F_PROFILE(f,thread,position)=20.+}end_f_loop(f,}unsteady_velocity,DEFINE_PROFILEmacroTheRP_Get_Real("flow-time")用于real流动时间,它被分配给变量t6.9UDFSolver 接下来你将打开InterpretedUDFs面板。在SourceFileName下面的文本框内输入函数的名字,如果必要,还有你的C预处理程序的名字。打开Display 。点击pile然后关闭面板。 由UDF定义的正弦速度边界条件现在可选为区域的X-Velocity。在X-Velocity面板中,在X-Velocityudfunsteady_velocity,OK。Iterate 荡周期内将完成20个时间步。在每个时间步内执行的迭代次数被限制为20。在后,很可能导致收敛的时间步。UDFProfileUpdateInterval1因此每次迭代速度都被更新。在完成了60个时间步之后(或3个周期你可以检查跨越压力出口由振荡条件引起速度数量级。SurfaceMonitorsSolveMonitorsSurfaceMonitors1monitor-1(如果需要,你可重Name下的文本输入框内)Plot,所以所选的数量将作为PrintWrite,因而信息将被写入文件,它将被给一个名字为monitor-1.out(如果你改变了monitor的名字,这个名字将用作输出文件的前缀。EveryIterationTimeSteporFlowTimeTimeStepDefine...DefineSurfaceMonitor面板中指定被监视的数量。在这个例子中,在ReportOf下的下拉列表中选择Velocity...andVelocityMagnitude。报告的区域是pressure-outlet-5,,在Surfaces列表中选择它。FlowFileXYPlot面板读入文件。 你可通过在Files下面的文本框中输入它的名字来输出文件和选择这个文件并点击Add ,然后点击Plot,你可获得Figure10.1.6的图形显示。Figure10.1.6:AverageVelocityMagnitudeatthePressure5m/s20m/s源UDFFLUENTUDF给管道流动添加动量源项(AddingaMomentumSourcetoaDuctFlow)UDF模拟源项时,理解函数调用的内容是很重要的。当你增加了一个源在这个例子中,动量源项将被添加到2D管道流动中。管道长4m,宽2m,使用通过中心线的对称边界条件来模拟。液体金属(10.2.1中)290K1mm/s0.5m之后,它受到了冷壁面的冷却,壁面温度保持在280K。为了模拟金属的凝固,288K以下,动量源项就应用于金属。动量源项是与速度的x分量vxSx=-Cv C0UDFSx只依赖于求解变量vx。它关于vxUDFTable10.2.1:PropertiesoftheLiquid8000kg/m Specific680J/kg-Thermal30W/m-/*UDFthataddsmomentumsourcetermandderivativetoduct #include"udf.h"#define DEFINE_SOURCE(cell_x_source,cell,thread,dS,{realif(C_T(cell,thread)<={}
/*sourcetermsource=-/*derivativeofsourcetermw.r.t.x-velocity.*/dS[eqn]=-CON;source=dS[eqn]=return}这个函数,被命名为cell_x_source,使用了DEFINE_SOURCE被定义在单元上。方程10.2.1中常数C就是函数中的CON,它被赋值为20kg/m3-s,它导致了需要N/m3。单元的温度由C_T(cell,thread)返回。这个函数检测温度是速度值。如果不是,源项设置为0.0。在函数的结尾,适当的源项值返回到FLUENT求解器。UDF以解释(见Section7.2)的方式执行。Mass,Momentum,andEnergy(可通过移动滑动条看到)添加源(注,在其它应用中,其它问题变量的源项这时也变的有效。为了给XMomentumudfcell_x_sourceOK对它的冷却效应(Figure10.2.1Figure10.2.1:TemperatureContoursIllustratingLiquidMetal速度数量级等值线(Figure10.2.2)显示了壁面附近冷却区域的液体逐渐到Figure10.2.2:VelocityMagnitudeContoursSuggesting通过流函数的线型等值线(Figure102.3)Figure10.2.3:StreamFunctionContoursSuggesting在这种方式下为了更精确地液体的凝固,则需要能量源项,给出现在方10.2.1C物理属性(PhysicalUDFFLUENTUDF方式被执通过温度依赖粘度的凝固(SolidificationviaaTemperature-Dependent属性(和源项一样)的UDF是从单元的循环中调用的。由于这个原因,指定FLUENT求解器。(5.5103kg/ms(T286K(1.0kg/m-在中等温度范围内(286KT288K,粘度在上面给出的两个值之间按线性 (10.3.1)的是凝固。这里,没有为能量场做修正以包含凝结潜热。UDFC源代码显示/*UDFforspecifyingatemperature-dependentviscosity #include"udf.h"{realrealtemp=C_T(cell,if(temp>288.)mu_lam=5.5e-elseif(temp>mu_lam=143.2135-0.49725*temp;mu_lam=return}函数,被命名为cell_viscosityDEFINE_PROPERT定义在单元上。引入了两个real变量:temp,C_T(cell,thread)的值,和mu_lam,由函数计算的层流粘数的结尾,mu_lam的计算值返回到求解器。MaterialsViscosity的下拉列表下,user-defined选项。一旦你选了这个选项,-findFuntins面板将打开,在其中你可选择合(F接。详细内容见Stion7.2.1这个模拟的结果相似于Section10.2.1Figure10.3.10.0055Figure10.3.1:LaminarViscosityGeneratedbyaUser-DefinedFigure10.3.2:ContoursofVelocityMagnitudeResultingfromaUser-DefinedFigure10.3.3:StreamFunctionContoursSuggesting反应速率(ReactionUDFFLUENTUDF的例子,考虑为一个两种气态物质的简单系统自定义体积species-aspexies-b。反应速率是一个由下面的表达式给出的从pecies-aspecies-b的速率:Xa是species-aK1K2
2D(平面)区域由90度的弯管组成。管子宽16inches,约114inches长。1.0kg/m3,粘度为1.72105kgms区域的轮廓显示在Figure10.4.1中多孔介质是从左边延伸到区域顶部Figure10.4.1:TheOutlineofthe2D通过左边,气态纯物质pie-a以0.1m/s的速度进入。气体进入多孔的惯性阻力。层流流场(Figure1.4.2)Figure10.4.2:Streamlinesforthe2DDuctwithaPorous流动方式通过显示在Figure10.4.3Figure10.4.3:VelocityVectorsforthe2DDuctwithaPorousUDFC源代码(rate.c)/* /*UDFforspecifyingareactionrateinaporous #include"udf.h"#defineK12.0e-#defineK2DEFINE_VR_RATE(user_rate,c,t,r,mole_weight,species_mf,rate,{reals1=realmw1=if(FLUID_THREAD_P(t)&&*rate=K1*s1/pow((1.+K2*s1),2.0)/mw1;*rate=}函数,被命名为user_rate,DEFINE_VR_RATE为给定物质的质量分数定义在单元上。UDF执试来检查多孔区域,仅应用反应速率方程于多孔区域。宏FLUID_THREAD_P(t)用于确定一个单元thread是否是流体(而不是固体)threadTHREAD_VAR(t).fluid.porousthread是否是多孔为了使用这个UDF,设置名字为librate的 一个如Section7.3.3描述的共享库。接着,启动FLUENTcase文件读入或者setitup。打开在MakefileCompiledUDFs面板中指定librateLibraryName和点Open连接这个库到FLUENT执行。 User-DefinedFunctionHooksVolumeReactionRateFunctionuser_rate作为反应速率。 Function初始化和运行计算。Species-aFigure10.4.4species-bspecies-b100%and0%species-a层所暗示,但在流体区域没有反应发生。Figure10.4.4:MassFractionforspecies-aernedbyaReactioninaPorous用户定义标量(User-DefinedUDF的例子。关于在9使用用户定义标量的后处理(PostprocessingUsingUser-DefinedScalars)下面是一个编译式UDF例子,该UDF计算温度四次幂的梯度,并其数量于UDF的实际应用是可疑的,这里它的目的在于显示用于后处理的任意数量梯度/*UDFforcomputingthemagnitudeofthegradientof #include"udf.h"/*Definewhichuser-definedscalarstouse.*/{ ,{Thread*t;cell_tc;face_tf;/*Makesurethereareenoughuser-definedscalars.*/if(n_uds<N_REQUIRED_UDS)Internal_Error("notenoughuser-definedscalars/*FillUDSwithtemperatureraisedtofourthpower.*/thread_loop_c(t,){if(NULL!={begin_c_loop{realT=C_T(c,t);C_UDSI(c,t,T4)=pow(T,4.);}end_c_loop}}thread_loop_f(t,{if(NULL!={begin_f_loop{realT=if(NULL!=THREAD_STORAGE(t,SV_T))T=F_T(f,t);elseif(NULL!=THREAD_STORAGE(t->t0,SV_T))T=C_T(F_C0(f,t),t->t0);F_UDSI(f,t,T4)=}end_f_loop}}/*FillsecondUDSwithmagnitudeofgradient.*/thread_loop_c(t,){if(NULL!=THREAD_STORAGE(t,SV_UDS_I(T4))&&NULL!=T_STORAGE_R_NV(t,SV_UDSI_G(T4))){begin_c_loop{C_UDSI(c,t,MAG_GRAD_T4)=}end_c_loop}}thread_loop_f(t,{if(NULL!=THREAD_STORAGE(t,SV_UDS_I(T4))&&NULL!=T_STORAGE_R_NV(t->t0,SV_UDSI_G(T4))){begin_f_loop{}end_f_loop}}}条件语言ifNULLTHREAD_STORAGE(t,SV_UDS_I(T4)))用于检测用户定义标量T4的是否被分配,而NULL!=T_STORAGE_R_NV(t,SV_UDSI_G(T4))检测用户定义标量T4的梯度的是否被分配。UDF7章描述的,你还必须在FLUENT中求解用 更详细的内容见Section9.3实现FLUENTP-1辐射模型(ImplementingFLUENT’sP-1Radiation这部分给出了一个例子示范了P1UDFs和用户定义标量输P1(diffusion)G10.5.1,由方程10.5.2给出,源项由方程10.5.3给出。这些方程更详细的在用户指南的Section11.3.4中。 (10.5.1)
n
10.5.5 (10.5.4)根据壁面入射辐射Gw指定的边界条件的这种形式是不适宜的。这种混合边界条10.5.410.5.5求解Gw10.5.610.5.7给出的辐射壁面热流qr,w10.5.5 (10.5.6)10.5.610.5.7中的附加项0和G010.5.4在FLUENT中,被控制标量的梯度的分量垂直于单元边界(面,Gn是主要分量可使用FLUENT宏BOUNDARY_SECONDARY_GRADIENT_SOURCE的壁面边界条件的UDF中看到这些宏的调用。为了完成P1模型的实现,辐射能量方程必须与热能方程耦合。这可通过修改源方程的(负的)源项。如用户指南中显示的,入射辐射能量方程10.5.3的源项(FLUENT的内建的P1模型,这项将被自动地计算。宏DEFINE_HEAT_FLUX允许通过指定Section4.3.3中的qir方程的系数来修给出。比较这个方程与Section4.3.3中qir方程将为cir[]得出合适的系数。在这个例子中,P1UDFs来完成。它们都被包含在UDF来执行。入射辐射G的单独的用户定义标量DEFINE_DIFFUSIVITYUDF10.5.2中的和DEFINE_SOURECEUDF10.5.3中的源项。壁面上G的边界条件通DEFINE_PROFILE中指定方程10.5.7的负值作为指定热流。DEFINE_ADJUSTUDF用于通知FLUENT检查已定义的(在求解器中)合适的DEFING_HEAT_FLUXUDF用于改变能量方程壁面上的边界条件。MaterialsDEFINE_ADJUSTandDEFINE_HEAT_FLUXUser-DefinedFunctionHooks面板中指定。/*ImplementationoftheP1modelusinguser-defined #include"udf.h"/*Definewhichuser-definedscalarstouse.*/{staticrealabs_coeff=1.0; /*absorptioncoefficient*/staticrealscat_coeff=0.0; /*scatteringcoefficient*/staticreallas_coeff=0.0;/*linear-anisotropic /*scatteringcoefficient*/staticrealepsilon_w=1.0; /*wallemissivity*/DEFINE_ADJUST(p1_adjust,{/*Makesurethereareenoughuserdefined-scalars.*/if(n_uds<N_REQUIRED_UDS)Internal_Error("notenoughuser-definedscalars}DEFINE_SOURCE(energy_source,c,t,dS,{dS[eqn]=-return-abs_coeff*(4.*SIGMA_SBC*pow(C_T(c,t),4.)-}DEFINE_SOURCE(p1_source,c,t,dS,{dS[eqn]=-returnabs_coeff*(4.*SIGMA_SBC*pow(C_T(c,t),4.)-}DEFINE_DIFFUSIVITY(p1_diffusivity,c,t,{return1./(3.*abs_coeff+(3.-}DEFINE_PROFILE(p1_bc,thread,{face_trealrealdG[ND_ND],dr0[ND_ND],es[ND_ND],ds,A_by_es;realaterm,alpha0,beta0,gamma0,Gsource,Ibw;realEw=epsilon_w/(2.*(2.-epsilon_w));Thread*t0=thread->t0;/*Donothingifareasaren'tcomputedyetornotnexttofluid.*/if(!Data_Valid_P()||!FLUID_THREAD_P(t0))return;begin_f_loop{cell_tc0=At=NV_MAG(A);
ifGsource=0.; /*ifgradientnotstoredyet*/gamma0=C_UDSI_DIFF(c0,t0,P1);alpha0=A_by_es/ds; =Gsource/alpha0; =alpha0*gamma0/At;Ibw=/*Specifytheradiativeheatflux.*/F_PROFILE(f,threosition)=aterm*Ew/(Ew+aterm)*(4.*M_PI*Ibw-C_UDSI(c0,t0,P1)+}end_f_loop}DEFINE_HEAT_FLUX(heat_flux,f,t,c0,t0,cid,{realEw=epsilon_w/(2.*(2.-cid[0]=Ew*F_UDSI(f,t,P1);cid[3]=4.0*Ew*SIGMA_SBC;}A.DEFINEMacroA1.通用求解器定义宏(GeneralSolverDEFINE下面的通用求解器定义宏(见Section4.2)的定义来自udf.h\#defineDEFINE_ADJUST(name,\voidname(* #defineDEFINE_INIT(name,)\voidname(*)#defineDEFINE_ON_DEMAND(name)\voidname(void)#defineDEFINE_RW_FILE(name,fp)\voidname(FILEA2.Model-SpecificDEFINE下面的model-specificDEFINEmacros(见Section4.3)的定义来自udf.h#defineDEFINE_CG_MOTION(name,dt,vel,omega,time,dtime)\voidname(void*dt,realvel[],realomega[],realtime,realdtime)#defineDEFINE_DIFFUSIVITY(name,c,t,realname(cell_tc,Thread*t,inti)#defineDEFINE_GEOM(name,d,dt,position)\voidname(*d,void*dt,real#defineDEFINE_GRID_MOTION(name,d,dt,time,dtime)\voidname(*d,void*dt,realtime,realdtime)#defineDEFINE_HEAT_FLUX(name,f,t,c0,t0,cid,cir)voidname(face_tf,Thread*t,cell_tc0,\Thread*t0,realcid[],realcir[])#defineDEFINE_NOX_RATE(name,c,t,NOx)voidname(cell_tc,Thread*t,NOx_Parameter*NOx)#defineDEFINE_PROFILE(name,t,i)\voidname(Thread*t,inti)#defineDEFINE_PROPERTY(name,c,t)\realname(cell_tc,Thread*t)#defineDEFINE_SCAT_PHASE_FUNC(name,c,f)\realname(realc,real*f)#defineDEFINE_SOURCE(name,c,t,dS,i)realname(cell_tc,Thread*t,realdS[],inti)#defineDEFINE_SR_RATE(name,f,t,r,mw,yi,rr)\voidname(face_tc,Thread*t,\Reaction*r,real*mw,real*yi,real*rr)#defineDEFINE_TURB_PREMIX_SOURCE(name,c,t,turbulent_flame_speed,source)\voidname(cell_tc,Thread*t,real*turbulent_flame_speed,real#defineDEFINE_TURBULENT_VISCOSITY(name,c,t)realname(cell_tc,#defineDEFINE_UDS_FLUX(name,f,t,i)realname(face_tf,Thread*t,inti)#defineDEFINE_UDS_UNSTEADY(name,c,t,i,apu,su)\voidname(cell_tc,Thread*t,inti,real*apu,real*su)#defineDEFINE_VR_RATE(name,c,t,r,mw,yi,rr,rr_t)\voidname(cell_tc,Thread*t,\Reaction*r,real*mw,real*yi,\real*rr,real*rr_t)A3.MultiphaseDEFINE下面的multiphaseDEFINEmacros(Section4.4)的定义来自udf.h头#defineDEFINE_CAVITATION_RATE(name,c,t,p,rhoV,rhoL,vofV,p_v,m_dot)voidname(cell_tc,Thread*t,real*p,real*rhoV,real*rhoL,real*vofV,\real*p_v,real*n_b,real*m_dot)#defineDEFINE_DRIFT_DIAM(name,c,t) realname(cell_tc,Thread*t)#defineDEFINE_EXCHANGE_PROPERTY(name,c,mixture_thread,\second_column_phase_index,_column_phase_index)\realname(cell_tc,Thread*mixture_thread,intsecond_column_phase_i
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 2025-2030年中国单反数码相机市场需求状况及发展策略研究报告
- 2024版招标文件制定与代理合同
- 2025-2030年中国低温制冷设备行业市场发展趋势及投资策略研究报告
- 2025-2030年中国乙二醇丁醚行业运营状况及投资前景预测报告
- 2025-2030年中国LED驱动行业市场发展趋势与十三五规划研究报告
- 2024版燕窝购销协议合同书
- 面向残障群体的包容性数字经济报告
- 福建省宁德市福安第九中学2022年高一数学理期末试题含解析
- 二零二五版汽车维修服务及配件供应合同3篇
- 二零二五版电商品牌授权保密合同样本2篇
- 银行会计主管年度工作总结2024(30篇)
- 教师招聘(教育理论基础)考试题库(含答案)
- 2024年秋季学期学校办公室工作总结
- 上海市12校2025届高三第一次模拟考试英语试卷含解析
- 三年级数学(上)计算题专项练习附答案集锦
- 长亭送别完整版本
- 《铁路轨道维护》课件-更换道岔尖轨作业
- 股份代持协议书简版wps
- 职业学校视频监控存储系统解决方案
- 《销售心理学培训》课件
- 2024年安徽省公务员录用考试《行测》真题及解析
评论
0/150
提交评论