From 3c3a4ead0942b33bbc4c2f0a658574062d0ee75e Mon Sep 17 00:00:00 2001 From: Tammo van der Heide Date: Tue, 16 Jul 2024 17:47:43 +0200 Subject: [PATCH] Rework WS potential in terms of W, a and r0 Add example to mio/skdef.hsd Add regression test covering the WS compression Fix shelf search bug --- examples/mio/skdef.hsd | 6 + sktools/src/sktools/calculators/slateratom.py | 4 +- sktools/src/sktools/common.py | 7 +- sktools/src/sktools/compressions.py | 54 ++-- slateratom/lib/CMakeLists.txt | 2 +- slateratom/lib/confinement.F90 | 266 ++++-------------- slateratom/lib/{input.f90 => input.F90} | 15 +- .../CAMY-B3LYP/Non-Relativistic/config | 2 +- .../sktable/CAMY-PBEh/Non-Relativistic/config | 2 +- .../sktable/GGA-PBE96/Non-Relativistic/config | 2 +- .../sktable/HYB-B3LYP/Non-Relativistic/config | 2 +- .../sktable/HYB-PBE0/Non-Relativistic/config | 2 +- .../Non-Relativistic/{ => Power}/_C-C.skf | 0 .../Non-Relativistic/{ => Power}/_C-O.skf | 0 .../Non-Relativistic/{ => Power}/_O-C.skf | 0 .../Non-Relativistic/{ => Power}/_O-O.skf | 0 .../LDA-PW91/Non-Relativistic/Power/config | 1 + .../Non-Relativistic/{ => Power}/skdef.hsd | 0 .../LDA-PW91/Non-Relativistic/WS/_C-C.skf | 92 ++++++ .../LDA-PW91/Non-Relativistic/WS/config | 1 + .../LDA-PW91/Non-Relativistic/WS/skdef.hsd | 74 +++++ .../sktable/LDA-PW91/Non-Relativistic/config | 1 - test/prog/sktable/tests | 3 +- 23 files changed, 284 insertions(+), 252 deletions(-) rename slateratom/lib/{input.f90 => input.F90} (97%) rename test/prog/sktable/LDA-PW91/Non-Relativistic/{ => Power}/_C-C.skf (100%) rename test/prog/sktable/LDA-PW91/Non-Relativistic/{ => Power}/_C-O.skf (100%) rename test/prog/sktable/LDA-PW91/Non-Relativistic/{ => Power}/_O-C.skf (100%) rename test/prog/sktable/LDA-PW91/Non-Relativistic/{ => Power}/_O-O.skf (100%) create mode 100644 test/prog/sktable/LDA-PW91/Non-Relativistic/Power/config rename test/prog/sktable/LDA-PW91/Non-Relativistic/{ => Power}/skdef.hsd (100%) create mode 100644 test/prog/sktable/LDA-PW91/Non-Relativistic/WS/_C-C.skf create mode 100644 test/prog/sktable/LDA-PW91/Non-Relativistic/WS/config create mode 100644 test/prog/sktable/LDA-PW91/Non-Relativistic/WS/skdef.hsd delete mode 100644 test/prog/sktable/LDA-PW91/Non-Relativistic/config diff --git a/examples/mio/skdef.hsd b/examples/mio/skdef.hsd index 2624d05d..ab2d3e66 100644 --- a/examples/mio/skdef.hsd +++ b/examples/mio/skdef.hsd @@ -85,6 +85,12 @@ AtomParameters { DftbAtom { ShellResolved = No DensityCompression = PowerCompression { Power = 2; Radius = 2.5 } + # Alternatively: Woods-Saxon compression potential + # (see J. Chem. Theory Comput. 12, 1, 53-64 (2016) eqn. 4.) + # With default W = 100.0: + # DensityCompression = WoodsSaxonCompression { a = 2.0; r0 = 6.0 } + # or with manual W: + # DensityCompression = WoodsSaxonCompression { W = 300.0; a = 2.0; r0 = 6.0 } WaveCompressions = SingleAtomCompressions { S = PowerCompression { Power = 2; Radius = 3.0 } } diff --git a/sktools/src/sktools/calculators/slateratom.py b/sktools/src/sktools/calculators/slateratom.py index f429d284..4fd25de3 100644 --- a/sktools/src/sktools/calculators/slateratom.py +++ b/sktools/src/sktools/calculators/slateratom.py @@ -341,8 +341,8 @@ def write(self, workdir): elif compr.compid == \ skcomp.SUPPORTED_COMPRESSIONS['woodssaxoncompression']: out += ["{:g} {:g} {:g} \t\t{:s}".format( - compr.onset, compr.cutoff, compr.vmax, self._COMMENT) \ - + " Compr. onset, cutoff and vmax ({:s})" + compr.ww, compr.aa, compr.r0, self._COMMENT) \ + + " Compr. height, slope, half-height radius ({:s})" .format(sc.ANGMOM_TO_SHELL[ll])] out += ["{:d} \t\t\t{:s} nr. of occupied shells ({:s})".format( diff --git a/sktools/src/sktools/common.py b/sktools/src/sktools/common.py index 8e3aa313..15610dae 100644 --- a/sktools/src/sktools/common.py +++ b/sktools/src/sktools/common.py @@ -528,11 +528,12 @@ def is_shelf_file_matching(shelf_file, mydict): db = shelve.open(shelf_file, 'r') except dbm.error: return False - if not type(db) is type(mydict): - return False match = True for key in mydict: - match = key in db and db[key] == mydict[key] + try: + match = key in db and db[key] == mydict[key] + except KeyError: + match = False if not match: return False return True diff --git a/sktools/src/sktools/compressions.py b/sktools/src/sktools/compressions.py index ec54c48b..c2c69b4d 100644 --- a/sktools/src/sktools/compressions.py +++ b/sktools/src/sktools/compressions.py @@ -69,42 +69,40 @@ class WoodsSaxonCompression(sc.ClassDict): Attributes ---------- - onset : float - Onset radius of the compression - cutoff : float - Cutoff radius of the compression - vmax : float - Potential well depth/height + ww : float + Height (W) of the compression + aa : float + Slope (a) of the compression + r0 : float + Half-height radius of the compression ''' @classmethod def fromhsd(cls, root, query): '''Creates instance from a HSD-node and with given query object.''' - onset, child = query.getvalue(root, 'onset', conv.float0, - returnchild=True) - if onset < 0.0: - msg = 'Invalid onset radius {:f}'.format(onset) + ww, child = query.getvalue( + root, 'w', conv.float0, defvalue=100.0, returnchild=True) + if ww < 0.0: + msg = 'Invalid potential height (W) {:f}'.format(ww) raise hsd.HSDInvalidTagValueException(msg=msg, node=child) - cutoff, child = query.getvalue(root, 'cutoff', conv.float0, - returnchild=True) - if cutoff <= onset: - msg = 'Invalid cutoff radius {:f}'.format(cutoff) + aa, child = query.getvalue(root, 'a', conv.float0, returnchild=True) + if aa <= 0.0: + msg = 'Invalid potential slope (a) {:f}'.format(aa) raise hsd.HSDInvalidTagValueException(msg=msg, node=child) - vmax, child = query.getvalue( - root, 'vmax', conv.float0, defvalue=100.0, returnchild=True) - if vmax <= 0.0: - msg = 'Invalid potential well height {:f}'.format(vmax) + r0, child = query.getvalue(root, 'r0', conv.float0, returnchild=True) + if r0 < 0.0: + msg = 'Invalid potential half-height radius {:f}'.format(r0) raise hsd.HSDInvalidTagValueException(msg=msg, node=child) myself = cls() myself.compid = SUPPORTED_COMPRESSIONS[ myself.__class__.__name__.lower()] - myself.onset = onset - myself.cutoff = cutoff - myself.vmax = vmax + myself.ww = ww + myself.aa = aa + myself.r0 = r0 return myself @@ -117,16 +115,16 @@ def tohsd(self, root, query, parentname=None): else: mynode = query.setchild(root, 'WoodsSaxonCompression') - query.setchildvalue(mynode, 'onset', conv.float0, self.onset) - query.setchildvalue(mynode, 'cutoff', conv.float0, self.cutoff) - query.setchildvalue(mynode, 'vmax', conv.float0, self.vmax) + query.setchildvalue(mynode, 'w', conv.float0, self.ww) + query.setchildvalue(mynode, 'a', conv.float0, self.aa) + query.setchildvalue(mynode, 'r0', conv.float0, self.r0) def __eq__(self, other): - onset_ok = abs(self.onset - other.onset) < 1e-8 - cutoff_ok = abs(self.cutoff - other.cutoff) < 1e-8 - vmax_ok = abs(self.vmax - other.vmax) < 1e-8 - return onset_ok and cutoff_ok and vmax_ok + ww_ok = abs(self.ww - other.ww) < 1e-8 + aa_ok = abs(self.aa - other.aa) < 1e-8 + r0_ok = abs(self.r0 - other.r0) < 1e-8 + return ww_ok and aa_ok and r0_ok # Registered compressions with corresponding hsd name as key diff --git a/slateratom/lib/CMakeLists.txt b/slateratom/lib/CMakeLists.txt index c23d9ad2..1c47c778 100644 --- a/slateratom/lib/CMakeLists.txt +++ b/slateratom/lib/CMakeLists.txt @@ -18,7 +18,6 @@ set(sources-f90 diagonalizations.f90 globals.f90 hamiltonian.f90 - input.f90 integration.f90 lapack.f90 mixer.f90 @@ -33,6 +32,7 @@ set(sources-fpp blasroutines.F90 broydenmixer.F90 confinement.F90 + input.F90 lapackroutines.F90 simplemixer.F90) diff --git a/slateratom/lib/confinement.F90 b/slateratom/lib/confinement.F90 index 777dcfaf..7fd523ed 100644 --- a/slateratom/lib/confinement.F90 +++ b/slateratom/lib/confinement.F90 @@ -1,6 +1,6 @@ #:include 'common.fypp' -!> Module that builds up various supervectors. +!> Module that builds up various confining potential supervectors. module confinement use common_accuracy, only : dp @@ -20,8 +20,9 @@ module confinement type, abstract :: TConf contains + procedure, nopass :: getSupervec => TConf_getSupervec + procedure(getPotOnGrid), deferred :: getPotOnGrid - procedure(getSupervec), deferred :: getSupervec end type TConf @@ -107,14 +108,14 @@ end subroutine getSupervec !> Input for the Woods-Saxon confinement. type :: TWsConfInp - !> onset radii (Woods-Saxon compression) - real(dp) :: rOnset(0:4) + !> potential heights (W) + real(dp) :: ww(0:4) - !> cutoff of confinement (Woods-Saxon compression) - real(dp) :: rCut(0:4) + !> potential slopes (a) + real(dp) :: aa(0:4) - !> potential well height of confinement (Woods-Saxon compression) - real(dp) :: vMax(0:4) + !> half-height radii (r0) + real(dp) :: r0(0:4) end type TWsConfInp @@ -123,10 +124,10 @@ end subroutine getSupervec type :: TConfInp !> Power confinement input structure - type(TPowerConfInp) :: power + type(TPowerConfInp), allocatable :: power !> Woods-Saxon confinement input structure - type(TWsConfInp) :: ws + type(TWsConfInp), allocatable :: ws end type TConfInp @@ -135,16 +136,15 @@ end subroutine getSupervec type, extends(TConf) :: TPowerConf private - !> confinement radii (power compression) + !> confinement radii real(dp) :: r0(0:4) - !> power of confinement (power compression) + !> power of confinement real(dp) :: power(0:4) contains procedure :: getPotOnGrid => TPowerConf_getPotOnGrid - procedure :: getSupervec => TPowerConf_getSupervec end type TPowerConf @@ -153,19 +153,18 @@ end subroutine getSupervec type, extends(TConf) :: TWsConf private - !> onset radii (Woods-Saxon compression) - real(dp) :: rOnset(0:4) + !> potential heights (W) + real(dp) :: ww(0:4) - !> cutoff of confinement (Woods-Saxon compression) - real(dp) :: rCut(0:4) + !> potential slopes (a) + real(dp) :: aa(0:4) - !> potential well height of confinement (Woods-Saxon compression) - real(dp) :: vMax(0:4) + !> half-height radii (r0) + real(dp) :: r0(0:4) contains procedure :: getPotOnGrid => TWsConf_getPotOnGrid - procedure :: getSupervec => TWsConf_getSupervec end type TWsConf @@ -214,9 +213,9 @@ subroutine TWsConf_init(this, input) !> input data type(TWsConfInp), intent(inout) :: input - this%rOnset(0:) = input%rOnset - this%rCut(0:) = input%rCut - this%vMax(0:) = input%vMax + this%ww(0:) = input%ww + this%aa(0:) = input%aa + this%r0(0:) = input%r0 end subroutine TWsConf_init @@ -239,16 +238,14 @@ subroutine TPowerConf_getPotOnGrid(this, max_l, num_mesh_points, abcissa, vconf) !> Woods-Saxon potential on grid real(dp), intent(out) :: vconf(:, 0:) - !! auxiliary variables - integer :: ii, ll + !! angular momentum + integer :: ll @:ASSERT(size(vconf, dim=1) == num_mesh_points) @:ASSERT(size(vconf, dim=2) == max_l + 1) do ll = 0, max_l - do ii = 1, num_mesh_points - vconf(ii, ll) = getPowerPotential(abcissa(ii), this%r0(ll), this%power(ll)) - end do + vconf(:, ll) = getPowerPotential(abcissa, this%r0(ll), this%power(ll)) end do end subroutine TPowerConf_getPotOnGrid @@ -272,27 +269,23 @@ subroutine TWsConf_getPotOnGrid(this, max_l, num_mesh_points, abcissa, vconf) !> Woods-Saxon potential on grid real(dp), intent(out) :: vconf(:, 0:) - !! auxiliary variables - integer :: ii, ll + !! angular momentum + integer :: ll @:ASSERT(size(vconf, dim=1) == num_mesh_points) @:ASSERT(size(vconf, dim=2) == max_l + 1) do ll = 0, max_l - do ii = 1, num_mesh_points - vconf(ii, ll) = getWSPotential(abcissa(ii), this%rOnset(ll), this%rCut(ll), this%vMax(ll)) - end do + vconf(:, ll) = getWSPotential(abcissa, this%ww(ll), this%aa(ll), this%r0(ll)) end do end subroutine TWsConf_getPotOnGrid - !> Tabulates the (shell-resolved) Power confinement potential on the grid. - subroutine TPowerConf_getSupervec(this, max_l, num_mesh_points, abcissa, weight, num_alpha,& - & alpha, poly_order, vconf, vconf_matrix) - - !> instance - class(TPowerConf), intent(in) :: this + !> Constructs the DFT confinement supervector to be added to the Fock matrix, by calculating the + !! single matrix elements and putting them together. + subroutine TConf_getSupervec(max_l, num_mesh_points, abcissa, weight, num_alpha, alpha,& + & poly_order, vconf, vconf_matrix) !> maximum angular momentum integer, intent(in) :: max_l @@ -315,108 +308,25 @@ subroutine TPowerConf_getSupervec(this, max_l, num_mesh_points, abcissa, weight, !> highest polynomial order + l in each shell integer, intent(in) :: poly_order(0:) - !> Power potential on grid + !> confinement potential on grid real(dp), intent(in) :: vconf(:, 0:) - !> Power confinement supervector + !> confinement supervector real(dp), intent(out) :: vconf_matrix(0:,:,:) - @:ASSERT(size(vconf, dim=1) == num_mesh_points) - @:ASSERT(size(vconf, dim=2) == max_l + 1) - - @:ASSERT(size(vconf_matrix, dim=1) == max_l + 1) - - call build_dft_conf_matrix(max_l, num_alpha, poly_order, alpha, num_mesh_points, abcissa,& - & weight, vconf, vconf_matrix) - - end subroutine TPowerConf_getSupervec - - - !> Tabulates the (shell-resolved) Woods-Saxon confinement potential on the grid. - subroutine TWsConf_getSupervec(this, max_l, num_mesh_points, abcissa, weight, num_alpha, alpha,& - & poly_order, vconf, vconf_matrix) - - !> instance - class(TWsConf), intent(in) :: this - - !> maximum angular momentum - integer, intent(in) :: max_l - - !> number of numerical integration points - integer, intent(in) :: num_mesh_points - - !> numerical integration abcissas - real(dp), intent(in) :: abcissa(:) - - !> numerical integration weights - real(dp), intent(in) :: weight(:) - - !> number of exponents in each shell - integer, intent(in) :: num_alpha(0:) - - !> basis exponents - real(dp), intent(in) :: alpha(0:,:) - - !> highest polynomial order + l in each shell - integer, intent(in) :: poly_order(0:) - - !> Woods-Saxon potential on grid - real(dp), intent(in) :: vconf(:, 0:) + !> single matrix element of the confinement potential + real(dp) :: vconf_matrixelement - !> Woods-Saxon confinement supervector - real(dp), intent(out) :: vconf_matrix(0:,:,:) + !> auxiliary variables + integer :: ii, jj, kk, ll, mm, ss, tt, start @:ASSERT(size(vconf, dim=1) == num_mesh_points) @:ASSERT(size(vconf, dim=2) == max_l + 1) @:ASSERT(size(vconf_matrix, dim=1) == max_l + 1) - call build_dft_conf_matrix(max_l, num_alpha, poly_order, alpha, num_mesh_points, abcissa,& - & weight, vconf, vconf_matrix) - - end subroutine TWsConf_getSupervec - - - !> Builds DFT confinement matrix to be added to the Fock matrix by calculating the single matrix - !! elements and putting them together. - subroutine build_dft_conf_matrix(max_l, num_alpha, poly_order, alpha, num_mesh_points, abcissa,& - & weight, vconf, conf_matrix) - - !> maximum angular momentum - integer, intent(in) :: max_l - - !> number of exponents in each shell - integer, intent(in) :: num_alpha(0:) - - !> highest polynomial order + l in each shell - integer, intent(in) :: poly_order(0:) - - !> basis exponents - real(dp), intent(in) :: alpha(0:,:) - - !> number of numerical integration points - integer, intent(in) :: num_mesh_points - - !> numerical integration abcissas - real(dp), intent(in) :: abcissa(:) - - !> numerical integration weights - real(dp), intent(in) :: weight(:) - - !> confinement potential on grid - real(dp), intent(in) :: vconf(:, 0:) - - !> DFT confinement matrix - real(dp), intent(out) :: conf_matrix(0:,:,:) - - !> single matrix element of the confinement potential - real(dp) :: conf_matrixelement - - !> auxiliary variables - integer :: ii, jj, kk, ll, mm, ss, tt, start - - conf_matrix(:,:,:) = 0.0_dp - conf_matrixelement = 0.0_dp + vconf_matrix(:,:,:) = 0.0_dp + vconf_matrixelement = 0.0_dp do ii = 0, max_l ss = 0 @@ -434,10 +344,10 @@ subroutine build_dft_conf_matrix(max_l, num_alpha, poly_order, alpha, num_mesh_p tt = tt + 1 call dft_conf_matrixelement(num_mesh_points, weight, abcissa, vconf(:, ii),& - & alpha(ii, jj), kk, alpha(ii, ll), mm, ii, conf_matrixelement) + & alpha(ii, jj), kk, alpha(ii, ll), mm, ii, vconf_matrixelement) - conf_matrix(ii, ss, tt) = conf_matrixelement - conf_matrix(ii, tt, ss) = conf_matrixelement + vconf_matrix(ii, ss, tt) = vconf_matrixelement + vconf_matrix(ii, tt, ss) = vconf_matrixelement end do end do @@ -445,10 +355,10 @@ subroutine build_dft_conf_matrix(max_l, num_alpha, poly_order, alpha, num_mesh_p end do end do - end subroutine build_dft_conf_matrix + end subroutine TConf_getSupervec - !> Calculates a single matrix element of the exchange correlation potential. + !> Calculates a single matrix element of the confinement potential. pure subroutine dft_conf_matrixelement(num_mesh_points, weight, abcissa, vconf, alpha1, poly1,& & alpha2, poly2, ll, conf_matrixelement) @@ -479,7 +389,7 @@ pure subroutine dft_conf_matrixelement(num_mesh_points, weight, abcissa, vconf, !> angular momentum integer, intent(in) :: ll - !> single matrix element of the exchange correlation potential + !> single matrix element of the confinement potential real(dp), intent(out) :: conf_matrixelement !> stores product of two basis functions and r^2 @@ -499,7 +409,7 @@ end subroutine dft_conf_matrixelement !> Returns the Power potential for a given radial distance. - pure function getPowerPotential(rr, r0, power) result(pot) + elemental impure function getPowerPotential(rr, r0, power) result(pot) !> radial distance real(dp), intent(in) :: rr @@ -513,94 +423,36 @@ pure function getPowerPotential(rr, r0, power) result(pot) !> Power potential at evaluation point real(dp) :: pot + @:ASSERT(rr >= 0.0_dp) + pot = (rr / r0)**power end function getPowerPotential !> Returns the Woods-Saxon potential for a given radial distance. - pure function getWSPotential(rr, rOnset, rCut, vMax) result(pot) + !! see J. Chem. Theory Comput. 12, 1, 53-64 (2016) eqn. 4. + elemental impure function getWSPotential(rr, ww, aa, r0) result(pot) !> radial distance real(dp), intent(in) :: rr - !> onset radius - real(dp), intent(in) :: rOnset + !> potential height (W) + real(dp), intent(in) :: ww - !> cutoff radius - real(dp), intent(in) :: rCut + !> potential slope (a) + real(dp), intent(in) :: aa - !> potential well height - real(dp), intent(in) :: vMax + !> half-height radius (r0) + real(dp), intent(in) :: r0 !> Woods-Saxon potential at evaluation point real(dp) :: pot - ! case: rr <= rOnset - pot = 0.0_dp + @:ASSERT(rr >= 0.0_dp) - if (rr > rOnset .and. rr < rCut) then - pot = vMax / (rCut - rOnset) * (rr - rOnset) - elseif (rr >= rCut) then - pot = vMax - end if + pot = ww / (1.0 + exp(-aa * (rr - r0))) end function getWSPotential - - ! !> Calculates analytic matrix elements of confining potential. - ! !! No checking for power, e.g. power==0 or power<0 etc. ! - ! subroutine getConfPower_analytical(this, max_l, num_alpha, alpha, poly_order, vconf_matrix) - - ! !> instance - ! class(TPowerConf), intent(in) :: this - - ! !> maximum angular momentum - ! integer, intent(in) :: max_l - - ! !> number of exponents in each shell - ! integer, intent(in) :: num_alpha(0:) - - ! !> basis exponents - ! real(dp), intent(in) :: alpha(0:,:) - - ! !> highest polynomial order + l in each shell - ! integer, intent(in) :: poly_order(0:) - - ! !> confinement supervector - ! real(dp), intent(out) :: vconf_matrix(0:,:,:) - - ! !! temporary storage - ! real(dp) :: alpha1 - - ! !! auxiliary variables - ! integer :: ii, jj, kk, ll, mm, nn, oo, nlp, nlq - - ! vconf_matrix(:,:,:) = 0.0_dp - - ! do ii = 0, max_l - ! if (this%power(ii) > 1.0e-06_dp) then - ! nn = 0 - ! do jj = 1, num_alpha(ii) - ! do ll = 1, poly_order(ii) - ! nn = nn + 1 - ! oo = 0 - ! nlp = ll + ii - ! do kk = 1, num_alpha(ii) - ! alpha1 = 0.5_dp * (alpha(ii, jj) + alpha(ii, kk)) - ! do mm = 1, poly_order(ii) - ! oo = oo + 1 - ! nlq = mm + ii - ! vconf_matrix(ii, nn, oo) = 1.0_dp / sqrt(v(alpha(ii, jj), 2 * nlp)& - ! & * v(alpha(ii, kk), 2 * nlq)) / (this%r0(ii) * 2.0_dp)**this%power(ii)& - ! & * v(alpha1, nlp + nlq + this%power(ii)) - ! end do - ! end do - ! end do - ! end do - ! end if - ! end do - - ! end subroutine TConf_getConfPower_analytical - end module confinement diff --git a/slateratom/lib/input.f90 b/slateratom/lib/input.F90 similarity index 97% rename from slateratom/lib/input.f90 rename to slateratom/lib/input.F90 index 16e9b994..c3f01454 100644 --- a/slateratom/lib/input.f90 +++ b/slateratom/lib/input.F90 @@ -1,3 +1,5 @@ +#:include 'common.fypp' + !> Module that reads input values from stdin. module input @@ -174,16 +176,21 @@ subroutine read_input_1(nuc, max_l, occ_shells, maxiter, scftol, poly_order, min case(confType%none) continue case(confType%power) + allocate(confInp%power) write(*, '(A)') 'Enter parameters r_0 and power' do ii = 0, max_l write(*, '(A,I3)') 'l=', ii read(*,*) confInp%power%r0(ii), confInp%power%power(ii) end do case(confType%ws) - write(*, '(A)') 'Enter parameters Ronset, Rcut and Vmax' + allocate(confInp%ws) + write(*, '(A)') 'Enter parameters compr. height, slope and half-height radius' do ii = 0, max_l write(*, '(A,I3)') 'l=', ii - read(*,*) confInp%ws%rOnset(ii), confInp%ws%rCut(ii), confInp%ws%vMax(ii) + read(*,*) confInp%ws%ww(ii), confInp%ws%aa(ii), confInp%ws%r0(ii) + @:ASSERT(confInp%ws%ww(ii) >= 0.0) + @:ASSERT(confInp%ws%aa(ii) > 0.0) + @:ASSERT(confInp%ws%r0(ii) >= 0.0) end do case default error stop 'Invalid confinement potential.' @@ -429,8 +436,8 @@ subroutine echo_input(nuc, max_l, occ_shells, maxiter, scftol, poly_order, num_a write(*, '(A,I3,A,E15.7,A,E15.7)') 'l= ', ii, ', r0= ', confInp%power%r0(ii),& & ' power= ', confInp%power%power(ii) case(confType%ws) - write(*, '(A,I3,A,E15.7,A,E15.7,A,E15.7)') 'l= ', ii, ', Ronset= ', confInp%ws%rOnset(ii),& - & ' Rcutoff= ', confInp%ws%rCut(ii), ' Vmax= ', confInp%ws%vMax(ii) + write(*, '(A,I3,A,E15.7,A,E15.7,A,E15.7)') 'l= ', ii, ', W= ', confInp%ws%ww(ii),& + & ' a= ', confInp%ws%aa(ii), ' r0= ', confInp%ws%r0(ii) end select end do diff --git a/test/prog/sktable/CAMY-B3LYP/Non-Relativistic/config b/test/prog/sktable/CAMY-B3LYP/Non-Relativistic/config index bfa360b6..03fd460a 100644 --- a/test/prog/sktable/CAMY-B3LYP/Non-Relativistic/config +++ b/test/prog/sktable/CAMY-B3LYP/Non-Relativistic/config @@ -1 +1 @@ -C,N C,N \ No newline at end of file +C,N C,N diff --git a/test/prog/sktable/CAMY-PBEh/Non-Relativistic/config b/test/prog/sktable/CAMY-PBEh/Non-Relativistic/config index 57bc8b62..897a44bc 100644 --- a/test/prog/sktable/CAMY-PBEh/Non-Relativistic/config +++ b/test/prog/sktable/CAMY-PBEh/Non-Relativistic/config @@ -1 +1 @@ -O,N O,N \ No newline at end of file +O,N O,N diff --git a/test/prog/sktable/GGA-PBE96/Non-Relativistic/config b/test/prog/sktable/GGA-PBE96/Non-Relativistic/config index e5eac9cd..fe945713 100644 --- a/test/prog/sktable/GGA-PBE96/Non-Relativistic/config +++ b/test/prog/sktable/GGA-PBE96/Non-Relativistic/config @@ -1 +1 @@ -N,O N,O \ No newline at end of file +N,O N,O diff --git a/test/prog/sktable/HYB-B3LYP/Non-Relativistic/config b/test/prog/sktable/HYB-B3LYP/Non-Relativistic/config index bfa360b6..03fd460a 100644 --- a/test/prog/sktable/HYB-B3LYP/Non-Relativistic/config +++ b/test/prog/sktable/HYB-B3LYP/Non-Relativistic/config @@ -1 +1 @@ -C,N C,N \ No newline at end of file +C,N C,N diff --git a/test/prog/sktable/HYB-PBE0/Non-Relativistic/config b/test/prog/sktable/HYB-PBE0/Non-Relativistic/config index bfa360b6..03fd460a 100644 --- a/test/prog/sktable/HYB-PBE0/Non-Relativistic/config +++ b/test/prog/sktable/HYB-PBE0/Non-Relativistic/config @@ -1 +1 @@ -C,N C,N \ No newline at end of file +C,N C,N diff --git a/test/prog/sktable/LDA-PW91/Non-Relativistic/_C-C.skf b/test/prog/sktable/LDA-PW91/Non-Relativistic/Power/_C-C.skf similarity index 100% rename from test/prog/sktable/LDA-PW91/Non-Relativistic/_C-C.skf rename to test/prog/sktable/LDA-PW91/Non-Relativistic/Power/_C-C.skf diff --git a/test/prog/sktable/LDA-PW91/Non-Relativistic/_C-O.skf b/test/prog/sktable/LDA-PW91/Non-Relativistic/Power/_C-O.skf similarity index 100% rename from test/prog/sktable/LDA-PW91/Non-Relativistic/_C-O.skf rename to test/prog/sktable/LDA-PW91/Non-Relativistic/Power/_C-O.skf diff --git a/test/prog/sktable/LDA-PW91/Non-Relativistic/_O-C.skf b/test/prog/sktable/LDA-PW91/Non-Relativistic/Power/_O-C.skf similarity index 100% rename from test/prog/sktable/LDA-PW91/Non-Relativistic/_O-C.skf rename to test/prog/sktable/LDA-PW91/Non-Relativistic/Power/_O-C.skf diff --git a/test/prog/sktable/LDA-PW91/Non-Relativistic/_O-O.skf b/test/prog/sktable/LDA-PW91/Non-Relativistic/Power/_O-O.skf similarity index 100% rename from test/prog/sktable/LDA-PW91/Non-Relativistic/_O-O.skf rename to test/prog/sktable/LDA-PW91/Non-Relativistic/Power/_O-O.skf diff --git a/test/prog/sktable/LDA-PW91/Non-Relativistic/Power/config b/test/prog/sktable/LDA-PW91/Non-Relativistic/Power/config new file mode 100644 index 00000000..d380badc --- /dev/null +++ b/test/prog/sktable/LDA-PW91/Non-Relativistic/Power/config @@ -0,0 +1 @@ +C,O C,O diff --git a/test/prog/sktable/LDA-PW91/Non-Relativistic/skdef.hsd b/test/prog/sktable/LDA-PW91/Non-Relativistic/Power/skdef.hsd similarity index 100% rename from test/prog/sktable/LDA-PW91/Non-Relativistic/skdef.hsd rename to test/prog/sktable/LDA-PW91/Non-Relativistic/Power/skdef.hsd diff --git a/test/prog/sktable/LDA-PW91/Non-Relativistic/WS/_C-C.skf b/test/prog/sktable/LDA-PW91/Non-Relativistic/WS/_C-C.skf new file mode 100644 index 00000000..6b60e8cd --- /dev/null +++ b/test/prog/sktable/LDA-PW91/Non-Relativistic/WS/_C-C.skf @@ -0,0 +1,92 @@ +0.020000 69 + 0.000000000000E+00 -1.991451862433E-01 -5.008031450092E-01 -4.388315590227E-02 0.000000000000E+00 3.643020862183E-01 3.643020862183E-01 0.000000000000E+00 2.000000000000E+00 2.000000000000E+00 + 1.201000000000E+01 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 0.0 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 -6.381760667102E-01 -1.457225383447E+00 0.000000000000E+00 -2.781529807256E-01 -8.318367775611E-01 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 5.572139974757E-01 8.404174953383E-01 0.000000000000E+00 -1.905803575596E-01 8.094163478854E-01 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 -5.837314388851E-01 -1.429923183678E+00 0.000000000000E+00 -2.486977954925E-01 -8.057290724036E-01 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 5.329323332977E-01 8.308907927640E-01 0.000000000000E+00 -1.993756789262E-01 8.016932616479E-01 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 -5.304822244232E-01 -1.402644467587E+00 0.000000000000E+00 -2.189403014961E-01 -7.824076380814E-01 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 5.084716804364E-01 8.211978085221E-01 0.000000000000E+00 -2.081949854654E-01 7.940460008169E-01 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 -4.784955599301E-01 -1.375424366584E+00 0.000000000000E+00 -1.890194583538E-01 -7.616582659754E-01 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 4.838707508287E-01 8.113488238503E-01 0.000000000000E+00 -2.170212085455E-01 7.864756723071E-01 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 -4.278291849715E-01 -1.348295714043E+00 0.000000000000E+00 -1.590631634127E-01 -7.432748695947E-01 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 4.591674096031E-01 8.013540366786E-01 0.000000000000E+00 -2.258374760168E-01 7.789825131351E-01 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 -3.785319908731E-01 -1.321289112944E+00 0.000000000000E+00 -1.291886172414E-01 -7.270600733583E-01 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 4.343986302243E-01 7.912235486829E-01 0.000000000000E+00 -2.346271774869E-01 7.715659951136E-01 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 -3.306445689180E-01 -1.294433007484E+00 0.000000000000E+00 -9.950272526593E-02 -7.128256222100E-01 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 4.096004547687E-01 7.809673533215E-01 0.000000000000E+00 -2.433740223936E-01 7.642249219751E-01 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 -2.841997537569E-01 -1.267753757839E+00 0.000000000000E+00 -7.010252715559E-02 -7.003926401807E-01 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 3.848079588999E-01 7.705953248032E-01 0.000000000000E+00 -2.520620912822E-01 7.569575191556E-01 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 -2.392231584231E-01 -1.241275717315E+00 0.000000000000E+00 -4.107564657073E-02 -6.895917620483E-01 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 3.600552211412E-01 7.601172079331E-01 0.000000000000E+00 -2.606758807177E-01 7.497615165227E-01 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 -1.957336978732E-01 -1.215021311211E+00 0.000000000000E+00 -1.250075478206E-02 -6.802631588775E-01 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 3.353752960671E-01 7.495426087830E-01 0.000000000000E+00 -2.692003422690E-01 7.426342243672E-01 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 -1.537440984636E-01 -1.189011116767E+00 0.000000000000E+00 1.555195751402E-02 -6.722564753587E-01 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 3.108001910672E-01 7.388809861370E-01 0.000000000000E+00 -2.776209160059E-01 7.355726030042E-01 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 -1.132613912126E-01 -1.163263943646E+00 0.000000000000E+00 4.302030512984E-02 -6.654306944109E-01 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 2.863608463640E-01 7.281416436623E-01 0.000000000000E+00 -2.859235589456E-01 7.285733263414E-01 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 -7.428738709134E-02 -1.137796914454E+00 0.000000000000E+00 6.984963435550E-02 -6.596539424110E-01 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 2.620871180001E-01 7.173337227586E-01 0.000000000000E+00 -2.940947688739E-01 7.216328397808E-01 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 -3.681913294126E-02 -1.112625544847E+00 0.000000000000E+00 9.599235365450E-02 -6.548032465922E-01 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 2.380077635382E-01 7.064661960417E-01 0.000000000000E+00 -3.021216039532E-01 7.147474128151E-01 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 -8.493469272953E-04 -1.087763822859E+00 0.000000000000E+00 1.214074722414E-01 -6.507642545890E-01 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 2.141504302464E-01 6.955478614191E-01 0.000000000000E+00 -3.099916985090E-01 7.079131866784E-01 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 3.363316728233E-02 -1.063224287081E+00 0.000000000000E+00 1.460601492153E-01 -6.474309247389E-01 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 1.905416455727E-01 6.845873367190E-01 0.000000000000E+00 -3.176932753679E-01 7.011262173972E-01 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 6.664312816847E-02 -1.039018103420E+00 0.000000000000E+00 1.699212554858E-01 -6.447051945662E-01 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 1.672068097348E-01 6.735930548359E-01 0.000000000000E+00 -3.252151550938E-01 6.943825145756E-01 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 9.819840617581E-02 -1.015155140164E+00 0.000000000000E+00 1.929669503337E-01 -6.424966338368E-01 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 1.441701902785E-01 6.625732593598E-01 0.000000000000E+00 -3.325467624471E-01 6.876780762349E-01 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 1.283196758107E-01 -9.916440411512E-01 0.000000000000E+00 2.151782740909E-01 -6.407220876626E-01 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 1.214549184798E-01 6.515360006571E-01 0.000000000000E+00 -3.396781303658E-01 6.810089200070E-01 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 1.570300899489E-01 -9.684922968449E-01 0.000000000000E+00 2.365407580943E-01 -6.393053143369E-01 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 9.908298748523E-02 6.404891323766E-01 0.000000000000E+00 -3.465999017406E-01 6.743711109690E-01 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 1.843549760981E-01 -9.457063131805E-01 0.000000000000E+00 2.570440527715E-01 -6.381766218752E-01 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 7.707525210303E-02 6.294403083537E-01 0.000000000000E+00 -3.533033292340E-01 6.677607863830E-01 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 2.103215541896E-01 -9.232914780520E-01 0.000000000000E+00 2.766815744410E-01 -6.372725066125E-01 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 5.545143017344E-02 6.183969798905E-01 0.000000000000E+00 -3.597802733660E-01 6.611741775903E-01 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 2.349586753171E-01 -9.012522253536E-01 0.000000000000E+00 2.954501711562E-01 -6.365352966526E-01 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 3.423010545896E-02 6.073663933909E-01 0.000000000000E+00 -3.660231990690E-01 6.546076292918E-01 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 2.582965806941E-01 -8.795920965074E-01 0.000000000000E+00 3.133498076952E-01 -6.359128024740E-01 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 1.342873200677E-02 5.963555883316E-01 0.000000000000E+00 -3.720251708888E-01 6.480576164255E-01 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 2.803666799779E-01 -8.583137994394E-01 0.000000000000E+00 3.303832695908E-01 -6.353579765553E-01 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 -6.936360055855E-03 5.853713955533E-01 0.000000000000E+00 -3.777798469921E-01 6.415207588408E-01 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 3.012013479961E-01 -8.374192649818E-01 0.000000000000E+00 3.465558859085E-01 -6.348285834957E-01 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 -2.684995732541E-02 5.744204358554E-01 0.000000000000E+00 -3.832814721179E-01 6.349938339491E-01 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 3.208337388333E-01 -8.169097007063E-01 0.000000000000E+00 3.618752703227E-01 -6.342868817604E-01 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 -4.629795455255E-02 5.635091188830E-01 0.000000000000E+00 -3.885248695958E-01 6.284737875179E-01 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 3.392976161719E-01 -7.967856422082E-01 0.000000000000E+00 3.763510799036E-01 -6.336993178767E-01 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 -6.526734472286E-02 5.526436422931E-01 0.000000000000E+00 -3.935054325365E-01 6.219577427610E-01 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 3.566271987543E-01 -7.770470018782E-01 0.000000000000E+00 3.899947909200E-01 -6.330362336431E-01 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 -8.374620780993E-02 5.418299911891E-01 0.000000000000E+00 -3.982191142866E-01 6.154430078642E-01 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 3.728570198272E-01 -7.576931152134E-01 0.000000000000E+00 4.028194908779E-01 -6.322715866867E-01 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 -1.017236982220E-01 5.310739378152E-01 0.000000000000E+00 -4.026624182258E-01 6.089270820754E-01 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 3.880217994516E-01 -7.387227847312E-01 0.000000000000E+00 4.148396859594E-01 -6.313826845098E-01 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 -1.191900309643E-01 5.203810415005E-01 0.000000000000E+00 -4.068323869760E-01 6.024076604755E-01 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 4.021563286043E-01 -7.201343215593E-01 0.000000000000E+00 4.260711229924E-01 -6.303499320091E-01 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 -1.361364665392E-01 5.097566488469E-01 0.000000000000E+00 -4.107265910792E-01 5.958826375365E-01 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 4.152953640604E-01 -7.019255847814E-01 0.000000000000E+00 4.365306250702E-01 -6.291565923171E-01 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 -1.525552946120E-01 4.992058941510E-01 0.000000000000E+00 -4.143431171952E-01 5.893501095672E-01 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 4.274735331198E-01 -6.840940186252E-01 0.000000000000E+00 4.462359399491E-01 -6.277885607157E-01 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 -1.684398164677E-01 4.887337000562E-01 0.000000000000E+00 -4.176805558613E-01 5.828083761339E-01 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 4.387252473247E-01 -6.666366875815E-01 0.000000000000E+00 4.552056003733E-01 -6.262341512891E-01 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 -1.837843262935E-01 4.783447784258E-01 0.000000000000E+00 -4.207379888527E-01 5.762559405403E-01 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 4.490846244013E-01 -6.495503095445E-01 0.000000000000E+00 4.634587955139E-01 -6.244838959280E-01 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 -1.985840913198E-01 4.680436314328E-01 0.000000000000E+00 -4.235149761748E-01 5.696915094414E-01 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 4.585854177437E-01 -6.328312870641E-01 0.000000000000E+00 4.710152527495E-01 -6.225303552540E-01 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 -2.128353308613E-01 4.578345528602E-01 0.000000000000E+00 -4.260115427168E-01 5.631139916629E-01 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 4.672609528388E-01 -6.164757367998E-01 0.000000000000E+00 4.778951290669E-01 -6.203679410077E-01 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 -2.265351942999E-01 4.477216296049E-01 0.000000000000E+00 -4.282281645922E-01 5.565224962892E-01 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 4.751440701048E-01 -6.004795172627E-01 0.000000000000E+00 4.841189114093E-01 -6.179927494290E-01 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 -2.396817380574E-01 4.377087433806E-01 0.000000000000E+00 -4.301657551907E-01 5.499163300810E-01 + 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 4.822670736819E-01 -5.848382549295E-01 0.000000000000E+00 4.897073253495E-01 -6.154024051534E-01 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 0.000000000000E+00 -2.522739016091E-01 4.277995726138E-01 0.000000000000E+00 -4.318256509620E-01 5.432949942779E-01 + + +Spline +12 0.0553585 +112.9353346817185 2.801373701455403 -0.1119994835253462 +0.035 0.0375 0.204206 -35.71077211012958 2016.504000000031 24177.93762071238 +0.0375 0.04 0.12791 -25.17491577974109 2197.838532155373 -120889.6881035729 +0.04 0.0425 0.07682029999999999 -16.45240477090621 1291.165871378576 -57585.58520643491 +0.0425 0.045 0.0428593 -11.07630513663398 859.2739823303137 16659.22892930921 +0.045 0.04533 0.0207993 -6.467574682557872 984.2181993001326 -2167173.572075024 +0.04533 0.045334 0.0186943 -6.526006277016704 -1161.283637054166 353213222.4907721 +0.045334 0.046259 0.0186682 -6.518342311433599 3077.275032831984 -1324559.571220061 +0.046259 0.047184 0.0142234 -4.225362350069925 -598.3777773036936 561811.1110751317 +0.047184 0.0493131 0.0102476 -3.890262342340788 960.6480559297889 -100763.5210502349 +0.0493131 0.0503195 0.00534702 -1.169934109375229 317.0412179256228 -143026.9144497911 +0.0503195 0.0513259 0.00434492 -0.9663840979460291 -114.7856421811885 10348.58893883691 +0.0513259 0.0553585 0.00326664 -1.165980214261954 -83.5411824570522 -5782.515169399558 27636944.82683195 -3877959552.095367 + +This SPLINE is just a DUMMY-SPLINE!!!!!!!!!!!!!!! + diff --git a/test/prog/sktable/LDA-PW91/Non-Relativistic/WS/config b/test/prog/sktable/LDA-PW91/Non-Relativistic/WS/config new file mode 100644 index 00000000..3aab270d --- /dev/null +++ b/test/prog/sktable/LDA-PW91/Non-Relativistic/WS/config @@ -0,0 +1 @@ +C C diff --git a/test/prog/sktable/LDA-PW91/Non-Relativistic/WS/skdef.hsd b/test/prog/sktable/LDA-PW91/Non-Relativistic/WS/skdef.hsd new file mode 100644 index 00000000..7505e52e --- /dev/null +++ b/test/prog/sktable/LDA-PW91/Non-Relativistic/WS/skdef.hsd @@ -0,0 +1,74 @@ +SkdefVersion = 1 + +Globals { + Superposition = density + XCFunctional = lda {} +} + +AtomParameters { + + C { + AtomConfig { + AtomicNumber = 6 + Mass = 12.01 + Occupations { + 1S = 1.0 1.0 + 2S = 1.0 1.0 + 2P = 2.0 0.0 + } + ValenceShells = 2s 2p + Relativistics = None + } + DftbAtom { + ShellResolved = No + DensityCompression = WoodsSaxonCompression { W = 10.0; a = 2.0; r0 = 7.0 } + WaveCompressions = SingleAtomCompressions { + S = WoodsSaxonCompression { W = 10.0; a = 2.0; r0 = 2.7 } + P = WoodsSaxonCompression { W = 10.0; a = 2.0; r0 = 2.7 } + } + } + } + +} + + +OnecenterParameters { + + $StandardDeltaFilling { + DeltaFilling = 0.01 + } + + C { + $StandardDeltaFilling + Calculator = SlaterAtom { + MaxScfIterations = 120 + ScfTolerance = 1.0e-10 + Exponents { + S = 0.5 1.14 2.62 6.0 + P = 0.5 1.14 2.62 6.0 + } + MaxPowers { + S = 3 + P = 3 + } + } + } + +} + +TwoCenterParameters { + + $EqGrid = EquidistantGrid { + GridStart = 0.6 + GridSeparation = 0.02 + Tolerance = 5e-5 + MaxDistance = -1.4 + } + + $SkTwocnt_300_150 = Sktwocnt { + IntegrationPoints = 300 150 + } + + C-C { Grid = $EqGrid; Calculator = $SkTwocnt_300_150 } + +} diff --git a/test/prog/sktable/LDA-PW91/Non-Relativistic/config b/test/prog/sktable/LDA-PW91/Non-Relativistic/config deleted file mode 100644 index 2b6041a2..00000000 --- a/test/prog/sktable/LDA-PW91/Non-Relativistic/config +++ /dev/null @@ -1 +0,0 @@ -C,O C,O \ No newline at end of file diff --git a/test/prog/sktable/tests b/test/prog/sktable/tests index 4ef363ba..af0e0790 100644 --- a/test/prog/sktable/tests +++ b/test/prog/sktable/tests @@ -3,7 +3,8 @@ #:include 'common.fypp' -LDA-PW91/Non-Relativistic +LDA-PW91/Non-Relativistic/Power +LDA-PW91/Non-Relativistic/WS GGA-PBE96/Non-Relativistic HYB-PBE0/Non-Relativistic HYB-B3LYP/Non-Relativistic