41 semi_empirical_mpole_p_type
45 #include "./base/base_uses.f90"
52 CHARACTER(len=*),
PARAMETER,
PRIVATE :: moduleN =
'semi_empirical_types'
57 TYPE semi_empirical_type
60 INTEGER :: core_size, atm_int_size
61 CHARACTER(LEN=default_string_length) :: name
62 LOGICAL :: defined, dorb, extended_basis_set
63 LOGICAL :: p_orbitals_on_h
67 REAL(KIND=
dp),
DIMENSION(:),
POINTER :: beta
68 REAL(KIND=
dp),
DIMENSION(:),
POINTER :: sto_exponents
69 REAL(KIND=
dp),
DIMENSION(:),
POINTER :: zn
70 TYPE(sto_basis_set_type),
POINTER :: basis
72 REAL(KIND=
dp) :: eheat
73 REAL(KIND=
dp) :: uss, upp, udd, uff
75 REAL(KIND=
dp) :: eisol
76 REAL(KIND=
dp) :: ass, asp, app, de, acoul
77 REAL(KIND=
dp) :: gss, gsp, gpp, gp2
78 REAL(KIND=
dp) :: gsd, gpd, gdd
80 REAL(KIND=
dp) :: dd, qq, am, ad, aq
81 REAL(KIND=
dp),
DIMENSION(2) :: pre, d
82 REAL(KIND=
dp),
DIMENSION(4) :: fn1, fn2, fn3
83 REAL(KIND=
dp),
DIMENSION(4, 4) :: bfn1, bfn2, bfn3
84 REAL(KIND=
dp) :: f0dd, f2dd, f4dd, f0sd, f0pd, f2pd, &
86 REAL(KIND=
dp),
DIMENSION(9) :: ko
87 REAL(KIND=
dp),
DIMENSION(6) :: cs
88 REAL(KIND=
dp),
DIMENSION(52) :: onec2el
90 REAL(KIND=
dp),
DIMENSION(0:115) :: xab
91 REAL(KIND=
dp),
DIMENSION(0:115) :: aab
92 REAL(KIND=
dp) :: a, b, c, rho
94 REAL(KIND=
dp),
DIMENSION(:, :), &
96 TYPE(semi_empirical_mpole_p_type), &
97 POINTER,
DIMENSION(:) :: w_mpole
99 TYPE(semi_empirical_expns3_p_type), &
100 POINTER,
DIMENSION(:) :: expns3_int
101 END TYPE semi_empirical_type
103 TYPE semi_empirical_p_type
104 TYPE(semi_empirical_type),
POINTER :: se_param
105 END TYPE semi_empirical_p_type
113 REAL(KIND=
dp),
DIMENSION(3, 3) :: sp
114 REAL(KIND=
dp),
DIMENSION(5, 5) :: sd
115 REAL(KIND=
dp),
DIMENSION(6, 3, 3) :: pp
116 REAL(KIND=
dp),
DIMENSION(15, 5, 3) :: pd
117 REAL(KIND=
dp),
DIMENSION(15, 5, 5) :: dd
119 REAL(KIND=
dp),
DIMENSION(3, 3, 3) :: sp_d
120 REAL(KIND=
dp),
DIMENSION(3, 5, 5) :: sd_d
121 REAL(KIND=
dp),
DIMENSION(3, 6, 3, 3) :: pp_d
122 REAL(KIND=
dp),
DIMENSION(3, 15, 5, 3) :: pd_d
123 REAL(KIND=
dp),
DIMENSION(3, 15, 5, 5) :: dd_d
131 REAL(KIND=
dp) :: alpha
132 TYPE(dg_type),
POINTER :: dg
133 TYPE(pw_pool_type),
POINTER :: pw_pool
134 END TYPE ewald_gks_type
136 TYPE se_int_control_type
137 LOGICAL :: shortrange
138 LOGICAL :: do_ewald_r3
139 LOGICAL :: do_ewald_gks
140 LOGICAL :: pc_coulomb_int
141 INTEGER :: integral_screening
142 INTEGER :: max_multipole
143 TYPE(ewald_gks_type) :: ewald_gks
144 END TYPE se_int_control_type
150 TYPE se_int_screen_type
151 REAL(KIND=
dp) :: ft, dft
152 END TYPE se_int_screen_type
158 TYPE(taper_type),
POINTER :: taper
159 TYPE(taper_type),
POINTER :: taper_cou
160 TYPE(taper_type),
POINTER :: taper_exc
161 TYPE(taper_type),
POINTER :: taper_lrc
163 TYPE(taper_type),
POINTER :: taper_add
164 END TYPE se_taper_type
166 PUBLIC :: semi_empirical_type, &
167 semi_empirical_p_type, &
175 se_int_control_type, &
177 se_int_screen_type, &
189 TYPE(semi_empirical_type),
POINTER :: sep
191 cpassert(.NOT.
ASSOCIATED(sep))
193 ALLOCATE (sep%beta(0:3))
194 ALLOCATE (sep%sto_exponents(0:3))
195 ALLOCATE (sep%zn(0:3))
198 NULLIFY (sep%w_mpole)
199 NULLIFY (sep%expns3_int)
200 CALL zero_se_param(sep)
210 TYPE(semi_empirical_type),
POINTER :: sep
214 IF (
ASSOCIATED(sep))
THEN
217 IF (
ASSOCIATED(sep%beta))
THEN
218 DEALLOCATE (sep%beta)
220 IF (
ASSOCIATED(sep%sto_exponents))
THEN
221 DEALLOCATE (sep%sto_exponents)
223 IF (
ASSOCIATED(sep%zn))
THEN
226 IF (
ASSOCIATED(sep%w))
THEN
229 IF (
ASSOCIATED(sep%expns3_int))
THEN
230 DO i = 1,
SIZE(sep%expns3_int)
233 DEALLOCATE (sep%expns3_int)
244 SUBROUTINE zero_se_param(sep)
245 TYPE(semi_empirical_type),
POINTER :: sep
247 cpassert(
ASSOCIATED(sep))
248 sep%defined = .false.
250 sep%extended_basis_set = .false.
251 sep%p_orbitals_on_h = .false.
254 sep%core_size = huge(0)
255 sep%atm_int_size = huge(0)
257 sep%zeff = huge(0.0_dp)
260 sep%eheat = huge(0.0_dp)
263 sep%sto_exponents = 0.0_dp
322 END SUBROUTINE zero_se_param
360 SUBROUTINE get_se_param(sep, name, typ, defined, z, zeff, natorb, eheat, &
361 beta, sto_exponents, uss, upp, udd, uff, alp, eisol, gss, gsp, gpp, gp2, &
362 acoul, nr, de, ass, asp, app, hsp, gsd, gpd, gdd, ppddg, dpddg, ngauss)
364 TYPE(semi_empirical_type),
POINTER :: sep
365 CHARACTER(LEN=default_string_length), &
366 INTENT(OUT),
OPTIONAL :: name
367 INTEGER,
INTENT(OUT),
OPTIONAL :: typ
368 LOGICAL,
INTENT(OUT),
OPTIONAL :: defined
369 INTEGER,
INTENT(OUT),
OPTIONAL :: z
370 REAL(kind=
dp),
INTENT(OUT),
OPTIONAL :: zeff
371 INTEGER,
INTENT(OUT),
OPTIONAL :: natorb
372 REAL(kind=
dp),
OPTIONAL :: eheat
373 REAL(kind=
dp),
DIMENSION(:),
OPTIONAL,
POINTER :: beta, sto_exponents
374 REAL(kind=
dp),
OPTIONAL :: uss, upp, udd, uff, alp, eisol, gss, &
376 INTEGER,
INTENT(OUT),
OPTIONAL :: nr
377 REAL(kind=
dp),
OPTIONAL :: de, ass, asp, app, hsp, gsd, gpd, gdd
378 REAL(kind=
dp),
DIMENSION(2),
OPTIONAL :: ppddg, dpddg
379 INTEGER,
INTENT(OUT),
OPTIONAL :: ngauss
381 IF (
ASSOCIATED(sep))
THEN
382 IF (
PRESENT(name)) name = sep%name
383 IF (
PRESENT(typ)) typ = sep%typ
384 IF (
PRESENT(defined)) defined = sep%defined
385 IF (
PRESENT(z)) z = sep%z
386 IF (
PRESENT(zeff)) zeff = sep%zeff
387 IF (
PRESENT(natorb)) natorb = sep%natorb
388 IF (
PRESENT(eheat)) eheat = sep%eheat
389 IF (
PRESENT(beta)) beta => sep%beta
390 IF (
PRESENT(sto_exponents)) sto_exponents => sep%sto_exponents
391 IF (
PRESENT(ngauss)) ngauss = sep%ngauss
392 IF (
PRESENT(uss)) uss = sep%uss
393 IF (
PRESENT(upp)) upp = sep%upp
394 IF (
PRESENT(udd)) udd = sep%udd
395 IF (
PRESENT(uff)) uff = sep%uff
396 IF (
PRESENT(alp)) alp = sep%alp
397 IF (
PRESENT(eisol)) eisol = sep%eisol
398 IF (
PRESENT(nr)) nr = sep%nr
399 IF (
PRESENT(acoul)) acoul = sep%acoul
400 IF (
PRESENT(de)) de = sep%de
401 IF (
PRESENT(ass)) ass = sep%ass
402 IF (
PRESENT(asp)) asp = sep%asp
403 IF (
PRESENT(app)) app = sep%app
404 IF (
PRESENT(gss)) gss = sep%gss
405 IF (
PRESENT(gsp)) gsp = sep%gsp
406 IF (
PRESENT(gpp)) gpp = sep%gpp
407 IF (
PRESENT(gp2)) gp2 = sep%gp2
408 IF (
PRESENT(hsp)) hsp = sep%hsp
409 IF (
PRESENT(gsd)) gsd = sep%gsd
410 IF (
PRESENT(gpd)) gpd = sep%gpd
411 IF (
PRESENT(gdd)) gdd = sep%gdd
412 IF (
PRESENT(ppddg)) ppddg = sep%pre
413 IF (
PRESENT(dpddg)) dpddg = sep%d
415 cpabort(
"The pointer sep is not associated")
456 SUBROUTINE set_se_param(sep, name, typ, defined, z, zeff, natorb, eheat, &
457 beta, sto_exponents, uss, upp, udd, uff, alp, eisol, gss, gsp, gpp, gp2, &
458 acoul, nr, de, ass, asp, app, hsp, gsd, gpd, gdd, ppddg, dpddg, ngauss)
460 TYPE(semi_empirical_type),
POINTER :: sep
461 CHARACTER(LEN=default_string_length),
INTENT(IN), &
463 INTEGER,
INTENT(IN),
OPTIONAL :: typ
464 LOGICAL,
INTENT(IN),
OPTIONAL :: defined
465 INTEGER,
INTENT(IN),
OPTIONAL :: z
466 REAL(kind=
dp),
INTENT(IN),
OPTIONAL :: zeff
467 INTEGER,
INTENT(IN),
OPTIONAL :: natorb
468 REAL(kind=
dp),
OPTIONAL :: eheat
469 REAL(
dp),
DIMENSION(0:),
OPTIONAL :: beta
470 REAL(kind=
dp),
DIMENSION(:),
OPTIONAL :: sto_exponents
471 REAL(kind=
dp),
OPTIONAL :: uss, upp, udd, uff, alp, eisol, gss, &
473 INTEGER,
INTENT(IN),
OPTIONAL :: nr
474 REAL(kind=
dp),
OPTIONAL :: de, ass, asp, app, hsp, gsd, gpd, gdd
475 REAL(
dp),
DIMENSION(2),
OPTIONAL :: ppddg, dpddg
476 INTEGER,
INTENT(IN),
OPTIONAL :: ngauss
478 IF (
ASSOCIATED(sep))
THEN
479 IF (
PRESENT(name)) sep%name = name
480 IF (
PRESENT(typ)) sep%typ = typ
481 IF (
PRESENT(defined)) sep%defined = defined
482 IF (
PRESENT(z)) sep%z = z
483 IF (
PRESENT(zeff)) sep%zeff = zeff
484 IF (
PRESENT(natorb)) sep%natorb = natorb
485 IF (
PRESENT(eheat)) sep%eheat = eheat
486 IF (
PRESENT(beta)) sep%beta = beta
487 IF (
PRESENT(sto_exponents)) sep%sto_exponents = sto_exponents
488 IF (
PRESENT(ngauss)) sep%ngauss = ngauss
489 IF (
PRESENT(uss)) sep%uss = uss
490 IF (
PRESENT(upp)) sep%upp = upp
491 IF (
PRESENT(udd)) sep%udd = udd
492 IF (
PRESENT(uff)) sep%uff = uff
493 IF (
PRESENT(alp)) sep%alp = alp
494 IF (
PRESENT(eisol)) sep%eisol = eisol
495 IF (
PRESENT(acoul)) sep%acoul = acoul
496 IF (
PRESENT(nr)) sep%nr = nr
497 IF (
PRESENT(de)) sep%de = de
498 IF (
PRESENT(ass)) sep%ass = ass
499 IF (
PRESENT(asp)) sep%asp = asp
500 IF (
PRESENT(app)) sep%app = app
501 IF (
PRESENT(gss)) sep%gss = gss
502 IF (
PRESENT(gsp)) sep%gsp = gsp
503 IF (
PRESENT(gpp)) sep%gpp = gpp
504 IF (
PRESENT(gp2)) sep%gp2 = gp2
505 IF (
PRESENT(hsp)) sep%hsp = hsp
506 IF (
PRESENT(gsd)) sep%gsd = gsd
507 IF (
PRESENT(gpd)) sep%gpd = gpd
508 IF (
PRESENT(gdd)) sep%gdd = gdd
509 IF (
PRESENT(ppddg)) sep%pre = ppddg
510 IF (
PRESENT(dpddg)) sep%d = dpddg
512 cpabort(
"The pointer sep is not associated")
515 END SUBROUTINE set_se_param
522 TYPE(rotmat_type),
POINTER :: rotmat
524 cpassert(.NOT.
ASSOCIATED(rotmat))
534 TYPE(rotmat_type),
POINTER :: rotmat
536 IF (
ASSOCIATED(rotmat))
THEN
554 do_ewald_gks, integral_screening, max_multipole, pc_coulomb_int)
555 TYPE(se_int_control_type) :: se_int_control
556 LOGICAL,
INTENT(IN) :: shortrange, do_ewald_r3, do_ewald_gks
557 INTEGER,
INTENT(IN) :: integral_screening, max_multipole
558 LOGICAL,
INTENT(IN) :: pc_coulomb_int
560 se_int_control%shortrange = shortrange
561 se_int_control%do_ewald_r3 = do_ewald_r3
562 se_int_control%integral_screening = integral_screening
564 SELECT CASE (max_multipole)
566 se_int_control%max_multipole = -1
568 se_int_control%max_multipole = 0
570 se_int_control%max_multipole = 1
572 se_int_control%max_multipole = 2
575 se_int_control%do_ewald_gks = do_ewald_gks
576 se_int_control%pc_coulomb_int = pc_coulomb_int
577 NULLIFY (se_int_control%ewald_gks%dg, se_int_control%ewald_gks%pw_pool)
597 taper_cou, range_cou, taper_exc, range_exc, taper_scr, range_scr, &
598 taper_lrc, range_lrc)
599 TYPE(se_taper_type),
POINTER :: se_taper
600 INTEGER,
INTENT(IN) :: integral_screening
601 LOGICAL,
INTENT(IN) :: do_ewald
602 REAL(kind=
dp),
INTENT(IN) :: taper_cou, range_cou, taper_exc, &
603 range_exc, taper_scr, range_scr, &
606 cpassert(.NOT.
ASSOCIATED(se_taper))
608 NULLIFY (se_taper%taper)
609 NULLIFY (se_taper%taper_cou)
610 NULLIFY (se_taper%taper_exc)
611 NULLIFY (se_taper%taper_lrc)
612 NULLIFY (se_taper%taper_add)
614 CALL taper_create(se_taper%taper_cou, taper_cou, range_cou)
615 CALL taper_create(se_taper%taper_exc, taper_exc, range_exc)
617 CALL taper_create(se_taper%taper_add, taper_scr, range_scr)
620 CALL taper_create(se_taper%taper_lrc, taper_lrc, range_lrc)
630 TYPE(se_taper_type),
POINTER :: se_taper
632 IF (
ASSOCIATED(se_taper))
THEN
638 DEALLOCATE (se_taper)
652 TYPE(semi_empirical_type),
POINTER :: sep
653 TYPE(section_vals_type),
POINTER :: subsys_section
655 CHARACTER(LEN=1),
DIMENSION(0:3),
PARAMETER :: orb_lab = (/
"S",
"P",
"D",
"F"/)
656 CHARACTER(LEN=2),
DIMENSION(0:3),
PARAMETER :: z_lab = (/
"ZS",
"ZP",
"ZD",
"ZF"/)
657 CHARACTER(LEN=3),
DIMENSION(0:3),
PARAMETER :: zeta_lab = (/
"ZSN",
"ZPN",
"ZDN",
"ZFN"/)
658 CHARACTER(LEN=5),
DIMENSION(0:3),
PARAMETER :: &
659 beta_lab = (/
"BETAS",
"BETAP",
"BETAD",
"BETAF"/)
660 CHARACTER(LEN=default_string_length) :: i_string, name
661 INTEGER :: i, l, natorb, ngauss, nr, output_unit, &
664 REAL(kind=
dp) :: acoul, alp, app, asp, ass, de, eheat, &
665 eisol, gp2, gpp, gsp, gss, hsp, udd, &
667 CHARACTER(LEN=3),
DIMENSION(0:3),
PARAMETER :: u_lab = (/
"USS",
"UPP",
"UDD",
"UFF"/)
669 REAL(kind=
dp),
DIMENSION(0:3) :: u
670 REAL(kind=
dp),
DIMENSION(2) :: dpddg, ppddg
671 REAL(kind=
dp),
DIMENSION(:),
POINTER :: beta, sexp
672 TYPE(cp_logger_type),
POINTER :: logger
677 "PRINT%KINDS/SE_PARAMETERS"),
cp_p_file))
THEN
682 IF (output_unit > 0)
THEN
683 CALL get_se_param(sep, name=name, typ=typ, defined=defined, &
684 z=z, zeff=zeff, natorb=natorb, eheat=eheat, beta=beta, &
685 sto_exponents=sexp, uss=uss, upp=upp, udd=udd, uff=uff, &
686 alp=alp, eisol=eisol, gss=gss, gsp=gsp, gpp=gpp, gp2=gp2, &
687 de=de, ass=ass, asp=asp, app=app, hsp=hsp, ppddg=ppddg, &
688 acoul=acoul, nr=nr, dpddg=dpddg, ngauss=ngauss)
697 cpabort(
"Semiempirical method unknown")
699 WRITE (unit=output_unit, fmt=
"(/,A,T35,A,T67,A14)") &
700 " Semi empirical parameters: ",
"Austin Model 1 (AM1)", trim(name)
702 WRITE (unit=output_unit, fmt=
"(/,A,T35,A,T67,A14)") &
703 " Semi empirical parameters: ",
"Recife Model 1 (RM1)", trim(name)
705 WRITE (unit=output_unit, fmt=
"(/,A,T35,A,T67,A14)") &
706 " Semi empirical parameters: ",
"Parametric Method 3 (PM3) ", trim(name)
708 WRITE (unit=output_unit, fmt=
"(/,A,T35,A,T67,A14)") &
709 " Semi empirical parameters: ",
"PNNL method ", trim(name)
711 WRITE (unit=output_unit, fmt=
"(/,A,T35,A,T67,A14)") &
712 " Semi empirical parameters: ",
"Parametric Method 6 (PM6) ", trim(name)
714 WRITE (unit=output_unit, fmt=
"(/,A,T35,A,T67,A14)") &
715 " Semi empirical parameters: ",
"Parametric Method 6 (PM6-FM) ", trim(name)
717 WRITE (unit=output_unit, fmt=
"(/,A,T35,A,T67,A14)") &
718 " Semi empirical parameters: ",
"PDDG/PM3 ", trim(name)
720 WRITE (unit=output_unit, fmt=
"(/,A,T35,A,T67,A14)") &
721 " Semi empirical parameters: ",
"MNDO ", trim(name)
723 WRITE (unit=output_unit, fmt=
"(/,A,T35,A,T67,A14)") &
724 " Semi empirical parameters: ",
"MNDOD", trim(name)
729 WRITE (unit=output_unit, fmt=
"(T16,A,T71,F10.2)") &
730 "Effective core charge:", zeff
731 WRITE (unit=output_unit, fmt=
"(T16,A,T71,I10)") &
732 "Number of orbitals:", natorb, &
733 "Basis set expansion (STO-NG)", ngauss
734 WRITE (unit=output_unit, fmt=
"(T16,A,T66,F15.5)") &
735 "Atomic heat of formation [kcal/mol]:", eheat*
kcalmol
737 IF (abs(beta(l)) > 0._dp)
THEN
738 WRITE (unit=output_unit, fmt=
"(T16,A,I2)")
"Parameters for Shell: ", l
739 WRITE (unit=output_unit, fmt=
"(T22,A5,T30,A,T64,F17.4)") &
740 adjustr(z_lab(l)),
"- "//
"Slater Exponent for "//orb_lab(l)//
" [A]: ", sexp(l)
741 WRITE (unit=output_unit, fmt=
"(T22,A5,T30,A,T64,F17.4)") &
742 adjustr(u_lab(l)),
"- "//
"One Center Energy for "//orb_lab(l)//
" [eV]: ", u(l)*
evolt
743 WRITE (unit=output_unit, fmt=
"(T22,A5,T30,A,T64,F17.4)") &
744 adjustr(beta_lab(l)),
"- "//
"Beta Parameter for "//orb_lab(l)//
" [eV]: ", beta(l)*
evolt
745 WRITE (unit=output_unit, fmt=
"(T22,A5,T30,A,T64,F17.4)") &
746 adjustr(zeta_lab(l)),
"- "//
"Internal Exponent for "//orb_lab(l)//
" [a.u.]: ", sep%zn(l)
749 WRITE (unit=output_unit, fmt=
"(/,T16,A)")
"Additional Parameters (Derived or Fitted):"
750 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
751 adjustr(
"ALP"),
"- "//
"Alpha Parameter for Core [A^-1]: ", alp/
angstrom
752 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
753 adjustr(
"EISOL"),
"- "//
"Atomic Energy (Calculated) [eV]: ", eisol*
evolt
755 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
756 adjustr(
"GSS"),
"- "//
"One Center Integral (SS ,SS ) [eV]: ", gss*
evolt
757 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
758 adjustr(
"GSP"),
"- "//
"One Center Integral (SS ,PP ) [eV]: ", gsp*
evolt
759 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
760 adjustr(
"GPP"),
"- "//
"One Center Integral (PP ,PP ) [eV]: ", gpp*
evolt
761 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
762 adjustr(
"GP2"),
"- "//
"One Center Integral (PP*,PP*) [eV]: ", gp2*
evolt
763 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
764 adjustr(
"HSP"),
"- "//
"One Center Integral (SP ,SP ) [eV]: ", hsp*
evolt
767 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
768 adjustr(
"F0DD"),
"- "//
"Slater Condon Parameter F0DD [eV]: ", sep%f0dd
769 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
770 adjustr(
"F2DD"),
"- "//
"Slater Condon Parameter F2DD [eV]: ", sep%f2dd
771 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
772 adjustr(
"F4DD"),
"- "//
"Slater Condon Parameter F4DD [eV]: ", sep%f4dd
773 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
774 adjustr(
"FOSD"),
"- "//
"Slater Condon Parameter FOSD [eV]: ", sep%f0sd
775 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
776 adjustr(
"G2SD"),
"- "//
"Slater Condon Parameter G2SD [eV]: ", sep%g2sd
777 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
778 adjustr(
"F0PD"),
"- "//
"Slater Condon Parameter F0PD [eV]: ", sep%f0pd
779 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
780 adjustr(
"F2PD"),
"- "//
"Slater Condon Parameter F2PD [eV]: ", sep%f2pd
781 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
782 adjustr(
"G1PD"),
"- "//
"Slater Condon Parameter G1PD [eV]: ", sep%g1pd
783 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
784 adjustr(
"G3PD"),
"- "//
"Slater Condon Parameter G3PD [eV]: ", sep%g3pd
787 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
788 adjustr(
"DD2"),
"- "//
"Charge Separation SP, L=1 [bohr]: ", sep%cs(2)
789 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
790 adjustr(
"DD3"),
"- "//
"Charge Separation PP, L=2 [bohr]: ", sep%cs(3)
792 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
793 adjustr(
"DD4"),
"- "//
"Charge Separation SD, L=2 [bohr]: ", sep%cs(4)
794 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
795 adjustr(
"DD5"),
"- "//
"Charge Separation PD, L=1 [bohr]: ", sep%cs(5)
796 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
797 adjustr(
"DD6"),
"- "//
"Charge Separation DD, L=2 [bohr]: ", sep%cs(6)
800 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
801 adjustr(
"PO1"),
"- "//
"Klopman-Ohno term, SS, L=0 [bohr]: ", sep%ko(1)
802 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
803 adjustr(
"PO2"),
"- "//
"Klopman-Ohno term, SP, L=1 [bohr]: ", sep%ko(2)
804 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
805 adjustr(
"PO3"),
"- "//
"Klopman-Ohno term, PP, L=2 [bohr]: ", sep%ko(3)
807 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
808 adjustr(
"PO4"),
"- "//
"Klopman-Ohno term, SD, L=2 [bohr]: ", sep%ko(4)
809 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
810 adjustr(
"PO5"),
"- "//
"Klopman-Ohno term, PD, L=1 [bohr]: ", sep%ko(5)
811 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
812 adjustr(
"PO6"),
"- "//
"Klopman-Ohno term, DD, L=2 [bohr]: ", sep%ko(6)
813 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
814 adjustr(
"PO7"),
"- "//
"Klopman-Ohno term, PP, L=0 [bohr]: ", sep%ko(7)
815 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
816 adjustr(
"PO8"),
"- "//
"Klopman-Ohno term, DD, L=0 [bohr]: ", sep%ko(8)
818 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
819 adjustr(
"PO9"),
"- "//
"Klopman-Ohno term, CORE [bohr]: ", sep%ko(9)
823 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
824 adjustr(
"ASS"),
"- "//
" SS polarization [au]: ", sep%ass
825 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
826 adjustr(
"ASP"),
"- "//
" SP polarization [au]: ", sep%asp
827 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
828 adjustr(
"APP"),
"- "//
" PP polarization[au]: ", sep%app
829 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
830 adjustr(
"DE"),
"- "//
" Dispersion Parameter [eV]: ", sep%de*
evolt
831 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
832 adjustr(
"ACOUL"),
"- "//
" Slater parameter: ", sep%acoul
833 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,I12)") &
834 adjustr(
"NR"),
"- "//
" Slater parameter: ", sep%nr
837 DO i = 1,
SIZE(sep%bfn1, 1)
838 i_string = cp_to_string(i)
839 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
840 adjustr(
"FN1"//trim(adjustl(i_string))//
"_ALL"), &
841 "- "//
"Core-Core VDW, Multiplier [a.u.]: ", sep%bfn1(i, 1)
842 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
843 adjustr(
"FN2"//trim(adjustl(i_string))//
"_ALL"), &
844 "- "//
"Core-Core VDW, Exponent [a.u.]: ", sep%bfn2(i, 1)
845 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
846 adjustr(
"FN3"//trim(adjustl(i_string))//
"_ALL"), &
847 "- "//
"Core-Core VDW, Position [a.u.]: ", sep%bfn3(i, 1)
850 DO i = 1,
SIZE(sep%bfn1, 1)
851 i_string = cp_to_string(i)
852 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
853 adjustr(
"FN1"//trim(adjustl(i_string))//
"_H"), &
854 "- "//
"Core-Core VDW, Multiplier [a.u.]: ", sep%bfn1(i, 2)
855 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
856 adjustr(
"FN2"//trim(adjustl(i_string))//
"_H"), &
857 "- "//
"Core-Core VDW, Exponent [a.u.]: ", sep%bfn2(i, 2)
858 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
859 adjustr(
"FN3"//trim(adjustl(i_string))//
"_H"), &
860 "- "//
"Core-Core VDW, Position [a.u.]: ", sep%bfn3(i, 2)
863 DO i = 1,
SIZE(sep%bfn1, 1)
864 i_string = cp_to_string(i)
865 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
866 adjustr(
"FN1"//trim(adjustl(i_string))//
"_C"), &
867 "- "//
"Core-Core VDW, Multiplier [a.u.]: ", sep%bfn1(i, 3)
868 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
869 adjustr(
"FN2"//trim(adjustl(i_string))//
"_C"), &
870 "- "//
"Core-Core VDW, Exponent [a.u.]: ", sep%bfn2(i, 3)
871 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
872 adjustr(
"FN3"//trim(adjustl(i_string))//
"_C"), &
873 "- "//
"Core-Core VDW, Position [a.u.]: ", sep%bfn3(i, 3)
876 DO i = 1,
SIZE(sep%bfn1, 1)
877 i_string = cp_to_string(i)
878 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
879 adjustr(
"FN1"//trim(adjustl(i_string))//
"_HALO"), &
880 "- "//
"Core-Core VDW, Multiplier [a.u.]: ", sep%bfn1(i, 4)
881 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
882 adjustr(
"FN2"//trim(adjustl(i_string))//
"_HALO"), &
883 "- "//
"Core-Core VDW, Exponent [a.u.]: ", sep%bfn2(i, 4)
884 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
885 adjustr(
"FN3"//trim(adjustl(i_string))//
"_HALO"), &
886 "- "//
"Core-Core VDW, Position [a.u.]: ", sep%bfn3(i, 4)
889 DO i = 1,
SIZE(sep%fn1, 1)
890 i_string = cp_to_string(i)
892 IF (sep%fn1(i) == 0.0_dp .AND. sep%fn2(i) == 0.0_dp .AND. sep%fn3(i) == 0.0_dp) cycle
893 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
894 adjustr(
"FN1"//trim(adjustl(i_string))), &
895 "- "//
"Core-Core VDW, Multiplier [a.u.]: ", sep%fn1(i)
896 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
897 adjustr(
"FN2"//trim(adjustl(i_string))), &
898 "- "//
"Core-Core VDW, Exponent [a.u.]: ", sep%fn2(i)
899 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T69,F12.4)") &
900 adjustr(
"FN3"//trim(adjustl(i_string))), &
901 "- "//
"Core-Core VDW, Position [a.u.]: ", sep%fn3(i)
906 WRITE (unit=output_unit, fmt=
"(T55,A)")
"Parameters are not defined"
912 WRITE (unit=output_unit, fmt=
"(T16,A11,T30,A,T52,F14.10,T67,F14.10)") &
913 adjustr(
"d_PDDG"),
"- "//
"Exponent [A^-1]:", dpddg/
angstrom, &
914 adjustr(
"P_PDDG"),
"- "//
"Parameter [eV]:", ppddg*
evolt
918 "PRINT%KINDS/SE_PARAMETERS")
subroutine, public deallocate_sto_basis_set(sto_basis_set)
...
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
Multipole structure: for multipole (fixed and induced) in FF based MD.
integer, parameter, public do_multipole_quadrupole
integer, parameter, public do_multipole_dipole
integer, parameter, public do_multipole_charge
integer, parameter, public do_multipole_none
Definition of physical constants:
real(kind=dp), parameter, public kcalmol
real(kind=dp), parameter, public evolt
real(kind=dp), parameter, public angstrom
Manages a pool of grids (to be used for example as tmp objects), but can also be used to instantiate ...
Definition of the type to handle the 1/R^3 residual integral part.
subroutine, public semi_empirical_expns3_release(expns3)
Deallocate the semi-empirical type.
Definition of the semi empirical multipole integral expansions types.
subroutine, public semi_empirical_mpole_p_release(mpole)
Deallocate the semi-empirical mpole type.
Definition of the semi empirical parameter types.
subroutine, public write_se_param(sep, subsys_section)
Writes the semi-empirical type.
subroutine, public semi_empirical_create(sep)
Allocate semi-empirical type.
subroutine, public rotmat_release(rotmat)
Releases rotmat type.
subroutine, public se_taper_release(se_taper)
Releases the taper type used in SE calculations.
subroutine, public setup_se_int_control_type(se_int_control, shortrange, do_ewald_r3, do_ewald_gks, integral_screening, max_multipole, pc_coulomb_int)
Setup the Semiempirical integral control type.
subroutine, public get_se_param(sep, name, typ, defined, z, zeff, natorb, eheat, beta, sto_exponents, uss, upp, udd, uff, alp, eisol, gss, gsp, gpp, gp2, acoul, nr, de, ass, asp, app, hsp, gsd, gpd, gdd, ppddg, dpddg, ngauss)
Get info from the semi-empirical type.
subroutine, public rotmat_create(rotmat)
Creates rotmat type.
subroutine, public se_taper_create(se_taper, integral_screening, do_ewald, taper_cou, range_cou, taper_exc, range_exc, taper_scr, range_scr, taper_lrc, range_lrc)
Creates the taper type used in SE calculations.
subroutine, public semi_empirical_release(sep)
Deallocate the semi-empirical type.
Definition of the semi empirical parameter types.
subroutine, public taper_create(taper, rc, range)
Creates taper type.
subroutine, public taper_release(taper)
Releases taper type.