
[Sponsors] 
Divergence using UDF for specific Heat(Fluent) 

LinkBack  Thread Tools  Search this Thread  Display Modes 
June 3, 2020, 13:28 
Divergence using UDF for specific Heat(Fluent)

#1 
New Member
John Antony Misquith
Join Date: Feb 2020
Posts: 4
Rep Power: 2 
Hello Everyone!
Background: Running water in coaxial channels into a 2D domain with temperatures varying from sub to supercritical using Fluent Since water has a Cp spike for Super critical water ( as attached in the file). Cp_NIST_data.JPG I was looking at trying to model the spike using a UDF with temperature range from 300K to 1000K .I Took data points from the NIST website and generated piecewise functions for multiple temperature ranges ( as depicted in the code). Cp_temp_contour.JPG While I believe the UDF gets loaded properly into fluent( using interpreted , it loads without showing any error), the residuals of continuity tend to blow up ( > 1e+10 etc) while the energy residual (1e+0) and i get all sorts of temperature spots in the domain(As depicted in the picture). CODE: #include "udf.h" DEFINE_SPECIFIC_HEAT(john_cp, T, Tref, h, yi) { real cp; if (T >= 523 && T <=600) cp = 6.84697E+04 + 2.41062E+02*T + 2.28273E01*T*T; else if (T>600 && T <= 630) cp = 6.05982E+05 2.00334E+03*T +1.67297E+00*T*T; else if (T>630 && T<= 650) cp =8.91902E+06 2.81935E+04*T+ 2.23004E+01*T*T; else if (T>650 && T <= 658) cp = 3.34752E+08 1.02965E+06*T+ 7.91808E+02*T*T; else if (T>658 && T <= 660) cp = 1.01330E+08+ 3.22934E+05*T2.56559E+02*T*T; else if (T>660 && T <= 668) cp =2.60837E+08 + 7.81911E+05*T+ 5.86025E+02*T*T; else if (T>668 && T <= 700) cp = 4.94026E+06 1.41350E+04*T+ 1.01250E+01*T*T; else if (T>700 && T <= 850) cp = 1.18004E+06 4.36540E+03*T+ 5.40459E+00*T*T 2.23261E03*T*T*T; else cp = 3000; *h = cp*(TTref); return cp; } I was wondering if anyone has faced such an issue. p.s: I tried to recreate the Cp plot using the functions in MATLab and it seems to recreate them pretty well. I have also tried with coarse and fine mesh and it still gives me such plots. Any help or suggestion would be greatly appreciated. John Misquith 

June 3, 2020, 14:26 
Specific Heat

#2 
Senior Member

You don't need a UDF for this. This is just piecewise polynomial, which can be entered directly in GUI.
__________________
Regards, Vinerm PM to be used if and only if you do not want something to be shared publicly. PM is considered to be of the least priority. 

June 3, 2020, 15:28 

#3 
New Member
John Antony Misquith
Join Date: Feb 2020
Posts: 4
Rep Power: 2 
Thank you for your reply.
I am currently using piecewise polynomials to capture the curve but since ansys fluent does not allow more than 3 temperature ranges and puts a restriction on the number of significant digits after the decimal point (for the coefficients entered), I cant seem to accurately capture the peak without deviating a lot from the curve. Hence I decided to move to UDFs. Would love any other suggestions. Thank you 

June 3, 2020, 15:44 
Udf

#4 
Senior Member

If you want to use UDF, you have to compile it. Specific Heat UDF or any UDF that uses references or structures need to be compiled. Interpreter cannot handle this.
__________________
Regards, Vinerm PM to be used if and only if you do not want something to be shared publicly. PM is considered to be of the least priority. 

June 4, 2020, 02:15 

#5 
New Member
John Antony Misquith
Join Date: Feb 2020
Posts: 4
Rep Power: 2 
Thanks for your reply again!
Yeah so i tried compiling the code and running it instead of the interpreter. It gave me an 'nmake' error , which i rectified by running fluent through the VS prompt (version 2019). Even after i was able to compile the code correctly , Im still facing this issue of random temperature spots all over the domain. Regards John 

June 4, 2020, 03:28 
Specific Heat and Enthalpy

#6 
Senior Member

That''s because you have got the Thermodynamics wrong in the UDF. Enthalpy is equal to only for constant . Enthalpy is integral of the specific heat over the temperature range. Therefore, you have to calculate different value of enthalpy for each range and this has to be calculated by integrating the specific heat polynomials over respective ranges. The constants of integration have to be such that the enthalpy values maintain continuity across the entire range.
__________________
Regards, Vinerm PM to be used if and only if you do not want something to be shared publicly. PM is considered to be of the least priority. 

June 11, 2020, 19:19 

#7 
New Member
John Antony Misquith
Join Date: Feb 2020
Posts: 4
Rep Power: 2 
Thank you for your reply!
You are absolutely right! Thanks for pointing that out. I made the changes to the code to calculate the enthalpy(h) using the integral from Tref to T and it worked! Thanks for your help again! John M 

July 8, 2020, 11:10 

#8 
New Member
Join Date: Jul 2020
Posts: 1
Rep Power: 0 
Hi Johnam,
I meet a problem similar to yours. However, I'm not quite familiar with C language. Could you please specify how to write a code for the integral to calculate enthalpy? Regards, Danwei 

Tags 
fluent  udf  parallel, specific heat, supercritical water 
Thread Tools  Search this Thread 
Display Modes  


Similar Threads  
Thread  Thread Starter  Forum  Replies  Last Post 
PEMFC model with FLUENT  brahimchoice  FLUENT  22  April 19, 2020 15:44 
Two Phase Flow In Vertical Pipe  stonepreston  FLUENT  2  October 31, 2017 08:35 
Error finding variable "THERMX"  sunilpatil  CFX  8  April 26, 2013 07:00 
UDF for heat convection coefficient with fixed surface temperature  Boo85  Fluent UDF and Scheme Programming  2  July 10, 2012 18:43 
heat flow UDF on coupled surface (wallshadow wall)  Friedmann  Fluent UDF and Scheme Programming  0  August 5, 2010 10:25 