Skip to content

Commit

Permalink
GFN-FF reparameterization for lanthanides and extension to actinides (#…
Browse files Browse the repository at this point in the history
…1103)

enables GFN-FF calculations for systems including elements up to lawrencium (103).
performance has been improved for lanthanides.
neighbor list can be manually adjusted via the detailed input file
unit tests have been added to test Ln/An energies, gradients, and the Ln/An-H neighbor list setup.
  • Loading branch information
Thomas3R authored Sep 18, 2024
1 parent c403cd1 commit 1779d8a
Show file tree
Hide file tree
Showing 19 changed files with 1,051 additions and 207 deletions.
17 changes: 17 additions & 0 deletions .param_gfnff.xtb
Original file line number Diff line number Diff line change
Expand Up @@ -84,3 +84,20 @@
84 1.236314 0.076708 0.019269 2.067331 0.192274 0.557520 0.322666 0.415042 0.307481 0.144762 0.767979
85 1.310129 0.000273 0.074803 2.228923 0.127706 0.563373 0.333641 1.259822 0.316447 0.231884 0.536799
86 1.157380 -0.068929 0.016657 1.874218 0.086756 0.484713 0.434163 0.400000 0.400000 0.400000 0.500000
87 0.789115 0.485375 -0.024950 0.977079 0.150000 0.574626 0.302575 0.032198 0.000000 0.090741 0.000000
88 0.798704 0.416264 -0.033006 0.770260 0.150000 0.560506 0.163290 0.036663 0.000000 0.076783 0.000000
89 1.053384 -0.009993 0.065498 0.717658 0.370682 0.682723 0.187645 0.281449 0.078710 0.310896 0.122336
90 1.056040 -0.010075 0.058290 0.732120 0.368511 0.684824 0.190821 0.280526 0.079266 0.309131 0.131176
91 1.058772 -0.010138 0.052304 0.743405 0.366339 0.686925 0.193998 0.279603 0.079822 0.307367 0.140015
92 1.061580 -0.010179 0.047540 0.751515 0.364168 0.689026 0.197174 0.278680 0.080379 0.305602 0.148855
93 1.064463 -0.010201 0.043999 0.756447 0.361996 0.691127 0.200351 0.277757 0.080935 0.303838 0.157695
94 1.067422 -0.010201 0.041680 0.758203 0.359825 0.693228 0.203527 0.276834 0.081491 0.302073 0.166534
95 1.070456 -0.010182 0.040584 0.756783 0.357654 0.695329 0.206703 0.275911 0.082047 0.300309 0.175374
96 1.073566 -0.010141 0.040710 0.752186 0.355482 0.697430 0.209880 0.274988 0.082603 0.298544 0.184214
97 1.076751 -0.010080 0.042058 0.744413 0.353311 0.699531 0.213056 0.274065 0.083159 0.296779 0.193053
98 1.080012 -0.009999 0.044628 0.733463 0.351139 0.701631 0.216233 0.273142 0.083716 0.295015 0.201893
99 1.083349 -0.009897 0.048421 0.719337 0.348968 0.703732 0.219409 0.272219 0.084272 0.293250 0.210733
100 1.086761 -0.009775 0.053436 0.702034 0.346797 0.705833 0.222585 0.271296 0.084828 0.291486 0.219572
101 1.090249 -0.009632 0.059674 0.681554 0.344625 0.707934 0.225762 0.270373 0.085384 0.289721 0.228412
102 1.093812 -0.009468 0.067134 0.657898 0.342454 0.710035 0.228938 0.269450 0.085940 0.287957 0.237252
103 1.097451 -0.009284 0.075816 0.631066 0.340282 0.712136 0.232115 0.268528 0.086496 0.286192 0.246091
141 changes: 78 additions & 63 deletions src/approxrab.f90
Original file line number Diff line number Diff line change
Expand Up @@ -22,71 +22,86 @@ module xtb_approxrab
public :: pbc_approx_rab, approx_rab, approx_bonds

