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, &
50 nuclear_basis = 121, &
51 nuclear_soft_basis = 122, &
52 harris_soft_basis = 123
56 CHARACTER(LEN=default_string_length) :: basis_type =
""
57 INTEGER :: basis_type_nr = 0
78 INTENT(inout) :: basis
83 basis(i)%basis_type =
""
84 basis(i)%basis_type_nr = 0
85 IF (
ASSOCIATED(basis(i)%basis_set))
THEN
97 FUNCTION get_basis_type(basis_set_type)
RESULT(basis_type_nr)
98 CHARACTER(len=*) :: basis_set_type
99 INTEGER :: basis_type_nr
101 SELECT CASE (basis_set_type)
103 basis_type_nr = orbital_basis
105 basis_type_nr = auxiliary_basis
107 basis_type_nr = min_basis
109 basis_type_nr = ri_aux_basis
111 basis_type_nr = ri_hxc_basis
113 basis_type_nr = ri_hfx_basis
115 basis_type_nr = ri_k_basis
117 basis_type_nr = lri_aux_basis
119 basis_type_nr = p_lri_aux_basis
121 basis_type_nr = aux_fit_basis
122 CASE (
"AUX_FIT_SOFT")
123 basis_type_nr = aux_fit_soft_basis
125 basis_type_nr = soft_basis
127 basis_type_nr = gapw_1c_basis
129 basis_type_nr = tda_k_basis
133 basis_type_nr = harris_basis
135 basis_type_nr = harris_soft_basis
137 basis_type_nr = aux_gw_basis
139 basis_type_nr = ri_xas_basis
141 basis_type_nr = aux_opt_basis
143 basis_type_nr = rhoin_basis
145 basis_type_nr = nuclear_basis
147 basis_type_nr = nuclear_soft_basis
149 basis_type_nr = unknown_basis
152 END FUNCTION get_basis_type
162 INTENT(inout) :: container
164 CHARACTER(len=*) :: basis_set_type
170 DO i = 1,
SIZE(container)
171 IF (container(i)%basis_type_nr == 0)
THEN
172 container(i)%basis_type = basis_set_type
173 container(i)%basis_set => basis_set
174 container(i)%basis_type_nr = get_basis_type(basis_set_type)
191 INTENT(inout) :: container
192 INTEGER,
INTENT(IN),
OPTIONAL :: inum
193 CHARACTER(len=*),
OPTIONAL :: basis_type
195 INTEGER :: basis_nr, i, ibas
197 IF (
PRESENT(inum))
THEN
198 cpassert(inum <=
SIZE(container))
201 ELSE IF (
PRESENT(basis_type))
THEN
202 basis_nr = get_basis_type(basis_type)
204 DO i = 1,
SIZE(container)
205 IF (container(i)%basis_type_nr == basis_nr)
THEN
215 container(ibas)%basis_type =
""
216 container(ibas)%basis_type_nr = 0
217 IF (
ASSOCIATED(container(ibas)%basis_set))
THEN
221 DO i = ibas + 1,
SIZE(container)
222 IF (container(i)%basis_type_nr == 0) cycle
223 container(i - 1)%basis_type = container(i)%basis_type
224 container(i - 1)%basis_set => container(i)%basis_set
225 container(i - 1)%basis_type_nr = container(i)%basis_type_nr
226 container(i)%basis_type =
""
227 container(i)%basis_type_nr = 0
228 NULLIFY (container(i)%basis_set)
243 INTENT(inout) :: container
245 INTEGER,
OPTIONAL :: inumbas
246 CHARACTER(len=*),
OPTIONAL :: basis_type
248 INTEGER :: basis_nr, i
250 IF (
PRESENT(inumbas))
THEN
251 cpassert(inumbas <=
SIZE(container))
252 cpassert(inumbas >= 1)
253 basis_set => container(inumbas)%basis_set
254 IF (
PRESENT(basis_type))
THEN
255 basis_type = container(inumbas)%basis_type
257 ELSE IF (
PRESENT(basis_type))
THEN
259 basis_nr = get_basis_type(basis_type)
260 DO i = 1,
SIZE(container)
261 IF (container(i)%basis_type_nr == basis_nr)
THEN
262 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.