MPI-SCATCI  2.0
An MPI version of SCATCI
slepcmatrix_module Module Reference

SLEPc matrix module. More...

Data Types

type  csrformat
 
type  slepcmatrix
 

Functions/Subroutines

subroutine, public initialize_slepc
 Initialize SLEPc. More...
 
subroutine construct_csr (this, num_cols)
 
subroutine destroy_csr (this)
 
subroutine sort_csr (this)
 
pointer get_petsc_matrix (this)
 
subroutine create_petsc_mat (this, matrix_size, matrix_type)
 
subroutine destroy_petsc_mat (this)
 
subroutine shuffle (a)
 
subroutine initialize_struct_slepc (this, matrix_size, matrix_type, block_size)
 
subroutine get_matelem_slepc (this, idx, i, j, coeff)
 
subroutine print_nonzeros (this)
 
logical function compress_cache_to_csr_format (this, matrix_cache, csr_matrix)
 
logical function insert_into_hard_cache (this, row, column, coefficient)
 Inserts an element into the hard storage which is considered the final location before diagonalization. More...
 
subroutine insert_csr_into_hard_cache (this, csr)
 
subroutine finalize_matrix_slepc (this)
 
subroutine print_slepc (this)
 
subroutine clear_slepc (this)
 
subroutine destroy_slepc (this)
 
recursive subroutine qsortcsr (A, coeff)
 
subroutine partition (A, coeff, marker)
 

Detailed Description

SLEPc matrix module.

Authors
A Al-Refaie
Date
2017

This module is built in only when SLEPc library is available.

Note
16/01/2019 - Jakub Benda: Unifom coding style and expanded documentation.

Function/Subroutine Documentation

◆ clear_slepc()

subroutine slepcmatrix_module::clear_slepc ( class(slepcmatrix this)
private

Definition at line 658 of file SLEPCMatrix_module.F90.

◆ compress_cache_to_csr_format()

logical function slepcmatrix_module::compress_cache_to_csr_format ( class(slepcmatrix this,
class(matrixcache matrix_cache,
type(csrformat), dimension(:), intent(out), allocatable  csr_matrix 
)
private

Definition at line 443 of file SLEPCMatrix_module.F90.

◆ construct_csr()

subroutine slepcmatrix_module::construct_csr ( class(csrformat this,
integer, intent(in)  num_cols 
)
private

Definition at line 126 of file SLEPCMatrix_module.F90.

◆ create_petsc_mat()

subroutine slepcmatrix_module::create_petsc_mat ( class(slepcmatrix this,
intent(in)  matrix_size,
integer, intent(in)  matrix_type 
)
private

Definition at line 165 of file SLEPCMatrix_module.F90.

◆ destroy_csr()

subroutine slepcmatrix_module::destroy_csr ( type(csrformat this)
private

Definition at line 139 of file SLEPCMatrix_module.F90.

Here is the caller graph for this function:

◆ destroy_petsc_mat()

subroutine slepcmatrix_module::destroy_petsc_mat ( class(slepcmatrix this)
private

Definition at line 188 of file SLEPCMatrix_module.F90.

◆ destroy_slepc()

subroutine slepcmatrix_module::destroy_slepc ( class(slepcmatrix this)
private

Definition at line 666 of file SLEPCMatrix_module.F90.

◆ finalize_matrix_slepc()

subroutine slepcmatrix_module::finalize_matrix_slepc ( class(slepcmatrix this)
private

Definition at line 628 of file SLEPCMatrix_module.F90.

◆ get_matelem_slepc()

subroutine slepcmatrix_module::get_matelem_slepc ( class(slepcmatrix this,
integer, intent(in)  idx,
integer, intent(out)  i,
integer, intent(out)  j,
real(wp), intent(out)  coeff 
)
private

Definition at line 418 of file SLEPCMatrix_module.F90.

◆ get_petsc_matrix()

pointer slepcmatrix_module::get_petsc_matrix ( class(slepcmatrix this)
private

Definition at line 156 of file SLEPCMatrix_module.F90.

◆ initialize_slepc()

subroutine, public slepcmatrix_module::initialize_slepc

Initialize SLEPc.

Authors
J Benda
Date
2019

SLEPc needs to be initialized by all processes at once. Originally, it was being initialized in the SLEPc matrix init routine, but since there are now multiple concurrent diagonalizations and not all of them need to use SLEPc, this needs to be separated out.

Definition at line 115 of file SLEPCMatrix_module.F90.

Here is the caller graph for this function:

◆ initialize_struct_slepc()

subroutine slepcmatrix_module::initialize_struct_slepc ( class(slepcmatrix this,
integer, intent(in)  matrix_size,
integer, intent(in)  matrix_type,
integer, intent(in)  block_size 
)
private

Definition at line 221 of file SLEPCMatrix_module.F90.

◆ insert_csr_into_hard_cache()

subroutine slepcmatrix_module::insert_csr_into_hard_cache ( class(slepcmatrix this,
class(csrformat), dimension(:), intent(in)  csr 
)
private

Definition at line 601 of file SLEPCMatrix_module.F90.

◆ insert_into_hard_cache()

logical function slepcmatrix_module::insert_into_hard_cache ( class(slepcmatrix this,
integer, intent(in)  row,
integer, intent(in)  column,
real(wp), intent(in)  coefficient 
)
private

Inserts an element into the hard storage which is considered the final location before diagonalization.

Authors
A Al-Refaie
Date
2017

It also checks wherther the element exists within the aloowed range and tells us if it was successfully inserted.

Definition at line 559 of file SLEPCMatrix_module.F90.

◆ partition()

subroutine slepcmatrix_module::partition ( dimension(:)  A,
dimension(:)  coeff,
integer, intent(out)  marker 
)
private

Definition at line 688 of file SLEPCMatrix_module.F90.

Here is the caller graph for this function:

◆ print_nonzeros()

subroutine slepcmatrix_module::print_nonzeros ( class(slepcmatrix this)
private

Definition at line 432 of file SLEPCMatrix_module.F90.

◆ print_slepc()

subroutine slepcmatrix_module::print_slepc ( class(slepcmatrix this)
private

Definition at line 649 of file SLEPCMatrix_module.F90.

◆ qsortcsr()

recursive subroutine slepcmatrix_module::qsortcsr ( dimension(:)  A,
dimension(:)  coeff 
)
private

Definition at line 674 of file SLEPCMatrix_module.F90.

Here is the call graph for this function:
Here is the caller graph for this function:

◆ shuffle()

subroutine slepcmatrix_module::shuffle ( dimension(:), intent(inout)  a)
private

Definition at line 204 of file SLEPCMatrix_module.F90.

◆ sort_csr()

subroutine slepcmatrix_module::sort_csr ( class(csrformat this)
private

Definition at line 148 of file SLEPCMatrix_module.F90.

Here is the call graph for this function: