We have an exciting announcement about badges coming in May 2025. Until then, we will temporarily stop issuing new badges for course completions and certifications. However, all completions will be recorded and fulfilled after May 2025.
Fluids

Fluids

Topics related to Fluent, CFX, Turbogrid and more.

Fluent UDF: An example using PRF_GRSUM macro?

    • Mehdi Famouri
      Subscriber

      Hello fellow UDF writers! Does anyone have an example using PRF_GRSUM macro? Please note, I'm not asking about PRF_GRSUM1 macro. 

      Best,
      Mehdi

    • Luca B.
      Forum Moderator

      Hi,

      The PRF_GRSUM macro in Fluent's User Defined Functions (UDF) is used to compute the global sum of a float or double array across all compute nodes in a parallel computation. Here's an example of how you might use the PRF_GRSUM macro in a UDF:

      DEFINE_ON_DEMAND(test)

      {

      real x[1]; /* Array of size 1 to hold the sum */

      real sum;

      int iwork[1]; /* Work array for parallel operation */

      /* Initialize the array with the value to sum */

      x[0] = 5; /* Your code to set the initial value */

      /* Compute the global sum */

      PRF_GRSUM(x, 1, iwork);

      /* x[0] now contains the sum of the values across all compute nodes */

      sum = x[0];

      Message0("Total = %f\n",sum);

      /* You can now use 'sum' for further calculations or monitoring */

      }

      In this example, x is an array that you want to sum across all compute nodes. The PRF_GRSUM macro takes the array x, the number of elements in the array (which is 1 in this case), and a work array iwork as arguments. After the macro is called, x[0] will contain the global sum of the values that were in x on each compute node.

      Please note that the PRF_GRSUM macro should be used in a context where it is called only once per compute node, such as within the DEFINE_ADJUST macro, to avoid issues with parallel execution as mentioned in the documentation.

    • Mehdi Famouri
      Subscriber

      Thank you Luca for your attention and reply, shouldn't "x" and "iwork" have the same declaration? One is integer and the other is real. 

    • Mehdi Famouri
      Subscriber

      Here is an example:

       

       

       

      https://www.scribd.com/document/385779402/UDF-Mechanics

      Page 38-39

Viewing 3 reply threads
  • The topic ‘Fluent UDF: An example using PRF_GRSUM macro?’ is closed to new replies.