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