31 use integer_packing,
only: unpack8ints
32 use mpi_gbl,
only: master, myrank
33 use precisn,
only: longint, wp
42 integer,
allocatable :: orbital_mapping(:)
43 integer :: num_orbitals
44 real(wp) :: core_energy
45 integer :: positron_flag
46 logical :: quantamoln_flag
49 integer :: matrix_size
50 integer :: nhe(20), nhd(10)
51 integer :: num_symmetries
52 integer :: number_of_matrix_records
56 character(NAME_LEN_MAX) :: name
78 class(
options),
intent(in) :: option
94 integer,
intent(in) :: iounit
100 use precisn,
only : wp
103 integer,
intent(in) :: i, j, k, l, m
110 use precisn,
only : wp
113 integer,
intent(in) :: iounit
133 class(
options),
intent(in) :: option
134 integer,
intent(in) :: num_orbitals
135 integer,
intent(in) :: mapping(num_orbitals)
137 this % num_orbitals = num_orbitals
139 allocate(this % orbital_mapping(num_orbitals))
141 this % orbital_mapping(:) = mapping(:)
142 this % positron_flag = option % positron_flag
143 this % quantamoln_flag = option % QuantaMolN
146 this % num_symmetries = option % num_syms
148 this % number_of_matrix_records = option % num_matrix_elements_per_rec
149 this % name = option % name
151 call this % initialize_self(option)
166 call this % finalize_self
168 if (
allocated(this % orbital_mapping))
then
169 deallocate (this % orbital_mapping)
182 integer,
intent(in) :: matrix_io, matrix_size
184 if (grid % grank == master)
then
185 open (unit = matrix_io, form =
'unformatted')
186 write (matrix_io) matrix_size, this % number_of_matrix_records , 0, matrix_size, &
187 0, this % num_symmetries, 0, 0, 0, 0, this % nnuc, 0, &
188 this % NAME, this % NHE, this % DTNUC
201 integer(longint),
intent(in) :: integral(2)
205 call unpack8ints(integral, label)
206 coeff = this % get_integral_ijklm(label(1), label(2), label(3), label(4), label(5))