CFD Online Logo CFD Online URL
www.cfd-online.com
[Sponsors]
Home > Forums > Software User Forums > ANSYS > FLUENT

UDF for Heat Exchanger model

Register Blogs Community New Posts Updated Threads Search

Like Tree1Likes
  • 1 Post By francois louw

 
 
LinkBack Thread Tools Search this Thread Display Modes
Prev Previous Post   Next Post Next
Old   June 18, 2010, 03:24
Default UDF for Heat Exchanger model
  #1
New Member
 
francois
Join Date: Jun 2010
Location: Stellenbosch
Posts: 9
Rep Power: 15
francois louw is on a distinguished road
Hi,

I'm trying to solve a model in fluent 12 where I have a fan, plenum chamber and heat exchanger model at the end of the chamber, making a "fan-unit". A udf was written to model the heat transfer. What it basically does is extract the temperatures on the fan face and defines it as the inlet temperatures to the heat exchanger. The udf goes ons to calculate the heat transfer source term and ascribes the source term to the cells in the heat transfer model. I thus defined two faces fort referencing. On face (fan face) for temperature extraction and one face (he exchanger face) to reference which cells the source terms should be added to.

My udf works fine if I am looking at one "fan-unit". I however want to simulate multiple fan units simultaneously and thus require the udf to reference different faces in the model as many times as there is "fan units" so that each "fan-unit" calculates it's own heat transfer with it's own fan inlet temperatures. I thought I could do this by just adding a for loop to my udf, but I am receiving a "parse error" at line 44, which is the beginning of the for loop. The for loop would be extremely beneficial otherwize I must interpret a udf for each of the "fan units", which becomes tedious.

My code is attached. If anyone could help me getting it started I would appreciate it. If my manner of arguing is totally wrong, i would appreciate some advice regarding this as well.

Thank you
Francois Louw

Code:
 
#include "udf.h"
/*********************************************
Energy source term for heat exchanger
*********************************************/
 
/* Declare global variables*/
real m;
real Ry_1;
real Ry_2;
real Ny_1;
real Ny_2;
real UA_1;
real UA_2;
real e1;
real e2;
real T_ai1;
real T_ao2;
real Vcell;
real Acell;
real heat_sink;
 
/* Declare global constants*/
real A_fr = 20;
real nb = 8;
real n_tb1 = 12;
real n_tb2 = 13;
real rho = 1.0717;
real k = 0.026;
real mu = 1.83235e-5;
real cp = 1006.8;
real Pr = 0.749;
real T_s = 323.15;
real Lz = 0.2;
real Afactor = 1.4983;
 
/* Declare applicable face id's*/
int n = 2;         // Length of array
int ID_fan[2] = {30071, 30063};     // Fan face id's
int ID_he[2] = {30067, 30062};      // HE face id's
 
