|
[Sponsors] | |||||
|
|
|
#1 |
|
Member
Moha
Join Date: Mar 2013
Location: EU
Posts: 62
Rep Power: 2 ![]() |
Hi,
I am trying to write a UDF for the Specific heat (Cp) as a function of Temperature. I used "curve fitting" technique to obtain the formula. my First question, am I not sure if I put the below formula correctly (the original one is attached) ? Cp=4.3568+27.57838*exp(-0.5*((K-19.08514)/2.00369)^2) Second question, why the code is not interrupting ("float" error)? please guide me if through the code is right or not. As its for a transient analysis so, I expected to call the temperature from current temperature. #include "udf.h" DEFINE_SPECIFIC_HEAT(my_user_cp,c,K,thread, position) { real cp; /*specific heat as a function of temperature*/ real K; /* Temperature*/ face_t f; begin_f_loop(f,thread) { F_CENTROID(K,f,thread); Cp = CURRENT_TEMPERATURE; Cp=4.3568+27.57838*exp(-0.5*((K-19.08514)/2.00369)^2) F_PROFILE(C, K, position) =Cp; } end_f_loop(C,K) } regards, |
|
|
|
|
|
|
|
|
#2 |
|
Senior Member
Join Date: Aug 2011
Posts: 117
Rep Power: 6 ![]() |
As far as I can recall, the binary operator "^" in C means BIT-AND and it expects both operand to be integer, so you should replace
(...)^2 to pow( (...), 2.0 ) when you need to calculate the power of a float number. Correct me if I am wrong |
|
|
|
|
|
|
|
|
#3 |
|
Member
Moha
Join Date: Mar 2013
Location: EU
Posts: 62
Rep Power: 2 ![]() |
Thank you for reply,
Actually, I recived this error for the formula : pow: too few arguments supplied (argument 2) which its : cp=4.3568+27.57838*exp(-0.5*(pow((T-19.08514)/2.00369),2.0) |
|
|
|
|
|
|
|
|
#4 |
|
Senior Member
Join Date: Aug 2011
Posts: 117
Rep Power: 6 ![]() |
Your ")" does not match "("
cp=4.3568+27.57838*exp(-0.5*( pow( (T-19.08514)/2.00369,2.0) ) ); |
|
|
|
|
|
|
|
|
#5 |
|
Member
Moha
Join Date: Mar 2013
Location: EU
Posts: 62
Rep Power: 2 ![]() |
thank you! the formula's error now solved.
but still have error "invalid type for binary expression: int + pointer to float" it belongs to the line after formula I guess. #include "udf.h" DEFINE_SPECIFIC_HEAT(my_user_cp,c,T,thread, position) { real cp; /*specific heat as a function of temperature*/ real T; /* Temperature*/ face_t f; begin_f_loop(f,thread) { cp=4.3568+27.57838*exp(-0.5*( pow( (T-19.08514)/2.00369,2.0) ) ); F_CENTROID(T,f,thread); y = CURRENT_TEMPERATURE; F_PROFILE(f, thread, position) =cp; } end_f_loop(C,T) } regards, |
|
|
|
|
|
|
|
|
#6 |
|
Senior Member
Join Date: Aug 2011
Posts: 117
Rep Power: 6 ![]() |
Try this one, adapted from the fluent udf manual.
#include "udf.h" DEFINE_SPECIFIC_HEAT(my_user_cp, T, Tref, h, yi) { real cp=4.3568+27.57838*exp(-0.5*( pow( (T-19.08514)/2.00369,2.0) ) ); *h = cp*(T-Tref); return cp; } |
|
|
|
|
|
|
|
|
#7 |
|
Member
Moha
Join Date: Mar 2013
Location: EU
Posts: 62
Rep Power: 2 ![]() |
thank you very much,
It was hooked to the Fluent. As I have two UDF file, Is it possible to hook two UDF for analysis at same time ? it seems impossible as I tryied to do! what I should to do ? regards, |
|
|
|
|
|
|
|
|
#8 |
|
Senior Member
Join Date: Aug 2011
Posts: 117
Rep Power: 6 ![]() |
I think at least you can concatenate the two files into a single file.
|
|
|
|
|
|
|
|
|
#9 |
|
Member
Moha
Join Date: Mar 2013
Location: EU
Posts: 62
Rep Power: 2 ![]() |
I did and its work very well. I just paste the second code at the end of first code. let see the results...
many thanks, |
|
|
|
|
|
|
|
|
#10 |
|
Member
Moha
Join Date: Mar 2013
Location: EU
Posts: 62
Rep Power: 2 ![]() |
would you please tell me how to change inital temperature value in Fluent ? and in C program code as UDF file ?
as I can see the initial temperature (at step 0) for the model, its 26 C by default by Fluent. how can I change it ? where is the option menu in Fluent ? or in this such a case that in transient analysis I must define at UDF file which its already interrupted to the Fluent ? Note: when I am using hybrid initialization! regards, Last edited by ahvz; May 4, 2013 at 08:30. |
|
|
|
|
|
|
|
|
#11 |
|
Senior Member
Join Date: Aug 2011
Posts: 117
Rep Power: 6 ![]() |
You can use DEFINE_INIT to specify the initial values.
|
|
|
|
|
|
|
|
|
#12 |
|
Member
Moha
Join Date: Mar 2013
Location: EU
Posts: 62
Rep Power: 2 ![]() |
Done!
it works very well, thank you very much, best regards, |
|
|
|
|
|
![]() |
| Thread Tools | |
| Display Modes | |
|
|
Similar Threads
|
||||
| Thread | Thread Starter | Forum | Replies | Last Post |
| Compile problem | ivanyao | OpenFOAM Running, Solving & CFD | 1 | October 12, 2012 09:31 |
| How to write udf for specific heat | nanoraja | ANSYS Meshing & Geometry | 1 | September 14, 2011 11:34 |
| Simulation of a single bubble with a VOF-method | Suzzn | CFX | 18 | October 2, 2009 04:18 |
| Error with Wmake | skabilan | OpenFOAM Installation | 3 | July 28, 2009 00:35 |
| Droplet Evaporation | Christian | Main CFD Forum | 2 | February 27, 2007 06:27 |