represent the structure of a full matrix
source: cp_fm_struct.Fkeeps the information about the structure of a full matrix
TYPE(cp_para_env_type), |
POINTER | :: | para_env | the parallel environment of the matrices with this structure |
TYPE(cp_blacs_env_type), |
POINTER | :: | context | the blacs context (parallel environment for scalapack), should be compatible with para_env |
INTEGER, |
DIMENSION(9) | :: | descriptor | the scalapack descriptor of the matrices, when using scalapack (ncol_block=descriptor(6), ncol_global=descriptor(4), nrow_block=descriptor(5), nrow_global=descriptor(3)) |
INTEGER |
:: | nrow_block | number of rows of a scalapack block | |
INTEGER |
:: | ncol_block | number of columns of a scalapack block | |
INTEGER |
:: | nrow_global | number of rows of the matrix | |
INTEGER |
:: | ncol_global | number of rows | |
INTEGER, |
DIMENSION(2) | :: | first_p_pos | position of the first processor (for scalapack) |
INTEGER, |
DIMENSION(:), POINTER | :: | row_indices | real (global) indices of the rows (defined only for the local rows really used) |
INTEGER, |
DIMENSION(:), POINTER | :: | col_indices | real (global) indices of the cols (defined only for the local cols really used) |
INTEGER, |
DIMENSION(:), POINTER | :: | nrow_locals | nrow_locals(i) number of local rows of the matrix really used on the processors with context%mepos(1)==i |
INTEGER, |
DIMENSION(:), POINTER | :: | ncol_locals | ncol_locals(i) number of local rows of the matrix really used on the processors with context%mepos(2)==i |
INTEGER |
:: | id_nr | an identification number (guaranteed to be unique) | |
INTEGER |
:: | ref_count | reference count (see doc/ReferenceCounting.html) | |
INTEGER |
:: | local_leading_dimension | leading dimension of the data that is stored on this processor |
allows to modify the default settings for matrix creation
INTEGER, |
OPTIONAL |
:: | nrow_block | ... | |
INTEGER, |
OPTIONAL |
:: | ncol_block | ... | |
LOGICAL, |
OPTIONAL |
:: | force_block | ... |
allocates and initializes a full matrix structure
TYPE(cp_fm_struct_type), |
POINTER |
:: | fmstruct | the pointer that will point to the new structure | |
TYPE(cp_para_env_type), |
POINTER, OPTIONAL |
:: | para_env | the parallel environment | |
TYPE(cp_blacs_env_type), |
POINTER, OPTIONAL |
:: | context | the blacs context of this matrix | |
INTEGER, |
INTENT(in), |
OPTIONAL |
:: | nrow_global | the number of row of the full matrix |
INTEGER, |
INTENT(in), |
OPTIONAL |
:: | ncol_global | the number of colums of the full matrix |
INTEGER, |
INTENT(in), |
OPTIONAL |
:: | nrow_block | the number of rows of a block of the matrix ! useful defaults are in, do not specify |
INTEGER, |
INTENT(in), |
OPTIONAL |
:: | ncol_block | the number of colums of a block of the matrix ! useful defaults are in, do not specify |
INTEGER, |
INTENT(in), |
OPTIONAL |
:: | descriptor(9) | the scalapack descriptor of the matrix (if not given a new one is allocated |
INTEGER, |
OPTIONAL |
:: | first_p_pos(2) | ... | |
INTEGER, |
INTENT(in), |
OPTIONAL |
:: | local_leading_dimension | the leading dimension of the locally stored data block |
TYPE(cp_fm_struct_type), |
POINTER, OPTIONAL |
:: | template_fmstruct | a matrix structure where to take the default values | |
LOGICAL, |
INTENT(in), |
OPTIONAL |
:: | square_blocks | ... |
LOGICAL, |
INTENT(in), |
OPTIONAL |
:: | force_block | ... |
creates a struct with twice the number of blocks on each core. If matrix A has to be multiplied with B anc C, a significant speedup of pdgemm can be acchieved by joining the matrices in a new one with this structure (see arnoldi in rt_matrix_exp)
TYPE(cp_fm_struct_type), |
POINTER |
:: | fmstruct | the struct to create | |
TYPE(cp_fm_struct_type), |
POINTER |
:: | struct | struct of either A or B | |
TYPE(cp_blacs_env_type), |
POINTER |
:: | context | ... | |
LOGICAL |
:: | col | in which direction the matrix should be enlarged | ||
LOGICAL |
:: | row | in which direction the matrix should be enlarged |
returns true if the two matrix structures are equivalent, false otherwise.
Return Value | :: | LOGICAL |
TYPE(cp_fm_struct_type), |
POINTER |
:: | fmstruct1 | one of the full matrix structures to compare | |
TYPE(cp_fm_struct_type), |
POINTER |
:: | fmstruct2 | the second of the full matrix structures to compare |
returns the values of various attributes of the matrix structure
TYPE(cp_fm_struct_type), |
POINTER |
:: | fmstruct | the structure you whant info about | |
TYPE(cp_para_env_type), |
POINTER, OPTIONAL |
:: | para_env | ... | |
TYPE(cp_blacs_env_type), |
POINTER, OPTIONAL |
:: | context | ... | |
INTEGER, |
INTENT(out), |
OPTIONAL |
:: | descriptor(9) | ... |
INTEGER, |
INTENT(out), |
OPTIONAL |
:: | ncol_block | ... |
INTEGER, |
INTENT(out), |
OPTIONAL |
:: | nrow_block | ... |
INTEGER, |
INTENT(out), |
OPTIONAL |
:: | nrow_global | ... |
INTEGER, |
INTENT(out), |
OPTIONAL |
:: | ncol_global | ... |
INTEGER, |
INTENT(out), |
OPTIONAL |
:: | id_nr | ... |
INTEGER, |
INTENT(out), |
OPTIONAL |
:: | ref_count | ... |
INTEGER, |
INTENT(out), |
OPTIONAL |
:: | first_p_pos(2) | ... |
INTEGER, |
POINTER, OPTIONAL |
:: | row_indices(:) | ... | |
INTEGER, |
POINTER, OPTIONAL |
:: | col_indices(:) | ... | |
INTEGER, |
INTENT(out), |
OPTIONAL |
:: | nrow_local | ... |
INTEGER, |
INTENT(out), |
OPTIONAL |
:: | ncol_local | ... |
INTEGER, |
POINTER, OPTIONAL |
:: | nrow_locals(:) | ... | |
INTEGER, |
POINTER, OPTIONAL |
:: | ncol_locals(:) | ... | |
INTEGER, |
INTENT(out), |
OPTIONAL |
:: | local_leading_dimension | ... |
releases a full matrix structure
TYPE(cp_fm_struct_type), |
POINTER |
:: | fmstruct | the structure to release |
retains a full matrix structure
TYPE(cp_fm_struct_type), |
POINTER |
:: | fmstruct | the structure to retain |