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

Dispatcher module. More...

Functions/Subroutines

subroutine, public initialize_libraries
 Initialize libraries used by MPI-SCATCI. More...
 
subroutine, public dispatchmatrixanddiagonalizer (diag_choice, force_serial, matrix_size, number_of_eigenpairs, matrix, diagonalizer, integral, matrix_io)
 This subroutine determines which matrix format/diagonalizer pair to be used by SCATCI in build diagonalization. More...
 
subroutine, public dispatchintegral (sym_group_flag, ukrmolplus_integrals, integral)
 This subroutine dispatches the correct integral class based on simple parameters. More...
 

Detailed Description

Dispatcher module.

Authors
A Al-Refaie
Date
2017

This module provides the automatic selection of the correct classes needed by MPI SCATCI. These classes are the Integrals, Matricies and Diagonalizers

Note
30/01/2017 - Ahmed Al-Refaie: Initial revision.
16/01/2019 - Jakub Benda: Unifom coding style and expanded documentation.

Function/Subroutine Documentation

◆ dispatchintegral()

subroutine, public dispatcher_module::dispatchintegral ( integer, intent(in)  sym_group_flag,
logical, intent(in)  ukrmolplus_integrals,
class(baseintegral), intent(out), pointer  integral 
)

This subroutine dispatches the correct integral class based on simple parameters.

Authors
A Al-Refaie
Date
2017
Parameters
[in]sym_group_flagWhich symmetry group, this determines either ALCHEMY or SWEDEN/UKRMOL+.
[in]ukrmolplus_integralsFor D_2h_, determines either SWEDEN or UKRMOL+.
[out]integralThe resultant integral object.

Definition at line 242 of file Dispatcher_module.F90.

Here is the caller graph for this function:

◆ dispatchmatrixanddiagonalizer()

subroutine, public dispatcher_module::dispatchmatrixanddiagonalizer ( integer, intent(in)  diag_choice,
integer, intent(in)  force_serial,
integer, intent(in)  matrix_size,
integer, intent(in)  number_of_eigenpairs,
class(basematrix), intent(out), pointer  matrix,
class(basediagonalizer), intent(out), pointer  diagonalizer,
class(baseintegral), intent(in)  integral,
integer, intent(in)  matrix_io 
)

This subroutine determines which matrix format/diagonalizer pair to be used by SCATCI in build diagonalization.

Authors
A Al-Refaie
Date
2017

It determines what type of diagonalizer based on the matrix size and number of eigenpairs and whether to use the Legacy SCATCI diagonalizers for nprocs = 1 / -Dnompi option or to use an MPI one-

Parameters
[in]diag_choiceFrom Options, used to force a particular diagonalizer.
[in]force_serialWhether to use serial method even in distributed run.
[in]matrix_sizeSize of Matrix. Used with number_of_eigenpairs to select the correct matrix format.
[in]number_of_eigenpairsNo. of eigensolutions requested.
[out]matrixThe selected matrix format.
[out]diagonalizerThe selected diagonalizer.
[in]integralA constructed and loaded integral class. This is required to write out the matrix header.
[in]matrix_ioThe IO unit for the matrix header.

Definition at line 111 of file Dispatcher_module.F90.

Here is the caller graph for this function:

◆ initialize_libraries()

subroutine, public dispatcher_module::initialize_libraries

Initialize libraries used by MPI-SCATCI.

Authors
J Benda
Date
2019

Currently only SLEPc needs global initialization.

Definition at line 85 of file Dispatcher_module.F90.

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