
[Sponsors] 
May 28, 2018, 14:27 
Surface Incident Radiation Macro

#1 
New Member
Alejandro
Join Date: Aug 2015
Posts: 9
Rep Power: 11 
Hi Everybody!!
I´m working with UDF along with the Discrete Ordinate model radiation and i need to know how to obtain the surface incident radiation by an UDF. Currently, i know that the C_DO_IRRAD(c,t,nb) macro give me the incident radiation, but i need the incident radiation in a surface by an UDF (given in the GUI by Wall FluxesSurface Incident Radiation). If any want can help me, I would really appreciate it. Thank you very much. 

May 28, 2018, 20:41 

#2 
Senior Member
Alexander
Join Date: Apr 2013
Posts: 2,363
Rep Power: 34 
may be
Code:
F_DO_IRRAD_SHELL(f,t,nb) 

May 29, 2018, 14:16 

#3 
New Member
Alejandro
Join Date: Aug 2015
Posts: 9
Rep Power: 11 
Thanks for your reply, I´ll try and i´ll let you know if it works.


May 30, 2018, 09:29 

#4 
New Member
Alejandro
Join Date: Aug 2015
Posts: 9
Rep Power: 11 
I tried with the macro F_DO_IRRAD_SHELL(f,t,nb), however, I have a zero result . Here is my simple code:
#include "udf.h" DEFINE_ON_DEMAND(F_DO) { Domain *d=Get_Domain(1); int ID = 16; /*Boundary condition ID*/ Thread *t = Lookup_Thread(d,ID); face_t f; real temp=0; real sum=0; begin_f_loop(f,t) /*Loop over all faces*/ { temp=F_DO_IRRAD_SHELL(f,t,0); sum+=temp; } end_f_loop(f,t) } When i call the variable sum, it gives me a zero result. Can anyone help me? Thanks 

May 30, 2018, 21:31 

#5 
Senior Member
Alexander
Join Date: Apr 2013
Posts: 2,363
Rep Power: 34 
How did you call variable sum?
You have nothing in your code regarding output best regards 

May 31, 2018, 09:20 

#6 
New Member
Alejandro
Join Date: Aug 2015
Posts: 9
Rep Power: 11 
Sorry for copy the code incomplete...
#include "udf.h" DEFINE_ON_DEMAND(F_DO) { Domain *d=Get_Domain(1); int ID = 16; /*Boundary condition ID*/ Thread *t = Lookup_Thread(d,ID); face_t f; real temp=0; real sum=0; begin_f_loop(f,t) /*Loop over all faces*/ { temp=F_DO_IRRAD_SHELL(f,t,0); sum+=temp; } end_f_loop(f,t) printf("Suma1 temp: %f\n",sum); } Thanks 

November 9, 2020, 16:41 

#7 
New Member
Mostafa
Join Date: Sep 2014
Posts: 9
Rep Power: 12 
Dear axelosc,
Did u find what's the error in ur code? If u got it, please share it here. Thanks in advance BR sasa 

November 30, 2022, 15:00 

#8 
New Member
Moe
Join Date: Jul 2021
Posts: 14
Rep Power: 5 
anyone got a solution? im trying to define incident radiation using the expression above to use it in another equation but I'm getting errors


November 30, 2022, 23:59 

#9  
Senior Member
Alexander
Join Date: Apr 2013
Posts: 2,363
Rep Power: 34 
Quote:
code above should be: Code:
#include "udf.h" DEFINE_ON_DEMAND(F_DO) { Domain *d; int ID = 16; /*Boundary condition ID*/ Thread *t = Lookup_Thread(d,ID); face_t f; d=Get_Domain(1) real temp=0; real sum=0; begin_f_loop(f,t) /*Loop over all faces*/ { temp=F_DO_IRRAD_SHELL(f,t,0); sum+=temp; } end_f_loop(f,t) sum = PRF_GRSUM1(sum); Message("Suma1 temp: %f\n",sum); }
__________________
best regards ****************************** press LIKE if this message was helpful 

