18#include "../base/base_uses.f90"
26 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'basis_set_container_types'
29 INTEGER,
PARAMETER :: unknown_basis = 100, &
30 orbital_basis = 101, &
31 auxiliary_basis = 102, &
33 lri_aux_basis = 104, &
34 aux_fit_basis = 105, &
36 gapw_1c_basis = 107, &
43 aux_fit_soft_basis = 114, &
45 p_lri_aux_basis = 116, &
46 aux_opt_basis = 117, &
53 CHARACTER(LEN=default_string_length) :: basis_type =
""
54 INTEGER :: basis_type_nr = 0
75 INTENT(inout) :: basis
80 basis(i)%basis_type =
""
81 basis(i)%basis_type_nr = 0
82 IF (
ASSOCIATED(basis(i)%basis_set))
THEN
94 FUNCTION get_basis_type(basis_set_type)
RESULT(basis_type_nr)
95 CHARACTER(len=*) :: basis_set_type
96 INTEGER :: basis_type_nr
98 SELECT CASE (basis_set_type)
100 basis_type_nr = orbital_basis
102 basis_type_nr = auxiliary_basis
104 basis_type_nr = min_basis
106 basis_type_nr = ri_aux_basis
108 basis_type_nr = ri_hxc_basis
110 basis_type_nr = ri_hfx_basis
112 basis_type_nr = ri_k_basis
114 basis_type_nr = lri_aux_basis
116 basis_type_nr = p_lri_aux_basis
118 basis_type_nr = aux_fit_basis
119 CASE (
"AUX_FIT_SOFT")
120 basis_type_nr = aux_fit_soft_basis
122 basis_type_nr = soft_basis
124 basis_type_nr = gapw_1c_basis
126 basis_type_nr = tda_k_basis
130 basis_type_nr = harris_basis
132 basis_type_nr = aux_gw_basis
134 basis_type_nr = ri_xas_basis
136 basis_type_nr = aux_opt_basis
138 basis_type_nr = rhoin_basis
140 basis_type_nr = unknown_basis
143 END FUNCTION get_basis_type
153 INTENT(inout) :: container
155 CHARACTER(len=*) :: basis_set_type
161 DO i = 1,
SIZE(container)
162 IF (container(i)%basis_type_nr == 0)
THEN
163 container(i)%basis_type = basis_set_type
164 container(i)%basis_set => basis_set
165 container(i)%basis_type_nr = get_basis_type(basis_set_type)
182 INTENT(inout) :: container
183 INTEGER,
INTENT(IN),
OPTIONAL :: inum
184 CHARACTER(len=*),
OPTIONAL :: basis_type
186 INTEGER :: basis_nr, i, ibas
188 IF (
PRESENT(inum))
THEN
189 cpassert(inum <=
SIZE(container))
192 ELSE IF (
PRESENT(basis_type))
THEN
193 basis_nr = get_basis_type(basis_type)
195 DO i = 1,
SIZE(container)
196 IF (container(i)%basis_type_nr == basis_nr)
THEN
206 container(ibas)%basis_type =
""
207 container(ibas)%basis_type_nr = 0
208 IF (
ASSOCIATED(container(ibas)%basis_set))
THEN
212 DO i = ibas + 1,
SIZE(container)
213 IF (container(i)%basis_type_nr == 0) cycle
214 container(i - 1)%basis_type = container(i)%basis_type
215 container(i - 1)%basis_set => container(i)%basis_set
216 container(i - 1)%basis_type_nr = container(i)%basis_type_nr
217 container(i)%basis_type =
""
218 container(i)%basis_type_nr = 0
219 NULLIFY (container(i)%basis_set)
234 INTENT(inout) :: container
236 INTEGER,
OPTIONAL :: inumbas
237 CHARACTER(len=*),
OPTIONAL :: basis_type
239 INTEGER :: basis_nr, i
241 IF (
PRESENT(inumbas))
THEN
242 cpassert(inumbas <=
SIZE(container))
243 cpassert(inumbas >= 1)
244 basis_set => container(inumbas)%basis_set
245 IF (
PRESENT(basis_type))
THEN
246 basis_type = container(inumbas)%basis_type
248 ELSE IF (
PRESENT(basis_type))
THEN
250 basis_nr = get_basis_type(basis_type)
251 DO i = 1,
SIZE(container)
252 IF (container(i)%basis_type_nr == basis_nr)
THEN
253 basis_set => container(i)%basis_set
subroutine, public remove_basis_set_container(basis)
...
subroutine, public remove_basis_from_container(container, inum, basis_type)
...
subroutine, public get_basis_from_container(container, basis_set, inumbas, basis_type)
Retrieve a basis set from the container.
subroutine, public add_basis_set_to_container(container, basis_set, basis_set_type)
...
subroutine, public deallocate_gto_basis_set(gto_basis_set)
...
Defines the basic variable types.
integer, parameter, public default_string_length
Calculate MAO's and analyze wavefunctions.