Documentation for module qs_fb_matrix_data_types

...

source: qs_fb_matrix_data_types.F
Loading...

public Types:

fb_matrix_data_obj
the object container which allows for the creation of an array of pointers to fb_matrix_data objects

public Subroutines/Functions:

Add a matrix block to a fb_matrix_data object
Creates and initialises an empty fb_matrix_data object of a given size
retrieve a matrix block from a matrix_data object
FUNCTION
LOGICAL PURE
fb_matrix_data_has_data (matrix_data)
check if the object has data associated to it
Nullifies a fb_matrix_data object
releases given object

public Types:

TYPE :: fb_matrix_data_obj

the object container which allows for the creation of an array of pointers to fb_matrix_data objects


POINTER, PRIVATE :: obj => NULL() pointer to the fb_matrix_data object

SUBROUTINEfb_matrix_data_add(matrix_data, row, col, blk)

Add a matrix block to a fb_matrix_data object

Arguments:
INTENT(inout)
:: matrix_data the fb_matrix_data object
INTEGER,
INTENT(in)
:: row block row index of the matrix block
INTEGER,
INTENT(in)
:: col block col index of the matrix block
REAL(dp),
INTENT(in)
:: blk(:,:) the matrix block to add

SUBROUTINEfb_matrix_data_create(matrix_data, nmax, nencode)

Creates and initialises an empty fb_matrix_data object of a given size

Arguments:
INTENT(inout)
:: matrix_data the fb_matrix_data object, its content must be NULL and cannot be UNDEFINED
INTEGER,
INTENT(in)
:: nmax max number of matrix blks can be stored
INTEGER,
INTENT(in)
:: nencode ...

SUBROUTINEfb_matrix_data_get(matrix_data, row, col, blk_p, found)

retrieve a matrix block from a matrix_data object

Arguments:
INTENT(in)
:: matrix_data the fb_matrix_data object
INTEGER,
INTENT(in)
:: row row index
INTEGER,
INTENT(in)
:: col col index
REAL(dp),
POINTER
:: blk_p(:,:) pointer to the block in the fb_matrix_data object
LOGICAL,
INTENT(out)
:: found if the requested block exists in the fb_matrix_data object

PURE FUNCTIONfb_matrix_data_has_data(matrix_data)

check if the object has data associated to it

Return Value ::
LOGICAL
true if matrix_data%obj is associated, false otherwise
Arguments:
INTENT(in)
:: matrix_data the fb_matrix_data object in question

PURE SUBROUTINEfb_matrix_data_nullify(matrix_data)

Nullifies a fb_matrix_data object

Arguments:
INTENT(inout)
:: matrix_data the fb_matrix_data object

SUBROUTINEfb_matrix_data_release(matrix_data)

releases given object

Arguments:
INTENT(inout)
:: matrix_data the fb_matrix_data object in question

private Parameters/Types:

private Types:

TYPE :: fb_matrix_data_data

data type for storing a list of matrix blocks


INTEGER
:: id_nr unique id for the object
INTEGER
:: ref_count reference counter for the object
INTEGER
:: nmax maximum number of blocks can be stored
INTEGER
:: nblks number of blocks currently stored
INTEGER
:: nencode integer used to encode global block coordinate (row, col) into a single combined integer
:: ind hash table maping the global combined index of the blocks to the location in the data area
:: blks data area, well the matrix elements are actuaally stored
INTEGER,
DIMENSION(:), POINTER :: lds => NULL() leading dimensions of each block