The problem data is accessible in all plugins. The function SCIPgetProbData() returns the pointer to that structure. We use this data structure to store all the information of the ringpacking problem. Since this structure is not visible in the other plugins, we implemented setter and getter functions to access most data.
The function SCIPprobdataCreate(), which is called in the reader plugin after the input file was parsed, initializes the problem data structure. Afterwards, the problem is setup in SCIPprobdataSetupProblem. For this, it enumerates all dominating circular patterns, selects a set of initial rectangular patterns and creates the corresponding variables and constraints. Note that the pattern constraints have to have the
modifiable-flag set to TRUE. This is necessary to tell the solver that these constraints are not completed yet. This means, during the search new variables/patterns might be added. The solver needs this information because certain reductions are not allowed.
A list of all interface methods can be found in probdata_binpacking.h.