Fluids

Fluids

Topics related to Fluent, CFX, Turbogrid and more.

source term modification of energy equation in non-equilibrium thermal model

    • yf70512
      Subscriber

      Hello all,

      I am trying to modify the source term (Changing the temperature power exponent from 1 to 4) of energy equation in non-equilibrium thermal model by UDS and UDF (DEFINE_SOURCE macro). But the Fluent crashed when the code runned with the error "999999:mpt_accept:error: accept failed: No error". I think there may be two questions:
      1 how to access the solid temperature in the fluid zone and fluid temperature in the solid zone?
      2 how to specify the UDS Scalar as the energy source (Figure 2)?
      Could anybody help with this? Thank you in advance.

      Best regards,

      Fan


    • yf70512
      Subscriber

      Here is my UDF:

      #include "udf.h"

      #define HFS_CONSTANT 1000   
      #define AFS_CONSTANT 0.1    

      // Fluid Source Term
      DEFINE_SOURCE(Fluid_source, c, t, dS, eqn)
      {
          real Tf, Ts;
          real hfs, Afs;
          real source;

          // Obtain the fluid temperature (Tf) and solid temperature (Ts)
          Tf = C_STORAGE_R(c, t, SV_T_F);   // Access fluid temperature
          Ts = C_STORAGE_R(c, t, SV_T_S);   // Access solid temperature
          
          // Calculate or use constants for hfs (heat transfer coefficient) and Afs (interfacial area density)
          hfs = HFS_CONSTANT;  // Define or calculate hfs
          Afs = AFS_CONSTANT;  // Define or calculate Afs

          // Calculate the source term using modified expression hA(Tf^4 - Ts^4)
          source = hfs * Afs * (pow(Ts, 4) - pow(Tf, 4));

          // Define the derivative of the source term with respect to Tf
          dS[eqn] = -4 * hfs * Afs * pow(Tf, 3);

          return source;  // Return the calculated source term
      }

      // Solid Source Term
      DEFINE_SOURCE(Solid_source, c, t, dS, eqn)
      {
          real Tf, Ts;
          real hfs, Afs;
          real source;

          // Obtain the fluid temperature (Tf) and solid temperature (Ts)
          Ts = C_STORAGE_R(c, t, SV_T_S);   // Access solid temperature
          Tf = C_STORAGE_R(c, t, SV_T_F);   // Access fluid temperature

          // Calculate or use constants for hfs (heat transfer coefficient) and Afs (interfacial area density)
          hfs = HFS_CONSTANT;  // Define or calculate hfs
          Afs = AFS_CONSTANT;  // Define or calculate Afs

          // Calculate the source term using modified expression hA(Ts^4 - Tf^4)
          source = hfs * Afs * (pow(Ts, 4) - pow(Tf, 4));

          // Define the derivative of the source term with respect to Ts
          dS[eqn] = 4 * hfs * Afs * pow(Ts, 3);

          return source;  // Return the calculated source term
      }

      I am not sure if it is right to access the  solid temperature in the fluid zone and fluid temperature in the solid zone.

    • Rob
      Forum Moderator

      The problem isn't so much getting the fluid temperature as seen by the solid or vice versa but that you need to link to the two cells: so some care will be needed there. 

      Changing the exponent from 1 to 4 suggests radiation effects? Will this effect anything other than the front and rear (ie external surfaces) of the solid?

      • yf70512
        Subscriber

        Hi Rob,

        Many thanks for your suggestions. I would like to ask how to link the two cells.

        I have tried to link them by the spatial coordinate because a dual cell approach is used in  non-equilibrium thermal model.

        But the same errors occured "999999:mpt_accept:error: accept failed: No error" . The code is following:

        DEFINE_SOURCE(Fluid_source,c,t,dS,eqn) 
        {
         
        real xc[ND_ND], xcs[ND_ND];
        real Tf, Ts;
        real hfs = HFS_CONSTANT;  // Placeholder value for heat transfer coefficient
            real Afs = AFS_CONSTANT;    // Placeholder value for interfacial area density
            real source;
        int zone_ID;
        Thread *st;
        cell_t sc;
        Domain *domain;
        // Solid_Cell_id *st;
         
        // Find  the coordinate position of the centroid
        C_CENTROID(xc,c,t);
         
            // Obtain fluid and solid temperatures
            Tf = C_T(c, t);  // Fluid temperature
            // Ts = C_STORAGE_R(c, t, SV_T_S);  // Solid temperature
         
         
        zone_ID = THREAD_ID (t);
         
        if (zone_ID == 11)
        {
        domain  = Get_Domain(27);
        thread_loop_c(st, domain) // loop over all cell threads in the domain
        {
        begin_c_loop (sc,st) // loop over all cells 
        {
        C_CENTROID(xcs,sc,st);
        if (fabs(xc[0] - xcs[0]) < 1.0e-6 && fabs(xc[1] - xcs[1]) < 1.0e-6 && fabs(xc[2] - xcs[2]) < 1.0e-6)
        Ts = C_T(sc,st);
        break;
        }
        end_c_loop (sc,st)
        }
            // DEFINE_PROFILE(Ts, st, xc);
        }
        if (zone_ID == 14)
        {
        domain  = Get_Domain(33);
        thread_loop_c(st, domain)
        {
        begin_c_loop (sc,st)
        {
        C_CENTROID(xcs,sc,st);
        if (fabs(xc[0] - xcs[0]) < 1.0e-6 && fabs(xc[1] - xcs[1]) < 1.0e-6 && fabs(xc[2] - xcs[2]) < 1.0e-6)
        Ts = C_T(sc,st);
        break;
        }
        end_c_loop (sc,st)
        }
         
        }
            // DEFINE_PROFILE(Ts, st, xc);
         
            // Calculate the source term based on the modified expression
            source = hfs * Afs * (pow(Ts, 4.0) - pow(Tf, 4.0));
         
            // Set the derivative of the source term with respect to Tf
            dS[eqn] = - 4.0 * hfs * Afs * pow(Tf, 3.0);
         
            return source;
         
        }
        Besides, the effect (exponent from 1 to 4) in my case  only affect the heat transfer in the interface between the solid and fluid.
Viewing 2 reply threads
  • You must be logged in to reply to this topic.