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.