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. @param[in] filename name of the integrals file
| Type | Intent | Optional | Attributes | Name | ||
|---|---|---|---|---|---|---|
| class(lMat_t), | intent(inout) | :: | this | |||
| character(len=*), | intent(in) | :: | filename |
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 |
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 @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 |
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 |
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 |
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(:,:) |
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