![]() |
(git:51bfb72)
|
Helper routines to manipulate with matrices. More...
Functions/Subroutines | |
| integer function, public | number_of_atomic_orbitals (subsys, atom_list) |
| Compute the number of atomic orbitals of the given set of atoms. | |
| subroutine, public | negf_copy_fm_submat_to_dbcsr (fm, matrix, atomlist_row, atomlist_col, subsys) |
| Populate relevant blocks of the DBCSR matrix using data from a ScaLAPACK matrix. Irrelevant blocks of the DBCSR matrix are kept untouched. | |
| subroutine, public | negf_copy_sym_dbcsr_to_fm_submat (matrix, fm, atomlist_row, atomlist_col, subsys, mpi_comm_global, do_upper_diag, do_lower) |
| Extract part of the DBCSR matrix based on selected atoms and copy it into a dense matrix. | |
| subroutine, public | negf_copy_contact_matrix (fm_cell0, fm_cell1, direction_axis, matrix_kp, index_to_cell, atom_list0, atom_list1, subsys, mpi_comm_global, kpoints) |
| Driver routine to extract diagonal and off-diagonal blocks from a symmetric DBCSR matrix. | |
| subroutine, public | negf_reference_contact_matrix (matrix_contact, matrix_device, atom_list, atom_map, para_env) |
| Extract part of the DBCSR matrix based on selected atoms and copy it into another DBCSR matrix. | |
| subroutine, public | invert_cell_to_index (cell_to_index, nimages, index_to_cell) |
| Invert cell_to_index mapping between unit cells and DBCSR matrix images. | |
| pure integer function, public | get_index_by_cell (cell, cell_to_index) |
| Helper routine to obtain index of a DBCSR matrix image by its unit cell replica. Can be used with any usin cell. | |
Helper routines to manipulate with matrices.
| integer function, public negf_matrix_utils::number_of_atomic_orbitals | ( | type(qs_subsys_type), pointer | subsys, |
| integer, dimension(:), intent(in), optional | atom_list | ||
| ) |
Compute the number of atomic orbitals of the given set of atoms.
| subsys | QuickStep subsystem |
| atom_list | list of selected atom; when absent all the atoms are taken into account |
Definition at line 62 of file negf_matrix_utils.F.
| subroutine, public negf_matrix_utils::negf_copy_fm_submat_to_dbcsr | ( | type(cp_fm_type), intent(in) | fm, |
| type(dbcsr_type), pointer | matrix, | ||
| integer, dimension(:), intent(in) | atomlist_row, | ||
| integer, dimension(:), intent(in) | atomlist_col, | ||
| type(qs_subsys_type), pointer | subsys | ||
| ) |
Populate relevant blocks of the DBCSR matrix using data from a ScaLAPACK matrix. Irrelevant blocks of the DBCSR matrix are kept untouched.
| fm | dense matrix to copy |
| matrix | DBCSR matrix (modified on exit) |
| atomlist_row | set of atomic indices along the 1st (row) dimension |
| atomlist_col | set of atomic indices along the 2nd (column) dimension |
| subsys | subsystem environment |
Definition at line 101 of file negf_matrix_utils.F.
| subroutine, public negf_matrix_utils::negf_copy_sym_dbcsr_to_fm_submat | ( | type(dbcsr_type), pointer | matrix, |
| type(cp_fm_type), intent(in) | fm, | ||
| integer, dimension(:), intent(in) | atomlist_row, | ||
| integer, dimension(:), intent(in) | atomlist_col, | ||
| type(qs_subsys_type), pointer | subsys, | ||
| class(mp_comm_type), intent(in) | mpi_comm_global, | ||
| logical, intent(in) | do_upper_diag, | ||
| logical, intent(in) | do_lower | ||
| ) |
Extract part of the DBCSR matrix based on selected atoms and copy it into a dense matrix.
| matrix | DBCSR matrix |
| fm | dense matrix (created and initialised on exit) |
| atomlist_row | set of atomic indices along the 1st (row) dimension |
| atomlist_col | set of atomic indices along the 2nd (column) dimension |
| subsys | subsystem environment |
| mpi_comm_global | MPI communicator which was used to distribute blocks of the DBCSR matrix. If missed, assume that both DBCSR and ScaLapack matrices are distributed across the same set of processors |
| do_upper_diag | initialise upper-triangular part of the dense matrix as well as diagonal elements |
| do_lower | initialise lower-triangular part of the dense matrix |
Definition at line 187 of file negf_matrix_utils.F.
| subroutine, public negf_matrix_utils::negf_copy_contact_matrix | ( | type(cp_fm_type), intent(in) | fm_cell0, |
| type(cp_fm_type), intent(in) | fm_cell1, | ||
| integer, intent(in) | direction_axis, | ||
| type(dbcsr_p_type), dimension(:), intent(in) | matrix_kp, | ||
| integer, dimension(:, :), intent(in) | index_to_cell, | ||
| integer, dimension(:), intent(in) | atom_list0, | ||
| integer, dimension(:), intent(in) | atom_list1, | ||
| type(qs_subsys_type), pointer | subsys, | ||
| class(mp_comm_type), intent(in) | mpi_comm_global, | ||
| type(kpoint_type), pointer | kpoints | ||
| ) |
Driver routine to extract diagonal and off-diagonal blocks from a symmetric DBCSR matrix.
| fm_cell0 | extracted diagonal matrix block |
| fm_cell1 | extracted off-diagonal matrix block |
| direction_axis | axis towards the secondary unit cell |
| matrix_kp | set of DBCSR matrices |
| index_to_cell | inverted mapping between unit cells and DBCSR matrix images |
| atom_list0 | list of atoms which belong to the primary contact unit cell |
| atom_list1 | list of atoms which belong to the secondary contact unit cell |
| subsys | QuickStep subsystem |
| mpi_comm_global | global MPI communicator |
| kpoints | ... |
Definition at line 301 of file negf_matrix_utils.F.
| subroutine, public negf_matrix_utils::negf_reference_contact_matrix | ( | type(dbcsr_type), pointer | matrix_contact, |
| type(dbcsr_type), pointer | matrix_device, | ||
| integer, dimension(:), intent(in) | atom_list, | ||
| type(negf_atom_map_type), dimension(:), intent(in) | atom_map, | ||
| type(mp_para_env_type), pointer | para_env | ||
| ) |
Extract part of the DBCSR matrix based on selected atoms and copy it into another DBCSR matrix.
| matrix_contact | extracted DBCSR matrix |
| matrix_device | original DBCSR matrix |
| atom_list | list of selected atoms |
| atom_map | atomic map between device and contact force environments |
| para_env | parallel environment |
Definition at line 455 of file negf_matrix_utils.F.
| subroutine, public negf_matrix_utils::invert_cell_to_index | ( | integer, dimension(:, :, :), pointer | cell_to_index, |
| integer, intent(in) | nimages, | ||
| integer, dimension(3, nimages), intent(out) | index_to_cell | ||
| ) |
Invert cell_to_index mapping between unit cells and DBCSR matrix images.
| cell_to_index | mapping: unit_cell -> image_index |
| nimages | number of images |
| index_to_cell | inverted mapping: image_index -> unit_cell |
Definition at line 697 of file negf_matrix_utils.F.
| pure integer function, public negf_matrix_utils::get_index_by_cell | ( | integer, dimension(3), intent(in) | cell, |
| integer, dimension(:, :, :), pointer | cell_to_index | ||
| ) |
Helper routine to obtain index of a DBCSR matrix image by its unit cell replica. Can be used with any usin cell.
| cell | indices of the unit cell |
| cell_to_index | mapping: unit_cell -> image_index |
Definition at line 739 of file negf_matrix_utils.F.