Used to carry data among the various calls. Each thread has its own private copy.
Type  Visibility  Attributes  Name  Initial  

logical,  private  ::  c_has_symmetry  =  .FALSE. 
The product matrix has symmetry Sparsity of C matrix should be kept Use onthefly filtering 

logical,  private  ::  keep_sparsity  =  .FALSE. 
The product matrix has symmetry Sparsity of C matrix should be kept Use onthefly filtering 

logical,  private  ::  keep_product_data  =  .FALSE. 
The product matrix has symmetry Sparsity of C matrix should be kept Use onthefly filtering 

logical,  private  ::  use_eps  =  .FALSE. 
The product matrix has symmetry Sparsity of C matrix should be kept Use onthefly filtering 

integer,  private,  DIMENSION(:), POINTER  ::  m_sizes  =>  NULL() 
Block sizes of A and C matrix rows, indexed locally Block sizes of B and C matrix columns, indexed locally Block sizes of A matrix columns and B matrix rows, indexed locally 
integer,  private,  DIMENSION(:), POINTER  ::  n_sizes  =>  NULL() 
Block sizes of A and C matrix rows, indexed locally Block sizes of B and C matrix columns, indexed locally Block sizes of A matrix columns and B matrix rows, indexed locally 
integer,  private,  DIMENSION(:), POINTER  ::  k_sizes  =>  NULL() 
Block sizes of A and C matrix rows, indexed locally Block sizes of B and C matrix columns, indexed locally Block sizes of A matrix columns and B matrix rows, indexed locally 
integer,  private,  DIMENSION(:), POINTER  ::  m_global_sizes  =>  NULL()  
integer,  private,  DIMENSION(:), POINTER  ::  n_global_sizes  =>  NULL()  
integer,  private,  DIMENSION(:), POINTER  ::  c_local_rows  =>  NULL() 
C and A matrix local rows. Map from local row (index) to global row (value). C and B matrix local columns. Map from local column (index) to global column (value). A matrix local columns and B matrix local rows. Map from local row/column (index) to global row/column (value). C and A matrix global rows. Map from global rows (index) to local rows (value). C and B matrix global columns. Map from global columns (index) to local columns (value). 
integer,  private,  DIMENSION(:), POINTER  ::  c_local_cols  =>  NULL() 
C and A matrix local rows. Map from local row (index) to global row (value). C and B matrix local columns. Map from local column (index) to global column (value). A matrix local columns and B matrix local rows. Map from local row/column (index) to global row/column (value). C and A matrix global rows. Map from global rows (index) to local rows (value). C and B matrix global columns. Map from global columns (index) to local columns (value). 
integer,  private,  DIMENSION(:), POINTER  ::  k_locals  =>  NULL() 
C and A matrix local rows. Map from local row (index) to global row (value). C and B matrix local columns. Map from local column (index) to global column (value). A matrix local columns and B matrix local rows. Map from local row/column (index) to global row/column (value). C and A matrix global rows. Map from global rows (index) to local rows (value). C and B matrix global columns. Map from global columns (index) to local columns (value). 
integer,  private,  DIMENSION(:), POINTER  ::  c_global_rows  =>  NULL() 
C and A matrix local rows. Map from local row (index) to global row (value). C and B matrix local columns. Map from local column (index) to global column (value). A matrix local columns and B matrix local rows. Map from local row/column (index) to global row/column (value). C and A matrix global rows. Map from global rows (index) to local rows (value). C and B matrix global columns. Map from global columns (index) to local columns (value). 
integer,  private,  DIMENSION(:), POINTER  ::  c_global_cols  =>  NULL() 
C and A matrix local rows. Map from local row (index) to global row (value). C and B matrix local columns. Map from local column (index) to global column (value). A matrix local columns and B matrix local rows. Map from local row/column (index) to global row/column (value). C and A matrix global rows. Map from global rows (index) to local rows (value). C and B matrix global columns. Map from global columns (index) to local columns (value). 
real(kind=sp),  private,  DIMENSION(:), POINTER  ::  row_max_epss  =>  NULL() 
Maximum eps to be used for one row. Norms of A matrix blocks. Norms of B matrix blocks. 
real(kind=sp),  private,  DIMENSION(:), POINTER  ::  a_norms  =>  NULL() 
Maximum eps to be used for one row. Norms of A matrix blocks. Norms of B matrix blocks. 
real(kind=sp),  private,  DIMENSION(:), POINTER  ::  b_norms  =>  NULL() 
Maximum eps to be used for one row. Norms of A matrix blocks. Norms of B matrix blocks. 
real(kind=real_8),  private  ::  eps  =  1.0_real_8  
integer,  private  ::  original_lastblk  =  1 
Number of work matrix blocks before addition 

integer(kind=int_8),  private  ::  flop  =  1_int_8 
flop count 

type(dbcsr_work_type),  private,  POINTER  ::  product_wm  =>  Null()  
type(dbcsr_mm_csr_type),  private  ::  csr  =  dbcsr_mm_csr_type()  
logical,  private  ::  new_row_max_epss  =  .FALSE.  
logical,  private  ::  initialized  =  .FALSE. 
TYPE dbcsr_mm_multrec_type !! Used to carry data among the various calls. Each thread has !! its own private copy. PRIVATE LOGICAL :: c_has_symmetry = .FALSE., keep_sparsity = .FALSE., keep_product_data = .FALSE., use_eps = .FALSE. !! The product matrix has symmetry !! Sparsity of C matrix should be kept !! Use onthefly filtering INTEGER, DIMENSION(:), POINTER :: m_sizes => NULL(), n_sizes => NULL(), k_sizes => NULL() !! Block sizes of A and C matrix rows, indexed locally !! Block sizes of B and C matrix columns, indexed locally !! Block sizes of A matrix columns and B matrix rows, indexed locally INTEGER, DIMENSION(:), POINTER :: m_global_sizes => NULL(), n_global_sizes => NULL() INTEGER, DIMENSION(:), POINTER :: c_local_rows => NULL(), c_local_cols => NULL(), k_locals => NULL(), & c_global_rows => NULL(), c_global_cols => NULL() !! C and A matrix local rows. Map from local row (index) to global row (value). !! C and B matrix local columns. Map from local column (index) to global column (value). !! A matrix local columns and B matrix local rows. Map from local row/column (index) to global row/column (value). !! C and A matrix global rows. Map from global rows (index) to local rows (value). !! C and B matrix global columns. Map from global columns (index) to local columns (value). REAL(KIND=sp), DIMENSION(:), POINTER :: row_max_epss => NULL(), a_norms => NULL(), b_norms => NULL() !! Maximum eps to be used for one row. !! Norms of A matrix blocks. !! Norms of B matrix blocks. REAL(KIND=real_8) :: eps = 1.0_real_8 INTEGER :: original_lastblk = 1 !! Number of work matrix blocks before addition INTEGER(kind=int_8) :: flop = 1_int_8 !! flop count TYPE(dbcsr_work_type), POINTER :: product_wm => Null() TYPE(dbcsr_mm_csr_type) :: csr = dbcsr_mm_csr_type() LOGICAL :: new_row_max_epss = .FALSE. LOGICAL :: initialized = .FALSE. END TYPE dbcsr_mm_multrec_type