|
[Sponsors] |
Direct condensation of steam to subcooled water spray |
|
LinkBack | Thread Tools | Search this Thread | Display Modes |
November 18, 2021, 11:57 |
Direct condensation of steam to subcooled water spray
|
#1 |
New Member
mohammad reza
Join Date: Apr 2014
Location: Iran-Isfahan
Posts: 10
Rep Power: 12 |
As in the article " https://doi.org/10.1016/j.cep.2019.04.015 ", I want to simulate direct condensation of steam to subcooled water spray.
The results are good when I simulate only hydrodynamics, but when I compile the UDF to mass transfer and add source terms, In the first few iterations, it diverges and gives the following error: "WARNING: Invalid cp (0.000000e+00 J/kgK) for water-vapor at temperature nan K Error at host: floating point exception Error: floating point exception Error Object: #f" I have attached the UDF to this post. I would be grateful if you could help me. Last edited by m.r.soufivand; November 18, 2021 at 12:00. Reason: I forgot to upload the attachment |
|
November 19, 2021, 01:18 |
|
#2 |
Senior Member
Alexander
Join Date: Apr 2013
Posts: 2,363
Rep Power: 34 |
your code
Code:
#include "udf.h" #include "math.h" #include "sg.h" #include "sg_mphase.h" #include "flow.h" #include "mem.h" #include "metric.h" #define R 8.314 #define pi 3.14159 #define T_SAT 373.15 #define h_lv 2455.1345e3 #define M 18.0 #define Beta 0.6666 #define a 23.224 #define b 3841.22 #define cc -45.0 DEFINE_ADJUST(store_gradient, domain) { Thread *t; Thread **pt; cell_t c; int phase_domain_index = 0.; Domain *pDomain = DOMAIN_SUB_DOMAIN(domain,phase_domain_index); Alloc_Storage_Vars(pDomain,SV_VOF_RG,SV_VOF_G,SV_NULL); Scalar_Reconstruction(pDomain, SV_VOF,-1,SV_VOF_RG,NULL); Scalar_Derivatives(pDomain,SV_VOF,-1,SV_VOF_G,SV_VOF_RG,Vof_Deriv_Accumulate); mp_thread_loop_c (t,domain,pt) if (FLUID_THREAD_P(t)) { Thread *ppt = pt[phase_domain_index]; begin_c_loop (c,t) { C_UDMI(c,t,0) = C_VOF_G(c,ppt)[0]; C_UDMI(c,t,1) = C_VOF_G(c,ppt)[1]; C_UDMI(c,t,2) = NV_MAG(C_VOF_G(c,ppt)); } end_c_loop (c,t) } Free_Storage_Vars(pDomain,SV_VOF_RG,SV_VOF_G,SV_NULL); } DEFINE_SOURCE(vap_src, cell, pri_th, dS, eqn) { Thread *mix_th, *sec_th; real m_dot_v,T_v,T_l,P_v,P_sat; mix_th = THREAD_SUPER_THREAD(pri_th); sec_th = THREAD_SUB_THREAD(mix_th,1); T_v=C_T(cell,pri_th); P_v=C_P(cell,pri_th); T_l=C_T(cell,sec_th); P_sat=exp(a-(b/(T_l+cc))); if(C_T(cell,mix_th)>=T_SAT) { m_dot_v = 0.0; dS[eqn] = 0.0; } if(C_T(cell,mix_th)<=T_SAT) { m_dot_v =C_VOF(cell,sec_th)*(2.0*Beta/(2.0-Beta))*C_UDMI(cell,mix_th,2)*sqrt(M/(2*pi*R))*((P_v/sqrt(T_v))-(P_sat/sqrt(T_l))); C_UDMI(cell,mix_th,3) =m_dot_v; dS[eqn] = 0.0; } return m_dot_v ; } DEFINE_SOURCE(liq_src,cell,sec_th,dS,eqn) { Thread * mix_th, *pri_th; real m_dot_l,T_v,T_l,P_v,P_sat; mix_th=THREAD_SUPER_THREAD(sec_th); pri_th=THREAD_SUB_THREAD(mix_th,0); T_v = C_T(cell,pri_th); P_v = C_P(cell,pri_th); T_l = C_T(cell,sec_th); P_sat=exp(a-(b/(T_l+cc))); if(C_T(cell,mix_th)>=T_SAT) { m_dot_l = 0.0; dS[eqn] = 0.0; } if(C_T(cell,mix_th)<=T_SAT) { m_dot_l = C_VOF(cell,sec_th)*(2.0*Beta/(2.0-Beta))*C_UDMI(cell,mix_th,2)*sqrt(M/(2*pi*R))*((P_v/sqrt(T_v))-(P_sat/sqrt(T_l))); C_UDMI(cell,mix_th,4) =m_dot_l; dS[eqn] =(2.0*Beta/(2.0-Beta))*C_UDMI(cell,mix_th,2)*sqrt(M/(2*pi*R))*((P_v/sqrt(T_v))-(P_sat/sqrt(T_l))); } return m_dot_l; } DEFINE_SOURCE(enrg_src,cell,mix_th,dS,eqn) { Thread *pri_th, *sec_th; real m_dot,T_v,T_l,P_v,P_sat; pri_th = THREAD_SUB_THREAD(mix_th,0); sec_th = THREAD_SUB_THREAD(mix_th,1); T_v=C_T(cell,pri_th); P_v=C_P(cell,pri_th); T_l=C_T(cell,sec_th); P_sat=exp(a-(b/(T_l+cc))); if(C_T(cell,mix_th)>=T_SAT) { m_dot =0.0; dS[eqn] =0.0; } if(C_T(cell,mix_th)<=T_SAT) { m_dot=C_VOF(cell,sec_th)*(2.0*Beta/(2.0-Beta))*C_UDMI(cell,mix_th,2)*sqrt(M/(2*pi*R))*((P_v/sqrt(T_v))-(P_sat/sqrt(T_l))); C_UDMI(cell,mix_th,5) =h_lv*m_dot; dS[eqn]= 0.0; } return h_lv*m_dot; } was #define h_lv 2455.1345e3 to be #define h_lv 2.4551345e6 from your error I may assume you have problem with temperature convergence. you may decrease time step check your mesh check boundary conditions
__________________
best regards ****************************** press LIKE if this message was helpful |
|
November 19, 2021, 06:58 |
|
#3 |
Senior Member
Join Date: Nov 2013
Posts: 1,965
Rep Power: 27 |
I tried to refactor your code, because you repeated your equations a few times:
Code:
#include "udf.h" #include "math.h" #include "sg.h" #include "sg_mphase.h" #include "flow.h" #include "mem.h" #include "metric.h" #define R 8.314 #define pi 3.14159 #define T_SAT 373.15 #define h_lv 2455.1345e3 #define M 18.0 #define Beta 0.6666 #define a 23.224 #define b 3841.22 #define cc -45.0 DEFINE_ADJUST(store_gradient, domain) { Thread *t; Thread **pt; cell_t c; int phase_domain_index = 0.; Domain *pDomain = DOMAIN_SUB_DOMAIN(domain,phase_domain_index); Alloc_Storage_Vars(pDomain,SV_VOF_RG,SV_VOF_G,SV_NULL); Scalar_Reconstruction(pDomain, SV_VOF,-1,SV_VOF_RG,NULL); Scalar_Derivatives(pDomain,SV_VOF,-1,SV_VOF_G,SV_VOF_RG,Vof_Deriv_Accumulate); mp_thread_loop_c (t,domain,pt) if (FLUID_THREAD_P(t)) { Thread *ppt = pt[phase_domain_index]; begin_c_loop (c,t) { C_UDMI(c,t,0) = C_VOF_G(c,ppt)[0]; C_UDMI(c,t,1) = C_VOF_G(c,ppt)[1]; C_UDMI(c,t,2) = NV_MAG(C_VOF_G(c,ppt)); } end_c_loop (c,t) } Free_Storage_Vars(pDomain,SV_VOF_RG,SV_VOF_G,SV_NULL); } real ds(Thread* pri_th, Thread* sec_th, cell_t cell) { real T_v, T_l, P_v, P_sat, dS; if(C_T(cell,mix_th)>=T_SAT) { dS = 0; } else { T_v=C_T(cell,pri_th); P_v=C_P(cell,pri_th); T_l=C_T(cell,sec_th); P_sat=exp(a-(b/(T_l+cc)));dS; dS = (2.0*Beta/(2.0-Beta))*C_UDMI(cell,mix_th,2)*sqrt(M/(2*pi*R))*((P_v/sqrt(T_v))-(P_sat/sqrt(T_l))); } return dS; } real mdot(Thread* pri_th, Thread* sec_th, cell_t cell) { real T_v, T_l, P_v, P_sat, m_dot; if(C_T(cell,mix_th)>=T_SAT) { m_dot = 0; } else { T_v=C_T(cell,pri_th); P_v=C_P(cell,pri_th); T_l=C_T(cell,sec_th); P_sat=exp(a-(b/(T_l+cc))); m_dot = C_VOF(cell,sec_th)*(2.0*Beta/(2.0-Beta))*C_UDMI(cell,mix_th,2)*sqrt(M/(2*pi*R))*((P_v/sqrt(T_v))-(P_sat/sqrt(T_l))); } return m_dot; } DEFINE_SOURCE(vap_src, cell, pri_th, dS, eqn) { Thread* mix_th = THREAD_SUPER_THREAD(pri_th); Thread* sec_th = THREAD_SUB_THREAD(mix_th,1); real m_dot_v=mdot(pri_th, sec_th, cell); C_UDMI(cell,mix_th,3) = m_dot_v; dS[eqn] = 0.0; return m_dot_v ; } DEFINE_SOURCE(liq_src,cell,sec_th,dS,eqn) { Thread* mix_th=THREAD_SUPER_THREAD(sec_th); Thread* pri_th=THREAD_SUB_THREAD(mix_th,0); real m_dot_l=mdot(pri_th, sec_th, cell); C_UDMI(cell,mix_th,4) = m_dot_l; dS[eqn] = ds(pri_th, sec_th, cell); return m_dot_l; } DEFINE_SOURCE(enrg_src,cell,mix_th,dS,eqn) { Thread* pri_th = THREAD_SUB_THREAD(mix_th,0); Thread* sec_th = THREAD_SUB_THREAD(mix_th,1); real m_dot=mdot(pri_th, sec_th, cell); C_UDMI(cell,mix_th,5) = h_lv*m_dot; dS[eqn]= 0.0; return h_lv*m_dot; } I also noticed that only one of your sources specifies dS (as non-zero); the code above is (relatively) easy to change if you want to improve that.
__________________
"The UDF library you are trying to load (libudf) is not compiled for parallel use on the current platform" is NOT the error after compiling. It is the error after loading. To see compiler errors, look at your screen after you click "build". |
|
November 19, 2021, 10:15 |
|
#4 |
New Member
mohammad reza
Join Date: Apr 2014
Location: Iran-Isfahan
Posts: 10
Rep Power: 12 |
Thanks so much for your response and help. I try to use your code but gives the error is that mix_th is not defined.
|
|
November 20, 2021, 03:47 |
|
#5 |
Senior Member
Join Date: Nov 2013
Posts: 1,965
Rep Power: 27 |
I see, the definitions for ds and mdot should also have this:
Code:
Thread* mix_th = THREAD_SUPER_THREAD(pri_th);
__________________
"The UDF library you are trying to load (libudf) is not compiled for parallel use on the current platform" is NOT the error after compiling. It is the error after loading. To see compiler errors, look at your screen after you click "build". |
|
Tags |
condensation, divergence issue, mass transfer, udf |
|
|
Similar Threads | ||||
Thread | Thread Starter | Forum | Replies | Last Post |
Mass imbalance problem in multiphase water and steam CFX case | Antech | CFX | 1 | October 26, 2020 05:03 |
VOF Steam condensation | Andrea159357 | FLUENT | 4 | March 19, 2019 15:20 |
No liquid water exist in my Fuel Cell simulation | fatchang | FLUENT | 19 | October 15, 2018 15:27 |
Steam Mixture material for Wall condensation | coolcrasher | CFX | 2 | October 19, 2015 10:23 |
How to solve condensation case with HBM model (NO WATER)? | kiwishall | CFX | 0 | December 23, 2013 21:47 |