Documentation for module cp_cfm_types

represent a complex full matrix distribued on many processors

source: cp_cfm_types.F
Loading...

public Types:

cp_cfm_type
represent a complex full matrix
cp_cfm_p_type
just to build arrays of pointers to matrixes

Generic procedures:

cp_cfm_to_cfm

public Subroutines/Functions:

creates a new full matrix with the given structure
...
Return informations about the specified FULL matrix. the indices vectors are cached. indices is an array that maps the local indices to the global ones local data is a little hole to access the blacs block, needed in some rare cases for efficient use
SUBROUTINE
cp_cfm_release (matrix)
releases a full matrix
Set the FULL matrix elements to alpha.
Set the FULL matrix element (irow_global,icol_global) to alpha.
copy real and imaginary parts of a cfm to fm works only for absolutely equivalent structures

public Types:

TYPE :: cp_cfm_p_type

just to build arrays of pointers to matrixes


POINTER :: matrix the pointer to the matrix

TYPE :: cp_cfm_type

represent a complex full matrix


CHARACTER(60)
:: name the name of the matrix, used for printing
INTEGER
:: id_nr identification number that makes this matrix unique
INTEGER
:: ref_count ...
INTEGER
:: print_count sequential number to make the printed files unique
POINTER :: matrix_struct structure of this matrix
COMPLEX(dp),
DIMENSION(:,:), POINTER :: local_data array with the data of the matrix (its contents depend on the matrix type used: in parallel runs it will be in scalapack format, in sequential, it will simply contain the matrix)


Generic procedure cp_cfm_to_cfm

...

POINTER
:: source ×
POINTER
:: destination ×
POINTER
:: msource ×
POINTER
:: mtarget ×
INTEGER,
INTENT(in)
:: ncol ×
INTEGER,
INTENT(in),
OPTIONAL
:: source_start ×
INTEGER,
INTENT(in),
OPTIONAL
:: target_start ×

SUBROUTINEcp_cfm_create(matrix, matrix_struct, name)

creates a new full matrix with the given structure

Arguments:
POINTER
:: matrix the matrix to be created
POINTER
:: matrix_struct the structure of matrix
CHARACTER(*),
INTENT(in),
OPTIONAL
:: name ...

SUBROUTINEcp_cfm_get_element(matrix, irow_global, icol_global, alpha)

...

Arguments:
POINTER
:: matrix ...
INTEGER,
INTENT(in)
:: irow_global ...
INTEGER,
INTENT(in)
:: icol_global ...
COMPLEX(dp),
INTENT(out)
:: alpha ...

SUBROUTINEcp_cfm_get_info(matrix, name, nrow_global, ncol_global, nrow_block, ncol_block, nrow_local, ncol_local, row_indices, col_indices, local_data, context, matrix_struct, para_env)

Return informations about the specified FULL matrix. the indices vectors are cached. indices is an array that maps the local indices to the global ones local data is a little hole to access the blacs block, needed in some rare cases for efficient use

Arguments:
POINTER
:: matrix ...
CHARACTER(*),
INTENT(out),
OPTIONAL
:: name ...
INTEGER,
INTENT(out),
OPTIONAL
:: nrow_global ...
INTEGER,
INTENT(out),
OPTIONAL
:: ncol_global ...
INTEGER,
INTENT(out),
OPTIONAL
:: nrow_block ...
INTEGER,
INTENT(out),
OPTIONAL
:: ncol_block ...
INTEGER,
INTENT(out),
OPTIONAL
:: nrow_local ...
INTEGER,
INTENT(out),
OPTIONAL
:: ncol_local ...
INTEGER,
OPTIONAL, POINTER
:: row_indices(:) ...
INTEGER,
OPTIONAL, POINTER
:: col_indices(:) ...
COMPLEX(dp),
POINTER, OPTIONAL
:: local_data(:,:) ...
POINTER, OPTIONAL
:: context ...
POINTER, OPTIONAL
:: matrix_struct ...
POINTER, OPTIONAL
:: para_env ...

SUBROUTINEcp_cfm_release(matrix)

releases a full matrix

Arguments:
POINTER
:: matrix the matrix to release

SUBROUTINEcp_cfm_set_all(matrix, alpha, beta)

Set the FULL matrix elements to alpha.

Arguments:
POINTER
:: matrix ...
COMPLEX(dp),
INTENT(in)
:: alpha ...
COMPLEX(dp),
INTENT(in),
OPTIONAL
:: beta ...

SUBROUTINEcp_cfm_set_element(matrix, irow_global, icol_global, alpha)

Set the FULL matrix element (irow_global,icol_global) to alpha.

Arguments:
POINTER
:: matrix ...
INTEGER,
INTENT(in)
:: irow_global ...
INTEGER,
INTENT(in)
:: icol_global ...
COMPLEX(dp),
INTENT(in)
:: alpha ...

SUBROUTINEcp_cfm_to_fm(msource, mtargetr, mtargeti)

copy real and imaginary parts of a cfm to fm works only for absolutely equivalent structures

Arguments:
POINTER
:: msource complex matrix
TYPE(cp_fm_type),
OPTIONAL, POINTER
:: mtargetr optional, if present outputs real part of msource
TYPE(cp_fm_type),
OPTIONAL, POINTER
:: mtargeti optional, if present outputs imag part of msource

SUBROUTINEcp_cfm_to_cfm_matrix(source, destination)

copy one identically sized matrix in the other

Arguments:
POINTER
:: source ...
POINTER
:: destination ...

SUBROUTINEcp_cfm_to_cfm_columns(msource, mtarget, ncol, source_start, target_start)

copy just a subset of columns of a cfm to a cfm

Arguments:
POINTER
:: msource ...
POINTER
:: mtarget ...
INTEGER,
INTENT(in)
:: ncol ...
INTEGER,
INTENT(in),
OPTIONAL
:: source_start ...
INTEGER,
INTENT(in),
OPTIONAL
:: target_start ...