1 /*  basics.C  */
2 
3 #include "../BridgeMT.h"
4 
5 /*--------------------------------------------------------------------*/
6 /*
7    -----------------------
8    constructor method
9 
10    created -- 98sep18, cca
11    -----------------------
12 */
13 BridgeMT *
BridgeMT_new(void)14 BridgeMT_new (
15    void
16 ) {
17 BridgeMT   *bridge ;
18 
19 ALLOCATE(bridge, struct _BridgeMT, 1) ;
20 
21 BridgeMT_setDefaultFields(bridge) ;
22 
23 return(bridge) ; }
24 
25 /*--------------------------------------------------------------------*/
26 /*
27    -----------------------
28    set the default fields
29 
30    return value ---
31       1 -- normal return
32      -1 -- bridge is NULL
33 
34    created -- 98sep18, cca
35    -----------------------
36 */
37 int
BridgeMT_setDefaultFields(BridgeMT * bridge)38 BridgeMT_setDefaultFields (
39    BridgeMT   *bridge
40 ) {
41 if ( bridge == NULL ) {
42    fprintf(stderr, "\n fatal error in BridgeMT_setDefaultFields(%p)"
43            "\n bad input\n", bridge) ;
44    return(-1) ;
45 }
46 /*
47    ----------------
48    graph statistics
49    ----------------
50 */
51 bridge->neqns  = 0 ;
52 bridge->nedges = 0 ;
53 bridge->Neqns  = 0 ;
54 bridge->Nedges = 0 ;
55 /*
56    -------------------
57    ordering parameters
58    -------------------
59 */
60 bridge->compressCutoff = 0.0 ;
61 bridge->maxdomainsize  = -1  ;
62 bridge->maxnzeros      = -1  ;
63 bridge->maxsize        = -1  ;
64 bridge->seed           = -1  ;
65 /*
66    -------------------------------
67    matrix/factorization parameters
68    -------------------------------
69 */
70 bridge->type         = SPOOLES_REAL ;
71 bridge->symmetryflag = SPOOLES_SYMMETRIC ;
72 bridge->sparsityflag = FRONTMTX_DENSE_FRONTS ;
73 bridge->pivotingflag = SPOOLES_NO_PIVOTING ;
74 bridge->tau          = 100.0 ;
75 bridge->droptol      = 1.e-3 ;
76 bridge->lookahead    =   0  ;
77 bridge->patchinfo    = NULL ;
78 /*
79    ------------------------
80    multithreaded parameters
81    ------------------------
82 */
83 bridge->nthread   =   0  ;
84 bridge->ownersIV  = NULL ;
85 bridge->solvemap  = NULL ;
86 bridge->cumopsDV  = NULL ;
87 /*
88    ------------------------------------
89    message info, statistics and timings
90    ------------------------------------
91 */
92 IVzero(6, bridge->stats) ;
93 DVzero(16, bridge->cpus) ;
94 bridge->msglvl  =    0   ;
95 bridge->msgFile = stdout ;
96 /*
97    -------------------
98    pointers to objects
99    -------------------
100 */
101 bridge->frontETree = NULL ;
102 bridge->symbfacIVL = NULL ;
103 bridge->mtxmanager = NULL ;
104 bridge->frontmtx   = NULL ;
105 bridge->oldToNewIV = NULL ;
106 bridge->newToOldIV = NULL ;
107 
108 return(1) ; }
109 
110 /*--------------------------------------------------------------------*/
111 /*
112    -----------------------
113    clear the data fields
114 
115    return value ---
116       1 -- normal return
117      -1 -- bridge is NULL
118 
119    created -- 98sep18, cca
120    -----------------------
121 */
122 int
BridgeMT_clearData(BridgeMT * bridge)123 BridgeMT_clearData (
124    BridgeMT   *bridge
125 ) {
126 if ( bridge == NULL ) {
127    fprintf(stderr, "\n fatal error in BridgeMT_clearData(%p)"
128            "\n bad input\n", bridge) ;
129    return(-1) ;
130 }
131 if ( bridge->frontmtx != NULL ) {
132    FrontMtx_free(bridge->frontmtx) ;
133 }
134 if ( bridge->frontETree != NULL ) {
135    ETree_free(bridge->frontETree) ;
136 }
137 if ( bridge->symbfacIVL != NULL ) {
138    IVL_free(bridge->symbfacIVL) ;
139 }
140 if ( bridge->mtxmanager != NULL ) {
141    SubMtxManager_free(bridge->mtxmanager) ;
142 }
143 if ( bridge->oldToNewIV != NULL ) {
144    IV_free(bridge->oldToNewIV) ;
145 }
146 if ( bridge->newToOldIV != NULL ) {
147    IV_free(bridge->newToOldIV) ;
148 }
149 if ( bridge->ownersIV != NULL ) {
150    IV_free(bridge->ownersIV) ;
151 }
152 if ( bridge->solvemap != NULL ) {
153    SolveMap_free(bridge->solvemap) ;
154 }
155 if ( bridge->cumopsDV != NULL ) {
156    DV_free(bridge->cumopsDV) ;
157 }
158 BridgeMT_setDefaultFields(bridge) ;
159 
160 return(1) ; }
161 
162 /*--------------------------------------------------------------------*/
163 /*
164    -----------------------
165    destructor
166 
167    return value ---
168       1 -- normal return
169      -1 -- bridge is NULL
170 
171    created -- 98sep18, cca
172    -----------------------
173 */
174 int
BridgeMT_free(BridgeMT * bridge)175 BridgeMT_free (
176    BridgeMT   *bridge
177 ) {
178 if ( bridge == NULL ) {
179    fprintf(stderr, "\n fatal error in BridgeMT_free(%p)"
180            "\n bad input\n", bridge) ;
181    return(-1) ;
182 }
183 BridgeMT_clearData(bridge) ;
184 FREE(bridge) ;
185 
186 return(1) ; }
187 
188 /*--------------------------------------------------------------------*/
189