1 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
2 /*                                                                           */
3 /*                  This file is part of the program and library             */
4 /*         SCIP --- Solving Constraint Integer Programs                      */
5 /*                                                                           */
6 /*    Copyright (C) 2002-2021 Konrad-Zuse-Zentrum                            */
7 /*                            fuer Informationstechnik Berlin                */
8 /*                                                                           */
9 /*  SCIP is distributed under the terms of the ZIB Academic License.         */
10 /*                                                                           */
11 /*  You should have received a copy of the ZIB Academic License              */
12 /*  along with SCIP; see the file COPYING. If not visit scipopt.org.         */
13 /*                                                                           */
14 /* * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * */
15 
16 /**@file   struct_scip.h
17  * @ingroup INTERNALAPI
18  * @brief  SCIP main data structure
19  * @author Tobias Achterberg
20  */
21 
22 /*---+----1----+----2----+----3----+----4----+----5----+----6----+----7----+----8----+----9----+----0----+----1----+----2*/
23 
24 #ifndef __SCIP_STRUCT_SCIP_H__
25 #define __SCIP_STRUCT_SCIP_H__
26 
27 
28 #include "scip/def.h"
29 #include "scip/type_set.h"
30 #include "scip/type_stat.h"
31 #include "scip/type_clock.h"
32 #include "scip/type_dcmp.h"
33 #include "scip/type_event.h"
34 #include "scip/type_interrupt.h"
35 #include "scip/type_mem.h"
36 #include "scip/type_lp.h"
37 #include "scip/type_nlp.h"
38 #include "scip/type_implics.h"
39 #include "scip/type_prob.h"
40 #include "scip/type_primal.h"
41 #include "scip/type_relax.h"
42 #include "scip/type_tree.h"
43 #include "scip/type_pricestore.h"
44 #include "scip/type_sepastore.h"
45 #include "scip/type_conflictstore.h"
46 #include "scip/type_cutpool.h"
47 #include "scip/type_branch.h"
48 #include "scip/type_conflict.h"
49 #include "scip/type_dialog.h"
50 #include "scip/type_reopt.h"
51 #include "scip/type_concurrent.h"
52 #include "scip/type_syncstore.h"
53 
54 #ifdef __cplusplus
55 extern "C" {
56 #endif
57 
58 /** SCIP main data structure */
59 struct Scip
60 {
61    /* INIT */
62    SCIP_MEM*             mem;                /**< block memory buffers */
63    SCIP_SET*             set;                /**< global SCIP settings */
64    SCIP_INTERRUPT*       interrupt;          /**< CTRL-C interrupt data */
65    SCIP_DIALOGHDLR*      dialoghdlr;         /**< dialog handler for user interface */
66    SCIP_MESSAGEHDLR*     messagehdlr;        /**< message handler for output handling, or NULL */
67    SCIP_CLOCK*           totaltime;          /**< total SCIP running time */
68 
69    /* PROBLEM */
70    SCIP_STAT*            stat;               /**< dynamic problem statistics */
71    SCIP_PROB*            origprob;           /**< original problem data */
72    SCIP_PRIMAL*          origprimal;         /**< primal data and solution storage for solution candidates */
73    SCIP_DECOMPSTORE*     decompstore;        /**< decomposition storage data structure */
74 
75    /* REOPTIMIZATION */
76    SCIP_REOPT*           reopt;              /**< reoptimization data */
77 
78    /* TRANSFORMED */
79    SCIP_EVENTFILTER*     eventfilter;        /**< event filter for global (not variable dependent) events */
80    SCIP_EVENTQUEUE*      eventqueue;         /**< event queue to cache events and process them later (bound change events) */
81    SCIP_BRANCHCAND*      branchcand;         /**< storage for branching candidates */
82    SCIP_LP*              lp;                 /**< LP data */
83    SCIP_NLP*             nlp;                /**< NLP data */
84    SCIP_RELAXATION*      relaxation;         /**< global relaxation data */
85    SCIP_PRIMAL*          primal;             /**< primal data and solution storage */
86    SCIP_TREE*            tree;               /**< branch and bound tree */
87    SCIP_CONFLICT*        conflict;           /**< conflict analysis data */
88    SCIP_CLIQUETABLE*     cliquetable;        /**< collection of cliques */
89    SCIP_PROB*            transprob;          /**< transformed problem after presolve */
90 
91    /* SOLVING */
92    SCIP_PRICESTORE*      pricestore;         /**< storage for priced variables */
93    SCIP_SEPASTORE*       sepastore;          /**< storage for separated cuts */
94    SCIP_SEPASTORE*       sepastoreprobing;   /**< storage for separated cuts during probing mode */
95    SCIP_CONFLICTSTORE*   conflictstore;      /**< storage for conflicts */
96    SCIP_CUTPOOL*         cutpool;            /**< global cut pool */
97    SCIP_CUTPOOL*         delayedcutpool;     /**< global delayed cut pool */
98 
99    /* PARALLEL */
100    SCIP_SYNCSTORE*       syncstore;          /**< the data structure for storing synchronization information */
101    SCIP_CONCURRENT*      concurrent;         /**< data required for concurrent solve */
102 };
103 
104 #ifdef __cplusplus
105 }
106 #endif
107 
108 #endif
109