Linear solver has become faster than before.

By changing the logic for adding diagonal values of Non-Dirichlet pores,
it has become faster. The slowest part is still
scipy.sparse.linalg.spsolve. The default argument of this solver is
use_umfpack=True, which makes the solver fast for sparse matrices. But
remember that for Np>300k,, if you use this flag,  you may get an error
due to insufficient memory for  'umfpack'.