| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| character(len=*), | private, | parameter | :: | nm_grp | = | "tcdump" | |
| character(len=*), | private, | parameter | :: | nm_nInts | = | "nInts" | |
| character(len=*), | private, | parameter | :: | nm_vals | = | "values" | |
| character(len=*), | private, | parameter | :: | nm_indices | = | "indices" |
Get an element of a lMat. This replaces the old lMatAccess function pointer
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lMat_t), | intent(in) | :: | this | |||
| integer(kind=int64), | intent(in) | :: | index |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lMat_t), | intent(inout) | :: | this |
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lMat_t), | intent(inout) | :: | this | |||
| integer(kind=int64), | intent(in) | :: | size |
Set an element of a lMat
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lMat_t), | intent(inout) | :: | this | |||
| integer(kind=int64), | intent(in) | :: | index | |||
| real(kind=dp), | intent(in) | :: | element |
Read a lMat from a file
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lMat_t), | intent(inout) | :: | this | |||
| character(len=*), | intent(in) | :: | filename |
Read operation on a single block of data read from an hdf5 file
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lMat_t), | intent(inout) | :: | this | |||
| integer(kind=int64), | intent(inout), | allocatable | :: | indices(:,:) | ||
| integer(kind=int64), | intent(inout), | allocatable | :: | entries(:,:) |
Abstract base class for lMat_t objects (6-index integrals)
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| procedure(lMatInd_t), | public, | nopass, pointer | :: | indexFunc | => | lMatIndSym |
| procedure(get_elem_t), public, deferred :: get_elem | |
| procedure(set_elem_t), private, deferred :: set_elem | |
| procedure(alloc_t), public, deferred :: alloc | |
| procedure(dealloc_t), public, deferred :: safe_dealloc | |
| procedure, public :: read | |
| procedure(read_t), private, deferred :: read_kernel | |
| procedure(read_op_t), private, deferred :: read_op_hdf5 | |
| procedure, public :: lMat_size | |
| procedure, public :: histogram_lMat |
Implementation for densely stored 6-index objects
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| procedure(lMatInd_t), | public, | nopass, pointer | :: | indexFunc | => | lMatIndSym | |
| type(shared_array_real_t), | private | :: | lMat_vals |
| procedure, public :: read | |
| procedure, public :: lMat_size | |
| procedure, public :: histogram_lMat | |
| procedure, public :: get_elem => get_elem_dense | |
| procedure, private :: set_elem => set_elem_dense | |
| procedure, public :: alloc => alloc_dense | |
| procedure, public :: safe_dealloc => dealloc_dense | |
| procedure, private :: read_kernel => read_dense | |
| procedure, private :: read_hdf5_dense | |
| procedure, private :: read_op_hdf5 => read_op_dense_hdf5 |
Implementation for sparsely stored 6-index objects
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| procedure(lMatInd_t), | public, | nopass, pointer | :: | indexFunc | => | lMatIndSym | |
| type(shared_array_real_t), | private | :: | nonzero_vals | ||||
| type(index_rhash_t), | private | :: | htable |
| procedure, public :: read | |
| procedure, public :: lMat_size | |
| procedure, public :: histogram_lMat | |
| procedure, public :: get_elem => get_elem_sparse | |
| procedure, private :: set_elem => set_elem_sparse | |
| procedure, public :: alloc => alloc_sparse | |
| procedure, public :: safe_dealloc => dealloc_sparse | |
| procedure, private :: read_kernel => read_sparse | |
| procedure, private :: read_op_hdf5 => read_op_sparse | |
| procedure, private :: read_data | |
| procedure, private :: count_conflicts |
Handler for reading hdf5 tcdump files. Calls the read_op_hdf5 of the calling lMat_t
| Type | Visibility | Attributes | Name | Initial | |||
|---|---|---|---|---|---|---|---|
| integer(kind=hid_t), | private | :: | err | ||||
| integer(kind=hid_t), | private | :: | file_id | ||||
| integer(kind=hid_t), | private | :: | plist_id | ||||
| integer(kind=hid_t), | private | :: | grp_id | ||||
| integer(kind=hid_t), | private | :: | ds_vals | ||||
| integer(kind=hid_t), | private | :: | ds_inds | ||||
| integer(kind=hsize_t), | private, | allocatable | :: | offsets(:) | |||
| integer(kind=hsize_t), | private | :: | countsEnd |
| procedure, public :: open | |
| procedure, public :: close | |
| procedure, public :: loop_file |
Return the max. index appearing in this lMat_t (i.e. the number of 6-index integrals)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lMat_t), | intent(in) | :: | this |
Get an element of the 6-index integrals from the densely stored container
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(dense_lMat_t), | intent(in) | :: | this | |||
| integer(kind=int64), | intent(in) | :: | index |
position of the element |
Retrieve an element from the 6-index integrals stored in sparse format
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(sparse_lMat_t), | intent(in) | :: | this | |||
| integer(kind=int64), | intent(in) | :: | index |
contiguous index of the element to be retrieved |
Read in the 6-index integrals from disk and histogram the integrals. The file itself only has to store the nonzero integrals, either in ASCII or in HDF5 format. For conventions in the HDF5 format, please refer to the developer’s guide.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lMat_t), | intent(inout) | :: | this | |||
| character(len=*), | intent(in) | :: | filename |
name of the integrals file |
Allocate the 6-index integrals for the dense storage
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(dense_lMat_t), | intent(inout) | :: | this | |||
| integer(kind=int64), | intent(in) | :: | size |
size of the integral container to be allocated |
Deallocate the 6-index integrals (dense)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(dense_lMat_t), | intent(inout) | :: | this |
Set an element in the dense 6-index integrals to a new value
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(dense_lMat_t), | intent(inout) | :: | this | |||
| integer(kind=int64), | intent(in) | :: | index |
position of the element |
||
| real(kind=dp), | intent(in) | :: | element |
new value of the element |
Read the 6-index integrals from a file to dense format
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(dense_lMat_t), | intent(inout) | :: | this | |||
| character(len=*), | intent(in) | :: | filename |
name of the file to read from |
Read the integrals from an hdf5 file to dense format
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(dense_lMat_t), | intent(inout) | :: | this | |||
| character(len=*), | intent(in) | :: | filename |
name of the file to read from |
This is the operation to be performed on each block of data read from an hdf5 file both arguments may or may not be still allocated upon return
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(dense_lMat_t), | intent(inout) | :: | this | |||
| integer(kind=int64), | intent(inout), | allocatable | :: | indices(:,:) | ||
| integer(kind=int64), | intent(inout), | allocatable | :: | entries(:,:) |
Allocate memory for the sparse storage of the 6-index integrals
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(sparse_lMat_t), | intent(inout) | :: | this | |||
| integer(kind=int64), | intent(in) | :: | size |
number of non-zero integrals |
Deallocate memory used for the sparse storage of the 6-index integrals
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(sparse_lMat_t), | intent(inout) | :: | this |
Set an element to the sparsely stored 6-index integrals. This requires the hash table to be set up and CANNOT be done once htable%finalize_setup has been called
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(sparse_lMat_t), | intent(inout) | :: | this | |||
| integer(kind=int64), | intent(in) | :: | index |
contiguous index of the element (not the one in the sparse array) |
||
| real(kind=dp), | intent(in) | :: | element |
new value of the element |
Read the 6-index integrals from a file to sparse format
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(sparse_lMat_t), | intent(inout) | :: | this | |||
| character(len=*), | intent(in) | :: | filename |
name of the file to read from |
This is the operation to be performed for sparse storage on each block of data read from an hdf5 file both arguments may or may not be still allocated upon return.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(sparse_lMat_t), | intent(inout) | :: | this | |||
| integer(kind=int64), | intent(inout), | allocatable | :: | indices(:,:) | ||
| integer(kind=int64), | intent(inout), | allocatable | :: | entries(:,:) |
Loop through a chunk of indices and count the number of hash conflicts. This is required for setting up the hash table
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(sparse_lMat_t), | intent(inout) | :: | this | |||
| integer(kind=int64), | intent(in) | :: | indices(:) |
Add the (combined) indices and the corresponding integral values to the sparse storage
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(sparse_lMat_t), | intent(inout) | :: | this | |||
| integer(kind=int64), | intent(in) | :: | indices(:) | |||
| integer(kind=int64), | intent(in) | :: | entries(:) |
Gather a chunk of data on node-root.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| integer(kind=int64), | intent(in) | :: | data_block(:) | |||
| integer(kind=int64), | intent(out), | allocatable | :: | tmp(:) |
Generate a histogram of the 6-index integrals and write it to stdout
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lMat_t), | intent(in) | :: | this |
Open an hdf5 file containing 6-index integrals
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lMat_hdf5_read_t) | :: | this | ||||
| character(len=*), | intent(in) | :: | filename |
name of the file |
||
| integer(kind=hsize_t), | intent(out) | :: | nInts |
number of integrals stored in the file (normally only nonzeros) |
Apply the read_op_hdf5 of an lMat to the data in the currently opened file The file will be read chunkwise and the read_op_hdf5 operation applied per chunk
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lMat_hdf5_read_t), | intent(inout) | :: | this | |||
| class(lMat_t), | intent(inout) | :: | lMat |
the lMat object to read the data to |
Close the currently opened hdf5 file - requires a previous call to open()
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lMat_hdf5_read_t) | :: | this |