! parameter blocks
real(wp),private, dimension(86) :: cnfak
real(wp),private, dimension(86) :: r0
real(wp),private, dimension(86) :: en
real(wp),private, dimension(103) :: cnfak
real(wp),private, dimension(103) :: r0
real(wp),private, dimension(103) :: en
real(wp),private, dimension(4,2):: p
! START PARAMETER--------------------------------------------------
data en /&
2.30085633_wp, 2.78445145_wp, 1.52956084_wp, 1.51714704_wp, 2.20568300_wp,&
2.49640820_wp, 2.81007174_wp, 4.51078438_wp, 4.67476223_wp, 3.29383610_wp,&
2.84505365_wp, 2.20047950_wp, 2.31739628_wp, 2.03636974_wp, 1.97558064_wp,&
2.13446570_wp, 2.91638164_wp, 1.54098156_wp, 2.91656301_wp, 2.26312147_wp,&
2.25621439_wp, 1.32628677_wp, 2.27050569_wp, 1.86790977_wp, 2.44759456_wp,&
2.49480042_wp, 2.91545568_wp, 3.25897750_wp, 2.68723778_wp, 1.86132251_wp,&
2.01200832_wp, 1.97030722_wp, 1.95495427_wp, 2.68920990_wp, 2.84503857_wp,&
2.61591858_wp, 2.64188286_wp, 2.28442252_wp, 1.33011187_wp, 1.19809388_wp,&
1.89181390_wp, 2.40186898_wp, 1.89282464_wp, 3.09963488_wp, 2.50677823_wp,&
2.61196704_wp, 2.09943450_wp, 2.66930105_wp, 1.78349472_wp, 2.09634533_wp,&
2.00028974_wp, 1.99869908_wp, 2.59072029_wp, 2.54497829_wp, 2.52387890_wp,&
2.30204667_wp, 1.60119300_wp, 2.00000000_wp, 2.00000000_wp, 2.00000000_wp,&
2.00000000_wp, 2.00000000_wp, 2.00000000_wp, 2.00000000_wp, 2.00000000_wp,&
2.00000000_wp, 2.00000000_wp, 2.00000000_wp, 2.00000000_wp, 2.00000000_wp,&
2.00000000_wp, 2.30089349_wp, 1.75039077_wp, 1.51785130_wp, 2.62972945_wp,&
2.75372921_wp, 2.62540906_wp, 2.55860939_wp, 3.32492356_wp, 2.65140898_wp,&
1.52014458_wp, 2.54984804_wp, 1.72021963_wp, 2.69303422_wp, 1.81031095_wp,&
2.34224386_wp&
/
data r0 /&
0.55682207_wp, 0.80966997_wp, 2.49092101_wp, 1.91705642_wp, 1.35974851_wp,&
0.98310699_wp, 0.98423007_wp, 0.76716063_wp, 1.06139799_wp, 1.17736822_wp,&
2.85570926_wp, 2.56149012_wp, 2.31673425_wp, 2.03181740_wp, 1.82568535_wp,&
1.73685958_wp, 1.97498207_wp, 2.00136196_wp, 3.58772537_wp, 2.68096221_wp,&
2.23355957_wp, 2.33135502_wp, 2.15870365_wp, 2.10522128_wp, 2.16376162_wp,&
2.10804037_wp, 1.96460045_wp, 2.00476257_wp, 2.22628712_wp, 2.43846700_wp,&
2.39408483_wp, 2.24245792_wp, 2.05751204_wp, 2.15427677_wp, 2.27191920_wp,&
2.19722638_wp, 3.80910350_wp, 3.26020971_wp, 2.99716916_wp, 2.71707818_wp,&
2.34950167_wp, 2.11644818_wp, 2.47180659_wp, 2.32198800_wp, 2.32809515_wp,&
2.15244869_wp, 2.55958313_wp, 2.59141300_wp, 2.62030465_wp, 2.39935278_wp,&
2.56912355_wp, 2.54374096_wp, 2.56914830_wp, 2.53680807_wp, 4.24537037_wp,&
3.66542289_wp, 3.19903011_wp, 2.80000000_wp, 2.80000000_wp, 2.80000000_wp,&
2.80000000_wp, 2.80000000_wp, 2.80000000_wp, 2.80000000_wp, 2.80000000_wp,&
2.80000000_wp, 2.80000000_wp, 2.80000000_wp, 2.80000000_wp, 2.80000000_wp,&
2.80000000_wp, 2.34880037_wp, 2.37597108_wp, 2.49067697_wp, 2.14100577_wp,&
2.33473532_wp, 2.19498900_wp, 2.12678348_wp, 2.34895048_wp, 2.33422774_wp,&
2.86560827_wp, 2.62488837_wp, 2.88376127_wp, 2.75174124_wp, 2.83054552_wp,&
2.63264944_wp&
/
data cnfak /&
0.17957827_wp, 0.25584045_wp,-0.02485871_wp, 0.00374217_wp, 0.05646607_wp,&
0.10514203_wp, 0.09753494_wp, 0.30470380_wp, 0.23261783_wp, 0.36752208_wp,&
0.00131819_wp,-0.00368122_wp,-0.01364510_wp, 0.04265789_wp, 0.07583916_wp,&
0.08973207_wp,-0.00589677_wp, 0.13689929_wp,-0.01861307_wp, 0.11061699_wp,&
0.10201137_wp, 0.05426229_wp, 0.06014681_wp, 0.05667719_wp, 0.02992924_wp,&
0.03764312_wp, 0.06140790_wp, 0.08563465_wp, 0.03707679_wp, 0.03053526_wp,&
-0.00843454_wp, 0.01887497_wp, 0.06876354_wp, 0.01370795_wp,-0.01129196_wp,&
0.07226529_wp, 0.01005367_wp, 0.01541506_wp, 0.05301365_wp, 0.07066571_wp,&
0.07637611_wp, 0.07873977_wp, 0.02997732_wp, 0.04745400_wp, 0.04582912_wp,&
0.10557321_wp, 0.02167468_wp, 0.05463616_wp, 0.05370913_wp, 0.05985441_wp,&
0.02793994_wp, 0.02922983_wp, 0.02220438_wp, 0.03340460_wp,-0.04110969_wp,&
-0.01987240_wp, 0.07260201_wp, 0.07700000_wp, 0.07700000_wp, 0.07700000_wp,&
0.07700000_wp, 0.07700000_wp, 0.07700000_wp, 0.07700000_wp, 0.07700000_wp,&
0.07700000_wp, 0.07700000_wp, 0.07700000_wp, 0.07700000_wp, 0.07700000_wp,&
0.07700000_wp, 0.08379100_wp, 0.07314553_wp, 0.05318438_wp, 0.06799334_wp,&
0.04671159_wp, 0.06758819_wp, 0.09488437_wp, 0.07556405_wp, 0.13384502_wp,&
0.03203572_wp, 0.04235009_wp, 0.03153769_wp,-0.00152488_wp, 0.02714675_wp,&
0.04800662_wp&
/
data en /&
2.30085633, 2.78445145, 1.52956084, 1.51714704, 2.20568300,&
2.49640820, 2.81007174, 4.51078438, 4.67476223, 3.29383610,&
2.84505365, 2.20047950, 2.31739628, 2.03636974, 1.97558064,&
2.13446570, 2.91638164, 1.54098156, 2.91656301, 2.26312147,&
2.25621439, 1.32628677, 2.27050569, 1.86790977, 2.44759456,&
2.49480042, 2.91545568, 3.25897750, 2.68723778, 1.86132251,&
2.01200832, 1.97030722, 1.95495427, 2.68920990, 2.84503857,&
2.61591858, 2.64188286, 2.28442252, 1.33011187, 1.19809388,&
1.89181390, 2.40186898, 1.89282464, 3.09963488, 2.50677823,&
2.61196704, 2.09943450, 2.66930105, 1.78349472, 2.09634533,&
2.00028974, 1.99869908, 2.59072029, 2.54497829, 2.52387890,&
2.30204667, 1.60119300, 2.00000000, 2.00000000, 2.00000000,& ! 60
2.00000000, 2.00000000, 2.00000000, 2.00000000, 2.00000000,&
2.00000000, 2.00000000, 2.00000000, 2.00000000, 2.00000000,& ! 70
2.00000000, 2.30089349, 1.75039077, 1.51785130, 2.62972945,&
2.75372921, 2.62540906, 2.55860939, 3.32492356, 2.65140898,& ! 80
1.52014458, 2.54984804, 1.72021963, 2.69303422, 1.81031095,&
2.34224386,&
2.52387890,&
2.30204667, 1.60119300, 2.00000000, 2.00000000, 2.00000000,& ! 92
2.00000000, 2.00000000, 2.00000000, 2.00000000, 2.00000000,&
2.00000000, 2.00000000, 2.00000000, 2.00000000, 2.00000000,& ! 102
2.00000000&
/
data r0 /&
0.55682207, 0.80966997, 2.49092101, 1.91705642, 1.35974851,&
0.98310699, 0.98423007, 0.76716063, 1.06139799, 1.17736822,& ! 10
2.85570926, 2.56149012, 2.31673425, 2.03181740, 1.82568535,&
1.73685958, 1.97498207, 2.00136196, 3.58772537, 2.68096221,& ! 20
2.23355957, 2.33135502, 2.15870365, 2.10522128, 2.16376162,&
2.10804037, 1.96460045, 2.00476257, 2.22628712, 2.43846700,& ! 30
2.39408483, 2.24245792, 2.05751204, 2.15427677, 2.27191920,&
2.19722638, 3.80910350, 3.26020971, 2.99716916, 2.71707818,& ! 40
2.34950167, 2.11644818, 2.47180659, 2.32198800, 2.32809515,&
2.15244869, 2.55958313, 2.59141300, 2.62030465, 2.39935278,& ! 50
2.56912355, 2.54374096, 2.56914830, 2.53680807, 4.24537037,&
3.66542289, 3.22480000, 3.21280000, 3.10550000, 3.10200000,& ! 60
3.10840000, 3.14030000, 3.06390000, 3.10730000, 3.10000000,&
3.11910000, 3.10760000, 3.13740000, 3.09740000, 2.92860000,&
3.05880000, 2.34880037, 2.37597108, 2.49067697, 2.14100577,&
2.33473532, 2.19498900, 2.12678348, 2.34895048, 2.33422774,&
2.86560827, 2.62488837, 2.88376127, 2.75174124, 2.83054552,&
2.63264944,&
4.24537037,&
3.66542289, 4.20000000, 4.20000000, 4.20000000, 4.20000000,& ! 92
4.20000000, 4.20000000, 4.20000000, 4.20000000, 4.20000000,&
4.20000000, 4.20000000, 4.20000000, 4.20000000, 4.20000000,& ! 102
4.20000000&
/
data cnfak /&
0.17957827, 0.25584045,-0.02485871, 0.00374217, 0.05646607,&
0.10514203, 0.09753494, 0.30470380, 0.23261783, 0.36752208,&
0.00131819,-0.00368122,-0.01364510, 0.04265789, 0.07583916,&
0.08973207,-0.00589677, 0.13689929,-0.01861307, 0.11061699,&
0.10201137, 0.05426229, 0.06014681, 0.05667719, 0.02992924,&
0.03764312, 0.06140790, 0.08563465, 0.03707679, 0.03053526,&
-0.00843454, 0.01887497, 0.06876354, 0.01370795,-0.01129196,&
0.07226529, 0.01005367, 0.01541506, 0.05301365, 0.07066571,&
0.07637611, 0.07873977, 0.02997732, 0.04745400, 0.04582912,&
0.10557321, 0.02167468, 0.05463616, 0.05370913, 0.05985441,& ! 60
0.02793994, 0.02922983, 0.02220438, 0.03340460,-0.04110969,&
-0.01987240, 0.07260201, 0.07700000, 0.07700000, 0.07700000,& ! 70
0.07700000, 0.07700000, 0.07700000, 0.07700000, 0.07700000,&
0.07700000, 0.07700000, 0.07700000, 0.07700000, 0.07700000,& ! 80
0.07700000, 0.08379100, 0.07314553, 0.05318438, 0.06799334,&
0.04671159, 0.06758819, 0.09488437, 0.07556405, 0.13384502,& ! 90
0.03203572, 0.04235009, 0.03153769,-0.00152488, 0.02714675,&
0.04800662,&
0.04582912,&
0.10557321, 0.02167468, 0.05463616, 0.05370913, 0.05985441,& ! 92
0.02793994, 0.02922983, 0.02220438, 0.03340460,-0.04110969,&
-0.01987240, 0.07260201, 0.07700000, 0.07700000, 0.07700000,& ! 102
0.07700000&
/
! END PARAMETER-----------------------------------------------------

