int user_pack_cp_data(void *user, void **user_cp)


If the user wishes to employ parallelism and wants to use the cut pool to store user-defined cuts, this function can be used to send all problem-specific data that will be needed by the cut pool module. This could include instance data, as well as user parameter settings (see Section 5.5.1 for a discussion of this). This is one of the few places where the user may need to worry about the configuration of the modules. If either the tree manager or the LP are running as a separate process (either COMPILE_IN_LP or COMPILE_IN_TM are FALSE in the make file), then the data will be sent and received through message-passing. See user_receive_cp_data for more discussion. Otherwise, it can be copied through shared memory. The easiest solution, which is set up by default is to simply copy over a pointer to a single user data structure where instance data is stored. The code for the two cases is put in the same source file by use of #ifdef statements. See the comments in the code stub for this function for more details.

Note that there is support for cuts generated and stored as explicit matrix rows. The cut pool module is already configured to deal with such cuts, so no user implementation is required. Only the use of user-defined cuts requires customization of the Cut Pool module.


void *user IN Pointer to the user-defined data structure.
void **user_cp OUT Pointer to the user-defined data structure for the cut pool module.

Return values:

USER_SUCCESS Packing is done.
USER_DEFAULT No data to send to the cut pool (no user-defined cut classes or cut pool not used).

Ted Ralphs