| 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 :: get_elem | |
| procedure (set_elem_t) , private :: set_elem | |
| procedure (alloc_t) , public :: alloc | |
| procedure (dealloc_t) , public :: safe_dealloc | |
| procedure , public , :: read Subroutine | |
| procedure (read_t) , private :: read_kernel | |
| procedure (read_op_t) , private :: read_op_hdf5 | |
| procedure , public , :: lMat_size Function | |
| procedure , public , :: histogram_lMat Subroutine |
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 Subroutine | |
| procedure , public , :: lMat_size Function | |
| procedure , public , :: histogram_lMat Subroutine | |
| procedure , public , :: get_elem => get_elem_dense Function | |
| procedure , private :: set_elem => set_elem_dense Subroutine | |
| procedure , public , :: alloc => alloc_dense Subroutine | |
| procedure , public , :: safe_dealloc => dealloc_dense Subroutine | |
| procedure , private :: read_kernel => read_dense Subroutine | |
| procedure , private :: read_hdf5_dense Subroutine | |
| procedure , private :: read_op_hdf5 => read_op_dense_hdf5 Subroutine |
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 Subroutine | |
| procedure , public , :: lMat_size Function | |
| procedure , public , :: histogram_lMat Subroutine | |
| procedure , public , :: get_elem => get_elem_sparse Function | |
| procedure , private :: set_elem => set_elem_sparse Subroutine | |
| procedure , public , :: alloc => alloc_sparse Subroutine | |
| procedure , public , :: safe_dealloc => dealloc_sparse Subroutine | |
| procedure , private :: read_kernel => read_sparse Subroutine | |
| procedure , private :: read_op_hdf5 => read_op_sparse Subroutine | |
| procedure , private :: read_data Subroutine | |
| procedure , private :: count_conflicts Subroutine |
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 Subroutine | |
| procedure , public , :: close Subroutine | |
| procedure , public , :: loop_file Subroutine |
Return the max. index appearing in this lMat_t (i.e. the number of 6-index integrals) @return size The number of 6-index integrals of this object, depending on the symmetry.
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lMat_t), | intent(in) | :: | this |
Get an element of the 6-index integrals from the densely stored container @param[in] index position of the element @return element value of the element
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(dense_lMat_t), | intent(in) | :: | this | |||
| integer(kind=int64), | intent(in) | :: | index |
Retrieve an element from the 6-index integrals stored in sparse format @param[in] index contiguous index of the element to be retrieved @return element value of the element with the given contiguous index
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(sparse_lMat_t), | intent(in) | :: | this | |||
| integer(kind=int64), | intent(in) | :: | index |
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. @param[in] filename name of the integrals file
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lMat_t), | intent(inout) | :: | this | |||
| character(len=*), | intent(in) | :: | filename |
Allocate the 6-index integrals for the dense storage @param[in] size size of the integral container to be allocated
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(dense_lMat_t), | intent(inout) | :: | this | |||
| integer(kind=int64), | intent(in) | :: | size |
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 @param[in] index position of the element @param[in] element new value of the element
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(dense_lMat_t), | intent(inout) | :: | this | |||
| integer(kind=int64), | intent(in) | :: | index | |||
| real(kind=dp), | intent(in) | :: | element |
Read the 6-index integrals from a file to dense format @param[in] filename name of the file to read from
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(dense_lMat_t), | intent(inout) | :: | this | |||
| character(len=*), | intent(in) | :: | filename |
Read the integrals from an hdf5 file to dense format @param[in] filename name of the file to read from
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(dense_lMat_t), | intent(inout) | :: | this | |||
| character(len=*), | intent(in) | :: | filename |
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 @param[in,out] indices chunk of indices read in from the file @param[in,out] entries chunk of corresponding values
| 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 @param[in] size number of non-zero integrals
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(sparse_lMat_t), | intent(inout) | :: | this | |||
| integer(kind=int64), | intent(in) | :: | size |
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 @param[in] index contiguous index of the element (not the one in the sparse array) @param[in] element new value of the element
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(sparse_lMat_t), | intent(inout) | :: | this | |||
| integer(kind=int64), | intent(in) | :: | index | |||
| real(kind=dp), | intent(in) | :: | element |
Read the 6-index integrals from a file to sparse format @param[in] filename name of the file to read from
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(sparse_lMat_t), | intent(inout) | :: | this | |||
| character(len=*), | intent(in) | :: | filename |
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. @param[in,out] indices chunk of indices read in from the file @param[in,out] entries chunk of corresponding values
| 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 @param[in] indices chunk combined 6-index values for the 6-index integrals
| 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 @param[in] indices chunk of combined 6-index values @param[in] entries corresponding values of the 6-index integrals
| 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. @param[in] data_block on each proc, the data from this proc to be gathered @param[out] tmp on return, on node-root the gathered data from all procs on this node, empty on all other procs. Guaranteed to be allocated on return (of size 0 on other than 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 @param[in] filename name of the file @param[out] nInts number of integrals stored in the file (normally only nonzeros)
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lMat_hdf5_read_t) | :: | this | ||||
| character(len=*), | intent(in) | :: | filename | |||
| integer(kind=hsize_t), | intent(out) | :: | nInts |
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 @param[in] lMat the lMat object to read the data to
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lMat_hdf5_read_t), | intent(inout) | :: | this | |||
| class(lMat_t), | intent(inout) | :: | lMat |
Close the currently opened hdf5 file - requires a previous call to open()
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lMat_hdf5_read_t) | :: | this |