24#include "./base/base_uses.f90"
30 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'qs_dftb_utils'
33 INTEGER,
PARAMETER :: max_inter = 5
35 INTEGER,
PARAMETER :: max_extra = 9
37 REAL(dp),
PARAMETER :: slako_d0 = 1._dp
39 INTEGER,
DIMENSION(0:3, 0:3, 0:3, 0:3, 0:3)::
iptr
41 REAL(dp),
PARAMETER :: rtiny = 1.e-10_dp
43 REAL(dp),
PARAMETER :: eta_mm = 0.47_dp
45 REAL(dp),
PARAMETER :: ddrmm = 0.0001_dp
65 IF (
ASSOCIATED(dftb_parameter))
THEN
69 ALLOCATE (dftb_parameter)
71 dftb_parameter%defined = .false.
72 dftb_parameter%name =
""
73 dftb_parameter%typ =
"NONE"
75 dftb_parameter%zeff = -1.0_dp
76 dftb_parameter%natorb = 0
77 dftb_parameter%lmax = -1
78 dftb_parameter%skself = 0.0_dp
79 dftb_parameter%occupation = 0.0_dp
80 dftb_parameter%eta = 0.0_dp
81 dftb_parameter%energy = 0.0_dp
82 dftb_parameter%xi = 0.0_dp
83 dftb_parameter%di = 0.0_dp
84 dftb_parameter%rcdisp = 0.0_dp
85 dftb_parameter%dudq = 0.0_dp
97 cpassert(
ASSOCIATED(dftb_parameter))
98 DEALLOCATE (dftb_parameter)
123 lmax, skself, occupation, eta, energy, cutoff, xi, di, rcdisp, dudq)
126 CHARACTER(LEN=default_string_length), &
127 INTENT(OUT),
OPTIONAL :: name, typ
128 LOGICAL,
INTENT(OUT),
OPTIONAL :: defined
129 INTEGER,
INTENT(OUT),
OPTIONAL :: z
130 REAL(kind=dp),
INTENT(OUT),
OPTIONAL :: zeff
131 INTEGER,
INTENT(OUT),
OPTIONAL :: natorb, lmax
132 REAL(kind=dp),
DIMENSION(0:3),
OPTIONAL :: skself, occupation, eta
133 REAL(kind=dp),
OPTIONAL :: energy, cutoff, xi, di, rcdisp, dudq
135 cpassert(
ASSOCIATED(dftb_parameter))
137 IF (
PRESENT(name)) name = dftb_parameter%name
138 IF (
PRESENT(typ)) typ = dftb_parameter%typ
139 IF (
PRESENT(defined)) defined = dftb_parameter%defined
140 IF (
PRESENT(z)) z = dftb_parameter%z
141 IF (
PRESENT(zeff)) zeff = dftb_parameter%zeff
142 IF (
PRESENT(natorb)) natorb = dftb_parameter%natorb
143 IF (
PRESENT(lmax)) lmax = dftb_parameter%lmax
144 IF (
PRESENT(skself)) skself = dftb_parameter%skself
145 IF (
PRESENT(eta)) eta = dftb_parameter%eta
146 IF (
PRESENT(energy)) energy = dftb_parameter%energy
147 IF (
PRESENT(cutoff)) cutoff = dftb_parameter%cutoff
148 IF (
PRESENT(occupation)) occupation = dftb_parameter%occupation
149 IF (
PRESENT(xi)) xi = dftb_parameter%xi
150 IF (
PRESENT(di)) di = dftb_parameter%di
151 IF (
PRESENT(rcdisp)) rcdisp = dftb_parameter%rcdisp
152 IF (
PRESENT(dudq)) dudq = dftb_parameter%dudq
177 lmax, skself, occupation, eta, energy, cutoff, xi, di, rcdisp, dudq)
180 CHARACTER(LEN=default_string_length),
INTENT(IN), &
181 OPTIONAL :: name, typ
182 LOGICAL,
INTENT(IN),
OPTIONAL :: defined
183 INTEGER,
INTENT(IN),
OPTIONAL :: z
184 REAL(kind=dp),
INTENT(IN),
OPTIONAL :: zeff
185 INTEGER,
INTENT(IN),
OPTIONAL :: natorb, lmax
186 REAL(kind=dp),
DIMENSION(0:3),
OPTIONAL :: skself, occupation, eta
187 REAL(kind=dp),
OPTIONAL :: energy, cutoff, xi, di, rcdisp, dudq
189 cpassert(
ASSOCIATED(dftb_parameter))
191 IF (
PRESENT(name)) dftb_parameter%name = name
192 IF (
PRESENT(typ)) dftb_parameter%typ = typ
193 IF (
PRESENT(defined)) dftb_parameter%defined = defined
194 IF (
PRESENT(z)) dftb_parameter%z = z
195 IF (
PRESENT(zeff)) dftb_parameter%zeff = zeff
196 IF (
PRESENT(natorb)) dftb_parameter%natorb = natorb
197 IF (
PRESENT(lmax)) dftb_parameter%lmax = lmax
198 IF (
PRESENT(skself)) dftb_parameter%skself = skself
199 IF (
PRESENT(eta)) dftb_parameter%eta = eta
200 IF (
PRESENT(occupation)) dftb_parameter%occupation = occupation
201 IF (
PRESENT(energy)) dftb_parameter%energy = energy
202 IF (
PRESENT(cutoff)) dftb_parameter%cutoff = cutoff
203 IF (
PRESENT(xi)) dftb_parameter%xi = xi
204 IF (
PRESENT(di)) dftb_parameter%di = di
205 IF (
PRESENT(rcdisp)) dftb_parameter%rcdisp = rcdisp
206 IF (
PRESENT(dudq)) dftb_parameter%dudq = dudq
220 CHARACTER(LEN=default_string_length) :: name, typ
221 INTEGER :: lmax, natorb, output_unit, z
228 IF (
ASSOCIATED(dftb_parameter) .AND. &
230 "PRINT%KINDS/POTENTIAL"),
cp_p_file))
THEN
235 IF (output_unit > 0)
THEN
237 z=z, zeff=zeff, natorb=natorb, lmax=lmax)
239 WRITE (unit=output_unit, fmt=
"(/,A,T67,A14)") &
240 " DFTB parameters: ", trim(name)
242 WRITE (unit=output_unit, fmt=
"(T16,A,T71,F10.2)") &
243 "Effective core charge:", zeff
244 WRITE (unit=output_unit, fmt=
"(T16,A,T71,I10)") &
245 "Number of orbitals:", natorb
247 WRITE (unit=output_unit, fmt=
"(T55,A)") &
248 "Parameters are not defined"
273 llm, lmaxi, lmaxj, irow, iatom)
274 REAL(kind=dp),
DIMENSION(:, :),
POINTER :: block, smatij, smatji
275 REAL(kind=dp),
DIMENSION(3) :: rij
276 INTEGER :: ngrd, ngrdcut
277 REAL(kind=dp) :: dgrd
278 INTEGER :: llm, lmaxi, lmaxj, irow, iatom
281 REAL(kind=dp),
DIMENSION(20) :: skabij, skabji
283 dr = sqrt(sum(rij(:)**2))
284 CALL getskz(smatij, skabij, dr, ngrd, ngrdcut, dgrd, llm)
285 CALL getskz(smatji, skabji, dr, ngrd, ngrdcut, dgrd, llm)
286 IF (irow == iatom)
THEN
287 CALL turnsk(block, skabji, skabij, rij, dr, lmaxi, lmaxj)
289 CALL turnsk(block, skabij, skabji, -rij, dr, lmaxj, lmaxi)
305 SUBROUTINE getskz(slakotab, skpar, dx, ngrd, ngrdcut, dgrd, llm)
306 REAL(dp),
INTENT(in) :: slakotab(:, :), dx
307 INTEGER,
INTENT(in) :: ngrd, ngrdcut
308 REAL(dp),
INTENT(in) :: dgrd
309 INTEGER,
INTENT(in) :: llm
310 REAL(dp),
INTENT(out) :: skpar(llm)
322 IF (clgp > ngrdcut)
RETURN
328 IF (clgp > ngrd)
THEN
332 CALL extrapol(slakotab, skpar, dx, ngrd, dgrd, llm)
337 CALL interpol(slakotab, skpar, dx, ngrd, dgrd, llm, clgp)
339 END SUBROUTINE getskz
351 SUBROUTINE interpol(slakotab, skpar, dx, ngrd, dgrd, llm, clgp)
352 REAL(dp),
INTENT(in) :: slakotab(:, :), dx
353 INTEGER,
INTENT(in) :: ngrd
354 REAL(dp),
INTENT(in) :: dgrd
355 INTEGER,
INTENT(in) :: llm
356 REAL(dp),
INTENT(out) :: skpar(llm)
357 INTEGER,
INTENT(in) :: clgp
359 INTEGER :: fgpm, k, l, lgpm
360 REAL(dp) :: error, xa(max_inter), ya(max_inter)
362 lgpm = min(clgp + int(max_inter/2.0), ngrd)
363 fgpm = lgpm - max_inter + 1
364 DO k = 0, max_inter - 1
365 xa(k + 1) = (fgpm + k)*dgrd
374 ya(1:max_inter) = slakotab(fgpm:lgpm, l)
375 CALL polint(xa, ya, max_inter, dx, skpar(l), error)
377 END SUBROUTINE interpol
388 SUBROUTINE extrapol(slakotab, skpar, dx, ngrd, dgrd, llm)
389 REAL(dp),
INTENT(in) :: slakotab(:, :), dx
390 INTEGER,
INTENT(in) :: ngrd
391 REAL(dp),
INTENT(in) :: dgrd
392 INTEGER,
INTENT(in) :: llm
393 REAL(dp),
INTENT(out) :: skpar(llm)
395 INTEGER :: fgp, k, l, lgp, ntable, nzero
396 REAL(dp) :: error, xa(max_extra), ya(max_extra)
399 ntable = max_extra - nzero
404 xa(k) = (ngrd - (max_extra - 3) + k)*dgrd
407 xa(ntable + k) = (ngrd + k - 1)*dgrd + slako_d0
417 fgp = ngrd + 1 - (max_extra - 3)
419 ya(1:max_extra - 3) = slakotab(fgp:lgp, l)
420 CALL polint(xa, ya, max_extra, dx, skpar(l), error)
422 END SUBROUTINE extrapol
447 SUBROUTINE turnsk(mat, skab1, skab2, dxv, dx, lmaxa, lmaxb)
448 REAL(dp),
INTENT(inout) :: mat(:, :)
449 REAL(dp),
INTENT(in) :: skab1(:), skab2(:), dxv(3), dx
450 INTEGER,
INTENT(in) :: lmaxa, lmaxb
452 INTEGER :: lmaxab, minlmaxab
453 REAL(dp) :: rinv, rr(6), rr2(6)
455 lmaxab = max(lmaxa, lmaxb)
457 IF (lmaxab > 2) cpabort(
'lmax=2')
458 minlmaxab = min(lmaxa, lmaxb)
462 CALL skss(skab1, mat)
464 IF (lmaxab <= 0)
RETURN
466 rr2(1:3) = dxv(1:3)**2
470 rr(1:3) = rr(1:3)*rinv
472 rr2(1:3) = rr2(1:3)*rinv**2
477 IF (minlmaxab >= 1)
THEN
478 CALL skpp(skab1, mat,
iptr(:, :, :, lmaxa, lmaxb))
479 CALL sksp(skab2, mat,
iptr(:, :, :, lmaxa, lmaxb), .true.)
480 CALL sksp(skab1, mat,
iptr(:, :, :, lmaxa, lmaxb), .false.)
483 CALL sksp(skab2, mat,
iptr(:, :, :, lmaxa, lmaxb), .true.)
485 CALL sksp(skab1, mat,
iptr(:, :, :, lmaxa, lmaxb), .false.)
491 IF (lmaxab <= 1)
RETURN
495 IF (minlmaxab == 2)
THEN
499 CALL skdd(skab1, mat,
iptr(:, :, :, lmaxa, lmaxb))
500 CALL sksd(skab2, mat,
iptr(:, :, :, lmaxa, lmaxb), .true.)
501 CALL sksd(skab1, mat,
iptr(:, :, :, lmaxa, lmaxb), .false.)
502 CALL skpd(skab2, mat,
iptr(:, :, :, lmaxa, lmaxb), .true.)
503 CALL skpd(skab1, mat,
iptr(:, :, :, lmaxa, lmaxb), .false.)
512 CALL sksd(skab2, mat,
iptr(:, :, :, lmaxa, lmaxb), .true.)
513 ELSE IF (lmaxa == 1)
THEN
517 CALL sksd(skab2, mat,
iptr(:, :, :, lmaxa, lmaxb), .true.)
518 CALL skpd(skab2, mat,
iptr(:, :, :, lmaxa, lmaxb), .true.)
527 CALL sksd(skab1, mat,
iptr(:, :, :, lmaxa, lmaxb), .false.)
532 CALL sksd(skab1, mat,
iptr(:, :, :, lmaxa, lmaxb), .false.)
533 CALL skpd(skab1, mat,
iptr(:, :, :, lmaxa, lmaxb), .false.)
552 SUBROUTINE skss(skpar, mat)
553 REAL(dp),
INTENT(in) :: skpar(:)
554 REAL(dp),
INTENT(inout) :: mat(:, :)
556 mat(1, 1) = mat(1, 1) + skpar(1)
568 SUBROUTINE sksp(skpar, mat, ind, transposed)
569 REAL(dp),
INTENT(in) :: skpar(:)
570 REAL(dp),
INTENT(inout) :: mat(:, :)
571 INTEGER,
INTENT(in) :: ind(0:, 0:, 0:)
572 LOGICAL,
INTENT(in) :: transposed
577 skp = skpar(ind(1, 0, 0))
580 mat(1, l + 1) = mat(1, l + 1) + rr(l)*skp
584 mat(l + 1, 1) = mat(l + 1, 1) - rr(l)*skp
596 SUBROUTINE skpp(skpar, mat, ind)
597 REAL(dp),
INTENT(in) :: skpar(:)
598 REAL(dp),
INTENT(inout) :: mat(:, :)
599 INTEGER,
INTENT(in) :: ind(0:, 0:, 0:)
601 INTEGER :: ii, ir, is, k, l
602 REAL(dp) :: epp(6), matel(6), skppp, skpps
606 epp(l + 3) = rr(l)*rr(l + 1)
608 skppp = skpar(ind(1, 1, 1))
609 skpps = skpar(ind(1, 1, 0))
612 matel(l) = epp(l)*skpps + (1._dp - epp(l))*skppp
615 matel(l) = epp(l)*(skpps - skppp)
621 k = 3*ii - (ii*(ii - 1))/2 + is
622 mat(is + 1, ir + 1) = mat(is + 1, ir + 1) + matel(k)
623 mat(ir + 1, is + 1) = mat(ir + 1, is + 1) + matel(k)
625 mat(ir + 1, ir + 1) = mat(ir + 1, ir + 1) + matel(ir)
636 SUBROUTINE sksd(skpar, mat, ind, transposed)
637 REAL(dp),
INTENT(in) :: skpar(:)
638 REAL(dp),
INTENT(inout) :: mat(:, :)
639 INTEGER,
INTENT(in) :: ind(0:, 0:, 0:)
640 LOGICAL,
INTENT(in) :: transposed
643 REAL(dp) :: d4, d5, es(5), r3, sksds
645 sksds = skpar(ind(2, 0, 0))
647 d4 = rr2(3) - 0.5_dp*(rr2(1) + rr2(2))
651 es(l) = r3*rr(l)*rr(l + 1)
658 mat(1, l + 4) = mat(1, l + 4) + es(l)*sksds
662 mat(l + 4, 1) = mat(l + 4, 1) + es(l)*sksds
674 SUBROUTINE skpd(skpar, mat, ind, transposed)
675 REAL(dp),
INTENT(in) :: skpar(:)
676 REAL(dp),
INTENT(inout) :: mat(:, :)
677 INTEGER,
INTENT(in) :: ind(0:, 0:, 0:)
678 LOGICAL,
INTENT(in) :: transposed
680 INTEGER :: ir, is, k, l, m
681 REAL(dp) :: d3, d4, d5, d6, dm(15), epd(13, 2), r3, &
686 d4 = rr2(3) - 0.5_dp*d3
688 d6 = rr(1)*rr(2)*rr(3)
690 epd(l, 1) = r3*rr2(l)*rr(l + 1)
691 epd(l, 2) = rr(l + 1)*(1.0_dp - 2._dp*rr2(l))
692 epd(l + 4, 1) = r3*rr2(l)*rr(l + 2)
693 epd(l + 4, 2) = rr(l + 2)*(1.0_dp - 2*rr2(l))
694 epd(l + 7, 1) = 0.5_dp*r3*rr(l)*d5
695 epd(l + 10, 1) = rr(l)*d4
699 epd(4, 2) = -2._dp*d6
700 epd(8, 2) = rr(1)*(1.0_dp - d5)
701 epd(9, 2) = -rr(2)*(1.0_dp + d5)
702 epd(10, 2) = -rr(3)*d5
703 epd(11, 2) = -r3*rr(1)*rr2(3)
704 epd(12, 2) = -r3*rr(2)*rr2(3)
705 epd(13, 2) = r3*rr(3)*d3
710 sktmp = skpar(ind(2, 1, m - 1))
711 dm(1) = dm(1) + epd(1, m)*sktmp
712 dm(2) = dm(2) + epd(6, m)*sktmp
713 dm(3) = dm(3) + epd(4, m)*sktmp
714 dm(5) = dm(5) + epd(2, m)*sktmp
715 dm(6) = dm(6) + epd(7, m)*sktmp
716 dm(7) = dm(7) + epd(5, m)*sktmp
717 dm(9) = dm(9) + epd(3, m)*sktmp
719 dm(l + 2) = dm(l + 2) + epd(l, m)*sktmp
730 mat(is + 1, ir + 4) = mat(is + 1, ir + 4) + dm(k)
737 mat(ir + 4, is + 1) = mat(ir + 4, is + 1) - dm(k)
750 SUBROUTINE skdd(skpar, mat, ind)
751 REAL(dp),
INTENT(in) :: skpar(:)
752 REAL(dp),
INTENT(inout) :: mat(:, :)
753 INTEGER,
INTENT(in) :: ind(0:, 0:, 0:)
755 INTEGER :: ii, ir, is, k, l, m
756 REAL(dp) :: d3, d4, d5, dd(3), dm(15), e(15, 3), r3
760 d4 = rr2(3) - 0.5_dp*d3
763 e(l, 1) = rr2(l)*rr2(l + 1)
764 e(l, 2) = rr2(l) + rr2(l + 1) - 4._dp*e(l, 1)
765 e(l, 3) = rr2(l + 2) + e(l, 1)
766 e(l, 1) = 3._dp*e(l, 1)
769 e(4, 2) = d3 - e(4, 1)
770 e(4, 3) = rr2(3) + 0.25_dp*e(4, 1)
771 e(4, 1) = 0.75_dp*e(4, 1)
773 e(5, 2) = 3._dp*rr2(3)*d3
774 e(5, 3) = 0.75_dp*d3**2
779 e(l + 5, 1) = 3._dp*rr2(l + 1)*dd(l)
780 e(l + 5, 2) = dd(l)*(1._dp - 4._dp*rr2(l + 1))
781 e(l + 5, 3) = dd(l)*(rr2(l + 1) - 1._dp)
783 e(8, 1) = dd(1)*d5*1.5_dp
784 e(8, 2) = dd(1)*(1.0_dp - 2.0_dp*d5)
785 e(8, 3) = dd(1)*(0.5_dp*d5 - 1.0_dp)
786 e(9, 1) = d5*0.5_dp*d4*r3
787 e(9, 2) = -d5*rr2(3)*r3
788 e(9, 3) = d5*0.25_dp*(1.0_dp + rr2(3))*r3
789 e(10, 1) = rr2(1)*dd(3)*3.0_dp
790 e(10, 2) = (0.25_dp - rr2(1))*dd(3)*4.0_dp
791 e(10, 3) = dd(3)*(rr2(1) - 1.0_dp)
792 e(11, 1) = 1.5_dp*dd(3)*d5
793 e(11, 2) = -dd(3)*(1.0_dp + 2.0_dp*d5)
794 e(11, 3) = dd(3)*(1.0_dp + 0.5_dp*d5)
795 e(13, 3) = 0.5_dp*d5*dd(2)
796 e(13, 2) = -2.0_dp*dd(2)*d5
797 e(13, 1) = e(13, 3)*3.0_dp
798 e(12, 1) = d4*dd(1)*r3
799 e(14, 1) = d4*dd(3)*r3
800 e(15, 1) = d4*dd(2)*r3
801 e(15, 2) = -2.0_dp*r3*dd(2)*rr2(3)
802 e(15, 3) = 0.5_dp*r3*(1.0_dp + rr2(3))*dd(2)
803 e(14, 2) = r3*dd(3)*(d3 - rr2(3))
804 e(14, 3) = -r3*0.5_dp*dd(3)*d3
805 e(12, 2) = r3*dd(1)*(d3 - rr2(3))
806 e(12, 3) = -r3*0.5_dp*dd(1)*d3
811 dm(l) = dm(l) + e(l, m)*skpar(ind(2, 2, m - 1))
818 k = 5*ii - (ii*(ii - 1))/2 + is
819 mat(ir + 4, is + 4) = mat(ir + 4, is + 4) + dm(k)
820 mat(is + 4, ir + 4) = mat(is + 4, ir + 4) + dm(k)
822 mat(ir + 4, ir + 4) = mat(ir + 4, ir + 4) + dm(ir)
826 END SUBROUTINE turnsk
837 SUBROUTINE polint(xa, ya, n, x, y, dy)
838 INTEGER,
INTENT(in) :: n
839 REAL(dp),
INTENT(in) :: ya(n), xa(n), x
840 REAL(dp),
INTENT(out) :: y, dy
843 REAL(dp) :: c(n), d(n), den, dif, dift, ho, hp, w
852 dift = abs(x - xa(i))
869 cpassert(den /= 0.0_dp)
874 IF (2*ns < n - m)
THEN
884 END SUBROUTINE polint
903 n_urpoly, urep, spdim, s_cut, srep, spxr, scoeff, surr, dograd)
905 REAL(dp),
INTENT(in) :: rv(3), r
906 REAL(dp),
INTENT(inout) :: erep, derep(3)
907 INTEGER,
INTENT(in) :: n_urpoly
908 REAL(dp),
INTENT(in) :: urep(:)
909 INTEGER,
INTENT(in) :: spdim
910 REAL(dp),
INTENT(in) :: s_cut, srep(3)
911 REAL(dp),
POINTER :: spxr(:, :), scoeff(:, :)
912 REAL(dp),
INTENT(in) :: surr(2)
913 LOGICAL,
INTENT(in) :: dograd
915 INTEGER :: ic, isp, jsp, nsp
920 IF (n_urpoly > 0)
THEN
925 IF (rz <= rtiny)
RETURN
927 erep = erep + urep(ic)*rz**(ic)
931 de_z = de_z - ic*urep(ic)*rz**(ic - 1)
934 ELSE IF (spdim > 0)
THEN
947 IF (r > s_cut)
RETURN
949 IF (r < spxr(1, 1))
THEN
951 erep = erep + exp(-srep(1)*r + srep(2)) + srep(3)
952 IF (dograd) de_z = de_z - srep(1)*exp(-srep(1)*r + srep(2))
957 ispg:
DO isp = 1, spdim
958 IF (r < spxr(isp, 1)) cycle ispg
959 IF (r >= spxr(isp, 2)) cycle ispg
961 rz = r - spxr(isp, 1)
962 IF (isp /= spdim)
THEN
965 erep = erep + scoeff(isp, jsp + 1)*rz**(jsp)
969 de_z = de_z + jsp*scoeff(isp, jsp + 1)*rz**(jsp - 1)
976 erep = erep + scoeff(isp, jsp + 1)*rz**(jsp)
978 erep = erep + surr(jsp - 3)*rz**(jsp)
984 de_z = de_z + jsp*scoeff(isp, jsp + 1)*rz**(jsp - 1)
986 de_z = de_z + jsp*surr(jsp - 3)*rz**(jsp - 1)
997 IF (r > 1.e-12_dp) derep(1:3) = (de_z/r)*rv(1:3)
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,...
integer, parameter, public cp_p_file
integer function, public cp_print_key_should_output(iteration_info, basis_section, print_key_path, used_print_key, first_time)
returns what should be done with the given property if btest(res,cp_p_store) then the property should...
Defines the basic variable types.
integer, parameter, public dp
integer, parameter, public default_string_length
Definition of the DFTB parameter types.
Working with the DFTB parameter types.
subroutine, public deallocate_dftb_atom_param(dftb_parameter)
...
subroutine, public urep_egr(rv, r, erep, derep, n_urpoly, urep, spdim, s_cut, srep, spxr, scoeff, surr, dograd)
...
subroutine, public set_dftb_atom_param(dftb_parameter, name, typ, defined, z, zeff, natorb, lmax, skself, occupation, eta, energy, cutoff, xi, di, rcdisp, dudq)
...
subroutine, public compute_block_sk(block, smatij, smatji, rij, ngrd, ngrdcut, dgrd, llm, lmaxi, lmaxj, irow, iatom)
...
subroutine, public write_dftb_atom_param(dftb_parameter, subsys_section)
...
integer, dimension(0:3, 0:3, 0:3, 0:3, 0:3), public iptr
subroutine, public get_dftb_atom_param(dftb_parameter, name, typ, defined, z, zeff, natorb, lmax, skself, occupation, eta, energy, cutoff, xi, di, rcdisp, dudq)
...
subroutine, public allocate_dftb_atom_param(dftb_parameter)
...
type of a logger, at the moment it contains just a print level starting at which level it should be l...