53 INTEGER,
INTENT(IN) :: basis_1c_level
55 INTEGER :: i, ipgf, iset, j, l, lbas, maxl, maxlo, &
56 maxls, mp, n1, n2, nn, nseto, nsets
57 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: nps
58 INTEGER,
DIMENSION(:),
POINTER :: lmaxo, lmaxs, lmino, lmins, npgfo, npgfs
59 REAL(kind=
dp) :: fmin, fr1, fr2, fz, rr, xz, yz, zmall, &
61 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:) :: z1, z2, zmaxs
62 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :) :: zeta, zexs
63 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: zeto, zets
66 cpassert(.NOT.
ASSOCIATED(gapw_1c_basis))
68 IF (basis_1c_level == 0)
THEN
77 lmin=lmino, lmax=lmaxo, npgf=npgfo, zet=zeto)
79 lmin=lmins, lmax=lmaxs, npgf=npgfs, zet=zets)
81 maxl = max(maxls, maxlo)
82 ALLOCATE (zmaxs(0:maxl), nps(0:maxl))
85 zms = maxval(zets(:, iset))
86 DO l = lmins(iset), lmaxs(iset)
87 zmaxs(l) = max(zmaxs(l), zms)
92 zmall = max(zmall, 0.20_dp)
96 DO l = lmins(iset), lmaxs(iset)
97 nps(l) = nps(l) + npgfs(iset)
101 ALLOCATE (zexs(1:mp, 0:maxl))
105 DO ipgf = 1, npgfs(iset)
106 DO l = lmins(iset), lmaxs(iset)
108 zexs(nps(l), l) = zets(ipgf, iset)
113 SELECT CASE (basis_1c_level)
131 cpabort(
"unknown case")
137 rr = log(zmall/0.05_dp)/log(fr1)
139 rr = log(zmall/0.05_dp)/log(fr2)
141 ALLOCATE (z1(n1), z2(n2))
145 z1(i) = zz/(fr1**(i - 1))
150 z2(i) = zz/(fr2**(i - 1))
152 ALLOCATE (zeta(max(n1, n2), lbas + 1))
155 ext_basis%nset = lbas + 1
156 ALLOCATE (ext_basis%lmin(lbas + 1), ext_basis%lmax(lbas + 1))
157 ALLOCATE (ext_basis%npgf(lbas + 1))
159 ext_basis%lmin(l + 1) = l
160 ext_basis%lmax(l + 1) = l
168 fz = max(xz, yz)/min(xz, yz)
171 IF (fmin > fr1**0.25)
THEN
177 ext_basis%npgf(l + 1) = nn
179 ext_basis%npgf(l + 1) = n2
180 zeta(1:n2, l + 1) = z2(1:n2)
183 nn = maxval(ext_basis%npgf)
184 ALLOCATE (ext_basis%zet(nn, lbas + 1))
186 nn = ext_basis%npgf(i)
187 ext_basis%zet(1:nn, i) = zeta(1:nn, i)
189 ext_basis%name =
"extbas"
190 ext_basis%kind_radius = orb_basis%kind_radius
191 ext_basis%short_kind_radius = orb_basis%short_kind_radius
192 ext_basis%norm_type = orb_basis%norm_type
200 DEALLOCATE (zmaxs, zexs, nps, z1, z2, zeta)
subroutine, public get_gto_basis_set(gto_basis_set, name, aliases, norm_type, kind_radius, ncgf, nset, nsgf, cgf_symbol, sgf_symbol, norm_cgf, set_radius, lmax, lmin, lx, ly, lz, m, ncgf_set, npgf, nsgf_set, nshell, cphi, pgf_radius, sphi, scon, zet, first_cgf, first_sgf, l, last_cgf, last_sgf, n, gcc, maxco, maxl, maxpgf, maxsgf_set, maxshell, maxso, nco_sum, npgf_sum, nshell_sum, maxder, short_kind_radius, npgf_seg_sum)
...