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)12void 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)45void 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