|
|
刚才成功编译换热系数的UDF,感谢http://muchong.com/html/201304/5739908.html上附的代码。
现在把自己写的代码放在下面,很长,希望对感兴趣的虫友有所帮助
/* UDF used to calculate the forced convection between the bare absorber tube and the air around it.*/
#include "udf.h"
#define D_outer 0.07
#define temp_air 293.15
#define speed_air 3
/**************declaration of the functions***************************/
real dry_air_density(real temp);
real dry_air_specific_heat(real temp);
real dry_air_thermal_conductivity(real temp);
real dry_air_dynamic_viscosity(real temp);
/*thread is a pointer to the face's thread, and position is a numerical lbael for the variable
being set within each loop*/
DEFINE_PROFILE(forced_convection_air_abs, thread, position)
{
real mu_outer, lambda_outer, Cp_outer, rho_outer, mu_air, lambda_air, Cp_air, rho_air, v_air;
/*transitional parameters*/
real nu_outer, nu_air, alpha_outer, alpha_air, Re_outer, Pr_outer, Pr_air;
/*coefficients of Zhukausas's correlation*/
real m, n, C;
real temp_outer;/*temperature of the outerer absorber tube*/
real Nu_outer_air, h_outer_air; /*Nusselt number to calculate forced heat transfer coefficient*/
face_t f;
begin_f_loop(f,thread)
{
temp_outer=F_T(f,thread);
/*the process to obtain the property value of the air*/
/*Via the linear fitting method, we can obtain the expression of the properties of the air
varying with the temperature, temperature ranges from 20 Celsius to 400 Celsius*/
mu_outer=dry_air_dynamic_viscosity(temp_outer);
mu_air=dry_air_dynamic_viscosity(temp_air);
lambda_outer=dry_air_thermal_conductivity(temp_outer);
lambda_air=dry_air_thermal_conductivity(temp_air);
Cp_outer=dry_air_specific_heat(temp_outer);
Cp_air=dry_air_specific_heat(temp_air);
rho_outer=dry_air_density(temp_outer);
rho_air=dry_air_density(temp_air);
nu_air=mu_air/rho_air;
nu_outer=mu_outer/rho_outer;
alpha_air=lambda_air/(Cp_air*rho_air);/* make sure that the unit of the parameters is international*/
alpha_outer=lambda_outer/(Cp_outer*rho_outer);
Re_outer=speed_air*D_outer/alpha_air; /*the Reynold number of flowing air*/
Pr_outer=nu_outer/alpha_outer;
Pr_air=nu_air/alpha_air;
/*if Re_outer is used outer of range, print warning information on the screen*/
/**********waiting to complete********************/
/*if Pr_air is used outer of range, print warning information on the screen*/
/**********waiting to complete********************/
/*coefficients for external forced convection Nusselt Number correlation(Zhukausas's correlation)*/
if(Pr_air<=10)
n=0.37;
else
n=0.36;
if(Re_outer<40)
{
C=0.75;
m=0.4;
}
else if(Re_outer>=40 && Re_outer<1000)
{
C=0.51;
m=0.5;
}
else if(Re_outer>=1000 && Re_outer<2e5)
{
C=0.26;
m=0.6;
}
else if(Re_outer>=2e5 && Re_outer<1e6)
{
C=0.076;
m=0.7;
}
else
printf("the Reynold number is out of the suitable range, the result may not be accurate!!\n" ;
/*Zhukauskas's correlation for external forced convection flow normal to an isothermal cylinder */
Nu_outer_air=C*pow(Re_outer,m)*pow(Pr_air,n)*pow(Pr_air/Pr_outer,1/4);
F_PROFILE(f,thread,position)=Nu_outer_air*lambda_air/D_outer;
}
end_f_loop(f,thread)
}
/*declaration of the function calculating the dry air density*/
real dry_air_density(real temp)
{
real rho;
if(temp>=273.15 && temp<=673.15)
rho=3.60759e-6*temp*temp-0.00532*temp+2.44735;
else
printf("the temperature is out of range, the result may not be accurate!!\n" ;
return rho;
}
/*declaration of the function calculating the dry air specific heat*/
real dry_air_specific_heat(real temp)
{
real Cp;
if(temp>=273.15 && temp<=673.15)
Cp=-8.23356e-10*pow(temp,3)+1.51078e-6*temp*temp-6.80959e-4*temp+1.09594;
else
printf("the temperature is out of range, the result may not be accurate!!\n" ;
return Cp;
}
/*declaration of the function calculating the dry air thermal conductivity*/
real dry_air_thermal_conductivity(real temp)
{
real lambda;
if(temp>=273.15 && temp<=673.15)
lambda=-2.74554e-6*temp*temp-0.00952*temp+0.03672;
else
printf("the temperature is out of range, the result may not be accurate!!\n" ;
return lambda;
}
/*declaration of the function calculating the dry air dynamic viscosity*/
real dry_air_dynamic_viscosity(real temp)
{
real mu;
if(temp>=273.15 && temp<=673.15)
mu=-2.0294e-5*temp*temp+0.05877*temp+2.72007;
else
printf("the temperature is out of range, the result may not be accurate!!\n" ;
return mu;
} |
|