Ansys Learning Forum › Forums › Discuss Simulation › Fluids › Initialization Error – Droplet Evaporation › Reply To: Initialization Error – Droplet Evaporation
February 28, 2023 at 11:56 am
Subscriber
Hello Rob,
I'm having UDM in my UDF but it doesn't give me any value since the case is not even getting initialized. Can you have a good look at my UDF and let me know where I'm wrong? Also, I'm trying to run this in parallel with 4 processors. I'm sharing my actual code here.
Also, is there a way that my udf is causing a cell or value or something similar that doesn't exist is getting written to and Fluent then crashes?? Â
/********************************************************
 DEFINITION OF MASS SOURCE TERM FOR LIQUID PHASE
 *******************************************************/
DEFINE_SOURCE(liq_src, c, t, ds, eqn)
{
  #if !RP_Host
 Â
  real m_dot_l, T_sat;
  real vol = C_VOLUME(c, t);                                      //SIGNIFIES THE CELL VOLUME FOR A CELL AND THREAD
  Thread *pt = THREAD_SUB_THREAD(t, 0);                                 //PRIMARY PHASE THREAD
  Thread *st = THREAD_SUB_THREAD(t, 1);                                 //SECONDARY PHASE THREAD
  if (C_VOF(c, t) < 0.99 && C_VOF(c, t) > 0.01)
  {
  if (C_T(c,pt) >= T_sat)
  {
    m_dot_l = -0.1 * C_VOF(c,t) * C_R(c,t) * fabs(C_T(c,t) - T_sat) / T_sat;            //LEE EVAPORATION MODEL
    ds[eqn] = -0.1 * C_R(c,t) * fabs(C_T(c,t) - T_sat) / T_sat;
  }
  else
  {
    m_dot_l = 0.1 * C_VOF(c,st) * C_R(c,st) * fabs(T_sat - C_T(c,pt)) / T_sat;           //LEE CONDENSATION MODEL
    ds[eqn] = 0;
  }
  }
  else
  {
  m_dot_l = 0;
  ds[eqn] = 0;
  }
  C_UDMI(c, t, 9) = m_dot_l;
  return m_dot_l;
 Â
  #endif
}
/********************************************************
 DEFINITION OF MASS SOURCE TERM FOR VAPOR PHASE
 *******************************************************/
DEFINE_SOURCE(vap_src, c, t, ds,eqn)
{
  #if !RP_Host
   Â
  real m_dot_v, T_sat;
  real vol = C_VOLUME(c, t);                                      //SIGNIFIES THE CELL VOLUME FOR A CELL AND THREAD
  Thread *pt = THREAD_SUB_THREAD(t, 0);                                 //PRIMARY PHASE THREAD
  Thread *st = THREAD_SUB_THREAD(t, 1);                                 //SECONDARY PHASE THREAD
  if (C_VOF(c,t) < 0.99 && C_VOF(c,t) > 0.01)
  {
  if (C_T(c,pt) >= T_sat)
  {
    m_dot_v = 0.1 * C_VOF(c,t) * C_R(c,t) * fabs(T_sat - C_T(c,pt)) / T_sat;            //LEE CONDENSATION MODEL
    ds[eqn] = 0;
  }
  else
  {
    m_dot_v = -0.1 * C_VOF(c,t) * C_R(c,t) * fabs(T_sat - C_T(c,pt)) / T_sat;            //LEE CONDENSATION MODEL
    ds[eqn] = -0.1 * C_R(c,t) * fabs(T_sat - C_T(c,t)) / T_sat;
  }
  }
  else
  {
  m_dot_v = 0;
  ds[eqn] = 0;
  }
  C_UDMI(c, t, 10) = m_dot_v;
  return m_dot_v;
 Â
  #endif
}
/********************************************************
 DEFINITION OF ENERGY SOURCE TERM FOR BOTH PHASES
 *******************************************************/
DEFINE_SOURCE(enrg_src, c, mix_th, ds, eqn)
{
  #if !RP_Host
 Â
  real m_dot, T_sat, hfg;
  Thread *pt, *st;
  pt = THREAD_SUB_THREAD(mix_th, 0);
  st = THREAD_SUB_THREAD(mix_th, 1);
  if (C_VOF(c, pt) < 0.99 && C_VOF(c, pt) > 0.01)
  {
    if (C_T(c, mix_th) >= T_sat)
    {
      m_dot = -0.1 * C_VOF(c,pt) * C_R(c,pt) * fabs(C_T(c,pt) - T_sat) / T_sat;            //LEE EVAPORATION MODEL
      ds[eqn] = -0.1 * C_VOF(c,pt) * C_R(c,pt) / T_sat;
    }
  }
  else
  {
    m_dot = 0.1 * C_VOF(c,st) * C_R(c,st) * fabs(T_sat - C_T(c,mix_th)) / T_sat;            //LEE CONDENSATION MODEL
    ds[eqn] = -0.1 * C_VOF(c,st) * C_R(c,st) / T_sat;
  }
  else
  {
    m_dot = 0;
    ds[eqn] = 0;
  }
 Â
  C_UDMI(c, t, 11) = m_dot;
  return hfg * m_dot;
 Â
  #endif
}
Â