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