erginbayrak |
October 26, 2022 10:25 |
Enthalpy Calculation with UDF
Hi,
I have struggled to solve specific heat and enthalpy values of supercritical CO2 in the pipe using the following code (only for 80 bar). Although my code is running in Fluent, the solution does not converge. Also, there is a warning in Fluent as C4715: not all control paths return a value". I want to learn your recommendations about my problem. Regards,
Code:
#include "udf.h"
DEFINE_SPECIFIC_HEAT(supercritical_cp, T, Tref, h, yi)
{
real cp;
if (300. >= T)
{
cp = 2.256999118844760E-02 * pow(T, 4.) - 2.606618818487370E+01 * pow(T, 3.) + 1.129129898467780E+04 * pow(T, 2.) - 2.174235523392760E+06 * T + 1.570278261279480E+08;
}
if (306. >= T > 300.)
{
cp = 1.147018354719330E+01 * pow(T, 4.) - 1.385519872072390E+04 * pow(T, 3.) + 6.276090044658930E+06 * pow(T, 2.) - 1.263530241490370E+09 * T + 9.539285116131690E+10;
}
if (307.8 >= T > 306.)
{
cp = -1.611612838918710E+04 * pow(T, 4.) + 1.978085636985280E+07 * pow(T, 3.) - 9.104578256081260E+09 * pow(T, 2.) + 1.862478067464320E+12 * T - 1.428738938943020E+14;
}
if (310. >= T > 307.8)
{
cp = -1.576135476848110E+03 * pow(T, 4.) + 1.945866130859760E+06 * pow(T, 3.) - 9.008641337104630E+08 * pow(T, 2.) + 1.853611584329810E+11 * T - 1.430227164258690E+13;
}
if (320. >= T > 310.)
{
cp = 1.770529718817220E+00 * pow(T, 4.) - 2.242833202341920E+03 * pow(T, 3.) + 1.065432793165650E+06 * pow(T, 2.) - 2.249454519629040E+08 * T + 1.781003821884030E+10;
}
if (T > 320)
{
cp = 2.086961941877520E-03 * pow(T, 4.) - 2.851496372954040E+00 * pow(T, 3.) + 1.461548345109060E+03 * pow(T, 2.) - 3.330816449664890E+05 * T + 2.848088978782360E+07;
}
return cp;
}
#include<stdio.h>
float y(float T)
{
if (300. >= T)
return 2.256999118844760E-02 * pow(T, 4.) - 2.606618818487370E+01 * pow(T, 3.) + 1.129129898467780E+04 * pow(T, 2.) - 2.174235523392760E+06 * T + 1.570278261279480E+08;
if (306. >= T > 300.)
return 1.147018354719330E+01 * pow(T, 4.) - 1.385519872072390E+04 * pow(T, 3.) + 6.276090044658930E+06 * pow(T, 2.) - 1.263530241490370E+09 * T + 9.539285116131690E+10;
if (307.8 >= T > 306.)
return -1.611612838918710E+04 * pow(T, 4.) + 1.978085636985280E+07 * pow(T, 3.) - 9.104578256081260E+09 * pow(T, 2.) + 1.862478067464320E+12 * T - 1.428738938943020E+14;
if (310. >= T > 307.8)
return -1.576135476848110E+03 * pow(T, 4.) + 1.945866130859760E+06 * pow(T, 3.) - 9.008641337104630E+08 * pow(T, 2.) + 1.853611584329810E+11 * T - 1.430227164258690E+13;
if (320. >= T > 310.)
return 1.770529718817220E+00 * pow(T, 4.) - 2.242833202341920E+03 * pow(T, 3.) + 1.065432793165650E+06 * pow(T, 2.) - 2.249454519629040E+08 * T + 1.781003821884030E+10;
if (T > 320)
return 2.086961941877520E-03 * pow(T, 4.) - 2.851496372954040E+00 * pow(T, 3.) + 1.461548345109060E+03 * pow(T, 2.) - 3.330816449664890E+05 * T + 2.848088978782360E+07;
}
// Function to evaluate the value of integral
float trapezoidal(float Tref, float T, float n, float k, float *h)
{
k = (T-Tref)/n;
*h = y(Tref)+y(T);
for (int i = 1; i < n; i++)
*h += 2*y(Tref+i*k);
return (k/2)*(*h);
}
// Driver program to test above function
int main()
{
// Range of definite integral (initial values)
float T0 = 295;
float Tn = 300;
int n = 2000;
return 0;
}
|