1 #include "BSprivate.h"
2 
3 /*@ BSfree_par_mat - Free a sparse matrix (parallel format)
4 
5     Input Parameters:
6 .   A - The sparse matrix to be freed
7 
8     Returns:
9     void
10 
11  @*/
BSfree_par_mat(BSpar_mat * A)12 void BSfree_par_mat(BSpar_mat *A)
13 {
14 	BSfree_permutation(A->perm); CHKERR(0);
15 	BSfree_permutation(A->inv_perm); CHKERR(0);
16 	BSfree_numbering(A->global_row_num); CHKERR(0);
17 	BSfree_numbering(A->color2clique); CHKERR(0);
18 	BSfree_cl_2_inode(A->clique2inode,TRUE); CHKERR(0);
19 	BSfree_inode_list(A->inodes); CHKERR(0);
20 	if ((A->save_diag != NULL) && (A->save_diag != A->diag)) {
21 		MY_FREE(A->save_diag);
22 	}
23 	if ((A->scale_diag != NULL) && (A->scale_diag != A->diag)) {
24 		MY_FREE(A->scale_diag);
25 	}
26 	MY_FREE(A->diag);
27 	if (A->reperm != NULL) {
28 		BSfree_reperm(A->reperm);
29 		CHKERR(0);
30 	}
31 	MY_FREE(A);
32 }
33 
34 /*@ BSfree_copy_par_mat - Free a copy of a sparse matrix (parallel format)
35 
36     Input Parameters:
37 .   A - The sparse matrix to be freed
38 
39     Returns:
40     void
41 
42     Notes: Only those portions that are copies (and not pointers)
43            are freed.
44  @*/
BSfree_copy_par_mat(BSpar_mat * A)45 void BSfree_copy_par_mat(BSpar_mat *A)
46 {
47 	if(A->icc_storage) {
48 		BSfree_cl_2_inode(A->clique2inode,FALSE); CHKERR(0);
49 	} else {
50 		/* Free the cliques as if it is original copy (ILU) */
51 		BSfree_cl_2_inode(A->clique2inode,TRUE); CHKERR(0);
52 	}
53 	BSfree_inode_list(A->inodes); CHKERR(0);
54 	MY_FREE(A);
55 }
56