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 TYPE basis_set_container_type
52 CHARACTER(LEN=default_string_length) :: basis_type =
""
53 INTEGER :: basis_type_nr = 0
54 TYPE(gto_basis_set_type),
POINTER :: basis_set => null()
55 END TYPE basis_set_container_type
58 PUBLIC :: basis_set_container_type
73 TYPE(basis_set_container_type),
DIMENSION(:), &
74 INTENT(inout) :: basis
79 basis(i)%basis_type =
""
80 basis(i)%basis_type_nr = 0
81 IF (
ASSOCIATED(basis(i)%basis_set))
THEN
93 FUNCTION get_basis_type(basis_set_type)
RESULT(basis_type_nr)
94 CHARACTER(len=*) :: basis_set_type
95 INTEGER :: basis_type_nr
97 SELECT CASE (basis_set_type)
99 basis_type_nr = orbital_basis
101 basis_type_nr = auxiliary_basis
103 basis_type_nr = min_basis
105 basis_type_nr = ri_aux_basis
107 basis_type_nr = ri_hxc_basis
109 basis_type_nr = ri_hfx_basis
111 basis_type_nr = ri_k_basis
113 basis_type_nr = lri_aux_basis
115 basis_type_nr = p_lri_aux_basis
117 basis_type_nr = aux_fit_basis
118 CASE (
"AUX_FIT_SOFT")
119 basis_type_nr = aux_fit_soft_basis
121 basis_type_nr = soft_basis
123 basis_type_nr = gapw_1c_basis
125 basis_type_nr = tda_k_basis
129 basis_type_nr = harris_basis
131 basis_type_nr = aux_gw_basis
133 basis_type_nr = ri_xas_basis
135 basis_type_nr = aux_opt_basis
137 basis_type_nr = unknown_basis
140 END FUNCTION get_basis_type
149 TYPE(basis_set_container_type),
DIMENSION(:), &
150 INTENT(inout) :: container
151 TYPE(gto_basis_set_type),
POINTER :: basis_set
152 CHARACTER(len=*) :: basis_set_type
158 DO i = 1,
SIZE(container)
159 IF (container(i)%basis_type_nr == 0)
THEN
160 container(i)%basis_type = basis_set_type
161 container(i)%basis_set => basis_set
162 container(i)%basis_type_nr = get_basis_type(basis_set_type)
178 TYPE(basis_set_container_type),
DIMENSION(:), &
179 INTENT(inout) :: container
180 INTEGER,
INTENT(IN),
OPTIONAL :: inum
181 CHARACTER(len=*),
OPTIONAL :: basis_type
183 INTEGER :: basis_nr, i, ibas
185 IF (
PRESENT(inum))
THEN
186 cpassert(inum <=
SIZE(container))
189 ELSE IF (
PRESENT(basis_type))
THEN
190 basis_nr = get_basis_type(basis_type)
192 DO i = 1,
SIZE(container)
193 IF (container(i)%basis_type_nr == basis_nr)
THEN
203 container(ibas)%basis_type =
""
204 container(ibas)%basis_type_nr = 0
205 IF (
ASSOCIATED(container(ibas)%basis_set))
THEN
209 DO i = ibas + 1,
SIZE(container)
210 IF (container(i)%basis_type_nr == 0) cycle
211 container(i - 1)%basis_type = container(i)%basis_type
212 container(i - 1)%basis_set => container(i)%basis_set
213 container(i - 1)%basis_type_nr = container(i)%basis_type_nr
214 container(i)%basis_type =
""
215 container(i)%basis_type_nr = 0
216 NULLIFY (container(i)%basis_set)
230 TYPE(basis_set_container_type),
DIMENSION(:), &
231 INTENT(inout) :: container
232 TYPE(gto_basis_set_type),
POINTER :: basis_set
233 INTEGER,
OPTIONAL :: inumbas
234 CHARACTER(len=*),
OPTIONAL :: basis_type
236 INTEGER :: basis_nr, i
238 IF (
PRESENT(inumbas))
THEN
239 cpassert(inumbas <=
SIZE(container))
240 cpassert(inumbas >= 1)
241 basis_set => container(inumbas)%basis_set
242 IF (
PRESENT(basis_type))
THEN
243 basis_type = container(inumbas)%basis_type
245 ELSE IF (
PRESENT(basis_type))
THEN
247 basis_nr = get_basis_type(basis_type)
248 DO i = 1,
SIZE(container)
249 IF (container(i)%basis_type_nr == basis_nr)
THEN
250 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.