# Enthalpy to temperature

 Register Blogs Members List Search Today's Posts Mark Forums Read

 November 1, 2010, 05:25 Enthalpy to temperature #1 Senior Member   Adhiraj Join Date: Sep 2010 Location: Maryland, United States Posts: 176 Rep Power: 12 Hi all, I am new to OpenFOAM. I was looking at where OpenFOAM does the h to T (or hs top T) conversion, and I noted that they use a Newton iteration mthod. But when I try to trace the sepcific heat they use in this equation, they seem to use Cp=Cp(T) and not Cp=Cp(T,Yi). This is the file I am talking about:- $FOAM/src/thermophysicalModels/specie/thermo/janaf Can anyone confirm/explain this? Thanks in advance.  July 17, 2011, 04:39 h to T conversion #2 Member Farshad Join Date: Oct 2010 Posts: 76 Rep Power: 12 Hi, I have exactly the same question. Thanks Farshad  July 17, 2011, 10:37 Enthalpy to T #3 Senior Member Adhiraj Join Date: Sep 2010 Location: Maryland, United States Posts: 176 Rep Power: 12 I have dug deep since this post, and have the answers. When they go for the h->T conversion they hold the composition fixed, and define a new 'gas' with the composition averaged thermal properties. It is the Cp of this mixture gas that is (rightly) used to compute T.  February 13, 2012, 10:51 #4 Senior Member isabel Join Date: Apr 2009 Location: Spain Posts: 171 Rep Power: 14 Hi all, I am looking for the extract of the code where the conversion from h to T is done but I do not find it. Can anybody tell me where it is? February 13, 2012, 17:35 #5 Senior Member Adhiraj Join Date: Sep 2010 Location: Maryland, United States Posts: 176 Rep Power: 12 Check under Quote: $FOAM_SRC/thermophysicalModels/specie/thermo/specieThermo

 February 14, 2012, 03:44 #6 Senior Member   isabel Join Date: Apr 2009 Location: Spain Posts: 171 Rep Power: 14 Thank you very much. I found the iteration in these lines: // return the temperature corresponding to the value of the // thermodynamic property f, given the function f = F(T) and dF(T)/dT template inline scalar specieThermo::T ( scalar f, scalar T0, scalar (specieThermo::*F)(const scalar) const, scalar (specieThermo::*dFdT)(const scalar) const ) const { scalar Test = T0; scalar Tnew = T0; scalar Ttol = T0*tol_; int iter = 0; do { Test = Tnew; Tnew = Test - ((this->*F)(Test) - f)/(this->*dFdT)(Test); if (iter++ > maxIter_) { FatalErrorIn ( "specieThermo::T(scalar f, scalar T0, " "scalar (specieThermo::*F)(const scalar) const, " "scalar (specieThermo::*dFdT)(const scalar) const" ") const" ) << "Maximum number of iterations exceeded" << abort(FatalError); } } while (mag(Tnew - Test) > Ttol); return Tnew; } There is something I do not understhand. What does “this->” means? mm.abdollahzadeh likes this.

 February 14, 2012, 09:25 #7 Member   Tibo Join Date: Jun 2011 Posts: 68 Rep Power: 11 I might be wrong but I don´t think this is an OF-specific function. Ecosia (instead of googling it) "this pointer" or "this pointer c++" or such. Tibo

 February 14, 2012, 09:43 #8 Senior Member   Adhiraj Join Date: Sep 2010 Location: Maryland, United States Posts: 176 Rep Power: 12 It is a C++ keyword. "this" acts like a pointer to the object whose member function is under consideration.

 February 15, 2012, 09:15 #9 Senior Member   isabel Join Date: Apr 2009 Location: Spain Posts: 171 Rep Power: 14 Dear friends, I have another doubt about these files. Where are defined the functions F and dFdT?

 February 15, 2012, 09:25 #10 Senior Member   Adhiraj Join Date: Sep 2010 Location: Maryland, United States Posts: 176 Rep Power: 12 They are the function and its derivative. The Newton iteration in this case calculates T, given F(T) and dF/dT(T). The function gets pointers to the functions F and dF/dt. If the energy variable is enthalpy h, then F=h(T) and dF/dt=Cp(T). If it is internal energy e, then F=e and dF/dT=Cv(T). The code resolves these at runtime, and sends the appropriate pointers to the Newton iteration routine. Sun, mgg, daire6 and 3 others like this.

 February 16, 2012, 04:32 #11 Senior Member   isabel Join Date: Apr 2009 Location: Spain Posts: 171 Rep Power: 14 Dear friends, Thank you very much for your help. I need to simulate melting of a solid. In that case, the enthalpy is given by the following equation: where L is the latent heat and alpha_l the mass fraction of the liquid phase. How do I implement the term alpha_l*L in the functions F and dFdT? Last edited by isabel; February 16, 2012 at 05:11.

 March 21, 2012, 18:58 #12 Senior Member   Adhiraj Join Date: Sep 2010 Location: Maryland, United States Posts: 176 Rep Power: 12 Hi, I would use Code:  F=H dFdT=Cp This is because, H=H(T) is the relationship you are trying to invert. And, at that point you will typically hold the composition fixed, so that \alpha, L and H_{ref} are fixed. So, dFdT=Cp. This of course assumes that L is not a function of T.

 July 20, 2012, 22:00 A Little question? #13 Member     Luis Felipe Gutierrez Marcantoni Join Date: Oct 2010 Location: Cordoba-Argentina Posts: 47 Rep Power: 12 Hi, I have a little question, I understand that if i.e, the energy variable is enthalpy F=h(T) and dF/dT=Cp(T), my question is in where it is defined in the code that F and dF/dt take these variables as arguments. Thanks in advance. qjh888 and patricks like this. __________________ Felipe G Last edited by lfgmarc; July 21, 2012 at 09:14.

