FLUENT 6  how to use porous media to model louvers used in windows
Given the pressure loss vs velocity characteristics for the louvers used for windows, how can one replace the louvers with porous media such that the presure drop matches AND the flow is turned? The velocity is the approaching velocity instead of velocity inside the louvers. Since the flow is bended in louvers, care must be taken to ensure that the correct velocity and porous media length is used in the porous media coefficients calculation. The correct velocity is the velocity in the louvers not the approaching velocity, and the correct length is along the louver direction. The porous media directions have to be specified along the louver direction to bend the flow. After the above, an additional udf is needed to bend the flow in the porous media without introducing additional loss. Otherwise, due to the bend, additional loss will be introduced and the pressure drop from porous media approach will be more than the data. The udf used is as follows: /*********************** UDF to bend the flow without pressure increase ********************** This udf can bend the flow without pressure increase. This is used for certain porous media application. For example, one wants to replace the louvers with porous media. One can do the experiments or CFD to determine the pressure drop as a function of velocity. And then replace the louvers with porous model after calculating the porous media coefficients. This is the standard approach to use porous media. However, this approach gives problems if one wants to turn the flow due to the louvers. If so, the principle axis of the porous media will be inclined with the incoming flow. Care must be excised not to use the incoming velocity for the coefficients calculation. After that, the pressure drop in the flow will still be much larger than from the experiments. This is because the flow needs to be bended right at the inlet of the porous media. That bending is physical. The problem is that the pressure loss due to the bending of the flow is already considered in the porous media coeff. The bending in the CFD setup means that the bending is accouted for twice. To avoid this issue, a udf is needed right at the inlet of the porous media model to bend the flow without causing pressure drop. The way to achieve that is to make the cells at the inlet of porous media believe that the flow is inclinded. The momentum flux deficit at the inlet of the porous media is calcuated based on that. The momentum flux is then converted to momentum source term and added to first layer of cells at the porour zone How to use the udf:  Set the case with porour media  Define two user defined memory  Provide the face zone ID of the interior face zone at the inlet of porous media  Provide the angle that needs to be bended. This has to be corresponding to the porous media principle axis.  Compile the udf  Hook the ADJUST udf and the momentum source. Known limitation of the udf:  The udf is hard coded for flow coming in x direction. So, only y momentum source is needed. For more general orientation, both x, y momentum source is needed for a 2d case. Written by: Xiao Hu (xh@fluent.com) Last updated: 8/1/2006 *************************************************************************************/ #include "udf.h" #define face_ID 1 #define ANGLE 30 /*degree*/ DEFINE_ADJUST(my_adjust,d) { Thread *tf; face_t f; Domain * domain; real area[2], vol, x_vel, density; domain = Get_Domain(1); tf = Lookup_Thread(domain, face_ID); begin_f_loop(f,tf) { F_AREA(area, f, tf); vol = C_VOLUME(F_C0(f,tf), THREAD_T0(tf)); x_vel = C_U(F_C1(f,tf), THREAD_T1(tf)); density = C_R(F_C1(f,tf), THREAD_T1(tf)); /* Momentum flux deficit calculation. It is divided by vol because flux needs to be converted to a source term. */ C_UDMI(F_C0(f,tf), THREAD_T0(tf), 0) = density*x_vel*x_vel*tan(ANGLE*M_PI/180)*MAG(area)/vol; C_UDMI(F_C0(f,tf), THREAD_T0(tf), 1) = 2*x_vel*density*tan(ANGLE*M_PI/180)*MAG(area)/vol; } end_f_loop(f,tf) } DEFINE_SOURCE(ymom_source,c,t,dS,eqn) { dS[eqn] = C_UDMI(c,t,1); return C_UDMI(c,t,0); } 

