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 |
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 |
Generate a histogram of the 6-index integrals and write it to stdout
| 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 |
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 |
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 |
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(:,:) |
type, extends(lMat_t) :: dense_lMat_t private ! The values of the integrals #ifdef CMPLX_ type(shared_array_cmplx_t) :: lMat_vals #else type(shared_array_real_t) :: lMat_vals #endif contains ! Element getters/setters procedure :: get_elem => get_elem_dense procedure, private :: set_elem => set_elem_dense ! Allocation routines procedure :: alloc => alloc_dense procedure :: safe_dealloc => dealloc_dense ! I/O routines procedure, private :: read_kernel => read_dense procedure, private :: read_hdf5_dense procedure, private :: read_op_hdf5 => read_op_dense_hdf5 end type dense_lMat_t