! global EN polynomial parameter (NOTE: x 10^3)
Expand Down
2 changes: 1 addition & 1 deletion src/geoopt_driver.f90
Original file line number Diff line number Diff line change
Expand Up @@ -162,7 +162,7 @@ subroutine geometry_optimization &
! create new Limited-memory BFGS optimizer
call new_lbfgs_optimizer(lbfgs_opt, env, opt_input, filter)
! run optimization
call relax_pbc(lbfgs_opt, env, mol, wfn, calc, filter, printlevel)
call relax_pbc(lbfgs_opt, env, mol, wfn, calc, filter, printlevel, fail)
case(p_engine_inertial)
call fire & ! FIRE !
&(env,ilog,mol,wfn,calc, &
Expand Down
1 change: 1 addition & 0 deletions src/gfnff/gdisp0.f90
Original file line number Diff line number Diff line change
Expand Up @@ -130,6 +130,7 @@ subroutine weight_references_d4(dispm, nat, atoms, wf, cn, gwvec, gwdcn)
norm = norm + gw
dnorm = dnorm + 2*wf*(dispm%cn(iref, ati) - cn(iat)) * gw
end do
if (norm.eq.0.0_wp) cycle
norm = 1.0_wp / norm
do iref = 1, dispm%nref(ati)
expw = weight_cn(wf, cn(iat), dispm%cn(iref, ati))
Expand Down
Loading

0 comments on commit 1779d8a

Please sign in to comment.