June 13, 2014, 11:07
Enthalpy-temperature for melting problem
#14
Senior Member

Join Date: Oct 2012
Location: AUS
Posts: 136
Rep Power: 11
Hi isabel ,
Will you please guide me how you implemented the melting problem ?

Quote:
 Originally Posted by isabel Dear friends, Thank you very much for your help. I need to simulate melting of a solid. In that case, the enthalpy is given by the following equation: where L is the latent heat and alpha_l the mass fraction of the liquid phase. How do I implement the term alpha_l*L in the functions F and dFdT?

October 31, 2016, 09:36
function "f"
#15
New Member

Mahdi Nabil
Join Date: Sep 2015
Posts: 9
Rep Power: 7
Hi All,

I just don't know where that "f" is coming from in OpenFOAM??? I know "F" and "dFdT", but I don't understand "f" in the Newton's routine!!

Quote:
 Originally Posted by adhiraj They are the function and its derivative. The Newton iteration in this case calculates T, given F(T) and dF/dT(T). The function gets pointers to the functions F and dF/dt. If the energy variable is enthalpy h, then F=h(T) and dF/dt=Cp(T). If it is internal energy e, then F=e and dF/dT=Cv(T). The code resolves these at runtime, and sends the appropriate pointers to the Newton iteration routine.

October 31, 2016, 09:38
Newton's Routine
#16
New Member

Mahdi Nabil
Join Date: Sep 2015
Posts: 9
Rep Power: 7
What is that "f" in the routine?! Where does it come from?

Quote:
 Originally Posted by isabel Thank you very much. I found the iteration in these lines: // return the temperature corresponding to the value of the // thermodynamic property f, given the function f = F(T) and dF(T)/dT template inline scalar specieThermo::T ( scalar f, scalar T0, scalar (specieThermo::*F)(const scalar) const, scalar (specieThermo::*dFdT)(const scalar) const ) const { scalar Test = T0; scalar Tnew = T0; scalar Ttol = T0*tol_; int iter = 0; do { Test = Tnew; Tnew = Test - ((this->*F)(Test) - f)/(this->*dFdT)(Test); if (iter++ > maxIter_) { FatalErrorIn ( "specieThermo::T(scalar f, scalar T0, " "scalar (specieThermo::*F)(const scalar) const, " "scalar (specieThermo::*dFdT)(const scalar) const" ") const" ) << "Maximum number of iterations exceeded" << abort(FatalError); } } while (mag(Tnew - Test) > Ttol); return Tnew; } There is something I do not understhand. What does “this->” means?

 May 31, 2017, 02:26 #17 Member   Janry Join Date: Oct 2015 Posts: 46 Rep Power: 7 Could anybody help me to find where it is defined in the code that F and dF/dt take these variables as arguments?? Thanks!