/* Loop for each fanunit seperately */
int i;
for (i = 0 ; i < n ; i++)
 {
 real Sum_Tai = 296.85;
 real j = 1;
 
 DEFINE_ADJUST(property_calc, domain)
 { 
  face_t f;
  cell_t c0, c1;  
  Thread *t0, *t1;
  int zone_ID = ID_fan[i];                                                     /* Zone ID of fan for air temperature extraction */
  Thread *f_thread = Lookup_Thread(domain, zone_ID);    /* Identify face threads at fan */ 
 
  /* Loop over fan face to extract air temp */
  begin_f_loop(f, f_thread)
  {
   c0 = F_C0(f,f_thread);                                                      /* Find cell */
   t0 = THREAD_T0(f_thread);                                              /* Find adjacent cell thread */
   j += 1;                                                                              /* Cell counter */
   Sum_Tai += C_T(c0, t0);                                                  /* Inlet temp taken at fan face and summed */
  } 
  end_f_loop(f, f_thread)
 
  T_ai1 = Sum_Tai/j;
 }
 
 DEFINE_ADJUST(property_calc2, domain)
 {
  face_t f;                                                                              /* Face identifier*/ 
  cell_t c0, c1;   
  Thread *t0, *t1;
  int zone_ID = ID_he[i];                                                       /* Zone ID for boundary between plenum and HE */
  Thread *f_thread = Lookup_Thread(domain, zone_ID);     /* Identify face threads at boundary */ 
 
  /* Loop over faces in face thread */ 
  begin_f_loop(f, f_thread)                                                     /* Loops over faces in a face thread */
  {                        
   /* Find adjacent cells */
   c0 = F_C0(f,f_thread);                                                        /* First find upstream cell (in this case c0 is upstream but it not always the case */
   t0 = THREAD_T0(f_thread);                                                /* Find adjacent cell thread */
   c1 = F_C1(f,f_thread); 
   t1 = THREAD_T1(f_thread);
   m = F_FLUX(f, f_thread);                                                    /* Mass flow rate */
   Vcell = C_VOLUME(c1,t1);                                                  /* Volume flow rate */
   Acell = Afactor*Vcell/Lz;                                                    /* Equivalent area of cell */
 
   /* Get upstream temperature */
   Ry_1 = (fabs(m))/(mu*Acell*n_tb1/n_tb2);                       /* Characteristic flow parameter: 1st row */
   Ry_2 = (fabs(m))/(mu*Acell);                                            /* Characteristic flow parameter: 2nd row */
   Ny_1 = 200*pow(Ry_1, 0.3);                                            /* Characteristic heat transfer parameter: 1st row */
   Ny_2 = 1000*pow(Ry_2, 0.3);                                          /* Characteristic heat transfer parameter: 2nd row */
   UA_1 = k*pow(Pr, 0.333)*Acell*Ny_1;                              /* Heat transfer coefficient: 1st row */
   UA_2 = k*pow(Pr, 0.333)*Acell*Ny_2;                              /* Heat transfer coefficient: 2nd row */ 
   e1 = 1 - exp(-UA_1/((fabs(m))*cp));                                  /* Effectiveness: 1st row */
   e2 = 1 - exp(-UA_2/((fabs(m))*cp));                                  /* Effectiveness: 2nd row */
   T_ao2 = e2*T_s + (1 - e2)*(e1*T_s + (1 - e1)*T_ai1);     /* Heat exchanger outlet temp */
   heat_sink = fabs(m)*cp*(T_ao2 - T_ai1)/Vcell;                 /* Source term */
  
   /*printf("Tao2 = %12.4f\n", T_ao2);  
   printf("Se = %12.4f\n", heat_sink);
   printf("Vcell = %12.4f\n", Vcell);
   printf("ma = %12.4f\n", m);
   printf("Tai1 = %12.4f\n", T_ai1);
   /* Store the values of the source term in the UDMI of the downstream cell */
 
   C_UDMI(c1,t1,0)=heat_sink;
  }
  end_f_loop(f, f_thread)
 }
 
 DEFINE_SOURCE(energy_source, c, c_thread, dS, eqn)
 {
  real source;             /* Source term variable */ 
  source = C_UDMI(c,c_thread,0);
  return source;
 }
 
 }
bhwcs likes this.
francois louw is offline   Reply With Quote

 


Posting Rules
You may not post new threads
You may not post replies
You may not post attachments
You may not edit your posts

BB code is On
Smilies are On
[IMG] code is On
HTML code is Off
Trackbacks are Off
Pingbacks are On
Refbacks are On


Similar Threads
Thread Thread Starter Forum Replies Last Post
any question about heat exchanger model egry FLUENT 0 October 25, 2008 20:14
Problem with UDF in VOF model vijay FLUENT 0 April 18, 2006 01:06
Convective Heat Transfer - Heat Exchanger Mark CFX 6 November 15, 2004 15:55
UDF for VOF model Kunal Ashar FLUENT 0 September 8, 2004 13:13
How to use Heat Exchanger model? Johnny FLUENT 0 August 9, 2004 07:44


All times are GMT -4. The time now is 16:04.