
[Sponsors] 
November 1, 2010, 06:25 
Enthalpy to temperature

#1 
Senior Member
Adhiraj
Join Date: Sep 2010
Location: Pennsylvania, United States
Posts: 101
Rep Power: 6 
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: 6 
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: Pennsylvania, United States
Posts: 101
Rep Power: 6 
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, 11:51 

#4 
Senior Member
isabel
Join Date: Apr 2009
Location: Spain
Posts: 171
Rep Power: 8 
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, 18:35 

#5  
Senior Member
Adhiraj
Join Date: Sep 2010
Location: Pennsylvania, United States
Posts: 101
Rep Power: 6 
Check under
Quote:


February 14, 2012, 04:44 

#6 
Senior Member
isabel
Join Date: Apr 2009
Location: Spain
Posts: 171
Rep Power: 8 
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<class thermo> inline scalar specieThermo<thermo>::T ( scalar f, scalar T0, scalar (specieThermo<thermo>::*F)(const scalar) const, scalar (specieThermo<thermo>::*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<thermo>::T(scalar f, scalar T0, " "scalar (specieThermo<thermo>::*F)(const scalar) const, " "scalar (specieThermo<thermo>::*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? 

February 14, 2012, 10:25 

#7 
Member
Tibo
Join Date: Jun 2011
Posts: 68
Rep Power: 6 
I might be wrong but I donīt think this is an OFspecific function.
Ecosia (instead of googling it) "this pointer" or "this pointer c++" or such. Tibo 

February 14, 2012, 10:43 

#8 
Senior Member
Adhiraj
Join Date: Sep 2010
Location: Pennsylvania, United States
Posts: 101
Rep Power: 6 
It is a C++ keyword. "this" acts like a pointer to the object whose member function is under consideration.


February 15, 2012, 10:15 

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

February 15, 2012, 10:25 

#10 
Senior Member
Adhiraj
Join Date: Sep 2010
Location: Pennsylvania, United States
Posts: 101
Rep Power: 6 
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. 

February 16, 2012, 05:32 

#11 
Senior Member
isabel
Join Date: Apr 2009
Location: Spain
Posts: 171
Rep Power: 8 
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 06:11. 

March 21, 2012, 19:58 

#12 
Senior Member
Adhiraj
Join Date: Sep 2010
Location: Pennsylvania, United States
Posts: 101
Rep Power: 6 
Hi,
I would use Code:
F=H dFdT=Cp 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

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.
__________________
Felipe G Last edited by lfgmarc; July 21, 2012 at 09:14. 

June 13, 2014, 11:07 
Enthalpytemperature for melting problem

#14  
Senior Member
Mohammad Shakil Ahmmed
Join Date: Oct 2012
Location: AU
Posts: 122
Rep Power: 5 
Hi isabel ,
Will you please guide me how you implemented the melting problem ? thanks in advance. Quote:


Thread Tools  
Display Modes  


Similar Threads  
Thread  Thread Starter  Forum  Replies  Last Post 
Problem with zeroGradient wall BC for temperature  Total temperature loss  cboss  OpenFOAM  10  March 5, 2015 07:57 
Calculation of the Governing Equations  Mihail  CFX  7  September 7, 2014 06:27 
temperature / enthalpy fields depending on type of fvPatchField  astein  OpenFOAM Programming & Development  0  June 28, 2010 07:10 
chemical reaction  decompostition  La S. Hyuck  CFX  1  May 23, 2001 00:07 
Solve Enthalpy or Temperature?  sheng  Main CFD Forum  5  January 22, 1999 10:40 