December 2, 2022, 06:04 

#10  
New Member
Moe
Join Date: Jul 2021
Posts: 14
Rep Power: 5 
Quote:
Dear, here is what my ending of the code looks like Code:
UREF = urefData[induref]; TACREF = tacrefData[indtacref]; RHREF = rhrefData[indrhref]; l1 = log((zrefu  (2 / 3) * hgrass) / (0.123 * hgrass)); l2 = log((zrefh  (2 / 3) * hgrass) / (0.0123 * hgrass)); ra = (l1 * l2) / (pow(k, 2) * UREF); lamda = 1.91846 * pow(10, 6) * pow(((TACREF + 273.15) / (TACREF + 239.24)), 2); delta = (4098 * 610.8 * exp((17.27 * TACREF) / (TACREF + 237.3))) / pow((TACREF + 237.3), 2); esat = (1.0007 + 3.46 * pow(10, 8) * patm) * 611.21 * exp(((18.678  TACREF / 234.5) * TACREF) / (257.14 + TACREF)); D = (1  RHREF) * esat; gamma = patm * aircp * pow((0.622 * lamda), 1); begin_f_loop(f, thread) { F_CENTROID(x, f, thread); y = x[1]; Incedent_Radiation= C_DO_IRRAD(x,f,thread); E = (delta * Incedent_Radiation + 1.225 * aircp * D / ra) / (delta + gamma * (1 + rs / ra)); F_PROFILE(f, thread, position) = E; } end_f_loop(f, thread) } I'm getting error BCS Incident_Radiation is not defined. Do I just plug your code above this section? 

December 5, 2022, 01:12 

#11  
Senior Member
Alexander
Join Date: Apr 2013
Posts: 2,363
Rep Power: 34 
Quote:
are C_DO_IRRAD(x,f,thread); and F_DO_IRRAD_SHELL(f,t,0); the same? (no) you need Code:
F_DO_IRRAD_SHELL(f,t,0); probably "Incident_Radiation" is not defined just because you didn't define that variable in your code
__________________
best regards ****************************** press LIKE if this message was helpful 

December 5, 2022, 15:03 

