CFD Online Discussion Forums

CFD Online Discussion Forums (https://www.cfd-online.com/Forums/)
-   Main CFD Forum (https://www.cfd-online.com/Forums/main/)
-   -   Enthalpy Calculation with UDF (https://www.cfd-online.com/Forums/main/245801-enthalpy-calculation-udf.html)

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;
}



All times are GMT -4. The time now is 01:51.