next up previous contents
Next: 2.4 Epilogue: Lessons for Up: 2.3 PPGP Previous: 2.3 PPGP

Example:

The code of the parallel partitioner interface is listed in Table 3.

 

/* Parallel Partitioner of unstructured Grids or random Particles */
/* Algorithm: Recursive Inertia Bisection                         */
/* Includes a load-balance routine.                               */
/* Includes a point-split routine for 
        multiple points fall on the same position on the cut axis */

#include <nx.h>
#include <stdio.h>
#include <math.h>
#include "partition.h"
#include "pglib.h"

/* for send_type and receive_type */
#define  PARTITION  83000000
#define  PARTITION1 83100000
#define  PARTITION2 83200000
#define  PARTITION3 83300000

#define  GPOINT_SIZE  sizeof(Gpoint)
#define  pg_proc_id     (pglib.pg_proc_id)
#define  tot_pg_procs   (pglib.tot_pg_procs)
#define  coproc         (pglib.coproc)
#define  pos_half       (pglib.pos_half)

para_partitioner(gpt_handle)
Gpt_handle *gpt_handle;
{

 
Table 3: Interface for the parallel partitioner in PPGP. Not only is the interface undocumented but the variable names give little hint about their content.

The code is sparsely documented and is supplemented by a README file which contains installation instructions. There is an example application. This documentation is, however, insufficient for other software developers to build on this code. In particular, the interface to the partitioner is undocumented and requires consider effort to decipher.



Will Sawyer
Fri Mar 6 18:02:18 EST 1998