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.