38#include "./base/base_uses.f90"
46 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'paw_proj_set_types'
48 INTEGER,
PARAMETER :: max_name_length = 60
53 INTEGER :: maxl = -1, ncgauprj = -1, nsgauprj = -1
54 INTEGER,
DIMENSION(:),
POINTER :: nprj => null()
55 INTEGER,
DIMENSION(:),
POINTER :: lx => null(), ly => null(), lz => null()
56 INTEGER,
DIMENSION(:),
POINTER :: ll => null(), m => null()
57 INTEGER,
DIMENSION(:),
POINTER :: first_prj => null(), last_prj => null()
58 INTEGER,
DIMENSION(:),
POINTER :: first_prjs => null()
59 REAL(kind=
dp) :: rcprj = 0.0_dp
60 REAL(kind=
dp),
DIMENSION(:),
POINTER :: zisomin => null()
61 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: zetprj => null()
62 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: rzetprj => null()
63 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: csprj => null()
64 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: chprj => null()
65 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: local_oce_sphi_h => null(), local_oce_sphi_s => null()
66 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: sphi_h => null(), sphi_s => null()
67 LOGICAL,
DIMENSION(:, :),
POINTER :: isoprj => null()
68 INTEGER :: nsatbas = -1
69 INTEGER :: nsotot = -1
70 INTEGER,
DIMENSION(:),
POINTER :: o2nindex => null()
71 INTEGER,
DIMENSION(:),
POINTER :: n2oindex => null()
100 ALLOCATE (paw_proj_set)
102 NULLIFY (paw_proj_set%nprj)
103 NULLIFY (paw_proj_set%lx)
104 NULLIFY (paw_proj_set%ly)
105 NULLIFY (paw_proj_set%lz)
106 NULLIFY (paw_proj_set%ll)
107 NULLIFY (paw_proj_set%m)
108 NULLIFY (paw_proj_set%first_prj)
109 NULLIFY (paw_proj_set%last_prj)
110 NULLIFY (paw_proj_set%first_prjs)
112 NULLIFY (paw_proj_set%zisomin)
113 NULLIFY (paw_proj_set%zetprj)
114 NULLIFY (paw_proj_set%csprj)
115 NULLIFY (paw_proj_set%chprj)
116 NULLIFY (paw_proj_set%local_oce_sphi_h)
117 NULLIFY (paw_proj_set%local_oce_sphi_s)
118 NULLIFY (paw_proj_set%sphi_h)
119 NULLIFY (paw_proj_set%sphi_s)
120 NULLIFY (paw_proj_set%rzetprj)
122 NULLIFY (paw_proj_set%isoprj)
124 NULLIFY (paw_proj_set%o2nindex)
125 NULLIFY (paw_proj_set%n2oindex)
137 IF (
ASSOCIATED(paw_proj_set))
THEN
139 IF (
ASSOCIATED(paw_proj_set%zisomin))
DEALLOCATE (paw_proj_set%zisomin)
140 IF (
ASSOCIATED(paw_proj_set%nprj))
DEALLOCATE (paw_proj_set%nprj)
141 IF (
ASSOCIATED(paw_proj_set%lx))
DEALLOCATE (paw_proj_set%lx)
142 IF (
ASSOCIATED(paw_proj_set%ly))
DEALLOCATE (paw_proj_set%ly)
143 IF (
ASSOCIATED(paw_proj_set%lz))
DEALLOCATE (paw_proj_set%lz)
144 IF (
ASSOCIATED(paw_proj_set%ll))
DEALLOCATE (paw_proj_set%ll)
145 IF (
ASSOCIATED(paw_proj_set%m))
DEALLOCATE (paw_proj_set%m)
146 IF (
ASSOCIATED(paw_proj_set%first_prj))
DEALLOCATE (paw_proj_set%first_prj)
147 IF (
ASSOCIATED(paw_proj_set%last_prj))
DEALLOCATE (paw_proj_set%last_prj)
148 IF (
ASSOCIATED(paw_proj_set%first_prjs))
DEALLOCATE (paw_proj_set%first_prjs)
149 IF (
ASSOCIATED(paw_proj_set%zetprj))
DEALLOCATE (paw_proj_set%zetprj)
150 IF (
ASSOCIATED(paw_proj_set%csprj))
DEALLOCATE (paw_proj_set%csprj)
151 IF (
ASSOCIATED(paw_proj_set%chprj))
DEALLOCATE (paw_proj_set%chprj)
152 IF (
ASSOCIATED(paw_proj_set%local_oce_sphi_h))
DEALLOCATE (paw_proj_set%local_oce_sphi_h)
153 IF (
ASSOCIATED(paw_proj_set%local_oce_sphi_s))
DEALLOCATE (paw_proj_set%local_oce_sphi_s)
154 IF (
ASSOCIATED(paw_proj_set%sphi_h))
DEALLOCATE (paw_proj_set%sphi_h)
155 IF (
ASSOCIATED(paw_proj_set%sphi_s))
DEALLOCATE (paw_proj_set%sphi_s)
156 IF (
ASSOCIATED(paw_proj_set%isoprj))
DEALLOCATE (paw_proj_set%isoprj)
157 IF (
ASSOCIATED(paw_proj_set%rzetprj))
DEALLOCATE (paw_proj_set%rzetprj)
158 IF (
ASSOCIATED(paw_proj_set%o2nindex))
DEALLOCATE (paw_proj_set%o2nindex)
159 IF (
ASSOCIATED(paw_proj_set%n2oindex))
DEALLOCATE (paw_proj_set%n2oindex)
161 DEALLOCATE (paw_proj_set)
178 SUBROUTINE projectors(paw_proj, basis_1c, orb_basis, rc, qs_control, max_rad_local_type, &
185 REAL(kind=
dp),
INTENT(IN) :: max_rad_local_type
188 REAL(kind=
dp) :: eps_fit, eps_iso, eps_orb, eps_svd, &
191 eps_fit = qs_control%gapw_control%eps_fit
192 eps_iso = qs_control%gapw_control%eps_iso
193 eps_svd = qs_control%gapw_control%eps_svd
194 max_rad_local = qs_control%gapw_control%max_rad_local
195 IF (max_rad_local_type .LT. max_rad_local)
THEN
196 max_rad_local = max_rad_local_type
198 eps_orb = qs_control%eps_pgf_orb
200 CALL build_projector(paw_proj, basis_1c, orb_basis, eps_fit, eps_iso, eps_svd, &
201 rc, eps_orb, max_rad_local, force_env_section)
219 SUBROUTINE build_projector(paw_proj, basis_1c, orb_basis, eps_fit, eps_iso, eps_svd, &
220 rc, eps_orb, max_rad_local, force_env_section)
224 REAL(kind=
dp),
INTENT(IN) :: eps_fit, eps_iso, eps_svd, rc, eps_orb, &
228 CHARACTER(LEN=default_string_length) :: bsname
229 INTEGER :: ic, ico, icomax, icomin, il, info, ip, ipgf, ipp, iprjfirst, iprjs, is, iset, &
230 isgf, isgfmax, isgfmin, ishell, iso, iso_pgf, iso_set, isomin, jp, k, lshell, lwork, lx, &
231 ly, lz, maxco, maxl, maxnprj, maxpgf, maxso, mp, ms, n, ncgauprj, ncgf, ncgfo, nisop, np, &
232 npgfg, ns, nset, nseta, nsgauprj, nsgf, nsgfo, nsox, output_unit
233 INTEGER,
ALLOCATABLE,
DIMENSION(:) :: iwork
234 INTEGER,
DIMENSION(:),
POINTER :: lmax, lmin, npgf, nshell
235 INTEGER,
DIMENSION(:, :),
POINTER :: first_cgf, first_sgf, l, last_cgf, &
237 LOGICAL,
ALLOCATABLE,
DIMENSION(:) :: isoprj
238 REAL(kind=
dp) :: expzet, my_error, prefac, radius, x, &
240 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:) :: s, work_dgesdd
241 REAL(kind=
dp),
ALLOCATABLE,
DIMENSION(:, :) :: u, vt
242 REAL(kind=
dp),
DIMENSION(:),
POINTER :: set_radius, zet, zetp
243 REAL(kind=
dp),
DIMENSION(:, :),
POINTER :: cprj_h, cprj_s, gcc, gcch, smat, sphi, &
245 REAL(kind=
dp),
DIMENSION(:, :, :),
POINTER :: gcca, set_radius2
246 REAL(kind=
dp),
DIMENSION(:, :, :, :),
POINTER :: gcchprj, gccprj
252 NULLIFY (first_cgf, first_sgf, last_cgf, last_sgf, gcc, l, set_radius, set_radius2)
253 NULLIFY (sphi, lmax, lmin, npgf, nshell, zet, zetb, zetp, smat, work, gcca)
255 cpassert(
ASSOCIATED(paw_proj))
256 cpassert(
ASSOCIATED(orb_basis))
257 cpassert(
ASSOCIATED(basis_1c))
260 ncgf=ncgf, nset=nset, nsgf=nsgf, &
261 lmax=lmax, lmin=lmin, npgf=npgf, &
262 nshell=nshell, sphi=sphi, &
263 first_cgf=first_cgf, first_sgf=first_sgf, &
264 l=l, last_cgf=last_cgf, last_sgf=last_sgf, &
265 maxco=maxco, maxso=maxso, maxl=maxl, maxpgf=maxpgf, &
269 cpassert(.NOT.
ASSOCIATED(paw_proj%zisomin))
270 cpassert(.NOT.
ASSOCIATED(paw_proj%nprj))
272 ALLOCATE (paw_proj%zisomin(0:maxl))
273 paw_proj%zisomin(0:maxl) = 0.0_dp
274 ALLOCATE (paw_proj%nprj(0:maxl))
275 paw_proj%nprj(0:maxl) = 0
278 "DFT%PRINT%GAPW%PROJECTORS", extension=
".Log")
280 IF (output_unit > 0)
THEN
281 WRITE (unit=output_unit, fmt=
"(/,T2,A)") &
282 "Projectors for the basis functions of "//trim(bsname)
285 ALLOCATE (set_radius(nset))
288 DO is = 1, nshell(iset)
289 set_radius(iset) = max(set_radius(iset), &
290 exp_radius(l(is, iset), zetb(npgf(iset), iset), &
291 eps_orb, gcca(npgf(iset), is, iset), &
292 rlow=set_radius(iset)))
296 ALLOCATE (set_radius2(maxpgf, 0:maxl, nset))
299 DO lshell = lmin(iset), lmax(iset)
300 DO ip = 1, npgf(iset)
301 set_radius2(ip, lshell, iset) = &
302 exp_radius(lshell, zetb(ip, iset), eps_orb, 1.0_dp)
311 IF (lshell >= lmin(iset) .AND. lshell <= lmax(iset))
THEN
312 DO ip = 1, npgf(iset)
313 IF (set_radius2(ip, lshell, iset) < max_rad_local)
THEN
319 maxnprj = max(maxnprj, np)
320 paw_proj%nprj(lshell) = np
322 cpabort(
"No Projector for lshell found")
327 ALLOCATE (paw_proj%zetprj(maxnprj, 0:maxl))
328 paw_proj%zetprj(1:maxnprj, 0:maxl) = 0.0_dp
329 ALLOCATE (paw_proj%rzetprj(maxnprj, 0:maxl))
330 paw_proj%rzetprj(1:maxnprj, 0:maxl) = 0.0_dp
331 ALLOCATE (paw_proj%isoprj(maxnprj, 0:maxl))
332 paw_proj%isoprj = .false.
333 ALLOCATE (gccprj(maxnprj, maxpgf, 0:maxl, nset))
335 ALLOCATE (gcchprj(maxnprj, maxpgf, 0:maxl, nset))
338 NULLIFY (zet, zetp, gcc, smat, work)
342 np = paw_proj%nprj(lshell)
344 ALLOCATE (isoprj(np))
347 ALLOCATE (zet(np), zetp(np), gcc(np, np), gcch(np, np), smat(np, np), work(np, np))
359 IF (lshell >= lmin(iset) .AND. lshell <= lmax(iset))
THEN
360 DO ip = 1, npgf(iset)
361 IF (set_radius2(ip, lshell, iset) < max_rad_local)
THEN
363 zet(npgfg) = zetb(ip, iset)
370 paw_proj%zisomin(lshell) =
gauss_exponent(lshell, rc, eps_iso, 1.0_dp)
379 IF (zet(ip) == zet(ipp))
THEN
380 CALL cp_abort(__location__, &
381 "Linear dependency in the construction of the GAPW projectors:"// &
382 " different sets of the BASIS SET contain identical exponents"// &
383 " for the same l quantum numbers")
387 IF (zet(ip) >= paw_proj%zisomin(lshell))
THEN
399 IF (np - nisop - 1 > 2)
THEN
400 x = (80.0_dp/zetmin)**(1.0_dp/real(np - nisop - 1,
dp))
404 IF (x > 2.0_dp) x = 2.0_dp
408 IF (.NOT. isoprj(ip))
THEN
424 prefac = 0.5_dp**(lshell + 2)*
rootpi*
dfac(2*lshell + 1)
425 expzet = real(lshell,
dp) + 1.5_dp
431 smat(ip, jp) = prefac/(zetp(ip) + zet(jp))**expzet
436 IF (.NOT. isoprj(jp))
THEN
437 smat(ip, jp) = prefac/(zetp(ip) + zet(jp))**expzet
444 IF (eps_svd .EQ. 0.0_dp)
THEN
447 work = transpose(smat)
449 ALLOCATE (iwork(8*np), s(np), u(np, np), vt(np, np), work_dgesdd(1))
451 CALL dgesdd(
'S', np, np, work, np, s, u, np, vt, np, work_dgesdd, lwork, iwork, info)
452 lwork = int(work_dgesdd(1))
453 DEALLOCATE (work_dgesdd);
ALLOCATE (work_dgesdd(lwork))
454 CALL dgesdd(
'S', np, np, work, np, s, u, np, vt, np, work_dgesdd, lwork, iwork, info)
458 IF (s(k) < eps_svd)
THEN
463 vt(k, :) = vt(k, :)*s(k)
465 CALL dgemm(
'T',
'T', np, np, np, 1.0_dp, vt, np, u, np, 0.0_dp, gcc, np)
466 DEALLOCATE (iwork, s, u, vt, work_dgesdd)
470 gcch(:, :) = gcc(:, :)
480 paw_proj%zetprj(1:np, lshell) = zetp(1:np)
481 paw_proj%isoprj(1:np, lshell) = isoprj(1:np)
485 IF (lshell >= lmin(iset) .AND. lshell <= lmax(iset))
THEN
486 DO ip = 1, npgf(iset)
487 IF (set_radius2(ip, lshell, iset) < max_rad_local)
THEN
489 gccprj(1:np, ip, lshell, iset) = gcc(1:np, npgfg)
490 gcchprj(1:np, ip, lshell, iset) = gcch(1:np, npgfg)
492 gccprj(1:np, ip, lshell, iset) = 0.0_dp
493 gcchprj(1:np, ip, lshell, iset) = 0.0_dp
500 IF (output_unit > 0)
THEN
501 WRITE (unit=output_unit, fmt=
"(/,/,T2,A,I2)") &
502 "Built projector for angular momentum quantum number l= ", lshell
503 WRITE (unit=output_unit, fmt=
"(T2,A,I2)") &
504 "Number of isolated projectors = ", nisop
506 IF (lshell >= lmin(iset) .AND. lshell <= lmax(iset))
THEN
507 WRITE (unit=output_unit, fmt=
"(/,T2,A,I5,/,/,T4,A9,(T13,4f15.6))") &
508 "Set ", iset,
"exp prj: ", &
509 (paw_proj%zetprj(ip, lshell), ip=1, np)
510 DO jp = 1, npgf(iset)
511 WRITE (unit=output_unit, fmt=
"(/,T4,A9,F15.6,/,T4,A9,(t13,4E15.6))") &
512 "exp gto: ", zetb(jp, iset), &
513 "coeff.: ", (gccprj(ip, jp, lshell, iset), ip=1, np)
521 DEALLOCATE (gcc, gcch, zet, zetp, smat, work)
525 "DFT%PRINT%GAPW%PROJECTORS")
528 DEALLOCATE (set_radius)
529 DEALLOCATE (set_radius2)
532 paw_proj%ncgauprj = 0
533 paw_proj%nsgauprj = 0
535 paw_proj%ncgauprj = paw_proj%ncgauprj +
nco(lshell)*paw_proj%nprj(lshell)
536 paw_proj%nsgauprj = paw_proj%nsgauprj +
nso(lshell)*paw_proj%nprj(lshell)
539 ncgauprj = paw_proj%ncgauprj
540 nsgauprj = paw_proj%nsgauprj
550 ALLOCATE (cprj_s(1:nsgauprj, 1:maxso*nset))
551 ALLOCATE (cprj_h(1:nsgauprj, 1:maxso*nset))
558 np = paw_proj%nprj(lshell)
559 paw_proj%first_prj(lshell) = ncgauprj + 1
560 paw_proj%first_prjs(lshell) = nsgauprj + 1
561 paw_proj%last_prj(lshell) = ncgauprj +
nco(lshell)*np
564 ncgauprj = ncgauprj + 1
565 paw_proj%lx(ncgauprj) =
indco(1, ico)
566 paw_proj%ly(ncgauprj) =
indco(2, ico)
567 paw_proj%lz(ncgauprj) =
indco(3, ico)
570 nsgauprj = nsgauprj + 1
571 paw_proj%ll(nsgauprj) =
indso(1, iso)
572 paw_proj%m(nsgauprj) =
indso(2, iso)
580 DO lshell = lmin(iset), lmax(iset)
581 iprjfirst = paw_proj%first_prjs(lshell)
582 np = paw_proj%nprj(lshell)
583 DO ipgf = 1, npgf(iset)
585 DO il = 1,
nso(lshell)
586 iprjs = iprjfirst - 1 + il + (ip - 1)*
nso(lshell)
587 iso =
nsoset(lshell - 1) + 1 + (lshell + paw_proj%m(iprjs))
589 iso = iso + (ipgf - 1)*ns + ms
590 cprj_s(iprjs, iso) = gccprj(ip, ipgf, lshell, iset)
591 cprj_h(iprjs, iso) = gcchprj(ip, ipgf, lshell, iset)
602 nset=nseta, ncgf=ncgfo, nsgf=nsgfo)
604 ALLOCATE (paw_proj%local_oce_sphi_h(maxco, nsgfo))
605 paw_proj%local_oce_sphi_h = 0.0_dp
606 ALLOCATE (paw_proj%sphi_h(maxco, nsgfo))
607 paw_proj%sphi_h = 0.0_dp
609 ALLOCATE (paw_proj%local_oce_sphi_s(maxco, nsgfo))
610 paw_proj%local_oce_sphi_s = 0.0_dp
611 ALLOCATE (paw_proj%sphi_s(maxco, nsgfo))
612 paw_proj%sphi_s = 0.0_dp
617 DO ipgf = 1, npgf(iset)
618 DO ishell = 1, nshell(iset)
619 lshell = l(ishell, iset)
620 icomin =
ncoset(lshell - 1) + 1 + n*(ipgf - 1)
621 icomax =
ncoset(lshell) + n*(ipgf - 1)
622 isgfmin = first_sgf(ishell, iset)
623 isgfmax = last_sgf(ishell, iset)
624 radius =
exp_radius(lshell, basis_1c%zet(ipgf, iset), &
626 DO isgf = isgfmin, isgfmax
627 paw_proj%sphi_h(icomin:icomax, isgf) = &
628 sphi(icomin:icomax, isgf)
629 IF (radius < rc)
THEN
630 paw_proj%sphi_s(icomin:icomax, isgf) = 0.0_dp
632 paw_proj%sphi_s(icomin:icomax, isgf) = &
633 sphi(icomin:icomax, isgf)
644 DO ipgf = 1, npgf(iset)
645 DO ishell = 1, nshell(iset)
646 lshell = l(ishell, iset)
647 icomin =
ncoset(lshell - 1) + 1 + n*(ipgf - 1)
648 icomax =
ncoset(lshell) + n*(ipgf - 1)
649 isgfmin = first_sgf(ishell, iset)
650 isgfmax = last_sgf(ishell, iset)
651 isomin =
nsoset(lshell - 1) + 1 + ns*(ipgf - 1)
652 DO is = 1,
nso(lshell)
653 iso = isomin + is - 1
654 DO ic = 1,
nco(lshell)
655 ico = icomin + ic - 1
659 DO isgf = isgfmin, isgfmax
660 paw_proj%local_oce_sphi_h(iso, isgf) = &
661 paw_proj%local_oce_sphi_h(iso, isgf) + &
662 orbtramat(lshell)%slm_inv(is, ic)*paw_proj%sphi_h(ico, isgf)
663 paw_proj%local_oce_sphi_s(iso, isgf) = &
664 paw_proj%local_oce_sphi_s(iso, isgf) + &
665 orbtramat(lshell)%slm_inv(is, ic)*paw_proj%sphi_s(ico, isgf)
674 ALLOCATE (paw_proj%o2nindex(maxso*nset))
675 ALLOCATE (paw_proj%n2oindex(maxso*nset))
676 paw_proj%o2nindex = 0
677 paw_proj%n2oindex = 0
680 iso_set = (iset - 1)*maxso + 1
682 DO ipgf = 1, npgf(iset)
683 iso_pgf = iso_set + (ipgf - 1)*nsox
684 iso = iso_pgf +
nsoset(lmin(iset) - 1)
685 DO lx = lmin(iset), lmax(iset)
687 paw_proj%n2oindex(ico) = iso
688 paw_proj%o2nindex(iso) = ico
696 paw_proj%nsatbas = mp
697 paw_proj%nsotot = nset*maxso
698 ALLOCATE (paw_proj%csprj(nsgauprj, mp))
699 paw_proj%csprj = 0.0_dp
701 ico = paw_proj%n2oindex(k)
702 paw_proj%csprj(:, k) = cprj_s(:, ico)
704 ALLOCATE (paw_proj%chprj(nsgauprj, mp))
705 paw_proj%chprj = 0.0_dp
707 ico = paw_proj%n2oindex(k)
708 paw_proj%chprj(:, k) = cprj_h(:, ico)
710 DEALLOCATE (cprj_s, cprj_h, gcchprj, gccprj)
712 END SUBROUTINE build_projector
739 first_prj, first_prjs, last_prj, &
740 local_oce_sphi_h, local_oce_sphi_s, &
741 maxl, ncgauprj, nsgauprj, nsatbas, nsotot, nprj, &
742 o2nindex, n2oindex, &
743 rcprj, rzetprj, zisomin, zetprj)
746 REAL(kind=
dp),
DIMENSION(:, :),
OPTIONAL,
POINTER :: csprj, chprj
747 INTEGER,
DIMENSION(:),
OPTIONAL,
POINTER :: first_prj, first_prjs, last_prj
748 REAL(kind=
dp),
DIMENSION(:, :),
OPTIONAL,
POINTER :: local_oce_sphi_h, local_oce_sphi_s
749 INTEGER,
INTENT(OUT),
OPTIONAL :: maxl, ncgauprj, nsgauprj, nsatbas, nsotot
750 INTEGER,
DIMENSION(:),
OPTIONAL,
POINTER :: nprj, o2nindex, n2oindex
751 REAL(kind=
dp),
INTENT(OUT),
OPTIONAL :: rcprj
752 REAL(kind=
dp),
DIMENSION(:, :),
OPTIONAL,
POINTER :: rzetprj
753 REAL(kind=
dp),
DIMENSION(:),
OPTIONAL,
POINTER :: zisomin
754 REAL(kind=
dp),
DIMENSION(:, :),
OPTIONAL,
POINTER :: zetprj
756 IF (
ASSOCIATED(paw_proj_set))
THEN
757 IF (
PRESENT(csprj)) csprj => paw_proj_set%csprj
758 IF (
PRESENT(chprj)) chprj => paw_proj_set%chprj
759 IF (
PRESENT(local_oce_sphi_h)) local_oce_sphi_h => paw_proj_set%local_oce_sphi_h
760 IF (
PRESENT(local_oce_sphi_s)) local_oce_sphi_s => paw_proj_set%local_oce_sphi_s
761 IF (
PRESENT(first_prj)) first_prj => paw_proj_set%first_prj
762 IF (
PRESENT(last_prj)) last_prj => paw_proj_set%last_prj
763 IF (
PRESENT(first_prjs)) first_prjs => paw_proj_set%first_prjs
764 IF (
PRESENT(maxl)) maxl = paw_proj_set%maxl
765 IF (
PRESENT(ncgauprj)) ncgauprj = paw_proj_set%ncgauprj
766 IF (
PRESENT(nsgauprj)) nsgauprj = paw_proj_set%nsgauprj
767 IF (
PRESENT(nsatbas)) nsatbas = paw_proj_set%nsatbas
768 IF (
PRESENT(nsotot)) nsotot = paw_proj_set%nsotot
769 IF (
PRESENT(nprj)) nprj => paw_proj_set%nprj
770 IF (
PRESENT(rcprj)) rcprj = paw_proj_set%rcprj
771 IF (
PRESENT(rzetprj)) rzetprj => paw_proj_set%rzetprj
772 IF (
PRESENT(zisomin)) zisomin => paw_proj_set%zisomin
773 IF (
PRESENT(zetprj)) zetprj => paw_proj_set%zetprj
774 IF (
PRESENT(o2nindex)) o2nindex => paw_proj_set%o2nindex
775 IF (
PRESENT(n2oindex)) n2oindex => paw_proj_set%n2oindex
777 cpabort(
"The pointer paw_proj_set is not associated")
792 REAL(kind=
dp),
DIMENSION(:, :),
OPTIONAL,
POINTER :: rzetprj
793 REAL(kind=
dp),
INTENT(IN),
OPTIONAL :: rcprj
795 IF (
ASSOCIATED(paw_proj_set))
THEN
796 IF (
PRESENT(rzetprj)) paw_proj_set%rzetprj(:, 0:) = rzetprj(:, 0:)
797 IF (
PRESENT(rcprj)) paw_proj_set%rcprj = rcprj
799 cpabort(
"The pointer paw_proj_set is not associated")
static void dgemm(const char transa, const char transb, const int m, const int n, const int k, const double alpha, const double *a, const int lda, const double *b, const int ldb, const double beta, double *c, const int ldc)
Convenient wrapper to hide Fortran nature of dgemm_, swapping a and b.
All kind of helpful little routines.
real(kind=dp) function, public exp_radius(l, alpha, threshold, prefactor, epsabs, epsrel, rlow)
The radius of a primitive Gaussian function for a given threshold is calculated. g(r) = prefactor*r**...
real(kind=dp) function, public gauss_exponent(l, radius, threshold, prefactor)
The exponent of a primitive Gaussian function for a given radius and threshold is calculated.
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)
...
Defines control structures, which contain the parameters and the settings for the DFT-based calculati...
various routines to log and control the output. The idea is that decisions about where to log should ...
type(cp_logger_type) function, pointer, public cp_get_default_logger()
returns the default logger
routines to handle the output, The idea is to remove the decision of wheter to output and what to out...
integer function, public cp_print_key_unit_nr(logger, basis_section, print_key_path, extension, middle_name, local, log_filename, ignore_should_output, file_form, file_position, file_action, file_status, do_backup, on_file, is_new_file, mpi_io, fout)
...
subroutine, public cp_print_key_finished_output(unit_nr, logger, basis_section, print_key_path, local, ignore_should_output, on_file, mpi_io)
should be called after you finish working with a unit obtained with cp_print_key_unit_nr,...
Defines the basic variable types.
integer, parameter, public dp
integer, parameter, public default_string_length
Definition of mathematical constants and functions.
real(kind=dp), dimension(-1:2 *maxfac+1), parameter, public dfac
real(kind=dp), parameter, public rootpi
Collection of simple mathematical functions and subroutines.
Utility routines for the memory handling.
Provides Cartesian and spherical orbital pointers and indices.
integer, dimension(:), allocatable, public nco
integer, dimension(:), allocatable, public nsoset
integer, dimension(:, :), allocatable, public indso
integer, dimension(:), allocatable, public ncoset
integer, dimension(:, :), allocatable, public indco
integer, dimension(:), allocatable, public nso
subroutine, public get_paw_proj_set(paw_proj_set, csprj, chprj, first_prj, first_prjs, last_prj, local_oce_sphi_h, local_oce_sphi_s, maxl, ncgauprj, nsgauprj, nsatbas, nsotot, nprj, o2nindex, n2oindex, rcprj, rzetprj, zisomin, zetprj)
Get informations about a paw projectors set.
subroutine, public allocate_paw_proj_set(paw_proj_set)
Allocate projector type for GAPW.
subroutine, public projectors(paw_proj, basis_1c, orb_basis, rc, qs_control, max_rad_local_type, force_env_section)
Initialize the projector-type set data set.
subroutine, public deallocate_paw_proj_set(paw_proj_set)
Deallocate a projector-type set data set.
subroutine, public set_paw_proj_set(paw_proj_set, rzetprj, rcprj)
Set informations about a paw projectors set.
type of a logger, at the moment it contains just a print level starting at which level it should be l...