Fluids

Fluids

Film Boiling

    • monaqu.1205
      Subscriber

      How do I modify the boiling.c code to account for level set method along with VOF model for horizontal film boiling tutorial given by fluent??

    • Rob
      Ansys Employee

      In what way do you want to modify the code? It'd probably help if you posted the UDF too. 

    • monaqu.1205
      Subscriber

      I would like to include Level-set method for calculating surface tension at the interface for film boiling. I am attaching the standard code provided by ansys for film boiling using VOF model is attached below:  


      #include "udf.h"


      #include "sg.h"


      #include "sg_mphase.h"


      #include "flow.h"


      #include "mem.h"


       


       


       


      /**************************************************************/


      /* UDF for specifying an interfacail area density             */


      /**************************************************************/


       


       


      DEFINE_ADJUST(area_density, domain)


      {


        Thread *t;


        Thread **pt;


        cell_t c;


        Domain *pDomain = DOMAIN_SUB_DOMAIN(domain,P_PHASE);


        real voidx, voidy, voidz=0;


        


         


        {


        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);


         }


               


         {


            Alloc_Storage_Vars(domain, SV_T_RG, SV_T_G,  SV_NULL);


            T_derivatives(domain);


            Free_Storage_Vars(domain, SV_T_RG, SV_NULL);


          }


           


            mp_thread_loop_c (t,domain,pt)


      if (FLUID_THREAD_P(t))


        {


          Thread *tp = pt[P_PHASE];


       


          begin_c_loop (c,t)


            {


       


      #if RP_3D


      C_UDMI(c,t,0) = (C_VOF_G(c,tp)[0]*C_T_G(c,t)[0]+


      C_VOF_G(c,tp)[1]*C_T_G(c,t)[1]+C_VOF_G(c,tp)[2]*C_T_G(c,t)[2]);


      #endif


       


      #if RP_2D


      C_UDMI(c,t,0) = (C_VOF_G(c,tp)[0]*C_T_G(c,t)[0]+


      C_VOF_G(c,tp)[1]*C_T_G(c,t)[1]);


      #endif


       


            }


                end_c_loop (c,t)


               }


               


       Free_Storage_Vars(pDomain,SV_VOF_RG,SV_VOF_G,SV_NULL);


       Free_Storage_Vars(domain, SV_T_G, SV_NULL);


      }


       


      DEFINE_SOURCE(gas, cell, thread, dS, eqn)


      {


       


        real x[ND_ND];


        real source;


        Thread *tm = THREAD_SUPER_THREAD(thread);


        Thread **pt = THREAD_SUB_THREADS(tm);


         


        real Kl = C_K_L(cell, pt[1])*C_VOF(cell, pt[1]),


        Kg = C_K_L(cell, pt[0])*C_VOF(cell, pt[0]);


        real L = 1e5;


       


        source = (Kl+Kg)*C_UDMI(cell,tm,0) / L;


        


       


        


        C_UDMI(cell, tm, 1) = source;


        


       


        C_UDMI(cell, tm, 2) = -source*L;


       


        


        


        dS[eqn] =0;


        


        return source;


      }


       


      DEFINE_SOURCE(liquid, cell, thread, dS, eqn)


      {


        real x[ND_ND];


        real source;


        Thread *tm = THREAD_SUPER_THREAD(thread);


        Thread **pt = THREAD_SUB_THREADS(tm);


       


        source = -C_UDMI(cell, tm, 1);


        


        dS[eqn] = 0;


        


        return source;


      }


       


      DEFINE_SOURCE(energy, cell, thread, dS, eqn)


      {


        real x[ND_ND];


        real source;


        Thread *tm = thread;


        


        


       


        source = C_UDMI(cell, tm, 2);


        dS[eqn] = 0;


        


        return source;


      }


       


      /***********************************************************************/


      /* UDF for initializing flow field variables                           */


      /***********************************************************************/


       


       


      DEFINE_INIT(my_init_function, domain)


      {


        Thread *t;


        Thread **pt;


        Thread **st;


        cell_t c;


        Domain *pDomain = DOMAIN_SUB_DOMAIN(domain,P_PHASE);


        Domain *sDomain = DOMAIN_SUB_DOMAIN(domain,S_PHASE);


        


        real xc[ND_ND], y, x;


       


            mp_thread_loop_c (t,domain,pt)


      if (FLUID_THREAD_P(t))


        {


          Thread *tp = pt[P_PHASE];


       


          begin_c_loop (c,t)


            {


           C_CENTROID(xc,c,t);


           x=xc[0];


           y=xc[1];


           


            if ( y < 0.00292 + 0.0006*cos(6.283*x/0.0778) )


            C_VOF(c,tp) = 1;


            else


            C_VOF(c,tp) = 0;


       


            }


                end_c_loop (c,t)


               }


               


                     mp_thread_loop_c (t,domain,st)


      if (FLUID_THREAD_P(t))


        {


          Thread *sp = st[S_PHASE];


       


          begin_c_loop (c,t)


            {


           C_CENTROID(xc,c,t);


           x=xc[0];


           y=xc[1];


           


            if ( y < 0.00292 + 0.0006*cos(6.283*x/0.0778) )


            C_VOF(c,sp) = 0;


            else


            C_VOF(c,sp) = 1;


       


            }


                end_c_loop (c,t)


               }


       


      }

    • DrAmine
      Ansys Employee

      The CLSVOF implementation in Fluent does not support mass transfer.  Adding that would require a lot of efforts. 

    • Karthik R
      Administrator

      Hello,


      just a curious question - is there a reason why you would like to add level set to this UDF?


      thanks.


      Best Regards,


      Karthik

    • monaqu.1205
      Subscriber

      In CLSVOF method, I would be using VOF model to calculate mass transfer whereas level set method will be used to calculate surface tension force.


       


      So can you help me in modifying the code for CLSVOF?

    • monaqu.1205
      Subscriber

      Hello,


      I want to include Level set method to calculate Surface tension force. 

    • DrAmine
      Ansys Employee

      You can calculate Surface tension force without using the Level Set Method. The step to include mass transfer effects for CLSVOF is not easy and requires a lot of efforts and some deep knowledge of C programming, parallelization and UDF. As ANSYS Stuff we cannot help here. Perhaps a community member might help you here out. 

    • monaqu.1205
      Subscriber

      C programming and parallelization is not an issue. I'm positive, I can handle it.


      However, I need to know what modifications are required in UDF.

    • Rob
      Ansys Employee

      Simply (and that's as far as we're going as staff) you need to ID the cell with the free surface and add/remove material from the phases based on local temperature etc.  

    • amaligaadi2018
      Subscriber

      Hi monaqu.1205, I have same difficulty in the implementation of CLSVOF, please have you solved the problem and how did you do it?

    • shadman
      Subscriber

      can anyone provide me with the test-2d.msh.gz boiling.c  files for the tutorial of nucleate boiling?

    • Rob
      Ansys Employee

      They'll be on the ANSYS Learning Hub, so you'll need to get access to that: we can't supply them. 

Viewing 12 reply threads
  • You must be logged in to reply to this topic.