#12  
New Member
Moe
Join Date: Jul 2021
Posts: 14
Rep Power: 5 
Quote:
I did not include the complete code because I thought that it was too long to be displayed here, sorry for that I will include it below after following your advice, I'm not actually sure of what I did, so please tell me if this should work as intended. I did not get any errors when interpreting this one so I hope it works as intended. i spent a lot of time on this bcs I have no background on UDFs and could not find a clear reference. thanks in advance Code:
#include "udf.h" double rs=83.33; double zrefu=30.0; double zrefh=30.0; double hgrass=0.1; double patm=101325.0; double aircp=1008.0; double k=0.42; float UREF; float TACREF; float RHREF; int induref; int indtacref; int indrhref; float urefData[24] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}; float tacrefData[24] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}; float rhrefData[24] = {1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15, 16, 17, 18, 19, 20, 21, 22, 23, 24}; DEFINE_PROFILE(PME_profile, thread, position) { float x[ND_ND]; float y; float E, ra, lamda, gamma, delta, D, esat, l1, l2, Incedent_Radiation; face_t f; real current_time; current_time = CURRENT_TIME; current_time /= 60; if (current_time < 60) { induref = 0; indtacref = 0; indrhref = 0; } else if (current_time < 120) { induref = 1; indtacref = 1; indrhref = 1; } else if (current_time < 180) { induref = 2; indtacref = 2; indrhref = 2; } else if (current_time < 240) { induref = 3; indtacref = 3; indrhref = 3; } else if (current_time < 300) { induref = 4; indtacref = 4; indrhref = 4; } else if (current_time < 360) { induref = 5; indtacref = 5; indrhref = 5; } else if (current_time < 420) { induref = 6; indtacref = 6; indrhref = 6; } else if (current_time < 480) { induref = 7; indtacref = 7; indrhref = 7; } else if (current_time < 540) { induref = 8; indtacref = 8; indrhref = 8; } else if (current_time < 600) { induref = 9; indtacref = 9; indrhref = 9; } else if (current_time < 660) { induref = 10; indtacref = 10; indrhref = 10; } else if (current_time < 720) { induref = 11; indtacref = 11; indrhref = 11; } else if (current_time < 780) { induref = 12; indtacref = 12; indrhref = 12; } else if (current_time < 840) { induref = 13; indtacref = 13; indrhref = 13; } else if (current_time < 900) { induref = 14; indtacref = 14; indrhref = 14; } else if (current_time < 960) { induref = 15; indtacref = 15; indrhref = 15; } else if (current_time < 1020) { induref = 16; indtacref = 16; indrhref = 16; } else if (current_time < 1080) { induref = 17; indtacref = 17; indrhref = 17; } else if (current_time < 1140) { induref = 18; indtacref = 18; indrhref = 18; } else if (current_time < 1200) { induref = 19; indtacref = 19; indrhref = 19; } else if (current_time < 1260) { induref = 20; indtacref = 20; indrhref = 20; } else if (current_time < 1320) { induref = 21; indtacref = 21; indrhref = 21; } else if (current_time < 1380) { induref = 22; indtacref = 22; indrhref = 22; } else { induref = 23; indtacref = 23; indrhref = 23; } UREF = urefData[induref]; TACREF = tacrefData[indtacref]; RHREF = rhrefData[indrhref]; l1 = log((zrefu  (2 / 3) * hgrass) / (0.123 * hgrass)); l2 = log((zrefh  (2 / 3) * hgrass) / (0.0123 * hgrass)); ra = (l1 * l2) / (pow(k, 2) * UREF); lamda = 1.91846 * pow(10, 6) * pow(((TACREF + 273.15) / (TACREF + 239.24)), 2); delta = (4098 * 610.8 * exp((17.27 * TACREF) / (TACREF + 237.3))) / pow((TACREF + 237.3), 2); esat = (1.0007 + 3.46 * pow(10, 8) * patm) * 611.21 * exp(((18.678  TACREF / 234.5) * TACREF) / (257.14 + TACREF)); D = (1  RHREF) * esat; gamma = patm * aircp * pow((0.622 * lamda), 1); begin_f_loop(f, thread) { F_CENTROID(x, f, thread); y = x[1]; Incedent_Radiation= F_DO_IRRAD_SHELL(f,thread,0); E = (delta * Incedent_Radiation + 1.225 * aircp * D / ra) / (delta + gamma * (1 + rs / ra)); F_PROFILE(f, thread, position) = E; } end_f_loop(f, thread) } 

December 5, 2022, 23:31 

#13 
Senior Member
Alexander
Join Date: Apr 2013
Posts: 2,363
Rep Power: 34 
the code you've showed last is correct.
what errors do you have?
__________________
best regards ****************************** press LIKE if this message was helpful 

December 6, 2022, 08:05 

#14 
New Member
Moe
Join Date: Jul 2021
Posts: 14
Rep Power: 5 

Tags 
incident radiation, macro, radiation do model, udf 
Thread Tools  Search this Thread 
Display Modes  


Similar Threads  
Thread  Thread Starter  Forum  Replies  Last Post 
Modeling the flow of solar radiation as the heat flux from the surface.  Gebbels  FLUENT  0  March 25, 2012 14:39 
Surface incident radiation  Pipiola  FLUENT  0  August 11, 2009 15:46 
Incident Radiation  Nicki  CFX  1  April 17, 2009 08:18 
Fluent incident radiation problem  Michael Schwarz  Main CFD Forum  0  October 21, 1999 05:56 