[ANSYS, Inc. Logo] return to home search
next up previous contents index

2.2.3 DEFINE_EXECUTE_AT_END



Description


DEFINE_EXECUTE_AT_END is a general-purpose macro that is executed at the end of an iteration in a steady state run, or at the end of a time step in a transient run. You can use DEFINE_EXECUTE_AT_END when you want to calculate flow quantities at these particular times. Note that you do not have to specify whether your execute-at-end UDF gets executed at the end of a time step or the end of an iteration. This is done automatically when you select the steady or unsteady time method in your ANSYS FLUENT model.



Usage



DEFINE_EXECUTE_AT_END( name)


Argument Type Description
symbol name UDF name.
   
Function returns  
void  
   

There is only one argument to DEFINE_EXECUTE_AT_END: name. You supply name, the name of the UDF. Unlike DEFINE_ADJUST, DEFINE_EXECUTE_AT_END is not passed a domain pointer. Therefore, if your function requires access to a domain pointer, then you will need to use the utility Get_Domain(ID) to explicitly obtain it (see Section  3.2.6 and the example below). If your UDF requires access to a phase domain pointer in a multiphase solution, then it will need to pass the appropriate phase ID to Get_Domain in order to obtain it.



Example


The following UDF, named execute_at_end, integrates the turbulent dissipation over the entire domain using DEFINE_EXECUTE_AT_END and displays it in the console at the end of the current iteration or time step. It can be executed as an interpreted or compiled UDF in ANSYS FLUENT.

/********************************************************************
   UDF for integrating turbulent dissipation and displaying it in the     
   console at the end of the current iteration or time step  
*********************************************************************/

#include "udf.h"

DEFINE_EXECUTE_AT_END(execute_at_end)
{

  Domain *d;
  Thread *t;
  /* Integrate dissipation. */
  real sum_diss=0.;
  cell_t c;
  d = Get_Domain(1);   /* mixture domain if multiphase */

 thread_loop_c(t,d)
    {
     if (FLUID_THREAD_P(t))
       {
        begin_c_loop(c,t)
             sum_diss += C_D(c,t) * C_VOLUME(c,t); 
        end_c_loop(c,t)
       }
    }
  
  printf("Volume integral of turbulent dissipation: %g\n", sum_diss);
  fflush(stdout);
}



Hooking an Execute-at-End UDF to ANSYS FLUENT


After the UDF that you have defined using DEFINE_EXECUTE_AT_END is interpreted (Chapter  4) or compiled (Chapter  5), the name of the argument that you supplied as the first DEFINE macro argument (e.g. execute_at_end) will become visible and selectable via the User-Defined Function Hooks dialog box in ANSYS FLUENT. Note that you can hook multiple end-iteration functions to your model. See Section  6.1.3 for details.


next up previous contents index Previous: 2.2.2 DEFINE_DELTAT
Up: 2.2 General Purpose DEFINE
Next: 2.2.4 DEFINE_EXECUTE_AT_EXIT
Release 12.0 © ANSYS, Inc. 2009-01-14