erginbayrak |
November 3, 2022 03:19 |
Quote:
Originally Posted by AlexanderZ
(Post 838703)
first of all this is your code
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;
}
remove everything below ( starting from #include<stdio.h> )
second point here is your condition sequence:
(300. >= T) will always be true, so only first equation would be executed, also Cp is not specified at temperature below 300
-> go from top bottom
|
Thank you for your reply. I couldn't understand the logic of the sequence. Is it important for initialization? I have just tried it by obeying your advice, but I take some invalid cp errors (I checked the invalid cp errors at related temperatures by hand, and there is no problem with my equation). My other question is that the calculation of the enthalpy value. According to the manual, we must describe the equation of enthalpy. In my case, it should be integration from Tref to T, shouldn't it?
So, my new code:
Code:
#include "udf.h"
DEFINE_SPECIFIC_HEAT(supercritical_cp, T, Tref, h, yi)
{
real cp;
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;
*h = (2.086961941877520E-03 / 5.) * (pow(T, 5.) - pow(Tref, 5.)) - (2.851496372954040E+00 / 4.) * (pow(T, 4.) - pow(Tref, 4.)) + (1.461548345109060E+03 / 3.) * (pow(T, 3.) - pow(Tref, 3.)) - (3.330816449664890E+05 / 2.) * (pow(T, 2.) - pow(Tref, 2.)) + 2.848088978782360E+07 * (T-Tref);
}
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;
*h = (1.770529718817220E+00 / 5.) * (pow(T, 5.) - pow(Tref, 5.)) - (2.242833202341920E+03 / 4.) * (pow(T, 4.) - pow(Tref, 4.)) + (1.065432793165650E+06 / 3.) * (pow(T, 3.) - pow(Tref, 3.)) - (2.249454519629040E+08 / 2.) * (pow(T, 2.) - pow(Tref, 2.)) + 1.781003821884030E+10 * (T-Tref);
}
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;
*h = (-1.576135476848110E+03 / 5.) * (pow(T, 5.) - pow(Tref, 5.)) + (1.945866130859760E+06 / 4.) * (pow(T, 4.) - pow(Tref, 4.)) - (9.008641337104630E+08 / 3.) * (pow(T, 3.) - pow(Tref, 3.)) + (1.853611584329810E+11 / 2.) * (pow(T, 2.) - pow(Tref, 2.)) - 1.430227164258690E+13 * (T-Tref);
}
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;
*h = (-1.611612838918710E+04 / 5.) * (pow(T, 5.) - pow(Tref, 5.)) + (1.978085636985280E+07 / 4.) * (pow(T, 4.) - pow(Tref, 4.)) - (9.104578256081260E+09 / 3.) * (pow(T, 3.) - pow(Tref, 3.)) + (1.862478067464320E+12 / 2.) * (pow(T, 2.) - pow(Tref, 2.)) - 1.428738938943020E+14 * (T-Tref);
}
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;
*h = (1.147018354719330E+01 / 5.) * (pow(T, 5.) - pow(Tref, 5.)) - (1.385519872072390E+04 / 4.) * (pow(T, 4.) - pow(Tref, 4.)) + (6.276090044658930E+06 / 3.) * (pow(T, 3.) - pow(Tref, 3.)) - (1.263530241490370E+09 / 2.) * (pow(T, 2.) - pow(Tref, 2.)) + 9.539285116131690E+10 * (T-Tref);
}
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;
*h = (2.256999118844760E-02 / 5.) * (pow(T, 5.) - pow(Tref, 5.))- (2.606618818487370E+01 / 4.) * (pow(T, 4.) - pow(Tref, 4.)) + (1.129129898467780E+04 / 3.) * (pow(T, 3.) - pow(Tref, 3.)) - (2.174235523392760E+06 / 2.) * (pow(T, 2.) - pow(Tref, 2.)) + 1.570278261279480E+08 * (T-Tref);
}
return cp;
}
|