From 71baca19801bf611edbd078b821ecd44c47115c5 Mon Sep 17 00:00:00 2001 From: Abdullah Alperen <alperena@msu.edu> Date: Fri, 2 Mar 2018 18:25:38 -0500 Subject: [PATCH] charge method passed as parameter to SAI setup --- sPuReMD/src/charges.c | 6 +++--- sPuReMD/src/lin_alg.c | 8 +++++++- sPuReMD/src/lin_alg.h | 2 +- 3 files changed, 11 insertions(+), 5 deletions(-) diff --git a/sPuReMD/src/charges.c b/sPuReMD/src/charges.c index 5d2faa7..fbc3b90 100644 --- a/sPuReMD/src/charges.c +++ b/sPuReMD/src/charges.c @@ -864,7 +864,7 @@ static void Setup_Preconditioner_QEq( const reax_system * const system, case SAI_PC: setup_sparse_approx_inverse( Hptr, &workspace->H_full, &workspace->H_spar_patt, &workspace->H_spar_patt_full, &workspace->H_app_inv, - control->cm_solver_pre_comp_sai_thres ); + control->cm_solver_pre_comp_sai_thres, control->charge_method ); break; default: @@ -1009,7 +1009,7 @@ static void Setup_Preconditioner_EE( const reax_system * const system, case SAI_PC: setup_sparse_approx_inverse( Hptr, &workspace->H_full, &workspace->H_spar_patt, &workspace->H_spar_patt_full, &workspace->H_app_inv, - control->cm_solver_pre_comp_sai_thres ); + control->cm_solver_pre_comp_sai_thres, control->charge_method ); break; default: @@ -1158,7 +1158,7 @@ static void Setup_Preconditioner_ACKS2( const reax_system * const system, case SAI_PC: setup_sparse_approx_inverse( Hptr, &workspace->H_full, &workspace->H_spar_patt, &workspace->H_spar_patt_full, &workspace->H_app_inv, - control->cm_solver_pre_comp_sai_thres ); + control->cm_solver_pre_comp_sai_thres, control->charge_method ); break; default: diff --git a/sPuReMD/src/lin_alg.c b/sPuReMD/src/lin_alg.c index 1f17ed7..7dedd27 100644 --- a/sPuReMD/src/lin_alg.c +++ b/sPuReMD/src/lin_alg.c @@ -224,7 +224,7 @@ static void compute_full_sparse_matrix( const sparse_matrix * const A, * Each row of A has at least one non-zero (i.e., no rows with all zeros) */ void setup_sparse_approx_inverse( const sparse_matrix * const A, sparse_matrix ** A_full, sparse_matrix ** A_spar_patt, sparse_matrix **A_spar_patt_full, - sparse_matrix ** A_app_inv, const real filter ) + sparse_matrix ** A_app_inv, const real filter, const unsigned int cm ) { int i, pj, size; int left, right, k, p, turn; @@ -335,6 +335,12 @@ void setup_sparse_approx_inverse( const sparse_matrix * const A, sparse_matrix * (*A_spar_patt)->j[size] = A->j[pj]; size++; } + else if ( ( cm == ACKS2_CM ) && ( i >= (A->n)/2 ) && ( i == A->j[pj] + (A->n)/2 ) ) + { + (*A_spar_patt)->val[size] = A->val[pj]; + (*A_spar_patt)->j[size] = A->j[pj]; + size++; + } } } (*A_spar_patt)->start[A->n] = size; diff --git a/sPuReMD/src/lin_alg.h b/sPuReMD/src/lin_alg.h index ab0237c..edcda89 100644 --- a/sPuReMD/src/lin_alg.h +++ b/sPuReMD/src/lin_alg.h @@ -33,7 +33,7 @@ typedef enum void Sort_Matrix_Rows( sparse_matrix * const ); void setup_sparse_approx_inverse( const sparse_matrix * const, sparse_matrix **, - sparse_matrix **, sparse_matrix **, sparse_matrix **, const real ); + sparse_matrix **, sparse_matrix **, sparse_matrix **, const real, const unsigned int ); int Estimate_LU_Fill( const sparse_matrix * const, const real * const ); -- GitLab